UNPKG

@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

62 lines (61 loc) 2.33 kB
// SPDX-FileCopyrightText: 2024 Telefónica Innovación Digital // SPDX-License-Identifier: Apache-2.0 import find from "unist-util-find"; import { replace } from "../../../../../lib/support/unist/unist-util-replace.js"; // FIXME: eslint false positive // https://github.com/typescript-eslint/typescript-eslint/issues/325 var DocusaurusAdmonitionType; (function (DocusaurusAdmonitionType) { DocusaurusAdmonitionType["Note"] = "note"; DocusaurusAdmonitionType["Tip"] = "tip"; DocusaurusAdmonitionType["Info"] = "info"; DocusaurusAdmonitionType["Caution"] = "caution"; DocusaurusAdmonitionType["Danger"] = "danger"; })(DocusaurusAdmonitionType || (DocusaurusAdmonitionType = {})); const admonitionMessage = { [DocusaurusAdmonitionType.Note]: "Note", [DocusaurusAdmonitionType.Tip]: "Tip", [DocusaurusAdmonitionType.Info]: "Info", [DocusaurusAdmonitionType.Caution]: "Caution", [DocusaurusAdmonitionType.Danger]: "Danger", }; function composeTitle(type, title) { const typeNode = { type: "text", value: `${admonitionMessage[type]}:`, }; const children = title?.children ?? []; return { type: "paragraph", children: [ { type: "strong", children: children.length === 0 ? [typeNode] : [typeNode, { type: "text", value: " " }, ...children], }, ], }; } /** * UnifiedPlugin to replace Docusaurus' Admonitions with block-quotes from tree. * * @throws {Error} if the admonitions is not well constructed. * * @see {@link https://docusaurus.io/docs/markdown-features/admonitions | Docusaurus Admonitions} */ const remarkRemoveAdmonitions = function remarkRemoveAdmonitions() { return function (tree) { replace(tree, "containerDirective", (node) => { const admonitionTitle = find(node, (child) => child.type === "paragraph" && child.data?.directiveLabel); if (admonitionTitle !== undefined) { node.children.splice(node.children.indexOf(admonitionTitle), 1); } return { type: "blockquote", children: [composeTitle(node.name, admonitionTitle), ...node.children], }; }); }; }; export default remarkRemoveAdmonitions;