From 649ab17806428d6e290bf3177146f92273b627a8 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 9 Nov 2022 09:54:52 +0530 Subject: [PATCH] feat: Add config validator MVP --- packages/mermaid/src/config.ts | 28 ++++++++++++++++++++++++++-- packages/mermaid/src/config.type.ts | 4 ++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/config.ts b/packages/mermaid/src/config.ts index 44dcf8bd1..791d5ee81 100644 --- a/packages/mermaid/src/config.ts +++ b/packages/mermaid/src/config.ts @@ -40,7 +40,8 @@ export const updateCurrentConfig = (siteCfg: MermaidConfig, _directives: any[]) } currentConfig = cfg; - return cfg; + checkConfig(currentConfig); + return currentConfig; }; /** @@ -68,7 +69,7 @@ export const setSiteConfig = (conf: MermaidConfig): MermaidConfig => { siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables); } - currentConfig = updateCurrentConfig(siteConfig, directives); + updateCurrentConfig(siteConfig, directives); return siteConfig; }; @@ -117,6 +118,7 @@ export const setConfig = (conf: MermaidConfig): MermaidConfig => { // conf[key] = manipulator ? manipulator(conf[key]) : conf[key]; // }); + checkConfig(conf); assignWithDepth(currentConfig, conf); return getConfig(); @@ -224,3 +226,25 @@ export const reset = (config = siteConfig): void => { directives = []; updateCurrentConfig(config, directives); }; + +enum ConfigWarning { + 'LAZY_LOAD_DEPRECATED' = 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.', +} +type ConfigWarningStrings = keyof typeof ConfigWarning; +const issuedWarnings: { [key in ConfigWarningStrings]?: boolean } = {}; +const issueWarning = (warning: ConfigWarningStrings) => { + if (issuedWarnings[warning]) { + return; + } + log.warn(ConfigWarning[warning]); + issuedWarnings[warning] = true; +}; + +const checkConfig = (config: MermaidConfig) => { + if (!config) { + return; + } + if (config.lazyLoadedDiagrams || config.loadExternalDiagramsAtStartup) { + issueWarning('LAZY_LOAD_DEPRECATED'); + } +}; diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index d9d94226f..07ca02311 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -3,6 +3,10 @@ import DOMPurify from 'dompurify'; export interface MermaidConfig { + /** @deprecated use mermaid.registerLazyDiagrams instead */ + lazyLoadedDiagrams?: string[]; + /** @deprecated use mermaid.registerLazyDiagrams instead */ + loadExternalDiagramsAtStartup?: boolean; theme?: string; themeVariables?: any; themeCSS?: string;