diff --git a/packages/mermaid/src/diagram-api/frontmatter.ts b/packages/mermaid/src/diagram-api/frontmatter.ts index b73440a7d..800e7399b 100644 --- a/packages/mermaid/src/diagram-api/frontmatter.ts +++ b/packages/mermaid/src/diagram-api/frontmatter.ts @@ -1,3 +1,4 @@ +import { DiagramDb } from './types'; // The "* as yaml" part is necessary for tree-shaking import * as yaml from 'js-yaml'; @@ -15,11 +16,11 @@ type FrontMatterMetadata = { /** * Extract and parse frontmatter from text, if present, and sets appropriate * properties in the provided db. - * @param text - - * @param db - + * @param text - The text that may have a YAML frontmatter. + * @param db - Diagram database, could be of any diagram. * @returns text with frontmatter stripped out */ -export function extractFrontMatter(text: string, db: any): string { +export function extractFrontMatter(text: string, db: DiagramDb): string { const matches = text.match(frontMatterRegex); if (matches) { const parsed: FrontMatterMetadata = yaml.load(matches[1], { @@ -28,8 +29,8 @@ export function extractFrontMatter(text: string, db: any): string { schema: yaml.FAILSAFE_SCHEMA, }) as FrontMatterMetadata; - if (parsed && parsed.title) { - db?.setDiagramTitle(parsed.title); + if (parsed?.title) { + db.setDiagramTitle?.(parsed.title); } return text.slice(matches[0].length); diff --git a/packages/mermaid/src/diagram-api/types.ts b/packages/mermaid/src/diagram-api/types.ts index d45eac6aa..23810d133 100644 --- a/packages/mermaid/src/diagram-api/types.ts +++ b/packages/mermaid/src/diagram-api/types.ts @@ -8,8 +8,16 @@ export interface InjectUtils { _setupGraphViewbox: any; } +/** + * Generic Diagram DB that may apply to any diagram type. + */ +export interface DiagramDb { + clear?: () => void; + setDiagramTitle?: (title: string) => void; +} + export interface DiagramDefinition { - db: any; + db: DiagramDb; renderer: any; parser: any; styles: any;