From 5f3c4fccafc72697e37e366c324ceca02ebc685d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 07:34:16 +0530 Subject: [PATCH 01/32] chore: Add tiny bundle Excludes elk and mindmap at build time --- .esbuild/build.ts | 23 ++++++++++++++++++- .esbuild/util.ts | 12 +++++++--- .../src/diagrams/error/errorDiagram.ts | 2 +- .../src/diagrams/flowchart/elk/detector.ts | 4 +++- .../mermaid/src/diagrams/mindmap/detector.ts | 4 +++- packages/mermaid/src/types.d.ts | 1 + 6 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 packages/mermaid/src/types.d.ts diff --git a/.esbuild/build.ts b/.esbuild/build.ts index bee13af51..39ac2978a 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -6,7 +6,9 @@ import { packageOptions } from '../.build/common.js'; const shouldVisualize = process.argv.includes('--visualize'); const buildPackage = async (entryName: keyof typeof packageOptions) => { + // package.mjs await build(getBuildConfig({ entryName, minify: false })); + // package.min.mjs const { metafile } = await build( getBuildConfig({ entryName, minify: true, metafile: shouldVisualize }) ); @@ -14,8 +16,27 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => { // Upload metafile into https://esbuild.github.io/analyze/ await writeFile(`stats/meta-${entryName}.json`, JSON.stringify(metafile)); } + // package.core.mjs await build(getBuildConfig({ entryName, minify: false, core: true })); - await build(getBuildConfig({ entryName, minify: true, format: 'iife' })); + if (entryName === 'mermaid') { + // mermaid.js + await build(getBuildConfig({ entryName, minify: false, format: 'iife' })); + // mermaid.min.js + await build(getBuildConfig({ entryName, minify: true, format: 'iife' })); + // mermaid.tiny.min.js + const { metafile } = await build( + getBuildConfig({ + entryName, + minify: true, + includeLargeDiagrams: false, + metafile: shouldVisualize, + format: 'iife', + }) + ); + if (metafile) { + await writeFile(`stats/meta-${entryName}-tiny.json`, JSON.stringify(metafile)); + } + } }; const handler = (e) => { diff --git a/.esbuild/util.ts b/.esbuild/util.ts index 249045652..12ccc5807 100644 --- a/.esbuild/util.ts +++ b/.esbuild/util.ts @@ -14,6 +14,7 @@ interface MermaidBuildOptions { metafile?: boolean; format?: 'esm' | 'iife'; entryName: keyof typeof packageOptions; + includeLargeDiagrams?: boolean; } const buildOptions = (override: BuildOptions): BuildOptions => { @@ -37,7 +38,8 @@ export const getBuildConfig = ({ core, entryName, metafile, - format, + format = 'esm', + includeLargeDiagrams = true, }: MermaidBuildOptions): BuildOptions => { const external: string[] = ['require', 'fs', 'path']; const { name, file, packageName } = packageOptions[entryName]; @@ -45,11 +47,15 @@ export const getBuildConfig = ({ absWorkingDir: resolve(__dirname, `../packages/${packageName}`), entryPoints: { [`${name}${core ? '.core' : format === 'iife' ? '' : '.esm'}${ - minify ? '.min' : '' - }`]: `src/${file}`, + includeLargeDiagrams ? '' : '.tiny' + }${minify ? '.min' : ''}`]: `src/${file}`, }, metafile, logLevel: 'info', + define: { + // This needs to be stringified for esbuild + includeLargeDiagrams: `${includeLargeDiagrams}`, + }, }); if (core) { diff --git a/packages/mermaid/src/diagrams/error/errorDiagram.ts b/packages/mermaid/src/diagrams/error/errorDiagram.ts index 284dfd744..5b172db2e 100644 --- a/packages/mermaid/src/diagrams/error/errorDiagram.ts +++ b/packages/mermaid/src/diagrams/error/errorDiagram.ts @@ -1,7 +1,7 @@ import type { DiagramDefinition } from '../../diagram-api/types.js'; import { renderer } from './errorRenderer.js'; -const diagram: DiagramDefinition = { +export const diagram: DiagramDefinition = { db: {}, renderer, parser: { diff --git a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts index 6cfcf2619..252455e1c 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts +++ b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts @@ -19,7 +19,9 @@ const detector: DiagramDetector = (txt, config): boolean => { }; const loader: DiagramLoader = async () => { - const { diagram } = await import('./flowchart-elk-definition.js'); + const { diagram } = includeLargeDiagrams + ? await import('./flowchart-elk-definition.js') + : await import('../../error/errorDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/mindmap/detector.ts b/packages/mermaid/src/diagrams/mindmap/detector.ts index 2b31fc5e8..0021b5308 100644 --- a/packages/mermaid/src/diagrams/mindmap/detector.ts +++ b/packages/mermaid/src/diagrams/mindmap/detector.ts @@ -10,7 +10,9 @@ const detector: DiagramDetector = (txt) => { }; const loader: DiagramLoader = async () => { - const { diagram } = await import('./mindmap-definition.js'); + const { diagram } = includeLargeDiagrams + ? await import('./mindmap-definition.js') + : await import('../error/errorDiagram.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/types.d.ts b/packages/mermaid/src/types.d.ts new file mode 100644 index 000000000..4f52a09df --- /dev/null +++ b/packages/mermaid/src/types.d.ts @@ -0,0 +1 @@ +declare let includeLargeDiagrams: boolean; From a1541aa6f5cd9a290db402bd44bfa700cc245658 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 08:14:43 +0530 Subject: [PATCH 02/32] chore: Split chunks into folders --- .esbuild/build.ts | 61 +++++++++++++++++++++++++---------------------- .esbuild/util.ts | 53 +++++++++++++++++++++++++++------------- 2 files changed, 70 insertions(+), 44 deletions(-) diff --git a/.esbuild/build.ts b/.esbuild/build.ts index 39ac2978a..2b8734ad8 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -1,40 +1,47 @@ import { build } from 'esbuild'; import { mkdir, writeFile } from 'node:fs/promises'; -import { getBuildConfig } from './util.js'; +import { MermaidBuildOptions, defaultConfig, getBuildConfig } from './util.js'; import { packageOptions } from '../.build/common.js'; const shouldVisualize = process.argv.includes('--visualize'); const buildPackage = async (entryName: keyof typeof packageOptions) => { - // package.mjs - await build(getBuildConfig({ entryName, minify: false })); - // package.min.mjs - const { metafile } = await build( - getBuildConfig({ entryName, minify: true, metafile: shouldVisualize }) - ); - if (metafile) { - // Upload metafile into https://esbuild.github.io/analyze/ - await writeFile(`stats/meta-${entryName}.json`, JSON.stringify(metafile)); - } - // package.core.mjs - await build(getBuildConfig({ entryName, minify: false, core: true })); + const commonConfig = { ...defaultConfig, entryName }; + const configs = [ + { ...commonConfig }, + { + ...commonConfig, + minify: true, + metafile: shouldVisualize, + }, + { ...commonConfig, core: true }, + ]; + if (entryName === 'mermaid') { - // mermaid.js - await build(getBuildConfig({ entryName, minify: false, format: 'iife' })); - // mermaid.min.js - await build(getBuildConfig({ entryName, minify: true, format: 'iife' })); - // mermaid.tiny.min.js - const { metafile } = await build( - getBuildConfig({ - entryName, + const iifeConfig: MermaidBuildOptions = { ...commonConfig, format: 'iife' }; + configs.push( + { ...iifeConfig }, + { ...iifeConfig, minify: true }, + { + ...iifeConfig, minify: true, includeLargeDiagrams: false, metafile: shouldVisualize, - format: 'iife', - }) + } ); - if (metafile) { - await writeFile(`stats/meta-${entryName}-tiny.json`, JSON.stringify(metafile)); + } + + const results = await Promise.all(configs.map((config) => build(getBuildConfig(config)))); + + if (shouldVisualize) { + for (const { metafile } of results) { + if (!metafile) { + continue; + } + const fileName = Object.keys(metafile.outputs) + .filter((key) => key.includes('.min') && key.endsWith('js'))[0] + .replace('dist/', ''); + await writeFile(`stats/${fileName}.meta.json`, JSON.stringify(metafile)); } } }; @@ -47,9 +54,7 @@ const handler = (e) => { const main = async () => { await mkdir('stats').catch(() => {}); const packageNames = Object.keys(packageOptions) as (keyof typeof packageOptions)[]; - for (const pkg of packageNames) { - await buildPackage(pkg).catch(handler); - } + await Promise.allSettled(packageNames.map((pkg) => buildPackage(pkg).catch(handler))); }; void main(); diff --git a/.esbuild/util.ts b/.esbuild/util.ts index 12ccc5807..f80368a06 100644 --- a/.esbuild/util.ts +++ b/.esbuild/util.ts @@ -8,15 +8,23 @@ import { jisonPlugin } from './jisonPlugin.js'; const __dirname = fileURLToPath(new URL('.', import.meta.url)); -interface MermaidBuildOptions { +export interface MermaidBuildOptions { minify: boolean; - core?: boolean; - metafile?: boolean; - format?: 'esm' | 'iife'; + core: boolean; + metafile: boolean; + format: 'esm' | 'iife'; entryName: keyof typeof packageOptions; - includeLargeDiagrams?: boolean; + includeLargeDiagrams: boolean; } +export const defaultConfig: Omit = { + minify: false, + metafile: false, + core: false, + format: 'esm', + includeLargeDiagrams: true, +} as const; + const buildOptions = (override: BuildOptions): BuildOptions => { return { bundle: true, @@ -33,25 +41,38 @@ const buildOptions = (override: BuildOptions): BuildOptions => { }; }; -export const getBuildConfig = ({ - minify, - core, - entryName, - metafile, - format = 'esm', - includeLargeDiagrams = true, -}: MermaidBuildOptions): BuildOptions => { +const getFileName = ( + fileName: string, + { core, format, includeLargeDiagrams, minify, entryName }: MermaidBuildOptions +) => { + if (core) { + fileName += '.core'; + } + if (format === 'esm') { + fileName += '.esm'; + } + if (!includeLargeDiagrams) { + fileName += '.tiny'; + } + if (minify) { + fileName += '.min'; + } + return fileName; +}; + +export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => { + const { core, entryName, metafile, format, includeLargeDiagrams } = options; const external: string[] = ['require', 'fs', 'path']; const { name, file, packageName } = packageOptions[entryName]; + const outFileName = getFileName(name, options); let output: BuildOptions = buildOptions({ absWorkingDir: resolve(__dirname, `../packages/${packageName}`), entryPoints: { - [`${name}${core ? '.core' : format === 'iife' ? '' : '.esm'}${ - includeLargeDiagrams ? '' : '.tiny' - }${minify ? '.min' : ''}`]: `src/${file}`, + [outFileName]: `src/${file}`, }, metafile, logLevel: 'info', + chunkNames: `chunks/${outFileName}/[name]-[hash]`, define: { // This needs to be stringified for esbuild includeLargeDiagrams: `${includeLargeDiagrams}`, From 13a6f04945adb7bcb5825549e4c30ce02d9bde27 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 09:05:56 +0530 Subject: [PATCH 03/32] chore: Add vite support for define --- .vite/build.ts | 4 ++++ packages/mermaid/src/types.d.ts | 2 +- vite.config.ts | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.vite/build.ts b/.vite/build.ts index a03bdeec2..b3e5efb45 100644 --- a/.vite/build.ts +++ b/.vite/build.ts @@ -89,6 +89,10 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions) }), ...visualizerOptions(packageName, core), ], + define: { + // Needs to be string + includeLargeDiagrams: 'true', + }, }; if (watch && config.build) { diff --git a/packages/mermaid/src/types.d.ts b/packages/mermaid/src/types.d.ts index 4f52a09df..2a0cf2d78 100644 --- a/packages/mermaid/src/types.d.ts +++ b/packages/mermaid/src/types.d.ts @@ -1 +1 @@ -declare let includeLargeDiagrams: boolean; +declare const includeLargeDiagrams: boolean; diff --git a/vite.config.ts b/vite.config.ts index 080ff981f..d99f0d3ed 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -33,4 +33,8 @@ export default defineConfig({ esmExternals: true, }, }, + define: { + // Needs to be string + includeLargeDiagrams: 'true', + }, }); From 9632049bf2ed2fcc720a50467ab0490da9315da3 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 09:09:32 +0530 Subject: [PATCH 04/32] v11.0.0-alpha.3 --- packages/mermaid/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 81d89173d..2af8d6738 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "11.0.0-alpha.2", + "version": "11.0.0-alpha.3", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", From 0280316b035bec230760e79a0ce61e1fa405eaca Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 09:55:00 +0530 Subject: [PATCH 05/32] Remove sourcemaps --- .esbuild/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.esbuild/util.ts b/.esbuild/util.ts index 29e16aa93..fd800510d 100644 --- a/.esbuild/util.ts +++ b/.esbuild/util.ts @@ -36,7 +36,7 @@ const buildOptions = (override: BuildOptions): BuildOptions => { external: ['require', 'fs', 'path'], outdir: 'dist', plugins: [jisonPlugin, jsonSchemaPlugin], - sourcemap: 'external', + // sourcemap: 'linked', ...override, }; }; From 91b7d4234e1dd6da1f3bc3ed99fbe58c829a7f8a Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 14:31:07 +0530 Subject: [PATCH 06/32] chore: Highlight if tiny version is used in error and info. --- .../interfaces/mermaidAPI.ParseOptions.md | 2 +- .../interfaces/mermaidAPI.RenderResult.md | 4 ++-- docs/config/setup/modules/mermaidAPI.md | 22 +++++++++---------- packages/mermaid/src/mermaidAPI.ts | 4 +++- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/docs/config/setup/interfaces/mermaidAPI.ParseOptions.md b/docs/config/setup/interfaces/mermaidAPI.ParseOptions.md index 8ab259885..da715e405 100644 --- a/docs/config/setup/interfaces/mermaidAPI.ParseOptions.md +++ b/docs/config/setup/interfaces/mermaidAPI.ParseOptions.md @@ -16,4 +16,4 @@ #### Defined in -[mermaidAPI.ts:77](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L77) +[mermaidAPI.ts:79](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L79) diff --git a/docs/config/setup/interfaces/mermaidAPI.RenderResult.md b/docs/config/setup/interfaces/mermaidAPI.RenderResult.md index 527b46d09..6ed33b128 100644 --- a/docs/config/setup/interfaces/mermaidAPI.RenderResult.md +++ b/docs/config/setup/interfaces/mermaidAPI.RenderResult.md @@ -39,7 +39,7 @@ bindFunctions?.(div); // To call bindFunctions only if it's present. #### Defined in -[mermaidAPI.ts:97](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L97) +[mermaidAPI.ts:99](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L99) --- @@ -51,4 +51,4 @@ The svg code for the rendered graph. #### Defined in -[mermaidAPI.ts:87](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L87) +[mermaidAPI.ts:89](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L89) diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index 1160a5dda..6e123a0ae 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -25,7 +25,7 @@ Renames and re-exports [mermaidAPI](mermaidAPI.md#mermaidapi) #### Defined in -[mermaidAPI.ts:81](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L81) +[mermaidAPI.ts:83](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L83) ## Variables @@ -96,7 +96,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:668](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L668) +[mermaidAPI.ts:670](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L670) ## Functions @@ -127,7 +127,7 @@ Return the last node appended #### Defined in -[mermaidAPI.ts:309](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L309) +[mermaidAPI.ts:311](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L311) --- @@ -153,7 +153,7 @@ the cleaned up svgCode #### Defined in -[mermaidAPI.ts:255](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L255) +[mermaidAPI.ts:257](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L257) --- @@ -179,7 +179,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:184](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L184) +[mermaidAPI.ts:186](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L186) --- @@ -202,7 +202,7 @@ the string with all the user styles #### Defined in -[mermaidAPI.ts:232](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L232) +[mermaidAPI.ts:234](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L234) --- @@ -229,7 +229,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:168](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L168) +[mermaidAPI.ts:170](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L170) --- @@ -249,7 +249,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:154](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L154) +[mermaidAPI.ts:156](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L156) --- @@ -269,7 +269,7 @@ with an enclosing block that has each of the cssClasses followed by !important; #### Defined in -[mermaidAPI.ts:125](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L125) +[mermaidAPI.ts:127](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L127) --- @@ -295,7 +295,7 @@ Put the svgCode into an iFrame. Return the iFrame code #### Defined in -[mermaidAPI.ts:286](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L286) +[mermaidAPI.ts:288](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L288) --- @@ -320,4 +320,4 @@ Remove any existing elements from the given document #### Defined in -[mermaidAPI.ts:359](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L359) +[mermaidAPI.ts:361](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L361) diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index f8a36f88e..65778cf07 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -14,7 +14,7 @@ import { select } from 'd3'; import { compile, serialize, stringify } from 'stylis'; // @ts-ignore: TODO Fix ts errors -import { version } from '../package.json'; +import { version as packageVersion } from '../package.json'; import * as configApi from './config.js'; import { addDiagrams } from './diagram-api/diagram-orchestration.js'; import { Diagram, getDiagramFromText } from './Diagram.js'; @@ -31,6 +31,8 @@ import isEmpty from 'lodash-es/isEmpty.js'; import { setA11yDiagramInfo, addSVGa11yTitleDescription } from './accessibility.js'; import { parseDirective } from './directiveUtils.js'; +const version = packageVersion + (includeLargeDiagrams ? '' : '-tiny'); + // diagram names that support classDef statements const CLASSDEF_DIAGRAMS = [ 'graph', From 5f95a26218ba6716ceda916ace825241ad7e70e9 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 14:31:37 +0530 Subject: [PATCH 07/32] fix: Center version text in SVG --- packages/mermaid/src/diagrams/info/infoRenderer.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index 25ae72fce..2d25dd3e3 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -1,6 +1,6 @@ import { log } from '../../logger.js'; import { configureSvgSize } from '../../setupGraphViewbox.js'; -import type { DrawDefinition, Group, SVG } from '../../diagram-api/types.js'; +import type { DrawDefinition, SVG } from '../../diagram-api/types.js'; import { selectSvgElement } from '../../rendering-util/selectSvgElement.js'; /** @@ -15,15 +15,14 @@ const draw: DrawDefinition = (text, id, version) => { const svg: SVG = selectSvgElement(id); configureSvgSize(svg, 100, 400, true); - - const group: Group = svg.append('g'); - group + svg .append('text') - .attr('x', 100) - .attr('y', 40) + .attr('x', '50%') + .attr('y', '50%') .attr('class', 'version') .attr('font-size', 32) - .style('text-anchor', 'middle') + .attr('dominant-baseline', 'middle') + .attr('text-anchor', 'middle') .text(`v${version}`); }; From 55266c4085d2ad5e99dbc78341563f2c68159921 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 16 Aug 2023 11:01:19 +0530 Subject: [PATCH 08/32] chore: Simplify diagram exclusion Co-authored-by: Alois Klink --- packages/mermaid/package.json | 2 +- .../src/diagram-api/diagram-orchestration.ts | 6 +- .../src/diagrams/flowchart/elk/detector.ts | 4 +- .../mermaid/src/diagrams/mindmap/detector.ts | 4 +- pnpm-lock.yaml | 283 +----------------- 5 files changed, 14 insertions(+), 285 deletions(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index 2af8d6738..84c4ae8e9 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -1,6 +1,6 @@ { "name": "mermaid", - "version": "11.0.0-alpha.3", + "version": "11.0.0-alpha.4", "description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.", "type": "module", "module": "./dist/mermaid.core.mjs", diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index 9c03e27f3..09996e366 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -71,10 +71,8 @@ export const addDiagrams = () => { pie, requirement, sequence, - flowchartElk, flowchartV2, flowchart, - mindmap, timeline, git, stateV2, @@ -83,4 +81,8 @@ export const addDiagrams = () => { quadrantChart, sankey ); + + if (includeLargeDiagrams) { + registerLazyLoadedDiagrams(flowchartElk, mindmap); + } }; diff --git a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts index 252455e1c..6cfcf2619 100644 --- a/packages/mermaid/src/diagrams/flowchart/elk/detector.ts +++ b/packages/mermaid/src/diagrams/flowchart/elk/detector.ts @@ -19,9 +19,7 @@ const detector: DiagramDetector = (txt, config): boolean => { }; const loader: DiagramLoader = async () => { - const { diagram } = includeLargeDiagrams - ? await import('./flowchart-elk-definition.js') - : await import('../../error/errorDiagram.js'); + const { diagram } = await import('./flowchart-elk-definition.js'); return { id, diagram }; }; diff --git a/packages/mermaid/src/diagrams/mindmap/detector.ts b/packages/mermaid/src/diagrams/mindmap/detector.ts index 0021b5308..2b31fc5e8 100644 --- a/packages/mermaid/src/diagrams/mindmap/detector.ts +++ b/packages/mermaid/src/diagrams/mindmap/detector.ts @@ -10,9 +10,7 @@ const detector: DiagramDetector = (txt) => { }; const loader: DiagramLoader = async () => { - const { diagram } = includeLargeDiagrams - ? await import('./mindmap-definition.js') - : await import('../error/errorDiagram.js'); + const { diagram } = await import('./mindmap-definition.js'); return { id, diagram }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d6e90660b..57245a46b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -482,8 +482,8 @@ importers: specifier: ^1.1.16 version: 1.1.16 '@unocss/reset': - specifier: ^0.53.0 - version: 0.53.0 + specifier: ^0.54.0 + version: 0.54.0 '@vite-pwa/vitepress': specifier: ^0.2.0 version: 0.2.0(vite-plugin-pwa@0.16.0) @@ -500,20 +500,20 @@ importers: specifier: ^1.1.0 version: 1.1.0 unocss: - specifier: ^0.53.0 - version: 0.53.0(postcss@8.4.27)(rollup@2.79.1)(vite@4.3.9) + specifier: ^0.54.0 + version: 0.54.0(postcss@8.4.27)(rollup@2.79.1)(vite@4.3.9) unplugin-vue-components: specifier: ^0.25.0 version: 0.25.0(rollup@2.79.1)(vue@3.2.47) vite: - specifier: ^4.3.3 + specifier: ^4.3.9 version: 4.3.9(@types/node@18.16.0) vite-plugin-pwa: specifier: ^0.16.0 version: 0.16.0(vite@4.3.9)(workbox-build@7.0.0)(workbox-window@7.0.0) vitepress: - specifier: 1.0.0-beta.3 - version: 1.0.0-beta.3(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0) + specifier: 1.0.0-beta.7 + version: 1.0.0-beta.7(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0) workbox-window: specifier: ^7.0.0 version: 7.0.0 @@ -4999,17 +4999,6 @@ packages: eslint-visitor-keys: 3.4.0 dev: true - /@unocss/astro@0.53.0(rollup@2.79.1)(vite@4.3.9): - resolution: {integrity: sha512-8bR7ysIMZEOpcjd/cVmogcABSFDYPjUqMnbflv44p1A2/deemo9CIkpRARoq/96NQuzWJsKhKodcQodExZcqiA==} - dependencies: - '@unocss/core': 0.53.0 - '@unocss/reset': 0.53.0 - '@unocss/vite': 0.53.0(rollup@2.79.1)(vite@4.3.9) - transitivePeerDependencies: - - rollup - - vite - dev: true - /@unocss/astro@0.54.0(rollup@2.79.1)(vite@4.3.9): resolution: {integrity: sha512-Zq4GGRiXbWCipN9lUKlu3fmlrqIYu3rFoGwjL+v7VJulP8tVhiqzfbLXFKQePOVvCmiSvCKr6leuqgFA7PlPBg==} dependencies: @@ -5021,28 +5010,6 @@ packages: - vite dev: true - /@unocss/cli@0.53.0(rollup@2.79.1): - resolution: {integrity: sha512-9WNBHy8m8tMqwcp7mUhebRUBvHQfbx01CMe5cAFLmUYtJULM+8IjJxqERkaAZyyoOXf1TNO2v1dFAmCwhMRCLQ==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@unocss/config': 0.53.0 - '@unocss/core': 0.53.0 - '@unocss/preset-uno': 0.53.0 - cac: 6.7.14 - chokidar: 3.5.3 - colorette: 2.0.20 - consola: 3.2.3 - fast-glob: 3.3.0 - magic-string: 0.30.1 - pathe: 1.1.1 - perfect-debounce: 1.0.0 - transitivePeerDependencies: - - rollup - dev: true - /@unocss/cli@0.54.0(rollup@2.79.1): resolution: {integrity: sha512-SuQkqJxuvC9JHUpHbFQY5r+6/FoF0j4zTwY25POlr9SIz3CFrdn4tDndxvhClap9d6wVHKSbHBP9EY0fA2SQzw==} engines: {node: '>=14'} @@ -5065,14 +5032,6 @@ packages: - rollup dev: true - /@unocss/config@0.53.0: - resolution: {integrity: sha512-D9A3uFT6jSj/EgMOCpQQ+dPadLQDiEIb0BHa7BYW7/3STijnPMcFjPVjzABj9Wn7RQjka/MZ2/AvfH9eYMTR8g==} - engines: {node: '>=14'} - dependencies: - '@unocss/core': 0.53.0 - unconfig: 0.3.9 - dev: true - /@unocss/config@0.54.0: resolution: {integrity: sha512-FT0zOJCR2qr5P08msNovsJ4Qx+P4rXoYlK2zt/hgLKiFRIUKxnwSBDvapqmW6vo3vzOsdmBBO0YKpaZJ877F8A==} engines: {node: '>=14'} @@ -5081,33 +5040,16 @@ packages: unconfig: 0.3.9 dev: true - /@unocss/core@0.53.0: - resolution: {integrity: sha512-MB6hqSN2wjmm3NNYspNqzxvMv7LnyLqz0uCWr15elRqnjsuq01w7DZ1iPS9ckA2M3YjQIRTXR9YPtDbSqY0jcA==} - dev: true - /@unocss/core@0.54.0: resolution: {integrity: sha512-iHfJJ8U+pVhMrbVpzMb0GImZUJu3Xmp165Q5Qr44hGOEzcMdvdBxbMSSl2VBKjRsEuNudNVhh7XJAyUcKxnSWg==} dev: true - /@unocss/extractor-arbitrary-variants@0.53.0: - resolution: {integrity: sha512-f1v2E5PherulTAdrsXXb5Knaz4Viu2dM71WalNYhb+j9QqwGngagLrMzRzeIRLOEI2c0D0l7HBQtew+QFWsXcg==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/extractor-arbitrary-variants@0.54.0: resolution: {integrity: sha512-luJTF3TnXFbMZ2Gau56p0uRsR+yIUbvHbT6ag6mvv0TvUsnhEFsMUdkXVJ1arp0duIl/dg0r1drL/Ax75RszNw==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/inspector@0.53.0: - resolution: {integrity: sha512-TX8O39tXuEStUs516YBiCr2BS68Z9oHXnMZspxBxMma1X47bW2Hz+x9kWkhFzqmHWBjFPJob1PjjkbfeE4TbOQ==} - dependencies: - gzip-size: 6.0.0 - sirv: 2.0.3 - dev: true - /@unocss/inspector@0.54.0: resolution: {integrity: sha512-D3yVO7zE4NY/sARiNCUXQC7HPQZhEy7U1mSZEPc+vsVKx3nJJuRMqK9qo60SV4AZuxnd8WhL0T00W7cjVldzRw==} dependencies: @@ -5115,20 +5057,6 @@ packages: sirv: 2.0.3 dev: true - /@unocss/postcss@0.53.0(postcss@8.4.27): - resolution: {integrity: sha512-q+5aDvkwP1eEhDmdz32WrwsGEEcJdQLy3apiU/df+CaL71HATvUfMZJVZbXZlFqoed703c+cGLHOhRHMPDk/dw==} - engines: {node: '>=14'} - peerDependencies: - postcss: ^8.4.21 - dependencies: - '@unocss/config': 0.53.0 - '@unocss/core': 0.53.0 - css-tree: 2.3.1 - fast-glob: 3.3.0 - magic-string: 0.30.1 - postcss: 8.4.27 - dev: true - /@unocss/postcss@0.54.0(postcss@8.4.27): resolution: {integrity: sha512-t1PmIkp2Qa9F/9swfCVCXMuheQxd1ddrcvf0+d4fOckpFF8YhvOi+WfMoZW4YFwoCmG5pvDg4VYgKbDunGHhRg==} engines: {node: '>=14'} @@ -5143,28 +5071,12 @@ packages: postcss: 8.4.27 dev: true - /@unocss/preset-attributify@0.53.0: - resolution: {integrity: sha512-RqvSbuECeMBVVt2rmNIozznLBkfzkfe7vOIx3arytPBG/nggDnC1GB/xTxCGAiU7UcEXw03laWtjwXHmJHt8Gw==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/preset-attributify@0.54.0: resolution: {integrity: sha512-5Ar1n7LHKF6z1BF9N5CR8jjl9TXrVktTDd+Ldyia69jDLi+stVhM9AOGEDE8wbDkLKwv9CK5XhvyPCazGHrG+A==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/preset-icons@0.53.0: - resolution: {integrity: sha512-0Et3dtrmBRVPZ5pGiITrwb9O01M88s0juOVSM7L4z0Uf0RNXuPCGwh2N5TRX2IIS7LAi4k0tAXFUORlkUiC2Lg==} - dependencies: - '@iconify/utils': 2.1.7 - '@unocss/core': 0.53.0 - ofetch: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@unocss/preset-icons@0.54.0: resolution: {integrity: sha512-WHdkpMzj6tohIkCc/+mEOzn0Yppqoz3y5zbI3WsDqA2/QFNSXx4haWcjV5iJI42uGcLXRp4K3l9JV3EL+oAxbg==} dependencies: @@ -5175,13 +5087,6 @@ packages: - supports-color dev: true - /@unocss/preset-mini@0.53.0: - resolution: {integrity: sha512-hGj9ltZUJIuPT+9bO+R0OlsQOSlV7rjQRkSSMnUaDsuKfzhahsyc7QglNHZI4wuTI/9iSJKGUD4nvTe559+8Hg==} - dependencies: - '@unocss/core': 0.53.0 - '@unocss/extractor-arbitrary-variants': 0.53.0 - dev: true - /@unocss/preset-mini@0.54.0: resolution: {integrity: sha512-y+BnGpQAGC3ZWWZfXnsvUuTTO2rNnakHx4jIyf1cv7rw5oo7jL+ONb8stKqlmLGCzlQUKjG1xp+DGuKSVnRXBw==} dependencies: @@ -5189,25 +5094,12 @@ packages: '@unocss/extractor-arbitrary-variants': 0.54.0 dev: true - /@unocss/preset-tagify@0.53.0: - resolution: {integrity: sha512-S3e1d2jJvjEbGBE0jPEht/Hmp+245SxjWcrDdO7HmKVL2+0vwIQQg6P2P9aUWqt+/kZQ6iBStSzGm9RyKRKMhw==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/preset-tagify@0.54.0: resolution: {integrity: sha512-FTIZc0vMoX9+fcjPYMWALpCQp3cZQCFzR05CVJapvymxb6zl5eZq7e+tpvrmU9ZPSOdG+eHTd3SxhjeJSwh15g==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/preset-typography@0.53.0: - resolution: {integrity: sha512-VFTNV8O9KIH/JX9Pn43Vv6JrCTljG9NYnuvZpKpEp95uYDcZQAISao04RWEzbAzqB31x8N9Aga1Bq2TSOg3uTA==} - dependencies: - '@unocss/core': 0.53.0 - '@unocss/preset-mini': 0.53.0 - dev: true - /@unocss/preset-typography@0.54.0: resolution: {integrity: sha512-QqHmC49nDgYeoOCMZp1OPn6R7ISIb2LMpSq81iuuFDeYO8J+JTBWe+Z1TZhVRAXwc9rsVZeUWW6PqoBGP9QCOw==} dependencies: @@ -5215,14 +5107,6 @@ packages: '@unocss/preset-mini': 0.54.0 dev: true - /@unocss/preset-uno@0.53.0: - resolution: {integrity: sha512-f50D2nFnX7nXvxtueUfCRbSCrWNJTFm4qKg0J9gzqyOJGWJoNcN2Ig9aL0P47W1TmIjYA5SpGlvg6U5qIfkNtQ==} - dependencies: - '@unocss/core': 0.53.0 - '@unocss/preset-mini': 0.53.0 - '@unocss/preset-wind': 0.53.0 - dev: true - /@unocss/preset-uno@0.54.0: resolution: {integrity: sha512-09/sthjGLDNMr/Cayu0Gy9jTMSxUuTfetWnM3jkByNidhfuzMW26eaMhxTrbUd28H8Titt6M+WgbJ7Gi0lQtZA==} dependencies: @@ -5231,13 +5115,6 @@ packages: '@unocss/preset-wind': 0.54.0 dev: true - /@unocss/preset-web-fonts@0.53.0: - resolution: {integrity: sha512-CAZW/PSp9+VBvzE/T56v2Yb8Nk3xF9XJaQrDydF9cAPyz/gVOZBbKQSDS8OqyAqKiXbnn+NYCwEqTG8v/YOMyw==} - dependencies: - '@unocss/core': 0.53.0 - ofetch: 1.1.1 - dev: true - /@unocss/preset-web-fonts@0.54.0: resolution: {integrity: sha512-3x1SDbJ2omwNNc3eK19zOdNU6moJg4SEr09GkeV4MMHrMXM6BHW2mEJYFSVgmTVD1RN4LZuoy/gTHMWpJhTuzw==} dependencies: @@ -5245,13 +5122,6 @@ packages: ofetch: 1.1.1 dev: true - /@unocss/preset-wind@0.53.0: - resolution: {integrity: sha512-vb9tV3Cze+w8OZyOd/Xi6Zn8F8+EV53AZIqCrQvMD/6ZeqQJ9gjFx/Q69H/bu009wnPleQpce6RKJcNqMzif8g==} - dependencies: - '@unocss/core': 0.53.0 - '@unocss/preset-mini': 0.53.0 - dev: true - /@unocss/preset-wind@0.54.0: resolution: {integrity: sha512-SO971KQOYzM5IKwGDBve+EWBKevU1T0mK20g17BHxPI++ubHPWRRQIh/xxHyew592taBFWK6Q75fcbOgIodx4w==} dependencies: @@ -5259,65 +5129,32 @@ packages: '@unocss/preset-mini': 0.54.0 dev: true - /@unocss/reset@0.53.0: - resolution: {integrity: sha512-4XJkEtVxUGYp+WX2aRTrZLNp6MEwulBvhhpkAjwfkS+wVdo9lMma0O93TCqJaFeYx7lU8W92APB4n918rz9scA==} - dev: true - /@unocss/reset@0.54.0: resolution: {integrity: sha512-zxvr96hVsmvJtxCLatLSCc67RBEgqvVDhEtkIFxIz5oCJzxvipJTGdKxM4F6Akyzx1A+q7zM8dimqvmC6D5Idw==} dev: true - /@unocss/scope@0.53.0: - resolution: {integrity: sha512-JAk3jJeFTmmafVI8Oy/TkAs1/NXpR9Vy5IEIMO6gyAmYw0VjiL9dkYDNZAD9hwdj/oRIUgJMcX96Huhy+YDl/w==} - dev: true - /@unocss/scope@0.54.0: resolution: {integrity: sha512-47M3y3sl512BWZL5/aLrGPglQIRUjQrIW+WVVh3uzwIGVnDNHlxIhcHQUXXJuf8SLduXoIvcZQTfJt+jSXeuhA==} dev: true - /@unocss/transformer-attributify-jsx-babel@0.53.0: - resolution: {integrity: sha512-++DTBEkFS2/1VE+TBPEmK0NAaCa/KP7dkJ7uldrQ+c5MpDp/IcCkOt8vPEL/6qKhUbTYXb/hruqq6wv27ZDrSg==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/transformer-attributify-jsx-babel@0.54.0: resolution: {integrity: sha512-+YWhyReh6JZvGiYFZ61tyqkKOc/Tn+hyYaO7VP+G2IvJqtjTwzAuyxANHimCle7O4GLodouiHPe3lKscVFt0vg==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/transformer-attributify-jsx@0.53.0: - resolution: {integrity: sha512-4QJEmoj2of7nZM8afNsMk+NWX3K89j1sHx+EKw5+s1r/Pg4/PxeDgF4PnRWvPnjvRpDaRRTZGRxTrBEimup8vg==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/transformer-attributify-jsx@0.54.0: resolution: {integrity: sha512-in5IglhFqY/3GFe7IZA7g5Q9fskjiWAZiKtCTp5vFExagq1d3Tr9VIOA98SEXBrpXXIh3lKbTiY0NusJRU3K2Q==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/transformer-compile-class@0.53.0: - resolution: {integrity: sha512-PTPysxBAimEWspMU3gMo+053M5RURnLT88Wp0y8f4F8oEMg7fV9Tn5f/bftvG+iI7dPyl4m/OsislxfucoESYw==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/transformer-compile-class@0.54.0: resolution: {integrity: sha512-WK1fC+iDOl7Z7fO2ids6nWiMXMPHEfwMOs5dbv5lBz9UTrY1kpObToBsm3EfzhR6vwOTgld1UzpKAs3zCqZoKg==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/transformer-directives@0.53.0: - resolution: {integrity: sha512-EIrrVphm0Bv+Ng2w1Qj5f0JFkfbN0b1/1fJ9hwgb5S2ewE3Xvwk59/h321D/GGDraQCUqqyZGgcG368xVh3pQA==} - dependencies: - '@unocss/core': 0.53.0 - css-tree: 2.3.1 - dev: true - /@unocss/transformer-directives@0.54.0: resolution: {integrity: sha512-DJ9B5TSxScoj4B1C8H3qeUIfNGjUPuM42Lvl2exDEk4RhA/IwVePnCAjTl8UsHTDI9z+6H37v4p8j8srPrzEmQ==} dependencies: @@ -5325,38 +5162,12 @@ packages: css-tree: 2.3.1 dev: true - /@unocss/transformer-variant-group@0.53.0: - resolution: {integrity: sha512-dwfjifgoa2VuO3LCl2ayRw3M5T6EfDKt16s9KbIRUcHqMJFnoHACAk8e4YsHGBvly0utbQHxFuBygOar3IfxEg==} - dependencies: - '@unocss/core': 0.53.0 - dev: true - /@unocss/transformer-variant-group@0.54.0: resolution: {integrity: sha512-qwviBwjBKhbXYK0T1wNuM3weY+RJbmrWmKqWTldXAuZDf0q06KAa4jQC8FF1YXhq5/Z6tn2MW2GFPVWd/8nPHQ==} dependencies: '@unocss/core': 0.54.0 dev: true - /@unocss/vite@0.53.0(rollup@2.79.1)(vite@4.3.9): - resolution: {integrity: sha512-JoZhKVNruRjfySMVg/zNJbLEn/NTXj29Wf0SN4++xnGKrSapkPzYC46psL5bm5N5v4SHdpepTCoonC3FWCY6Fw==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 - dependencies: - '@ampproject/remapping': 2.2.1 - '@rollup/pluginutils': 5.0.2(rollup@2.79.1) - '@unocss/config': 0.53.0 - '@unocss/core': 0.53.0 - '@unocss/inspector': 0.53.0 - '@unocss/scope': 0.53.0 - '@unocss/transformer-directives': 0.53.0 - chokidar: 3.5.3 - fast-glob: 3.3.0 - magic-string: 0.30.1 - vite: 4.3.9(@types/node@18.16.0) - transitivePeerDependencies: - - rollup - dev: true - /@unocss/vite@0.54.0(rollup@2.79.1)(vite@4.3.9): resolution: {integrity: sha512-lABmJKYs/yNfZZSs3xwVhBZwNhfLaYcdKxPAopJ8MKiUqECdWvHqLvklKQvLttZpN3dQUmGTQLblM+55IodKEw==} peerDependencies: @@ -15256,42 +15067,6 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unocss@0.53.0(postcss@8.4.27)(rollup@2.79.1)(vite@4.3.9): - resolution: {integrity: sha512-kY4h5ERiDYlSnL2X+hbDfh+uaF7QNouy7j51GOTUr3Q0aaWehaNd05b15SjHrab559dEC0mYfrSEdh/DnCK1cw==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 0.53.0 - peerDependenciesMeta: - '@unocss/webpack': - optional: true - dependencies: - '@unocss/astro': 0.53.0(rollup@2.79.1)(vite@4.3.9) - '@unocss/cli': 0.53.0(rollup@2.79.1) - '@unocss/core': 0.53.0 - '@unocss/extractor-arbitrary-variants': 0.53.0 - '@unocss/postcss': 0.53.0(postcss@8.4.27) - '@unocss/preset-attributify': 0.53.0 - '@unocss/preset-icons': 0.53.0 - '@unocss/preset-mini': 0.53.0 - '@unocss/preset-tagify': 0.53.0 - '@unocss/preset-typography': 0.53.0 - '@unocss/preset-uno': 0.53.0 - '@unocss/preset-web-fonts': 0.53.0 - '@unocss/preset-wind': 0.53.0 - '@unocss/reset': 0.53.0 - '@unocss/transformer-attributify-jsx': 0.53.0 - '@unocss/transformer-attributify-jsx-babel': 0.53.0 - '@unocss/transformer-compile-class': 0.53.0 - '@unocss/transformer-directives': 0.53.0 - '@unocss/transformer-variant-group': 0.53.0 - '@unocss/vite': 0.53.0(rollup@2.79.1)(vite@4.3.9) - transitivePeerDependencies: - - postcss - - rollup - - supports-color - - vite - dev: true - /unocss@0.54.0(postcss@8.4.27)(rollup@2.79.1)(vite@4.3.9): resolution: {integrity: sha512-SXjyQqt/MP1uW8mjEmQaSa0zd+QB3FwaGD/ityNlu+zNRx1D03BPP9ACbJDB1zZKx4aodMVSsHZ3TV5wsu+VRQ==} engines: {node: '>=14'} @@ -15695,50 +15470,6 @@ packages: - terser dev: true - /vitepress@1.0.0-beta.3(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): - resolution: {integrity: sha512-GR5Pvr/o343NN1M4Na1shhDYZRrQbjmLq7WE0lla0H8iDPAsHE8agTHLWfu3FWx+3q2KA29sv16+0O9RQKGjlA==} - hasBin: true - dependencies: - '@docsearch/css': 3.5.1 - '@docsearch/js': 3.5.1(@algolia/client-search@4.14.2)(search-insights@2.6.0) - '@vitejs/plugin-vue': 4.2.3(vite@4.4.7)(vue@3.3.4) - '@vue/devtools-api': 6.5.0 - '@vueuse/core': 10.2.1(vue@3.3.4) - '@vueuse/integrations': 10.2.1(focus-trap@7.5.2)(vue@3.3.4) - body-scroll-lock: 4.0.0-beta.0 - focus-trap: 7.5.2 - mark.js: 8.11.1 - minisearch: 6.1.0 - shiki: 0.14.3 - vite: 4.4.7(@types/node@18.16.0) - vue: 3.3.4 - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/node' - - '@types/react' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - less - - lightningcss - - nprogress - - qrcode - - react - - react-dom - - sass - - search-insights - - sortablejs - - stylus - - sugarss - - terser - - universal-cookie - dev: true - /vitepress@1.0.0-beta.7(@algolia/client-search@4.14.2)(@types/node@18.16.0)(search-insights@2.6.0): resolution: {integrity: sha512-P9Rw+FXatKIU4fVdtKxqwHl6fby8E/8zE3FIfep6meNgN4BxbWqoKJ6yfuuQQR9IrpQqwnyaBh4LSabyll6tWg==} hasBin: true From 905cc365e7c53a20b31ac018403dcfe4d7543493 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 16 Aug 2023 11:08:09 +0530 Subject: [PATCH 09/32] chore: Fix ordering issue --- .../mermaid/src/diagram-api/diagram-orchestration.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index 09996e366..8474185ff 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -60,6 +60,11 @@ export const addDiagrams = () => { return text.toLowerCase().trimStart().startsWith('---'); } ); + + if (includeLargeDiagrams) { + registerLazyLoadedDiagrams(flowchartElk, mindmap); + } + // Ordering of detectors is important. The first one to return true will be used. registerLazyLoadedDiagrams( c4, @@ -81,8 +86,4 @@ export const addDiagrams = () => { quadrantChart, sankey ); - - if (includeLargeDiagrams) { - registerLazyLoadedDiagrams(flowchartElk, mindmap); - } }; From b23b97f61232d6695412f9578c952ba8394dcf71 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 24 Jan 2024 09:41:00 +0530 Subject: [PATCH 10/32] Fix artifact upload --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 605dea9ab..725d90c42 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,13 +40,13 @@ jobs: run: pnpm run build - name: Upload Mermaid Build as Artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: mermaid-build + name: mermaid path: packages/mermaid/dist - - name: Upload Mermaid Mindmap Build as Artifact - uses: actions/upload-artifact@v3 + - name: Upload all packages as Artifact + uses: actions/upload-artifact@v4 with: - name: mermaid-mindmap-build - path: packages/mermaid-mindmap/dist + name: mermaid-all + path: packages/**/dist From c1d31476cdcf99fdd9e9956a9b31c334c121faf2 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Wed, 24 Jan 2024 09:44:25 +0530 Subject: [PATCH 11/32] Ignore node_modules --- .github/workflows/build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 725d90c42..ac8b24f51 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,4 +49,6 @@ jobs: uses: actions/upload-artifact@v4 with: name: mermaid-all - path: packages/**/dist + path: | + packages/**/dist + !**/node_modules From 882e4971eb3f566a4e50083cc8adf9ac3437dce5 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 1 Mar 2024 12:54:42 +0530 Subject: [PATCH 12/32] Remove katex from mermaid.tiny --- .esbuild/build.ts | 2 +- .esbuild/util.ts | 12 ++--- .vite/build.ts | 2 +- .../src/diagram-api/diagram-orchestration.ts | 2 +- .../mermaid/src/diagrams/common/common.ts | 45 +++++++++++-------- packages/mermaid/src/mermaidAPI.ts | 2 +- packages/mermaid/src/type.d.ts | 2 +- vite.config.ts | 2 +- 8 files changed, 38 insertions(+), 31 deletions(-) diff --git a/.esbuild/build.ts b/.esbuild/build.ts index 48b2f89b6..3eea8dfe2 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -32,7 +32,7 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => { { ...iifeOptions, minify: true, - includeLargeDiagrams: false, + includeLargeFeatures: false, metafile: shouldVisualize, } ); diff --git a/.esbuild/util.ts b/.esbuild/util.ts index ce0db6047..0048da94e 100644 --- a/.esbuild/util.ts +++ b/.esbuild/util.ts @@ -14,7 +14,7 @@ export interface MermaidBuildOptions { metafile: boolean; format: 'esm' | 'iife'; entryName: keyof typeof packageOptions; - includeLargeDiagrams: boolean; + includeLargeFeatures: boolean; } export const defaultOptions: Omit = { @@ -22,7 +22,7 @@ export const defaultOptions: Omit = { metafile: false, core: false, format: 'esm', - includeLargeDiagrams: true, + includeLargeFeatures: true, } as const; const buildOptions = (override: BuildOptions): BuildOptions => { @@ -43,14 +43,14 @@ const buildOptions = (override: BuildOptions): BuildOptions => { const getFileName = ( fileName: string, - { core, format, minify, includeLargeDiagrams }: MermaidBuildOptions + { core, format, minify, includeLargeFeatures }: MermaidBuildOptions ) => { if (core) { fileName += '.core'; } else if (format === 'esm') { fileName += '.esm'; } - if (!includeLargeDiagrams) { + if (!includeLargeFeatures) { fileName += '.tiny'; } if (minify) { @@ -60,7 +60,7 @@ const getFileName = ( }; export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => { - const { core, entryName, metafile, format, includeLargeDiagrams, minify } = options; + const { core, entryName, metafile, format, includeLargeFeatures, minify } = options; const external: string[] = ['require', 'fs', 'path']; const { name, file, packageName } = packageOptions[entryName]; const outFileName = getFileName(name, options); @@ -75,7 +75,7 @@ export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => { chunkNames: `chunks/${outFileName}/[name]-[hash]`, define: { // This needs to be stringified for esbuild - includeLargeDiagrams: `${includeLargeDiagrams}`, + includeLargeFeatures: `${includeLargeFeatures}`, 'import.meta.vitest': 'undefined', }, }); diff --git a/.vite/build.ts b/.vite/build.ts index 9f9dcb7c5..a7e3cb0a4 100644 --- a/.vite/build.ts +++ b/.vite/build.ts @@ -95,7 +95,7 @@ export const getBuildConfig = ({ minify, core, watch, entryName }: BuildOptions) ], define: { // Needs to be string - includeLargeDiagrams: 'true', + includeLargeFeatures: 'true', }, }; diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index 82904257a..63fe19cdd 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -68,7 +68,7 @@ export const addDiagrams = () => { } ); - if (includeLargeDiagrams) { + if (includeLargeFeatures) { registerLazyLoadedDiagrams(flowchartElk, mindmap); } diff --git a/packages/mermaid/src/diagrams/common/common.ts b/packages/mermaid/src/diagrams/common/common.ts index 04be2a5f4..5ae4a358f 100644 --- a/packages/mermaid/src/diagrams/common/common.ts +++ b/packages/mermaid/src/diagrams/common/common.ts @@ -341,29 +341,36 @@ export const renderKatex = async (text: string, config: MermaidConfig): Promise< return text.replace(katexRegex, 'MathML is unsupported in this environment.'); } - const { default: katex } = await import('katex'); - return text - .split(lineBreakRegex) - .map((line) => - hasKatex(line) - ? ` + if (includeLargeFeatures) { + const { default: katex } = await import('katex'); + return text + .split(lineBreakRegex) + .map((line) => + hasKatex(line) + ? `
${line}
` - : `
${line}
` - ) - .join('') - .replace(katexRegex, (_, c) => - katex - .renderToString(c, { - throwOnError: true, - displayMode: true, - output: isMathMLSupported() ? 'mathml' : 'htmlAndMathml', - }) - .replace(/\n/g, ' ') - .replace(//g, '') - ); + : `
${line}
` + ) + .join('') + .replace(katexRegex, (_, c) => + katex + .renderToString(c, { + throwOnError: true, + displayMode: true, + output: isMathMLSupported() ? 'mathml' : 'htmlAndMathml', + }) + .replace(/\n/g, ' ') + .replace(//g, '') + ); + } + + return text.replace( + katexRegex, + 'Katex is unsupported in mermaid.tiny.js. Please use mermaid.js or mermaid.min.js.' + ); }; export default { diff --git a/packages/mermaid/src/mermaidAPI.ts b/packages/mermaid/src/mermaidAPI.ts index e8539b74c..01e8150f5 100644 --- a/packages/mermaid/src/mermaidAPI.ts +++ b/packages/mermaid/src/mermaidAPI.ts @@ -32,7 +32,7 @@ import type { DiagramMetadata, DiagramStyleClassDef } from './diagram-api/types. import { preprocessDiagram } from './preprocess.js'; import { decodeEntities } from './utils.js'; -const version = packageVersion + (includeLargeDiagrams ? '' : '-tiny'); +const version = packageVersion + (includeLargeFeatures ? '' : '-tiny'); const MAX_TEXTLENGTH = 50_000; const MAX_TEXTLENGTH_EXCEEDED_MSG = diff --git a/packages/mermaid/src/type.d.ts b/packages/mermaid/src/type.d.ts index 2962683cc..0c88e4866 100644 --- a/packages/mermaid/src/type.d.ts +++ b/packages/mermaid/src/type.d.ts @@ -1,2 +1,2 @@ // eslint-disable-next-line no-var -declare var includeLargeDiagrams: boolean; +declare var includeLargeFeatures: boolean; diff --git a/vite.config.ts b/vite.config.ts index 2c6244e9f..0cbf36013 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -36,7 +36,7 @@ export default defineConfig({ }, define: { // Needs to be string - includeLargeDiagrams: 'true', + includeLargeFeatures: 'true', 'import.meta.vitest': 'undefined', }, }); From 80eaafa0018a21c73ea419864650371c4877e7fa Mon Sep 17 00:00:00 2001 From: sidharthv96 Date: Fri, 8 Mar 2024 14:24:44 +0000 Subject: [PATCH 13/32] Update docs --- docs/config/setup/modules/mermaidAPI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/config/setup/modules/mermaidAPI.md b/docs/config/setup/modules/mermaidAPI.md index bee6e7791..3bb0b1923 100644 --- a/docs/config/setup/modules/mermaidAPI.md +++ b/docs/config/setup/modules/mermaidAPI.md @@ -97,7 +97,7 @@ mermaid.initialize(config); #### Defined in -[mermaidAPI.ts:625](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L625) +[mermaidAPI.ts:624](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/mermaidAPI.ts#L624) ## Functions From da610bff1dc2d303404638afea9e007e7726f75c Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 14:55:53 +0530 Subject: [PATCH 14/32] chore: Add `@mermaid-js/tiny` package --- .esbuild/build.ts | 17 ++++++++++++++++- packages/tiny/README.md | 37 +++++++++++++++++++++++++++++++++++++ packages/tiny/package.json | 25 +++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 packages/tiny/README.md create mode 100644 packages/tiny/package.json diff --git a/.esbuild/build.ts b/.esbuild/build.ts index 4eb6ab002..143546bc1 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -1,5 +1,5 @@ import { build } from 'esbuild'; -import { mkdir, writeFile } from 'node:fs/promises'; +import { mkdir, readFile, rename, writeFile } from 'node:fs/promises'; import { packageOptions } from '../.build/common.js'; import { generateLangium } from '../.build/generateLangium.js'; import type { MermaidBuildOptions } from './util.js'; @@ -77,6 +77,20 @@ const handler = (e) => { process.exit(1); }; +const buildTinyMermaid = async () => { + await mkdir('./packages/tiny/dist', { recursive: true }); + await rename( + './packages/mermaid/dist/mermaid.tiny.min.js', + './packages/tiny/dist/mermaid.tiny.min.js' + ); + // Copy version from mermaid's package.json to tiny's package.json + const mermaidPkg = JSON.parse(await readFile('./packages/mermaid/package.json', 'utf8')); + const tinyPkg = JSON.parse(await readFile('./packages/tiny/package.json', 'utf8')); + tinyPkg.version = mermaidPkg.version; + + await writeFile('./packages/tiny/package.json', JSON.stringify(tinyPkg, null, 2) + '\n'); +}; + const main = async () => { await generateLangium(); await mkdir('stats', { recursive: true }); @@ -85,6 +99,7 @@ const main = async () => { for (const pkg of packageNames) { await buildPackage(pkg).catch(handler); } + await buildTinyMermaid(); }; void main(); diff --git a/packages/tiny/README.md b/packages/tiny/README.md new file mode 100644 index 000000000..b01b0c4a8 --- /dev/null +++ b/packages/tiny/README.md @@ -0,0 +1,37 @@ +# Tiny Mermaid + +This is a tiny version of mermaid that is optimized for the web. It is a subset of the mermaid library and is designed to be used in the browser via CDN. + +## Usage via NPM + +This package is not meant to be installed directly from npm. It is designed to be used via CDN. +If you need to use mermaid in your project, please install the full [`mermaid` package](https://www.npmjs.com/package/mermaid) instead. + +## Removals from mermaid + +This does not support + +- Mindmap Diagram +- Architecture Diagram +- Katex rendering + +## Usage via CDN + +### Latest version + +```html + +``` + +### Specific version + +```html + + + + + + + + +``` diff --git a/packages/tiny/package.json b/packages/tiny/package.json new file mode 100644 index 000000000..2ecc0caa3 --- /dev/null +++ b/packages/tiny/package.json @@ -0,0 +1,25 @@ +{ + "name": "@mermaid-js/tiny", + "version": "11.6.0", + "description": "Tiny version of mermaid", + "type": "commonjs", + "main": "./dist/mermaid.tiny.min.js", + "scripts": { + "clean": "rimraf dist" + }, + "repository": { + "type": "git", + "url": "https://github.com/mermaid-js/mermaid" + }, + "author": "Sidharth Vinod", + "license": "MIT", + "dependencies": {}, + "devDependencies": {}, + "files": [ + "dist/", + "README.md" + ], + "publishConfig": { + "access": "public" + } +} From 8c52edf3ef807d75ea377b4835e2458a10b9f76d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 14:56:13 +0530 Subject: [PATCH 15/32] chore: Move architecture into largeFeature --- packages/mermaid/src/diagram-api/diagram-orchestration.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagram-api/diagram-orchestration.ts b/packages/mermaid/src/diagram-api/diagram-orchestration.ts index f3c9197be..d18aab957 100644 --- a/packages/mermaid/src/diagram-api/diagram-orchestration.ts +++ b/packages/mermaid/src/diagram-api/diagram-orchestration.ts @@ -72,7 +72,7 @@ export const addDiagrams = () => { ); if (includeLargeFeatures) { - registerLazyLoadedDiagrams(flowchartElk, mindmap); + registerLazyLoadedDiagrams(flowchartElk, mindmap, architecture); } // Ordering of detectors is important. The first one to return true will be used. @@ -99,7 +99,6 @@ export const addDiagrams = () => { packet, xychart, block, - architecture, radar ); }; From 4a63901af9c0f7b9102ebe4735baa13cd8279b5f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:02:16 +0530 Subject: [PATCH 16/32] chore: Copy changelog to tiny --- .esbuild/build.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.esbuild/build.ts b/.esbuild/build.ts index 143546bc1..a48e08f31 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -1,5 +1,5 @@ import { build } from 'esbuild'; -import { mkdir, readFile, rename, writeFile } from 'node:fs/promises'; +import { cp, mkdir, readFile, rename, writeFile } from 'node:fs/promises'; import { packageOptions } from '../.build/common.js'; import { generateLangium } from '../.build/generateLangium.js'; import type { MermaidBuildOptions } from './util.js'; @@ -83,6 +83,7 @@ const buildTinyMermaid = async () => { './packages/mermaid/dist/mermaid.tiny.min.js', './packages/tiny/dist/mermaid.tiny.min.js' ); + await cp('./packages/mermaid/CHANGELOG.md', './packages/tiny/CHANGELOG.md'); // Copy version from mermaid's package.json to tiny's package.json const mermaidPkg = JSON.parse(await readFile('./packages/mermaid/package.json', 'utf8')); const tinyPkg = JSON.parse(await readFile('./packages/tiny/package.json', 'utf8')); From bd8b93327e15d996fb134c9c2671ffb840626f16 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:05:02 +0530 Subject: [PATCH 17/32] chore: Tiny version --- packages/tiny/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tiny/package.json b/packages/tiny/package.json index 2ecc0caa3..67fc228e0 100644 --- a/packages/tiny/package.json +++ b/packages/tiny/package.json @@ -1,6 +1,6 @@ { "name": "@mermaid-js/tiny", - "version": "11.6.0", + "version": "0.0.1", "description": "Tiny version of mermaid", "type": "commonjs", "main": "./dist/mermaid.tiny.min.js", From f6862c5af536d04df7440b18a59412dbc5322952 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:05:17 +0530 Subject: [PATCH 18/32] chore: Tiny version --- packages/tiny/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tiny/package.json b/packages/tiny/package.json index 67fc228e0..814dcb008 100644 --- a/packages/tiny/package.json +++ b/packages/tiny/package.json @@ -1,6 +1,6 @@ { "name": "@mermaid-js/tiny", - "version": "0.0.1", + "version": "0.0.2", "description": "Tiny version of mermaid", "type": "commonjs", "main": "./dist/mermaid.tiny.min.js", From c6e640ab7593d8293c9f794eda2b36127fa8e0c7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 18 Apr 2025 09:36:34 +0000 Subject: [PATCH 19/32] [autofix.ci] apply automated fixes --- pnpm-lock.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b51d86bfd..2829f982a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -518,6 +518,8 @@ importers: specifier: ^11.0.3 version: 11.0.3 + packages/tiny: {} + tests/webpack: dependencies: '@mermaid-js/mermaid-example-diagram': From 86a0a7fe3a78668b14e33707b94b57b666c6cadb Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:09:04 +0530 Subject: [PATCH 20/32] chore: Add sourcemaps back --- .esbuild/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.esbuild/util.ts b/.esbuild/util.ts index d2b7ca08c..0f3be9317 100644 --- a/.esbuild/util.ts +++ b/.esbuild/util.ts @@ -36,7 +36,7 @@ const buildOptions = (override: BuildOptions): BuildOptions => { external: ['require', 'fs', 'path'], outdir: 'dist', plugins: [jisonPlugin, jsonSchemaPlugin], - // sourcemap: 'linked', + sourcemap: 'external', ...override, }; }; From e561acac23e76412f09f04062c3f8e76be710c26 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:09:53 +0530 Subject: [PATCH 21/32] chore: Remove unnecessary workflows --- .github/workflows/build.yml | 51 ------------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 6b226c6b5..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Build - -on: - push: {} - merge_group: - pull_request: - types: - - opened - - synchronize - - ready_for_review - -permissions: - contents: read - -jobs: - build-mermaid: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - uses: pnpm/action-setup@v2 - # uses version from "packageManager" field in package.json - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - cache: pnpm - node-version-file: '.node-version' - - - name: Install Packages - run: | - pnpm install --frozen-lockfile - env: - CYPRESS_CACHE_FOLDER: .cache/Cypress - - - name: Run Build - run: pnpm run build - - - name: Upload Mermaid Build as Artifact - uses: actions/upload-artifact@v4 - with: - name: mermaid - path: packages/mermaid/dist - - - name: Upload all packages as Artifact - uses: actions/upload-artifact@v4 - with: - name: mermaid-all - path: | - packages/**/dist - !**/node_modules From c81a7d13e03bc1c87d78c1566def4262a271000c Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:13:14 +0530 Subject: [PATCH 22/32] chore: Revert unrelated changes --- packages/mermaid/src/diagrams/info/infoRenderer.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/mermaid/src/diagrams/info/infoRenderer.ts b/packages/mermaid/src/diagrams/info/infoRenderer.ts index e4e61384c..7e79fc3b1 100644 --- a/packages/mermaid/src/diagrams/info/infoRenderer.ts +++ b/packages/mermaid/src/diagrams/info/infoRenderer.ts @@ -19,12 +19,11 @@ const draw: DrawDefinition = (text, id, version) => { const group: SVGGroup = svg.append('g'); group .append('text') - .attr('x', '50%') - .attr('y', '50%') + .attr('x', 100) + .attr('y', 40) .attr('class', 'version') .attr('font-size', 32) - .attr('dominant-baseline', 'middle') - .attr('text-anchor', 'middle') + .style('text-anchor', 'middle') .text(`v${version}`); }; From c3c609a965902e6358ebc45c46a0f02f90f02535 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:17:50 +0530 Subject: [PATCH 23/32] chore: Remove changelog for tiny --- .esbuild/build.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.esbuild/build.ts b/.esbuild/build.ts index a48e08f31..143546bc1 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -1,5 +1,5 @@ import { build } from 'esbuild'; -import { cp, mkdir, readFile, rename, writeFile } from 'node:fs/promises'; +import { mkdir, readFile, rename, writeFile } from 'node:fs/promises'; import { packageOptions } from '../.build/common.js'; import { generateLangium } from '../.build/generateLangium.js'; import type { MermaidBuildOptions } from './util.js'; @@ -83,7 +83,6 @@ const buildTinyMermaid = async () => { './packages/mermaid/dist/mermaid.tiny.min.js', './packages/tiny/dist/mermaid.tiny.min.js' ); - await cp('./packages/mermaid/CHANGELOG.md', './packages/tiny/CHANGELOG.md'); // Copy version from mermaid's package.json to tiny's package.json const mermaidPkg = JSON.parse(await readFile('./packages/mermaid/package.json', 'utf8')); const tinyPkg = JSON.parse(await readFile('./packages/tiny/package.json', 'utf8')); From e97f25f13e9e4619b74a63df5857eba9c0e4f676 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:18:05 +0530 Subject: [PATCH 24/32] chore: Match tiny version --- packages/tiny/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tiny/package.json b/packages/tiny/package.json index 814dcb008..2ecc0caa3 100644 --- a/packages/tiny/package.json +++ b/packages/tiny/package.json @@ -1,6 +1,6 @@ { "name": "@mermaid-js/tiny", - "version": "0.0.2", + "version": "11.6.0", "description": "Tiny version of mermaid", "type": "commonjs", "main": "./dist/mermaid.tiny.min.js", From 549dc86b2127d7a3f5b62f15bdd7af02ce0f508f Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:26:23 +0530 Subject: [PATCH 25/32] chore: Revert unrelated changes --- packages/mermaid/src/diagrams/error/errorDiagram.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/error/errorDiagram.ts b/packages/mermaid/src/diagrams/error/errorDiagram.ts index d4521e170..a15e16ada 100644 --- a/packages/mermaid/src/diagrams/error/errorDiagram.ts +++ b/packages/mermaid/src/diagrams/error/errorDiagram.ts @@ -1,7 +1,7 @@ import type { DiagramDefinition } from '../../diagram-api/types.js'; import { renderer } from './errorRenderer.js'; -export const diagram: DiagramDefinition = { +const diagram: DiagramDefinition = { db: {}, renderer, parser: { From 3753967c8f7dfd13a096d14d8a780ab703dbe5d5 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:33:31 +0530 Subject: [PATCH 26/32] fix: Update tiny file name --- .esbuild/build.ts | 2 +- packages/tiny/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.esbuild/build.ts b/.esbuild/build.ts index 143546bc1..17c047145 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -81,7 +81,7 @@ const buildTinyMermaid = async () => { await mkdir('./packages/tiny/dist', { recursive: true }); await rename( './packages/mermaid/dist/mermaid.tiny.min.js', - './packages/tiny/dist/mermaid.tiny.min.js' + './packages/tiny/dist/mermaid.tiny.js' ); // Copy version from mermaid's package.json to tiny's package.json const mermaidPkg = JSON.parse(await readFile('./packages/mermaid/package.json', 'utf8')); diff --git a/packages/tiny/package.json b/packages/tiny/package.json index 2ecc0caa3..0460850c6 100644 --- a/packages/tiny/package.json +++ b/packages/tiny/package.json @@ -3,7 +3,7 @@ "version": "11.6.0", "description": "Tiny version of mermaid", "type": "commonjs", - "main": "./dist/mermaid.tiny.min.js", + "main": "./dist/mermaid.tiny.js", "scripts": { "clean": "rimraf dist" }, From a037cdcf138369febc4cb0f08c5ea69b1b7cc924 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:34:29 +0530 Subject: [PATCH 27/32] chore: patch bump tiny --- packages/tiny/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tiny/package.json b/packages/tiny/package.json index 0460850c6..9a57afcf5 100644 --- a/packages/tiny/package.json +++ b/packages/tiny/package.json @@ -1,6 +1,6 @@ { "name": "@mermaid-js/tiny", - "version": "11.6.0", + "version": "11.6.1", "description": "Tiny version of mermaid", "type": "commonjs", "main": "./dist/mermaid.tiny.js", From 91a7564db6a347255d9308dfd1ff3e4e569d2f19 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 18 Apr 2025 10:12:40 +0000 Subject: [PATCH 28/32] [autofix.ci] apply automated fixes --- packages/tiny/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tiny/package.json b/packages/tiny/package.json index 9a57afcf5..0460850c6 100644 --- a/packages/tiny/package.json +++ b/packages/tiny/package.json @@ -1,6 +1,6 @@ { "name": "@mermaid-js/tiny", - "version": "11.6.1", + "version": "11.6.0", "description": "Tiny version of mermaid", "type": "commonjs", "main": "./dist/mermaid.tiny.js", From d2c53552ff7f48cf96594f691f10d5e0788a1145 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:51:42 +0530 Subject: [PATCH 29/32] chore: Disable sourcemap for tiny --- .esbuild/build.ts | 1 + .esbuild/util.ts | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.esbuild/build.ts b/.esbuild/build.ts index 17c047145..6bf5f6017 100644 --- a/.esbuild/build.ts +++ b/.esbuild/build.ts @@ -38,6 +38,7 @@ const buildPackage = async (entryName: keyof typeof packageOptions) => { minify: true, includeLargeFeatures: false, metafile: shouldVisualize, + sourcemap: false, } ); } diff --git a/.esbuild/util.ts b/.esbuild/util.ts index 0f3be9317..3a0ec6b41 100644 --- a/.esbuild/util.ts +++ b/.esbuild/util.ts @@ -62,22 +62,21 @@ const getFileName = ( export const getBuildConfig = (options: MermaidBuildOptions): BuildOptions => { const { core, - metafile, format, - minify, options: { name, file, packageName }, globalName = 'mermaid', includeLargeFeatures, + ...rest } = options; + const external: string[] = ['require', 'fs', 'path']; const outFileName = getFileName(name, options); const output: BuildOptions = buildOptions({ + ...rest, absWorkingDir: resolve(__dirname, `../packages/${packageName}`), entryPoints: { [outFileName]: `src/${file}`, }, - metafile, - minify, globalName, logLevel: 'info', chunkNames: `chunks/${outFileName}/[name]-[hash]`, From a92ae7a16c1a02fdbb33f3f6b937e8e469276d75 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 15:53:37 +0530 Subject: [PATCH 30/32] chore: Update katex message --- packages/mermaid/src/diagrams/common/common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/common/common.ts b/packages/mermaid/src/diagrams/common/common.ts index 6c50e4cfc..14c88a0fc 100644 --- a/packages/mermaid/src/diagrams/common/common.ts +++ b/packages/mermaid/src/diagrams/common/common.ts @@ -369,7 +369,7 @@ export const renderKatex = async (text: string, config: MermaidConfig): Promise< return text.replace( katexRegex, - 'Katex is unsupported in mermaid.tiny.js. Please use mermaid.js or mermaid.min.js.' + 'Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.' ); }; From 68670535bf9b9a9874a745eed24a82146bc3a1d8 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 17:16:51 +0530 Subject: [PATCH 31/32] docs: Update tiny docs --- docs/config/usage.md | 5 +++++ docs/intro/index.md | 1 + packages/mermaid/src/docs/config/usage.md | 5 +++++ packages/mermaid/src/docs/intro/index.md | 1 + packages/tiny/README.md | 12 +++++++++--- 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docs/config/usage.md b/docs/config/usage.md index 2e207213c..b7cd2874d 100644 --- a/docs/config/usage.md +++ b/docs/config/usage.md @@ -98,6 +98,11 @@ Mermaid can load multiple diagrams, in the same page. > Try it out, save this code as HTML and load it using any browser. > (Except Internet Explorer, please don't use Internet Explorer.) +## Tiny Mermaid + +We have a smaller version of mermaid that is almost half the size of the full library. +If you need a leaner version without some additional features, you can use the [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny) library. + ## Enabling Click Event and Tags in Nodes A `securityLevel` configuration has to first be cleared. `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. This was introduced in version 8.2 as a security improvement, aimed at preventing malicious use. diff --git a/docs/intro/index.md b/docs/intro/index.md index 06a408268..51dd9f9d4 100644 --- a/docs/intro/index.md +++ b/docs/intro/index.md @@ -354,6 +354,7 @@ To Deploy Mermaid: - [Mermaid Live Editor](https://github.com/mermaid-js/mermaid-live-editor) - [Mermaid CLI](https://github.com/mermaid-js/mermaid-cli) +- [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny) - [Mermaid Webpack Demo](https://github.com/mermaidjs/mermaid-webpack-demo) - [Mermaid Parcel Demo](https://github.com/mermaidjs/mermaid-parcel-demo) diff --git a/packages/mermaid/src/docs/config/usage.md b/packages/mermaid/src/docs/config/usage.md index 0886a0e44..b48495151 100644 --- a/packages/mermaid/src/docs/config/usage.md +++ b/packages/mermaid/src/docs/config/usage.md @@ -92,6 +92,11 @@ Mermaid can load multiple diagrams, in the same page. > Try it out, save this code as HTML and load it using any browser. > (Except Internet Explorer, please don't use Internet Explorer.) +## Tiny Mermaid + +We have a smaller version of mermaid that is almost half the size of the full library. +If you need a leaner version without some additional features, you can use the [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny) library. + ## Enabling Click Event and Tags in Nodes A `securityLevel` configuration has to first be cleared. `securityLevel` sets the level of trust for the parsed diagrams and limits click functionality. This was introduced in version 8.2 as a security improvement, aimed at preventing malicious use. diff --git a/packages/mermaid/src/docs/intro/index.md b/packages/mermaid/src/docs/intro/index.md index ff37d549b..f8aef36f1 100644 --- a/packages/mermaid/src/docs/intro/index.md +++ b/packages/mermaid/src/docs/intro/index.md @@ -109,6 +109,7 @@ To Deploy Mermaid: - [Mermaid Live Editor](https://github.com/mermaid-js/mermaid-live-editor) - [Mermaid CLI](https://github.com/mermaid-js/mermaid-cli) +- [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny) - [Mermaid Webpack Demo](https://github.com/mermaidjs/mermaid-webpack-demo) - [Mermaid Parcel Demo](https://github.com/mermaidjs/mermaid-parcel-demo) diff --git a/packages/tiny/README.md b/packages/tiny/README.md index b01b0c4a8..a877a95da 100644 --- a/packages/tiny/README.md +++ b/packages/tiny/README.md @@ -2,10 +2,10 @@ This is a tiny version of mermaid that is optimized for the web. It is a subset of the mermaid library and is designed to be used in the browser via CDN. -## Usage via NPM +## Lazy loading -This package is not meant to be installed directly from npm. It is designed to be used via CDN. -If you need to use mermaid in your project, please install the full [`mermaid` package](https://www.npmjs.com/package/mermaid) instead. +The original mermaid library supports lazy loading, so it will be faster on the initial load, and only load the required diagrams. +This is not supported in the tiny mermaid library. So it's always recommended to use the full mermaid library unless you have a very specific reason to reduce the bundle size. ## Removals from mermaid @@ -14,6 +14,12 @@ This does not support - Mindmap Diagram - Architecture Diagram - Katex rendering +- Lazy loading + +## Usage via NPM + +This package is not meant to be installed directly from npm. It is designed to be used via CDN. +If you need to use mermaid in your project, please install the full [`mermaid` package](https://www.npmjs.com/package/mermaid) instead. ## Usage via CDN From c8daf9aa432139c50fd97b7311b0d0d0741b80d8 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Thu, 24 Apr 2025 12:53:04 +0530 Subject: [PATCH 32/32] docs: Update tiny doc --- docs/config/usage.md | 5 +++-- packages/mermaid/src/docs/config/usage.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/config/usage.md b/docs/config/usage.md index b7cd2874d..e157d1827 100644 --- a/docs/config/usage.md +++ b/docs/config/usage.md @@ -100,8 +100,9 @@ Mermaid can load multiple diagrams, in the same page. ## Tiny Mermaid -We have a smaller version of mermaid that is almost half the size of the full library. -If you need a leaner version without some additional features, you can use the [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny) library. +We offer a smaller version of Mermaid that's approximately half the size of the full library. This tiny version doesn't support Mindmap Diagrams, Architecture Diagrams, KaTeX rendering, or lazy loading. + +If you need a more lightweight version without these features, you can use [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny). ## Enabling Click Event and Tags in Nodes diff --git a/packages/mermaid/src/docs/config/usage.md b/packages/mermaid/src/docs/config/usage.md index b48495151..9e82ab87a 100644 --- a/packages/mermaid/src/docs/config/usage.md +++ b/packages/mermaid/src/docs/config/usage.md @@ -94,8 +94,9 @@ Mermaid can load multiple diagrams, in the same page. ## Tiny Mermaid -We have a smaller version of mermaid that is almost half the size of the full library. -If you need a leaner version without some additional features, you can use the [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny) library. +We offer a smaller version of Mermaid that's approximately half the size of the full library. This tiny version doesn't support Mindmap Diagrams, Architecture Diagrams, KaTeX rendering, or lazy loading. + +If you need a more lightweight version without these features, you can use [Mermaid Tiny](https://github.com/mermaid-js/mermaid/tree/develop/packages/tiny). ## Enabling Click Event and Tags in Nodes