From 5f3c4fccafc72697e37e366c324ceca02ebc685d Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Mon, 14 Aug 2023 07:34:16 +0530 Subject: [PATCH 01/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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 b602f67abee861f5e6b7fcc1a08d13bccc7978ea Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 20:05:42 +0100 Subject: [PATCH 14/54] Add bit count syntax to packet diagram --- .../src/diagrams/packet/packet.spec.ts | 91 +++++++++++++++++++ .../mermaid/src/diagrams/packet/parser.ts | 44 ++++++--- .../parser/src/language/packet/packet.langium | 7 +- 3 files changed, 127 insertions(+), 15 deletions(-) diff --git a/packages/mermaid/src/diagrams/packet/packet.spec.ts b/packages/mermaid/src/diagrams/packet/packet.spec.ts index 2d7b278cd..88366da3a 100644 --- a/packages/mermaid/src/diagrams/packet/packet.spec.ts +++ b/packages/mermaid/src/diagrams/packet/packet.spec.ts @@ -30,6 +30,7 @@ describe('packet diagrams', () => { [ [ { + "bits": 11, "end": 10, "label": "test", "start": 0, @@ -49,11 +50,13 @@ describe('packet diagrams', () => { [ [ { + "bits": 11, "end": 10, "label": "test", "start": 0, }, { + "bits": 1, "end": 11, "label": "single", "start": 11, @@ -63,6 +66,58 @@ describe('packet diagrams', () => { `); }); + it('should handle bit counts', async () => { + const str = `packet-beta + 8bits: "byte" + 16bits: "word" + `; + await expect(parser.parse(str)).resolves.not.toThrow(); + expect(getPacket()).toMatchInlineSnapshot(` + [ + [ + { + "bits": 8, + "end": 7, + "label": "byte", + "start": 0, + }, + { + "bits": 16, + "end": 23, + "label": "word", + "start": 8, + }, + ], + ] + `); + }); + + it('should handle bit counts with bit or bits', async () => { + const str = `packet-beta + 8bit: "byte" + 16bits: "word" + `; + await expect(parser.parse(str)).resolves.not.toThrow(); + expect(getPacket()).toMatchInlineSnapshot(` + [ + [ + { + "bits": 8, + "end": 7, + "label": "byte", + "start": 0, + }, + { + "bits": 16, + "end": 23, + "label": "word", + "start": 8, + }, + ], + ] + `); + }); + it('should split into multiple rows', async () => { const str = `packet-beta 0-10: "test" @@ -73,11 +128,13 @@ describe('packet diagrams', () => { [ [ { + "bits": 11, "end": 10, "label": "test", "start": 0, }, { + "bits": 20, "end": 31, "label": "multiple", "start": 11, @@ -85,6 +142,7 @@ describe('packet diagrams', () => { ], [ { + "bits": 31, "end": 63, "label": "multiple", "start": 32, @@ -92,6 +150,7 @@ describe('packet diagrams', () => { ], [ { + "bits": 26, "end": 90, "label": "multiple", "start": 64, @@ -111,11 +170,13 @@ describe('packet diagrams', () => { [ [ { + "bits": 17, "end": 16, "label": "test", "start": 0, }, { + "bits": 14, "end": 31, "label": "multiple", "start": 17, @@ -123,6 +184,7 @@ describe('packet diagrams', () => { ], [ { + "bits": 31, "end": 63, "label": "multiple", "start": 32, @@ -142,6 +204,16 @@ describe('packet diagrams', () => { ); }); + it('should throw error if numbers are not continuous with bit counts', async () => { + const str = `packet-beta + 16bits: "test" + 18-20: "error" + `; + await expect(parser.parse(str)).rejects.toThrowErrorMatchingInlineSnapshot( + `[Error: Packet block 18 - 20 is not contiguous. It should start from 16.]` + ); + }); + it('should throw error if numbers are not continuous for single packets', async () => { const str = `packet-beta 0-16: "test" @@ -152,6 +224,16 @@ describe('packet diagrams', () => { ); }); + it('should throw error if numbers are not continuous for single packets with bit counts', async () => { + const str = `packet-beta + 16 bits: "test" + 18: "error" + `; + await expect(parser.parse(str)).rejects.toThrowErrorMatchingInlineSnapshot( + `[Error: Packet block 18 - 18 is not contiguous. It should start from 16.]` + ); + }); + it('should throw error if numbers are not continuous for single packets - 2', async () => { const str = `packet-beta 0-16: "test" @@ -172,4 +254,13 @@ describe('packet diagrams', () => { `[Error: Packet block 25 - 20 is invalid. End must be greater than start.]` ); }); + + it('should throw error if bit count is 0', async () => { + const str = `packet-beta + 0bits: "test" + `; + await expect(parser.parse(str)).rejects.toThrowErrorMatchingInlineSnapshot( + `[Error: Packet block 0 is invalid. Cannot have a zero bit field.]` + ); + }); }); diff --git a/packages/mermaid/src/diagrams/packet/parser.ts b/packages/mermaid/src/diagrams/packet/parser.ts index 06d180dfd..eb58916f5 100644 --- a/packages/mermaid/src/diagrams/packet/parser.ts +++ b/packages/mermaid/src/diagrams/packet/parser.ts @@ -10,26 +10,39 @@ const maxPacketSize = 10_000; const populate = (ast: Packet) => { populateCommonDb(ast, db); - let lastByte = -1; + let lastBit = -1; let word: PacketWord = []; let row = 1; const { bitsPerRow } = db.getConfig(); - for (let { start, end, label } of ast.blocks) { - if (end && end < start) { + + for (let { start, end, bits, label } of ast.blocks) { + if (start !== undefined && end !== undefined && end < start) { throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`); } - if (start !== lastByte + 1) { + if (start == undefined) { + start = lastBit + 1; + } + if (start !== lastBit + 1) { throw new Error( `Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${ - lastByte + 1 + lastBit + 1 }.` ); } - lastByte = end ?? start; - log.debug(`Packet block ${start} - ${lastByte} with label ${label}`); + if (bits === 0) { + throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`); + } + if (end == undefined) { + end = start + (bits ?? 1) - 1; + } + if (bits == undefined) { + bits = end - start + 1; + } + lastBit = end; + log.debug(`Packet block ${start} - ${lastBit} with label ${label}`); while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) { - const [block, nextBlock] = getNextFittingBlock({ start, end, label }, row, bitsPerRow); + const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow); word.push(block); if (block.end + 1 === row * bitsPerRow) { db.pushWord(word); @@ -39,7 +52,7 @@ const populate = (ast: Packet) => { if (!nextBlock) { break; } - ({ start, end, label } = nextBlock); + ({ start, end, bits, label } = nextBlock); } } db.pushWord(word); @@ -50,9 +63,8 @@ const getNextFittingBlock = ( row: number, bitsPerRow: number ): [Required, PacketBlock | undefined] => { - if (block.end === undefined) { - block.end = block.start; - } + assert(block.start !== undefined, 'start should have been set during first phase'); + assert(block.end !== undefined, 'end should have been set during first phase'); if (block.start > block.end) { throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`); @@ -62,16 +74,20 @@ const getNextFittingBlock = ( return [block as Required, undefined]; } + const rowEnd = row * bitsPerRow - 1; + const rowStart = row * bitsPerRow; return [ { start: block.start, - end: row * bitsPerRow - 1, + end: rowEnd, label: block.label, + bits: rowEnd - block.start, }, { - start: row * bitsPerRow, + start: rowStart, end: block.end, label: block.label, + bits: block.end - rowStart, }, ]; }; diff --git a/packages/parser/src/language/packet/packet.langium b/packages/parser/src/language/packet/packet.langium index ad30f8df2..a2e957494 100644 --- a/packages/parser/src/language/packet/packet.langium +++ b/packages/parser/src/language/packet/packet.langium @@ -12,7 +12,12 @@ entry Packet: ; PacketBlock: - start=INT('-' end=INT)? ':' label=STRING EOL + ( + start=INT('-' (end=INT | bits=INT'bit''s'?))? + | bits=INT'bit''s'? + ) + ':' label=STRING + EOL ; terminal INT returns number: /0|[1-9][0-9]*/; From 93577619b22bf8168a4c458d1c81059f6240bdf8 Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 20:09:29 +0100 Subject: [PATCH 15/54] add documentation --- docs/syntax/packet.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index 5eab81910..5feddfcd4 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -20,6 +20,7 @@ This diagram type is particularly useful for developers, network engineers, educ packet-beta start: "Block name" %% Single-bit block start-end: "Block name" %% Multi-bit blocks +16bits: "Block name" %% Auto appends to previous block without specifying start ... More Fields ... ``` @@ -82,6 +83,16 @@ title UDP Packet 48-63: "Checksum" 64-95: "Data (variable length)" ``` +Or you can write this as +```mermaid-example +packet-beta +title UDP Packet +16bits: "Source Port" +16bits: "Destination Port" +16bits: "Length" +16bits: "Checksum" +64-95: "Data (variable length)" +``` ```mermaid packet-beta From 0fdfd910690fc4ef7040c5374164f296cb24c79f Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 20:17:30 +0100 Subject: [PATCH 16/54] lint the documentation --- docs/syntax/packet.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index 5feddfcd4..f6c5d344d 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -83,7 +83,9 @@ title UDP Packet 48-63: "Checksum" 64-95: "Data (variable length)" ``` + Or you can write this as + ```mermaid-example packet-beta title UDP Packet From d54eed9d62a2e45372472d0359a396104807f47c Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 18 Oct 2024 19:22:20 +0000 Subject: [PATCH 17/54] [autofix.ci] apply automated fixes --- docs/syntax/packet.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index f6c5d344d..5eab81910 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -20,7 +20,6 @@ This diagram type is particularly useful for developers, network engineers, educ packet-beta start: "Block name" %% Single-bit block start-end: "Block name" %% Multi-bit blocks -16bits: "Block name" %% Auto appends to previous block without specifying start ... More Fields ... ``` @@ -84,18 +83,6 @@ title UDP Packet 64-95: "Data (variable length)" ``` -Or you can write this as - -```mermaid-example -packet-beta -title UDP Packet -16bits: "Source Port" -16bits: "Destination Port" -16bits: "Length" -16bits: "Checksum" -64-95: "Data (variable length)" -``` - ```mermaid packet-beta title UDP Packet From 6d33d93b15f3362c2113b7d8a980b26f8c7d60ad Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 20:28:20 +0100 Subject: [PATCH 18/54] run prettier --- .esbuild/server.ts | 4 +++- .../integration/rendering/iconShape.spec.ts | 6 +++++- .../integration/rendering/imageShape.spec.ts | 4 +++- .../src/diagrams/architecture/svgDraw.ts | 18 +++++++++++++++--- packages/mermaid/src/diagrams/block/layout.ts | 4 +++- .../src/diagrams/git/gitGraphRenderer.ts | 18 ++++++++++++++---- .../mermaid/src/diagrams/state/dataFetcher.js | 4 +++- .../rendering-elements/clusters.js | 4 +++- .../shapes/curlyBraceLeft.ts | 4 +++- .../shapes/curlyBraceRight.ts | 4 +++- .../rendering-elements/shapes/curlyBraces.ts | 4 +++- .../rendering-elements/shapes/cylinder.ts | 4 +++- .../rendering-elements/shapes/dividedRect.ts | 4 +++- .../shapes/flippedTriangle.ts | 4 +++- .../rendering-elements/shapes/labelRect.ts | 4 +++- .../rendering-elements/shapes/linedCylinder.ts | 4 +++- .../shapes/linedWaveEdgedRect.ts | 4 +++- .../rendering-elements/shapes/multiRect.ts | 4 +++- .../shapes/multiWaveEdgedRectangle.ts | 4 +++- .../shapes/rectLeftInvArrow.ts | 4 +++- .../rendering-elements/shapes/shadedProcess.ts | 4 +++- .../rendering-elements/shapes/slopedRect.ts | 4 +++- .../shapes/taggedWaveEdgedRectangle.ts | 4 +++- .../shapes/tiltedCylinder.ts | 4 +++- .../rendering-elements/shapes/triangle.ts | 5 ++++- .../shapes/waveEdgedRectangle.ts | 4 +++- .../rendering-elements/shapes/windowPane.ts | 8 ++++++-- 27 files changed, 110 insertions(+), 33 deletions(-) diff --git a/.esbuild/server.ts b/.esbuild/server.ts index 6e1bcb460..5bf214be9 100644 --- a/.esbuild/server.ts +++ b/.esbuild/server.ts @@ -36,7 +36,9 @@ const rebuildAll = async () => { console.time(timeLabel); await Promise.all( contexts.map(async ({ config, context }) => { - const buildVariant = `Rebuild ${buildNumber} Time (${Object.keys(config.entryPoints!)[0]} ${config.format})`; + const buildVariant = `Rebuild ${buildNumber} Time (${Object.keys(config.entryPoints!)[0]} ${ + config.format + })`; console.time(buildVariant); await context.rebuild(); console.timeEnd(buildVariant); diff --git a/cypress/integration/rendering/iconShape.spec.ts b/cypress/integration/rendering/iconShape.spec.ts index 4c12c3fa3..8f4b53076 100644 --- a/cypress/integration/rendering/iconShape.spec.ts +++ b/cypress/integration/rendering/iconShape.spec.ts @@ -14,7 +14,11 @@ looks.forEach((look) => { directions.forEach((direction) => { forms.forEach((form) => { labelPos.forEach((pos) => { - describe(`Test iconShape in ${form ? `${form} form,` : ''} ${look} look and dir ${direction} with label position ${pos ? pos : 'not defined'}`, () => { + describe(`Test iconShape in ${ + form ? `${form} form,` : '' + } ${look} look and dir ${direction} with label position ${ + pos ? pos : 'not defined' + }`, () => { it(`without label`, () => { let flowchartCode = `flowchart ${direction}\n`; flowchartCode += ` nA --> nAA@{ icon: 'fa:bell'`; diff --git a/cypress/integration/rendering/imageShape.spec.ts b/cypress/integration/rendering/imageShape.spec.ts index d2e267149..bcbdba102 100644 --- a/cypress/integration/rendering/imageShape.spec.ts +++ b/cypress/integration/rendering/imageShape.spec.ts @@ -12,7 +12,9 @@ const labelPos = [undefined, 't', 'b'] as const; looks.forEach((look) => { directions.forEach((direction) => { labelPos.forEach((pos) => { - describe(`Test imageShape in ${look} look and dir ${direction} with label position ${pos ? pos : 'not defined'}`, () => { + describe(`Test imageShape in ${look} look and dir ${direction} with label position ${ + pos ? pos : 'not defined' + }`, () => { it(`without label`, () => { let flowchartCode = `flowchart ${direction}\n`; flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', w: '100', h: '100' }\n`; diff --git a/packages/mermaid/src/diagrams/architecture/svgDraw.ts b/packages/mermaid/src/diagrams/architecture/svgDraw.ts index b10a451fe..60970a186 100644 --- a/packages/mermaid/src/diagrams/architecture/svgDraw.ts +++ b/packages/mermaid/src/diagrams/architecture/svgDraw.ts @@ -212,7 +212,11 @@ export const drawGroups = async function (groupsEl: D3Element, cy: cytoscape.Cor if (data.icon) { const bkgElem = groupLabelContainer.append('g'); bkgElem.html( - `${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}` + `${await getIconSVG(data.icon, { + height: groupIconSize, + width: groupIconSize, + fallbackPrefix: architectureIcons.prefix, + })}` ); bkgElem.attr( 'transform', @@ -297,11 +301,19 @@ export const drawServices = async function ( // throw new Error(`Invalid SVG Icon name: "${service.icon}"`); // } bkgElem.html( - `${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}` + `${await getIconSVG(service.icon, { + height: iconSize, + width: iconSize, + fallbackPrefix: architectureIcons.prefix, + })}` ); } else if (service.iconText) { bkgElem.html( - `${await getIconSVG('blank', { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}` + `${await getIconSVG('blank', { + height: iconSize, + width: iconSize, + fallbackPrefix: architectureIcons.prefix, + })}` ); const textElemContainer = bkgElem.append('g'); const fo = textElemContainer diff --git a/packages/mermaid/src/diagrams/block/layout.ts b/packages/mermaid/src/diagrams/block/layout.ts index 7f44a5f19..5081a5373 100644 --- a/packages/mermaid/src/diagrams/block/layout.ts +++ b/packages/mermaid/src/diagrams/block/layout.ts @@ -105,7 +105,9 @@ function setBlockSizes(block: Block, db: BlockDB, siblingWidth = 0, siblingHeigh for (const child of block.children) { if (child.size) { log.debug( - `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}` + `abc95 Setting size of children of ${block.id} id=${ + child.id + } ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}` ); child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1); diff --git a/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts b/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts index 39a64a623..dc92cfff6 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts +++ b/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts @@ -276,7 +276,11 @@ const drawCommitBullet = ( cross .attr( 'd', - `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}` + `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${ + commitPosition.y + 5 + }M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${ + commitPosition.y - 5 + }` ) .attr('class', `commit ${typeClass} ${commit.id} commit${branchIndex % THEME_COLOR_LIMIT}`); } @@ -652,21 +656,27 @@ const drawArrow = ( colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; + lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${ + p1.y + offset + } L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; } } else if (dir === 'BT') { if (p1.x < p2.x) { // Source commit is on branch position left of destination commit // so render arrow rightward with colour of destination branch - lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`; + lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${ + p1.y - offset + } L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`; } else { // Source commit is on branch position right of destination commit // so render arrow leftward with colour of source branch colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; + lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${ + p1.y - offset + } L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; } } else { if (p1.y < p2.y) { diff --git a/packages/mermaid/src/diagrams/state/dataFetcher.js b/packages/mermaid/src/diagrams/state/dataFetcher.js index 921544ff2..7fb2f2da1 100644 --- a/packages/mermaid/src/diagrams/state/dataFetcher.js +++ b/packages/mermaid/src/diagrams/state/dataFetcher.js @@ -258,7 +258,9 @@ export const dataFetcher = ( newNode.isGroup = true; newNode.dir = getDir(parsedItem); newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP; - newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : ''}`; + newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${ + altFlag ? CSS_DIAGRAM_CLUSTER_ALT : '' + }`; } // This is what will be added to the graph diff --git a/packages/mermaid/src/rendering-util/rendering-elements/clusters.js b/packages/mermaid/src/rendering-util/rendering-elements/clusters.js index a62a92013..80d77beaa 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/clusters.js +++ b/packages/mermaid/src/rendering-util/rendering-elements/clusters.js @@ -264,7 +264,9 @@ const roundedWithTitle = async (parent, node) => { label.attr( 'transform', - `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})` + `translate(${node.x - bbox.width / 2}, ${ + y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3) + })` ); const rectBox = rect.node().getBBox(); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts index 32c13e0e9..8fce5b27e 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts @@ -95,7 +95,9 @@ export const curlyBraceLeft = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${ + -h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, curlyBraceLeftShape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts index 43f5c65ff..7e42732e2 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts @@ -95,7 +95,9 @@ export const curlyBraceRight = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${ + -h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, curlyBraceRightShape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts index 23471b830..6f8e7d4a4 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts @@ -114,7 +114,9 @@ export const curlyBraces = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${ + -h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, curlyBracesShape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts index c8a69665a..aad8e2aef 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts @@ -90,7 +90,9 @@ export const cylinder = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0)) + })` ); node.intersect = function (point) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts index 0fdc79607..2641dd72e 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts @@ -52,7 +52,9 @@ export const dividedRectangle = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${ + y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts index 9c3ad7f18..1fba7a9ee 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts @@ -51,7 +51,9 @@ export const flippedTriangle = async (parent: SVGAElement, node: Node): Promise< label.attr( 'transform', - `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})` + `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${ + -h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0)) + })` ); node.intersect = function (point) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts index 7aff91902..2673b992e 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts @@ -29,7 +29,9 @@ export const labelRect = async (parent: SVGElement, node: Node) => { shapeSvg.attr('class', 'label edgeLabel'); label.attr( 'transform', - `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) - (bbox.y - (bbox.top ?? 0)) + })` ); // if (node.props) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts index 819d48faf..9f3ebaeb2 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts @@ -101,7 +101,9 @@ export const linedCylinder = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0)) + })` ); node.intersect = function (point) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts index f3e705834..34ee1a503 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts @@ -65,7 +65,9 @@ export const linedWaveEdgedRect = async (parent: SVGAElement, node: Node) => { waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) + ((w / 2) * 0.1) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${ + -w / 2 + (node.padding ?? 0) + ((w / 2) * 0.1) / 2 - (bbox.x - (bbox.left ?? 0)) + },${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, waveEdgeRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts index 8df2cf5f1..8e5f2855d 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts @@ -67,7 +67,9 @@ export const multiRect = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, multiRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts index 3d7c306ec..6df285d32 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts @@ -89,7 +89,9 @@ export const multiWaveEdgedRectangle = async (parent: SVGAElement, node: Node) = label.attr( 'transform', - `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, shape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts index b10b608bb..3e8feb3f0 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts @@ -54,7 +54,9 @@ export const rect_left_inv_arrow = async ( label.attr( 'transform', - `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts index 3a5ffac58..333d5b307 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts @@ -52,7 +52,9 @@ export const shadedProcess = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${ + -h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, rect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts index cc5cf89a7..3a210359c 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts @@ -47,7 +47,9 @@ export const slopedRect = async (parent: SVGAElement, node: Node) => { polygon.attr('transform', `translate(0, ${h / 4})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${ + -h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts index c1d8d2955..0e56f5481 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts @@ -87,7 +87,9 @@ export const taggedWaveEdgedRectangle = async (parent: SVGAElement, node: Node) waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${ + -h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, waveEdgeRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts index f94073c32..75cf7493e 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts @@ -102,7 +102,9 @@ export const tiltedCylinder = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, cylinder); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts index 7eb019f7c..e38e46335 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts @@ -54,7 +54,10 @@ export const triangle = async (parent: SVGAElement, node: Node): Promise { waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${ + -h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, waveEdgeRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts index 2dd53f4a8..a321f7b61 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts @@ -25,7 +25,9 @@ export const windowPane = async (parent: SVGAElement, node: Node) => { { x: x + w, y: y - rectOffset }, ]; - const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset} + const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${ + y + h + } L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset} M${x - rectOffset},${y} L${x + w},${y} M${x},${y - rectOffset} L${x},${y + h}`; @@ -51,7 +53,9 @@ export const windowPane = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${ + -(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0)) + })` ); updateNodeBounds(node, windowPane); From 0bc07f356d2a84cf45c972525ad388278750734b Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 20:54:03 +0100 Subject: [PATCH 19/54] add import for assert --- packages/mermaid/src/diagrams/packet/parser.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mermaid/src/diagrams/packet/parser.ts b/packages/mermaid/src/diagrams/packet/parser.ts index eb58916f5..905830d5d 100644 --- a/packages/mermaid/src/diagrams/packet/parser.ts +++ b/packages/mermaid/src/diagrams/packet/parser.ts @@ -5,6 +5,7 @@ import { log } from '../../logger.js'; import { populateCommonDb } from '../common/populateCommonDb.js'; import { db } from './db.js'; import type { PacketBlock, PacketWord } from './types.js'; +import assert from 'node:assert'; const maxPacketSize = 10_000; From 73653c348d4254fdeb3873613c17be1a975ca05c Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 21:12:55 +0100 Subject: [PATCH 20/54] remove import for assert --- packages/mermaid/src/diagrams/packet/parser.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/packet/parser.ts b/packages/mermaid/src/diagrams/packet/parser.ts index 905830d5d..eb58916f5 100644 --- a/packages/mermaid/src/diagrams/packet/parser.ts +++ b/packages/mermaid/src/diagrams/packet/parser.ts @@ -5,7 +5,6 @@ import { log } from '../../logger.js'; import { populateCommonDb } from '../common/populateCommonDb.js'; import { db } from './db.js'; import type { PacketBlock, PacketWord } from './types.js'; -import assert from 'node:assert'; const maxPacketSize = 10_000; From 4cd3f0a8bb5871c1d27796f1b539c437574dfd58 Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 21:21:15 +0100 Subject: [PATCH 21/54] try implementing assert as if->throw --- packages/mermaid/src/diagrams/packet/parser.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/mermaid/src/diagrams/packet/parser.ts b/packages/mermaid/src/diagrams/packet/parser.ts index eb58916f5..71a3b1c4c 100644 --- a/packages/mermaid/src/diagrams/packet/parser.ts +++ b/packages/mermaid/src/diagrams/packet/parser.ts @@ -63,8 +63,12 @@ const getNextFittingBlock = ( row: number, bitsPerRow: number ): [Required, PacketBlock | undefined] => { - assert(block.start !== undefined, 'start should have been set during first phase'); - assert(block.end !== undefined, 'end should have been set during first phase'); + if (block.start === undefined) { + throw new Error('start should have been set during first phase'); + } + if (block.end === undefined) { + throw new Error('end should have been set during first phase'); + } if (block.start > block.end) { throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`); From 5fca47c5ecce15737ecae874307b52066615d17d Mon Sep 17 00:00:00 2001 From: Bryan Date: Fri, 18 Oct 2024 21:30:10 +0100 Subject: [PATCH 22/54] Revert "run prettier" This reverts commit 6d33d93b15f3362c2113b7d8a980b26f8c7d60ad. --- .esbuild/server.ts | 4 +--- .../integration/rendering/iconShape.spec.ts | 6 +----- .../integration/rendering/imageShape.spec.ts | 4 +--- .../src/diagrams/architecture/svgDraw.ts | 18 +++--------------- packages/mermaid/src/diagrams/block/layout.ts | 4 +--- .../src/diagrams/git/gitGraphRenderer.ts | 18 ++++-------------- .../mermaid/src/diagrams/state/dataFetcher.js | 4 +--- .../rendering-elements/clusters.js | 4 +--- .../shapes/curlyBraceLeft.ts | 4 +--- .../shapes/curlyBraceRight.ts | 4 +--- .../rendering-elements/shapes/curlyBraces.ts | 4 +--- .../rendering-elements/shapes/cylinder.ts | 4 +--- .../rendering-elements/shapes/dividedRect.ts | 4 +--- .../shapes/flippedTriangle.ts | 4 +--- .../rendering-elements/shapes/labelRect.ts | 4 +--- .../rendering-elements/shapes/linedCylinder.ts | 4 +--- .../shapes/linedWaveEdgedRect.ts | 4 +--- .../rendering-elements/shapes/multiRect.ts | 4 +--- .../shapes/multiWaveEdgedRectangle.ts | 4 +--- .../shapes/rectLeftInvArrow.ts | 4 +--- .../rendering-elements/shapes/shadedProcess.ts | 4 +--- .../rendering-elements/shapes/slopedRect.ts | 4 +--- .../shapes/taggedWaveEdgedRectangle.ts | 4 +--- .../shapes/tiltedCylinder.ts | 4 +--- .../rendering-elements/shapes/triangle.ts | 5 +---- .../shapes/waveEdgedRectangle.ts | 4 +--- .../rendering-elements/shapes/windowPane.ts | 8 ++------ 27 files changed, 33 insertions(+), 110 deletions(-) diff --git a/.esbuild/server.ts b/.esbuild/server.ts index 5bf214be9..6e1bcb460 100644 --- a/.esbuild/server.ts +++ b/.esbuild/server.ts @@ -36,9 +36,7 @@ const rebuildAll = async () => { console.time(timeLabel); await Promise.all( contexts.map(async ({ config, context }) => { - const buildVariant = `Rebuild ${buildNumber} Time (${Object.keys(config.entryPoints!)[0]} ${ - config.format - })`; + const buildVariant = `Rebuild ${buildNumber} Time (${Object.keys(config.entryPoints!)[0]} ${config.format})`; console.time(buildVariant); await context.rebuild(); console.timeEnd(buildVariant); diff --git a/cypress/integration/rendering/iconShape.spec.ts b/cypress/integration/rendering/iconShape.spec.ts index 8f4b53076..4c12c3fa3 100644 --- a/cypress/integration/rendering/iconShape.spec.ts +++ b/cypress/integration/rendering/iconShape.spec.ts @@ -14,11 +14,7 @@ looks.forEach((look) => { directions.forEach((direction) => { forms.forEach((form) => { labelPos.forEach((pos) => { - describe(`Test iconShape in ${ - form ? `${form} form,` : '' - } ${look} look and dir ${direction} with label position ${ - pos ? pos : 'not defined' - }`, () => { + describe(`Test iconShape in ${form ? `${form} form,` : ''} ${look} look and dir ${direction} with label position ${pos ? pos : 'not defined'}`, () => { it(`without label`, () => { let flowchartCode = `flowchart ${direction}\n`; flowchartCode += ` nA --> nAA@{ icon: 'fa:bell'`; diff --git a/cypress/integration/rendering/imageShape.spec.ts b/cypress/integration/rendering/imageShape.spec.ts index bcbdba102..d2e267149 100644 --- a/cypress/integration/rendering/imageShape.spec.ts +++ b/cypress/integration/rendering/imageShape.spec.ts @@ -12,9 +12,7 @@ const labelPos = [undefined, 't', 'b'] as const; looks.forEach((look) => { directions.forEach((direction) => { labelPos.forEach((pos) => { - describe(`Test imageShape in ${look} look and dir ${direction} with label position ${ - pos ? pos : 'not defined' - }`, () => { + describe(`Test imageShape in ${look} look and dir ${direction} with label position ${pos ? pos : 'not defined'}`, () => { it(`without label`, () => { let flowchartCode = `flowchart ${direction}\n`; flowchartCode += ` nA --> A@{ img: 'https://cdn.pixabay.com/photo/2020/02/22/18/49/paper-4871356_1280.jpg', w: '100', h: '100' }\n`; diff --git a/packages/mermaid/src/diagrams/architecture/svgDraw.ts b/packages/mermaid/src/diagrams/architecture/svgDraw.ts index 60970a186..b10a451fe 100644 --- a/packages/mermaid/src/diagrams/architecture/svgDraw.ts +++ b/packages/mermaid/src/diagrams/architecture/svgDraw.ts @@ -212,11 +212,7 @@ export const drawGroups = async function (groupsEl: D3Element, cy: cytoscape.Cor if (data.icon) { const bkgElem = groupLabelContainer.append('g'); bkgElem.html( - `${await getIconSVG(data.icon, { - height: groupIconSize, - width: groupIconSize, - fallbackPrefix: architectureIcons.prefix, - })}` + `${await getIconSVG(data.icon, { height: groupIconSize, width: groupIconSize, fallbackPrefix: architectureIcons.prefix })}` ); bkgElem.attr( 'transform', @@ -301,19 +297,11 @@ export const drawServices = async function ( // throw new Error(`Invalid SVG Icon name: "${service.icon}"`); // } bkgElem.html( - `${await getIconSVG(service.icon, { - height: iconSize, - width: iconSize, - fallbackPrefix: architectureIcons.prefix, - })}` + `${await getIconSVG(service.icon, { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}` ); } else if (service.iconText) { bkgElem.html( - `${await getIconSVG('blank', { - height: iconSize, - width: iconSize, - fallbackPrefix: architectureIcons.prefix, - })}` + `${await getIconSVG('blank', { height: iconSize, width: iconSize, fallbackPrefix: architectureIcons.prefix })}` ); const textElemContainer = bkgElem.append('g'); const fo = textElemContainer diff --git a/packages/mermaid/src/diagrams/block/layout.ts b/packages/mermaid/src/diagrams/block/layout.ts index 5081a5373..7f44a5f19 100644 --- a/packages/mermaid/src/diagrams/block/layout.ts +++ b/packages/mermaid/src/diagrams/block/layout.ts @@ -105,9 +105,7 @@ function setBlockSizes(block: Block, db: BlockDB, siblingWidth = 0, siblingHeigh for (const child of block.children) { if (child.size) { log.debug( - `abc95 Setting size of children of ${block.id} id=${ - child.id - } ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}` + `abc95 Setting size of children of ${block.id} id=${child.id} ${maxWidth} ${maxHeight} ${JSON.stringify(child.size)}` ); child.size.width = maxWidth * (child.widthInColumns ?? 1) + padding * ((child.widthInColumns ?? 1) - 1); diff --git a/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts b/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts index dc92cfff6..39a64a623 100644 --- a/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts +++ b/packages/mermaid/src/diagrams/git/gitGraphRenderer.ts @@ -276,11 +276,7 @@ const drawCommitBullet = ( cross .attr( 'd', - `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${ - commitPosition.y + 5 - }M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${ - commitPosition.y - 5 - }` + `M ${commitPosition.x - 5},${commitPosition.y - 5}L${commitPosition.x + 5},${commitPosition.y + 5}M${commitPosition.x - 5},${commitPosition.y + 5}L${commitPosition.x + 5},${commitPosition.y - 5}` ) .attr('class', `commit ${typeClass} ${commit.id} commit${branchIndex % THEME_COLOR_LIMIT}`); } @@ -656,27 +652,21 @@ const drawArrow = ( colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${ - p1.y + offset - } L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; + lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; } } else if (dir === 'BT') { if (p1.x < p2.x) { // Source commit is on branch position left of destination commit // so render arrow rightward with colour of destination branch - lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${ - p1.y - offset - } L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`; + lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc2} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`; } else { // Source commit is on branch position right of destination commit // so render arrow leftward with colour of source branch colorClassNum = branchPos.get(commitA.branch)?.index; - lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${ - p1.y - offset - } L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; + lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc2} ${lineX} ${p1.y - offset} L ${lineX} ${p2.y + radius} ${arc} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`; } } else { if (p1.y < p2.y) { diff --git a/packages/mermaid/src/diagrams/state/dataFetcher.js b/packages/mermaid/src/diagrams/state/dataFetcher.js index 7fb2f2da1..921544ff2 100644 --- a/packages/mermaid/src/diagrams/state/dataFetcher.js +++ b/packages/mermaid/src/diagrams/state/dataFetcher.js @@ -258,9 +258,7 @@ export const dataFetcher = ( newNode.isGroup = true; newNode.dir = getDir(parsedItem); newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP; - newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${ - altFlag ? CSS_DIAGRAM_CLUSTER_ALT : '' - }`; + newNode.cssClasses = `${newNode.cssClasses} ${CSS_DIAGRAM_CLUSTER} ${altFlag ? CSS_DIAGRAM_CLUSTER_ALT : ''}`; } // This is what will be added to the graph diff --git a/packages/mermaid/src/rendering-util/rendering-elements/clusters.js b/packages/mermaid/src/rendering-util/rendering-elements/clusters.js index 80d77beaa..a62a92013 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/clusters.js +++ b/packages/mermaid/src/rendering-util/rendering-elements/clusters.js @@ -264,9 +264,7 @@ const roundedWithTitle = async (parent, node) => { label.attr( 'transform', - `translate(${node.x - bbox.width / 2}, ${ - y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3) - })` + `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})` ); const rectBox = rect.node().getBBox(); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts index 8fce5b27e..32c13e0e9 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts @@ -95,9 +95,7 @@ export const curlyBraceLeft = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${ - -h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, curlyBraceLeftShape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts index 7e42732e2..43f5c65ff 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts @@ -95,9 +95,7 @@ export const curlyBraceRight = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${ - -h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, curlyBraceRightShape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts index 6f8e7d4a4..23471b830 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/curlyBraces.ts @@ -114,9 +114,7 @@ export const curlyBraces = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${ - -h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, curlyBracesShape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts index aad8e2aef..c8a69665a 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/cylinder.ts @@ -90,9 +90,7 @@ export const cylinder = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})` ); node.intersect = function (point) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts index 2641dd72e..0fdc79607 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/dividedRect.ts @@ -52,9 +52,7 @@ export const dividedRectangle = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${ - y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts index 1fba7a9ee..9c3ad7f18 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/flippedTriangle.ts @@ -51,9 +51,7 @@ export const flippedTriangle = async (parent: SVGAElement, node: Node): Promise< label.attr( 'transform', - `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${ - -h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})` ); node.intersect = function (point) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts index 2673b992e..7aff91902 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/labelRect.ts @@ -29,9 +29,7 @@ export const labelRect = async (parent: SVGElement, node: Node) => { shapeSvg.attr('class', 'label edgeLabel'); label.attr( 'transform', - `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` ); // if (node.props) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts index 9f3ebaeb2..819d48faf 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedCylinder.ts @@ -101,9 +101,7 @@ export const linedCylinder = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + ry - (bbox.y - (bbox.top ?? 0))})` ); node.intersect = function (point) { diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts index 34ee1a503..f3e705834 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/linedWaveEdgedRect.ts @@ -65,9 +65,7 @@ export const linedWaveEdgedRect = async (parent: SVGAElement, node: Node) => { waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${ - -w / 2 + (node.padding ?? 0) + ((w / 2) * 0.1) / 2 - (bbox.x - (bbox.left ?? 0)) - },${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` + `translate(${-w / 2 + (node.padding ?? 0) + ((w / 2) * 0.1) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, waveEdgeRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts index 8e5f2855d..8df2cf5f1 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiRect.ts @@ -67,9 +67,7 @@ export const multiRect = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, multiRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts index 6df285d32..3d7c306ec 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/multiWaveEdgedRectangle.ts @@ -89,9 +89,7 @@ export const multiWaveEdgedRectangle = async (parent: SVGAElement, node: Node) = label.attr( 'transform', - `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) - rectOffset - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, shape); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts index 3e8feb3f0..b10b608bb 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/rectLeftInvArrow.ts @@ -54,9 +54,7 @@ export const rect_left_inv_arrow = async ( label.attr( 'transform', - `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-notch / 2 - bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts index 333d5b307..3a5ffac58 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/shadedProcess.ts @@ -52,9 +52,7 @@ export const shadedProcess = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${ - -h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, rect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts index 3a210359c..cc5cf89a7 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/slopedRect.ts @@ -47,9 +47,7 @@ export const slopedRect = async (parent: SVGAElement, node: Node) => { polygon.attr('transform', `translate(0, ${h / 4})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${ - -h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, polygon); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts index 0e56f5481..c1d8d2955 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts @@ -87,9 +87,7 @@ export const taggedWaveEdgedRectangle = async (parent: SVGAElement, node: Node) waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${ - -h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, waveEdgeRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts index 75cf7493e..f94073c32 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts @@ -102,9 +102,7 @@ export const tiltedCylinder = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, cylinder); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts index e38e46335..7eb019f7c 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/triangle.ts @@ -54,10 +54,7 @@ export const triangle = async (parent: SVGAElement, node: Node): Promise { waveEdgeRect.attr('transform', `translate(0,${-waveAmplitude / 2})`); label.attr( 'transform', - `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${ - -h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, waveEdgeRect); diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts index a321f7b61..2dd53f4a8 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/windowPane.ts @@ -25,9 +25,7 @@ export const windowPane = async (parent: SVGAElement, node: Node) => { { x: x + w, y: y - rectOffset }, ]; - const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${ - y + h - } L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset} + const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset} M${x - rectOffset},${y} L${x + w},${y} M${x},${y - rectOffset} L${x},${y + h}`; @@ -53,9 +51,7 @@ export const windowPane = async (parent: SVGAElement, node: Node) => { label.attr( 'transform', - `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${ - -(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0)) - })` + `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})` ); updateNodeBounds(node, windowPane); From c828867852f332829d49c942a7df395eb9b98b18 Mon Sep 17 00:00:00 2001 From: Bryan Date: Sat, 19 Oct 2024 17:50:00 +0100 Subject: [PATCH 23/54] add documentation --- docs/syntax/packet.md | 40 ++++++++-------------- packages/mermaid/src/docs/syntax/packet.md | 16 +++++++-- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index 5eab81910..5214f6c00 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -23,6 +23,17 @@ start-end: "Block name" %% Multi-bit blocks ... More Fields ... ``` +### Bits Syntax (v\+) + +Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `bit` or `bits` interchangeably to set the number of bits, thus: + +````md +packet-beta +1bit: "Block name" %% Single-bit block +8bits: "Block name" %% 8-bit block +9-15: "Manually set start and end, it's fine to mix and match" +... More Fields ... + ## Examples ```mermaid-example @@ -30,32 +41,8 @@ start-end: "Block name" %% Multi-bit blocks title: "TCP Packet" --- packet-beta -0-15: "Source Port" -16-31: "Destination Port" -32-63: "Sequence Number" -64-95: "Acknowledgment Number" -96-99: "Data Offset" -100-105: "Reserved" -106: "URG" -107: "ACK" -108: "PSH" -109: "RST" -110: "SYN" -111: "FIN" -112-127: "Window" -128-143: "Checksum" -144-159: "Urgent Pointer" -160-191: "(Options and Padding)" -192-255: "Data (variable length)" -``` - -```mermaid ---- -title: "TCP Packet" ---- -packet-beta -0-15: "Source Port" -16-31: "Destination Port" +16bits: "Source Port" +16bits: "Destination Port" 32-63: "Sequence Number" 64-95: "Acknowledgment Number" 96-99: "Data Offset" @@ -72,6 +59,7 @@ packet-beta 160-191: "(Options and Padding)" 192-255: "Data (variable length)" ``` +```` ```mermaid-example packet-beta diff --git a/packages/mermaid/src/docs/syntax/packet.md b/packages/mermaid/src/docs/syntax/packet.md index c7b6cb71b..5a2992654 100644 --- a/packages/mermaid/src/docs/syntax/packet.md +++ b/packages/mermaid/src/docs/syntax/packet.md @@ -17,6 +17,17 @@ start-end: "Block name" %% Multi-bit blocks ... More Fields ... ``` +### Bits Syntax (v+) + +Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `bit` or `bits` interchangeably to set the number of bits, thus: + +````md +packet-beta +1bit: "Block name" %% Single-bit block +8bits: "Block name" %% 8-bit block +9-15: "Manually set start and end, it's fine to mix and match" +... More Fields ... + ## Examples ```mermaid-example @@ -24,8 +35,8 @@ start-end: "Block name" %% Multi-bit blocks title: "TCP Packet" --- packet-beta -0-15: "Source Port" -16-31: "Destination Port" +16bits: "Source Port" +16bits: "Destination Port" 32-63: "Sequence Number" 64-95: "Acknowledgment Number" 96-99: "Data Offset" @@ -42,6 +53,7 @@ packet-beta 160-191: "(Options and Padding)" 192-255: "Data (variable length)" ``` +```` ```mermaid-example packet-beta From 36fe04bd46535c586b6aa5c117674ec3a2b8995a Mon Sep 17 00:00:00 2001 From: nour kouider Date: Wed, 9 Apr 2025 10:56:30 +0100 Subject: [PATCH 24/54] feat(flowchart): add inheritDir option for subgraph direction --- .../integration/rendering/flowchart.spec.js | 39 +++++++++++++++++++ .../defaultConfig/variables/configKeys.md | 2 +- packages/mermaid/src/config.type.ts | 7 ++++ packages/mermaid/src/defaultConfig.ts | 4 ++ .../mermaid/src/diagrams/flowchart/flowDb.ts | 15 ++++++- 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/cypress/integration/rendering/flowchart.spec.js b/cypress/integration/rendering/flowchart.spec.js index 7b986cd2f..40713ac4e 100644 --- a/cypress/integration/rendering/flowchart.spec.js +++ b/cypress/integration/rendering/flowchart.spec.js @@ -934,4 +934,43 @@ graph TD } ); }); + it('68: should honor subgraph direction when inheritDir is false', () => { + imgSnapshotTest( + ` + %%{init: {"flowchart": { "inheritDir": false }}}%% + flowchart TB + direction LR + subgraph A + direction TB + a --> b + end + subgraph B + c --> d + end + `, + { + fontFamily: 'courier', + } + ); + }); + + it('69: should inherit global direction when inheritDir is true', () => { + imgSnapshotTest( + ` + %%{init: {"flowchart": { "inheritDir": true }}}%% + flowchart TB + direction LR + subgraph A + direction TB + a --> b + end + subgraph B + c --> d + end + `, + { + fontFamily: 'courier', + } + ); + }); }); diff --git a/docs/config/setup/defaultConfig/variables/configKeys.md b/docs/config/setup/defaultConfig/variables/configKeys.md index 4687ad8bc..ea65e33d6 100644 --- a/docs/config/setup/defaultConfig/variables/configKeys.md +++ b/docs/config/setup/defaultConfig/variables/configKeys.md @@ -12,4 +12,4 @@ > `const` **configKeys**: `Set`<`string`> -Defined in: [packages/mermaid/src/defaultConfig.ts:274](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L274) +Defined in: [packages/mermaid/src/defaultConfig.ts:279](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L279) diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 5c34ff462..4e38152c7 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -226,6 +226,12 @@ export interface FlowchartDiagramConfig extends BaseDiagramConfig { * Defines a top/bottom margin for subgraph titles * */ + /** + * If true, subgraphs without explicit direction will inherit the global graph direction (e.g., LR, TB, RL, BT). + * Defaults to `false` to preserve legacy layout behavior. + */ + inheritDir?: boolean; + subGraphTitleMargin?: { top?: number; bottom?: number; @@ -300,6 +306,7 @@ export interface FlowchartDiagramConfig extends BaseDiagramConfig { * This interface was referenced by `MermaidConfig`'s JSON-Schema * via the `definition` "BaseDiagramConfig". */ + export interface BaseDiagramConfig { useWidth?: number; /** diff --git a/packages/mermaid/src/defaultConfig.ts b/packages/mermaid/src/defaultConfig.ts index 2e4e20f50..11ff581c1 100644 --- a/packages/mermaid/src/defaultConfig.ts +++ b/packages/mermaid/src/defaultConfig.ts @@ -71,6 +71,10 @@ const config: RequiredDeep = { fontWeight: this.personFontWeight, }; }, + flowchart: { + ...defaultConfigJson.flowchart, + inheritDir: false, // default to legacy behavior + }, external_personFont: function () { return { diff --git a/packages/mermaid/src/diagrams/flowchart/flowDb.ts b/packages/mermaid/src/diagrams/flowchart/flowDb.ts index de926f294..d4ddf006b 100644 --- a/packages/mermaid/src/diagrams/flowchart/flowDb.ts +++ b/packages/mermaid/src/diagrams/flowchart/flowDb.ts @@ -651,7 +651,8 @@ You have to call mermaid.initialize.` const prims: any = { boolean: {}, number: {}, string: {} }; const objs: any[] = []; - let dir; // = undefined; direction.trim(); + let dir: string | undefined; + const nodeList = a.filter(function (item) { const type = typeof item; if (item.stmt && item.stmt === 'dir') { @@ -670,7 +671,16 @@ You have to call mermaid.initialize.` return { nodeList, dir }; }; - const { nodeList, dir } = uniq(list.flat()); + const result = uniq(list.flat()); + const nodeList = result.nodeList; + let dir = result.dir; + const flowchartConfig = getConfig().flowchart ?? {}; + dir = + dir ?? + (flowchartConfig.inheritDir + ? (this.getDirection() ?? (getConfig() as any).direction ?? undefined) + : undefined); + if (this.version === 'gen-1') { for (let i = 0; i < nodeList.length; i++) { nodeList[i] = this.lookUpDomId(nodeList[i]); @@ -681,6 +691,7 @@ You have to call mermaid.initialize.` title = title || ''; title = this.sanitizeText(title); this.subCount = this.subCount + 1; + const subGraph = { id: id, nodes: nodeList, From 463eb07979cc959f31ca0a22f444c11970664c18 Mon Sep 17 00:00:00 2001 From: nour kouider Date: Wed, 9 Apr 2025 11:31:40 +0100 Subject: [PATCH 25/54] fix(config.schema): add inheritDir to Flowchart config and regenerate types/docs --- .../setup/defaultConfig/variables/configKeys.md | 2 +- packages/mermaid/src/config.type.ts | 13 ++++++------- packages/mermaid/src/schemas/config.schema.yaml | 7 +++++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/config/setup/defaultConfig/variables/configKeys.md b/docs/config/setup/defaultConfig/variables/configKeys.md index ea65e33d6..4aa7405e1 100644 --- a/docs/config/setup/defaultConfig/variables/configKeys.md +++ b/docs/config/setup/defaultConfig/variables/configKeys.md @@ -12,4 +12,4 @@ > `const` **configKeys**: `Set`<`string`> -Defined in: [packages/mermaid/src/defaultConfig.ts:279](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L279) +Defined in: [packages/mermaid/src/defaultConfig.ts:278](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/defaultConfig.ts#L278) diff --git a/packages/mermaid/src/config.type.ts b/packages/mermaid/src/config.type.ts index 4e38152c7..7ef4a71a4 100644 --- a/packages/mermaid/src/config.type.ts +++ b/packages/mermaid/src/config.type.ts @@ -226,12 +226,6 @@ export interface FlowchartDiagramConfig extends BaseDiagramConfig { * Defines a top/bottom margin for subgraph titles * */ - /** - * If true, subgraphs without explicit direction will inherit the global graph direction (e.g., LR, TB, RL, BT). - * Defaults to `false` to preserve legacy layout behavior. - */ - inheritDir?: boolean; - subGraphTitleMargin?: { top?: number; bottom?: number; @@ -301,12 +295,17 @@ export interface FlowchartDiagramConfig extends BaseDiagramConfig { * */ wrappingWidth?: number; + /** + * If true, subgraphs without explicit direction will inherit the global graph direction + * (e.g., LR, TB, RL, BT). Defaults to false to preserve legacy layout behavior. + * + */ + inheritDir?: boolean; } /** * This interface was referenced by `MermaidConfig`'s JSON-Schema * via the `definition` "BaseDiagramConfig". */ - export interface BaseDiagramConfig { useWidth?: number; /** diff --git a/packages/mermaid/src/schemas/config.schema.yaml b/packages/mermaid/src/schemas/config.schema.yaml index 48e113a94..128ae8f3e 100644 --- a/packages/mermaid/src/schemas/config.schema.yaml +++ b/packages/mermaid/src/schemas/config.schema.yaml @@ -2105,6 +2105,13 @@ $defs: # JSON Schema definition (maybe we should move these to a separate file) type: number default: 200 + inheritDir: + type: boolean + default: false + description: | + If true, subgraphs without explicit direction will inherit the global graph direction + (e.g., LR, TB, RL, BT). Defaults to false to preserve legacy layout behavior. + SankeyLinkColor: description: | Picks the color of the sankey diagram links, using the colors of the source and/or target of the links. From ea321168bda01f6e96f6430e8e7560ff1afc212e Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 15 Apr 2025 12:14:06 +0530 Subject: [PATCH 26/54] chore: Update bits syntax to use `+` --- docs/syntax/packet.md | 46 ++++++++++++++----- .../src/diagrams/packet/packet.spec.ts | 14 +++--- .../mermaid/src/diagrams/packet/parser.ts | 12 ++--- packages/mermaid/src/docs/syntax/packet.md | 18 ++++---- .../parser/src/language/packet/packet.langium | 4 +- 5 files changed, 56 insertions(+), 38 deletions(-) diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index 5214f6c00..fb6b030f2 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -25,14 +25,15 @@ start-end: "Block name" %% Multi-bit blocks ### Bits Syntax (v\+) -Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `bit` or `bits` interchangeably to set the number of bits, thus: +Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `+` to set the number of bits, thus: -````md +```md packet-beta -1bit: "Block name" %% Single-bit block -8bits: "Block name" %% 8-bit block ++1: "Block name" %% Single-bit block ++8: "Block name" %% 8-bit block 9-15: "Manually set start and end, it's fine to mix and match" ... More Fields ... +``` ## Examples @@ -41,8 +42,32 @@ packet-beta title: "TCP Packet" --- packet-beta -16bits: "Source Port" -16bits: "Destination Port" +0-15: "Source Port" +16-31: "Destination Port" +32-63: "Sequence Number" +64-95: "Acknowledgment Number" +96-99: "Data Offset" +100-105: "Reserved" +106: "URG" +107: "ACK" +108: "PSH" +109: "RST" +110: "SYN" +111: "FIN" +112-127: "Window" +128-143: "Checksum" +144-159: "Urgent Pointer" +160-191: "(Options and Padding)" +192-255: "Data (variable length)" +``` + +```mermaid +--- +title: "TCP Packet" +--- +packet-beta +0-15: "Source Port" +16-31: "Destination Port" 32-63: "Sequence Number" 64-95: "Acknowledgment Number" 96-99: "Data Offset" @@ -59,13 +84,12 @@ packet-beta 160-191: "(Options and Padding)" 192-255: "Data (variable length)" ``` -```` ```mermaid-example packet-beta title UDP Packet -0-15: "Source Port" -16-31: "Destination Port" ++16: "Source Port" ++16: "Destination Port" 32-47: "Length" 48-63: "Checksum" 64-95: "Data (variable length)" @@ -74,8 +98,8 @@ title UDP Packet ```mermaid packet-beta title UDP Packet -0-15: "Source Port" -16-31: "Destination Port" ++16: "Source Port" ++16: "Destination Port" 32-47: "Length" 48-63: "Checksum" 64-95: "Data (variable length)" diff --git a/packages/mermaid/src/diagrams/packet/packet.spec.ts b/packages/mermaid/src/diagrams/packet/packet.spec.ts index 88366da3a..bdd09acec 100644 --- a/packages/mermaid/src/diagrams/packet/packet.spec.ts +++ b/packages/mermaid/src/diagrams/packet/packet.spec.ts @@ -68,8 +68,8 @@ describe('packet diagrams', () => { it('should handle bit counts', async () => { const str = `packet-beta - 8bits: "byte" - 16bits: "word" + +8: "byte" + +16: "word" `; await expect(parser.parse(str)).resolves.not.toThrow(); expect(getPacket()).toMatchInlineSnapshot(` @@ -94,8 +94,8 @@ describe('packet diagrams', () => { it('should handle bit counts with bit or bits', async () => { const str = `packet-beta - 8bit: "byte" - 16bits: "word" + +8: "byte" + +16: "word" `; await expect(parser.parse(str)).resolves.not.toThrow(); expect(getPacket()).toMatchInlineSnapshot(` @@ -206,7 +206,7 @@ describe('packet diagrams', () => { it('should throw error if numbers are not continuous with bit counts', async () => { const str = `packet-beta - 16bits: "test" + +16: "test" 18-20: "error" `; await expect(parser.parse(str)).rejects.toThrowErrorMatchingInlineSnapshot( @@ -226,7 +226,7 @@ describe('packet diagrams', () => { it('should throw error if numbers are not continuous for single packets with bit counts', async () => { const str = `packet-beta - 16 bits: "test" + +16: "test" 18: "error" `; await expect(parser.parse(str)).rejects.toThrowErrorMatchingInlineSnapshot( @@ -257,7 +257,7 @@ describe('packet diagrams', () => { it('should throw error if bit count is 0', async () => { const str = `packet-beta - 0bits: "test" + +0: "test" `; await expect(parser.parse(str)).rejects.toThrowErrorMatchingInlineSnapshot( `[Error: Packet block 0 is invalid. Cannot have a zero bit field.]` diff --git a/packages/mermaid/src/diagrams/packet/parser.ts b/packages/mermaid/src/diagrams/packet/parser.ts index 71a3b1c4c..1dcccd636 100644 --- a/packages/mermaid/src/diagrams/packet/parser.ts +++ b/packages/mermaid/src/diagrams/packet/parser.ts @@ -19,9 +19,7 @@ const populate = (ast: Packet) => { if (start !== undefined && end !== undefined && end < start) { throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`); } - if (start == undefined) { - start = lastBit + 1; - } + start ??= lastBit + 1; if (start !== lastBit + 1) { throw new Error( `Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${ @@ -32,12 +30,8 @@ const populate = (ast: Packet) => { if (bits === 0) { throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`); } - if (end == undefined) { - end = start + (bits ?? 1) - 1; - } - if (bits == undefined) { - bits = end - start + 1; - } + end ??= start + (bits ?? 1) - 1; + bits ??= end - start + 1; lastBit = end; log.debug(`Packet block ${start} - ${lastBit} with label ${label}`); diff --git a/packages/mermaid/src/docs/syntax/packet.md b/packages/mermaid/src/docs/syntax/packet.md index 5a2992654..211ce81fc 100644 --- a/packages/mermaid/src/docs/syntax/packet.md +++ b/packages/mermaid/src/docs/syntax/packet.md @@ -19,14 +19,15 @@ start-end: "Block name" %% Multi-bit blocks ### Bits Syntax (v+) -Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `bit` or `bits` interchangeably to set the number of bits, thus: +Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `+` to set the number of bits, thus: -````md +```md packet-beta -1bit: "Block name" %% Single-bit block -8bits: "Block name" %% 8-bit block ++1: "Block name" %% Single-bit block ++8: "Block name" %% 8-bit block 9-15: "Manually set start and end, it's fine to mix and match" ... More Fields ... +``` ## Examples @@ -35,8 +36,8 @@ packet-beta title: "TCP Packet" --- packet-beta -16bits: "Source Port" -16bits: "Destination Port" +0-15: "Source Port" +16-31: "Destination Port" 32-63: "Sequence Number" 64-95: "Acknowledgment Number" 96-99: "Data Offset" @@ -53,13 +54,12 @@ packet-beta 160-191: "(Options and Padding)" 192-255: "Data (variable length)" ``` -```` ```mermaid-example packet-beta title UDP Packet -0-15: "Source Port" -16-31: "Destination Port" ++16: "Source Port" ++16: "Destination Port" 32-47: "Length" 48-63: "Checksum" 64-95: "Data (variable length)" diff --git a/packages/parser/src/language/packet/packet.langium b/packages/parser/src/language/packet/packet.langium index 57b5137cb..08cf10596 100644 --- a/packages/parser/src/language/packet/packet.langium +++ b/packages/parser/src/language/packet/packet.langium @@ -13,8 +13,8 @@ entry Packet: PacketBlock: ( - start=INT('-' (end=INT | bits=INT'bit''s'?))? - | bits=INT'bit''s'? + start=INT('-' end=INT)? + | '+' bits=INT ) ':' label=STRING EOL From df9df9dc32b80a8c320cc0efd5483b9485f15bde Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 15 Apr 2025 12:16:49 +0530 Subject: [PATCH 27/54] docs: Add changeset --- .changeset/quiet-hotels-shine.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/quiet-hotels-shine.md diff --git a/.changeset/quiet-hotels-shine.md b/.changeset/quiet-hotels-shine.md new file mode 100644 index 000000000..d9b6cb39e --- /dev/null +++ b/.changeset/quiet-hotels-shine.md @@ -0,0 +1,6 @@ +--- +'mermaid': minor +'@mermaid-js/parser': minor +--- + +feat: Add shorter `+: Label` syntax in packet diagram From 88ae4ef704d31d3b3812333b767170e20a8263a3 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 15 Apr 2025 12:21:46 +0530 Subject: [PATCH 28/54] chore: Remove incorrect language tag --- docs/syntax/packet.md | 4 ++-- packages/mermaid/src/docs/syntax/packet.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/syntax/packet.md b/docs/syntax/packet.md index fb6b030f2..efe305f3b 100644 --- a/docs/syntax/packet.md +++ b/docs/syntax/packet.md @@ -16,7 +16,7 @@ This diagram type is particularly useful for developers, network engineers, educ ## Syntax -```md +``` packet-beta start: "Block name" %% Single-bit block start-end: "Block name" %% Multi-bit blocks @@ -27,7 +27,7 @@ start-end: "Block name" %% Multi-bit blocks Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `+` to set the number of bits, thus: -```md +``` packet-beta +1: "Block name" %% Single-bit block +8: "Block name" %% 8-bit block diff --git a/packages/mermaid/src/docs/syntax/packet.md b/packages/mermaid/src/docs/syntax/packet.md index 211ce81fc..09beb27a6 100644 --- a/packages/mermaid/src/docs/syntax/packet.md +++ b/packages/mermaid/src/docs/syntax/packet.md @@ -10,7 +10,7 @@ This diagram type is particularly useful for developers, network engineers, educ ## Syntax -```md +``` packet-beta start: "Block name" %% Single-bit block start-end: "Block name" %% Multi-bit blocks @@ -21,7 +21,7 @@ start-end: "Block name" %% Multi-bit blocks Using start and end bit counts can be difficult, especially when modifying a design. For this we add a bit count field, which starts from the end of the previous field automagically. Use `+` to set the number of bits, thus: -```md +``` packet-beta +1: "Block name" %% Single-bit block +8: "Block name" %% 8-bit block From da610bff1dc2d303404638afea9e007e7726f75c Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 18 Apr 2025 14:55:53 +0530 Subject: [PATCH 29/54] 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 30/54] 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 31/54] 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 32/54] 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 33/54] 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 34/54] [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 35/54] 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 36/54] 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 37/54] 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 38/54] 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 39/54] 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 40/54] 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 41/54] 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 42/54] 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 43/54] [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 44/54] 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 45/54] 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 46/54] 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 47/54] 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 From f8c54317c53f009b4f898b37ecff00dcd6d86d21 Mon Sep 17 00:00:00 2001 From: nour kouider Date: Mon, 28 Apr 2025 10:27:06 +0100 Subject: [PATCH 48/54] docs(classDiagram): Clarify annotation syntax and recommend inline style (#6538) --- docs/syntax/classDiagram.md | 32 +++++++++++++++++++ .../mermaid/src/docs/syntax/classDiagram.md | 21 ++++++++++++ 2 files changed, 53 insertions(+) diff --git a/docs/syntax/classDiagram.md b/docs/syntax/classDiagram.md index 20fdef0ed..2067cc97c 100644 --- a/docs/syntax/classDiagram.md +++ b/docs/syntax/classDiagram.md @@ -545,6 +545,38 @@ It is possible to annotate classes with markers to provide additional metadata a Annotations are defined within the opening `<<` and closing `>>`. There are two ways to add an annotation to a class, and either way the output will be same: +> **Tip:**\ +> In Mermaid class diagrams, annotations like `<>` can be attached in two ways: +> +> - **Inline with the class definition** (Recommended for consistency): +> +> ```mermaid-example +> classDiagram +> class Shape <> +> ``` +> +> ```mermaid +> classDiagram +> class Shape <> +> ``` +> +> - **Separate line after the class definition**: +> +> ```mermaid-example +> classDiagram +> class Shape +> <> Shape +> ``` +> +> ```mermaid +> classDiagram +> class Shape +> <> Shape +> ``` +> +> Both methods are fully supported and produce identical diagrams.\ +> However, it is recommended to use the **inline style** for better readability and consistent formatting across diagrams. + - In a **_separate line_** after a class is defined: ```mermaid-example diff --git a/packages/mermaid/src/docs/syntax/classDiagram.md b/packages/mermaid/src/docs/syntax/classDiagram.md index 33a1f9f6d..7ef81b96f 100644 --- a/packages/mermaid/src/docs/syntax/classDiagram.md +++ b/packages/mermaid/src/docs/syntax/classDiagram.md @@ -360,6 +360,27 @@ It is possible to annotate classes with markers to provide additional metadata a Annotations are defined within the opening `<<` and closing `>>`. There are two ways to add an annotation to a class, and either way the output will be same: +> **Tip:** +> In Mermaid class diagrams, annotations like `<>` can be attached in two ways: +> +> - **Inline with the class definition** (Recommended for consistency): +> +> ```mermaid-example +> classDiagram +> class Shape <> +> ``` +> +> - **Separate line after the class definition**: +> +> ```mermaid-example +> classDiagram +> class Shape +> <> Shape +> ``` +> +> Both methods are fully supported and produce identical diagrams. +> However, it is recommended to use the **inline style** for better readability and consistent formatting across diagrams. + - In a **_separate line_** after a class is defined: ```mermaid-example From 2a10143406d4b46b08674e6ae810179ebfed0780 Mon Sep 17 00:00:00 2001 From: omkarht Date: Wed, 7 May 2025 20:47:15 +0530 Subject: [PATCH 49/54] Fix: Adjust ER diagram row height calculation and layout rendering --- demos/er-multiline.html | 222 ++++++++++++++++++ .../rendering-elements/shapes/erBox.ts | 26 +- 2 files changed, 236 insertions(+), 12 deletions(-) create mode 100644 demos/er-multiline.html diff --git a/demos/er-multiline.html b/demos/er-multiline.html new file mode 100644 index 000000000..e85b320aa --- /dev/null +++ b/demos/er-multiline.html @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + +
+
+              erDiagram
+              CAR ||--o{ NAMED-DRIVER : allows
+              CAR ::: Pine {
+                  string registrationNumber PK "Primary Key
Unique registration number" + string make "Car make
e.g., Toyota" + string model "Model of the car
e.g., Corolla" + string[] parts "List of parts
Stored as array" + } + PERSON ||--o{ NAMED-DRIVER : is + PERSON ::: someclass { + string driversLicense PK "The license #
Primary Key" + string(99) firstName "Only 99 characters
are allowed
e.g., Smith" + string lastName "Last name of person
e.g., Smith" + string phone UK "Unique phone number
Used for contact" + int age "Age of the person
Must be numeric" + } + NAMED-DRIVER { + string carRegistrationNumber PK, FK, UK, PK "Foreign key to CAR
Also part of PK" + string driverLicence PK, FK "Foreign key to PERSON
Also part of PK" + } + MANUFACTURER only one to zero or more CAR : makesx +
+
+
+                  erDiagram
+                  _**testẽζ➕Ø😀㌕ぼ**_ {
+                    *__List~List~int~~sdfds__* **driversLicense** PK "***The l😀icense #***"
+                    string last*Name*
+                    string __phone__ UK
+                    *string(99)~T~~~~~~* firstName "Only __99__ 
characters are a
llowed dsfsdfsdfsdfs" + int _age_ + } +
+
+ + + + diff --git a/packages/mermaid/src/rendering-util/rendering-elements/shapes/erBox.ts b/packages/mermaid/src/rendering-util/rendering-elements/shapes/erBox.ts index af1e9945a..23c6fb091 100644 --- a/packages/mermaid/src/rendering-util/rendering-elements/shapes/erBox.ts +++ b/packages/mermaid/src/rendering-util/rendering-elements/shapes/erBox.ts @@ -89,6 +89,7 @@ export async function erBox(parent: D3Selection nameBBox.height += TEXT_PADDING; let yOffset = 0; const yOffsets = []; + const rows = []; let maxTypeWidth = 0; let maxNameWidth = 0; let maxKeysWidth = 0; @@ -137,12 +138,12 @@ export async function erBox(parent: D3Selection ); maxCommentWidth = Math.max(maxCommentWidth, commentBBox.width + PADDING); - yOffset += + const rowHeight = Math.max(typeBBox.height, nameBBox.height, keysBBox.height, commentBBox.height) + TEXT_PADDING; - yOffsets.push(yOffset); + rows.push({ yOffset, rowHeight }); + yOffset += rowHeight; } - yOffsets.pop(); let totalWidthSections = 4; if (maxKeysWidth <= PADDING) { @@ -185,8 +186,12 @@ export async function erBox(parent: D3Selection options.fillStyle = 'solid'; } + let totalShapeBBoxHeight = 0; + if (rows.length > 0) { + totalShapeBBoxHeight = rows.reduce((sum, row) => sum + (row?.rowHeight ?? 0), 0); + } const w = Math.max(shapeBBox.width + PADDING * 2, node?.width || 0, maxWidth); - const h = Math.max(shapeBBox.height + (yOffsets[0] || yOffset) + TEXT_PADDING, node?.height || 0); + const h = Math.max((totalShapeBBoxHeight ?? 0) + nameBBox.height, node?.height || 0); const x = -w / 2; const y = -h / 2; @@ -232,13 +237,10 @@ export async function erBox(parent: D3Selection yOffsets.push(0); // Draw row rects - for (const [i, yOffset] of yOffsets.entries()) { - if (i === 0 && yOffsets.length > 1) { - continue; - // Skip first row - } - const isEven = i % 2 === 0 && yOffset !== 0; - const roughRect = rc.rectangle(x, nameBBox.height + y + yOffset, w, nameBBox.height, { + for (const [i, row] of rows.entries()) { + const contentRowIndex = i + 1; // Adjusted index to skip the header (name) row + const isEven = contentRowIndex % 2 === 0 && row.yOffset !== 0; + const roughRect = rc.rectangle(x, nameBBox.height + y + row?.yOffset, w, row?.rowHeight, { ...options, fill: isEven ? rowEven : rowOdd, stroke: nodeBorder, @@ -246,7 +248,7 @@ export async function erBox(parent: D3Selection shapeSvg .insert(() => roughRect, 'g.label') .attr('style', cssStyles!.join('')) - .attr('class', `row-rect-${i % 2 === 0 ? 'even' : 'odd'}`); + .attr('class', `row-rect-${isEven ? 'even' : 'odd'}`); } // Draw divider lines From c370ebe5202ca846be55cbfd0ec7dbdea3c587ca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 20:27:29 +0000 Subject: [PATCH 50/54] chore(deps): update peter-evans/create-pull-request digest to 889dce9 --- .github/workflows/e2e-timings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-timings.yml b/.github/workflows/e2e-timings.yml index ca78d0b3a..00e733c48 100644 --- a/.github/workflows/e2e-timings.yml +++ b/.github/workflows/e2e-timings.yml @@ -58,7 +58,7 @@ jobs: echo "EOF" >> $GITHUB_OUTPUT - name: Commit and create pull request - uses: peter-evans/create-pull-request@3b1f4bffdc97d7b055dd96732d7348e585ad2c4e + uses: peter-evans/create-pull-request@889dce9eaba7900ce30494f5e1ac7220b27e5c81 with: add-paths: | cypress/timings.json From e2e22de1d9d2c34b928858e8b028afc663719f0e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 20:28:30 +0000 Subject: [PATCH 51/54] chore(deps): update eslint --- package.json | 6 +- pnpm-lock.yaml | 314 +++++++++++++++++++++++++++++++------------------ 2 files changed, 200 insertions(+), 120 deletions(-) diff --git a/package.json b/package.json index e5197c2eb..fa189f008 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "@changesets/cli": "^2.27.12", "@cspell/eslint-plugin": "^8.19.3", "@cypress/code-coverage": "^3.12.49", - "@eslint/js": "^9.25.1", + "@eslint/js": "^9.26.0", "@rollup/plugin-typescript": "^12.1.2", "@types/cors": "^2.8.17", "@types/express": "^5.0.0", @@ -93,7 +93,7 @@ "cypress-image-snapshot": "^4.0.1", "cypress-split": "^1.24.14", "esbuild": "^0.25.0", - "eslint": "^9.25.1", + "eslint": "^9.26.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-cypress": "^4.3.0", "eslint-plugin-html": "^8.1.2", @@ -126,7 +126,7 @@ "tslib": "^2.8.1", "tsx": "^4.7.3", "typescript": "~5.7.3", - "typescript-eslint": "^8.31.1", + "typescript-eslint": "^8.32.0", "vite": "^6.1.1", "vite-plugin-istanbul": "^7.0.0", "vitest": "^3.0.6" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ebf81ac80..684a786f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,13 +27,13 @@ importers: version: 2.28.1 '@cspell/eslint-plugin': specifier: ^8.19.3 - version: 8.19.3(eslint@9.25.1(jiti@2.4.2)) + version: 8.19.3(eslint@9.26.0(jiti@2.4.2)) '@cypress/code-coverage': specifier: ^3.12.49 - version: 3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.26.9(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0)) + version: 3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0)) '@eslint/js': - specifier: ^9.25.1 - version: 9.25.1 + specifier: ^9.26.0 + version: 9.26.0 '@rollup/plugin-typescript': specifier: ^12.1.2 version: 12.1.2(rollup@4.40.1)(tslib@2.8.1)(typescript@5.7.3) @@ -104,32 +104,32 @@ importers: specifier: ^0.25.0 version: 0.25.0 eslint: - specifier: ^9.25.1 - version: 9.25.1(jiti@2.4.2) + specifier: ^9.26.0 + version: 9.26.0(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.1 - version: 10.1.1(eslint@9.25.1(jiti@2.4.2)) + version: 10.1.1(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-cypress: specifier: ^4.3.0 - version: 4.3.0(eslint@9.25.1(jiti@2.4.2)) + version: 4.3.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-html: specifier: ^8.1.2 version: 8.1.2 eslint-plugin-jest: specifier: ^28.11.0 - version: 28.11.0(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.5))(typescript@5.7.3) + version: 28.11.0(@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.5))(typescript@5.7.3) eslint-plugin-jsdoc: specifier: ^50.6.9 - version: 50.6.9(eslint@9.25.1(jiti@2.4.2)) + version: 50.6.9(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-json: specifier: ^4.0.1 version: 4.0.1 eslint-plugin-lodash: specifier: ^8.0.0 - version: 8.0.0(eslint@9.25.1(jiti@2.4.2)) + version: 8.0.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-markdown: specifier: ^5.1.0 - version: 5.1.0(eslint@9.25.1(jiti@2.4.2)) + version: 5.1.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-no-only-tests: specifier: ^3.3.0 version: 3.3.0 @@ -138,7 +138,7 @@ importers: version: 0.4.0 eslint-plugin-unicorn: specifier: ^59.0.0 - version: 59.0.0(eslint@9.25.1(jiti@2.4.2)) + version: 59.0.0(eslint@9.26.0(jiti@2.4.2)) express: specifier: ^5.1.0 version: 5.1.0 @@ -203,8 +203,8 @@ importers: specifier: ~5.7.3 version: 5.7.3 typescript-eslint: - specifier: ^8.31.1 - version: 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + specifier: ^8.32.0 + version: 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) vite: specifier: ^6.1.1 version: 6.1.6(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) @@ -1401,12 +1401,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.26.9': - resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.27.1': resolution: {integrity: sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==} engines: {node: '>=6.9.0'} @@ -2394,6 +2388,12 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2414,8 +2414,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.25.1': - resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} + '@eslint/js@9.26.0': + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -2738,6 +2738,10 @@ packages: '@microsoft/tsdoc@0.15.1': resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + '@modelcontextprotocol/sdk@1.11.0': + resolution: {integrity: sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==} + engines: {node: '>=18'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -3446,16 +3450,16 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.31.1': - resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} + '@typescript-eslint/eslint-plugin@8.32.0': + resolution: {integrity: sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.31.1': - resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} + '@typescript-eslint/parser@8.32.0': + resolution: {integrity: sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3465,12 +3469,12 @@ packages: resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.31.1': - resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} + '@typescript-eslint/scope-manager@8.32.0': + resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.31.1': - resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} + '@typescript-eslint/type-utils@8.32.0': + resolution: {integrity: sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3484,8 +3488,8 @@ packages: resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.31.1': - resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} + '@typescript-eslint/types@8.32.0': + resolution: {integrity: sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@7.18.0': @@ -3503,8 +3507,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/typescript-estree@8.31.1': - resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} + '@typescript-eslint/typescript-estree@8.32.0': + resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' @@ -3516,8 +3520,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.31.1': - resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} + '@typescript-eslint/utils@8.32.0': + resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -3531,8 +3535,8 @@ packages: resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.31.1': - resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} + '@typescript-eslint/visitor-keys@8.32.0': + resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -5605,8 +5609,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.25.1: - resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==} + eslint@9.26.0: + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -5690,6 +5694,14 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + eventsource-parser@3.0.1: + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} + engines: {node: '>=18.0.0'} + + eventsource@3.0.6: + resolution: {integrity: sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==} + engines: {node: '>=18.0.0'} + execa@1.0.0: resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} engines: {node: '>=6'} @@ -5722,6 +5734,12 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + express-rate-limit@7.5.0: + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} + engines: {node: '>= 16'} + peerDependencies: + express: ^4.11 || 5 || ^5.0.0-beta.1 + express@4.21.0: resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} @@ -8075,6 +8093,10 @@ packages: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} + engines: {node: '>=16.20.0'} + pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} @@ -9255,6 +9277,12 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -9355,8 +9383,8 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x - typescript-eslint@8.31.1: - resolution: {integrity: sha512-j6DsEotD/fH39qKzXTQRwYYWlt7D+0HmfpOK+DVhwJOFLcdmn92hq3mBb7HlKJHbjjI/gTOqEcc9d6JfpFf/VA==} + typescript-eslint@8.32.0: + resolution: {integrity: sha512-UMq2kxdXCzinFFPsXc9o2ozIpYCCOiEC46MG3yEh5Vipq6BO27otTtEBZA1fQ66DulEUgE97ucQ/3YY66CPg0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10145,6 +10173,14 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zod-to-json-schema@3.24.5: + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + peerDependencies: + zod: ^3.24.1 + + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -11732,7 +11768,7 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.26.9(@babel/core@7.26.9)': + '@babel/preset-env@7.27.1(@babel/core@7.26.9)': dependencies: '@babel/compat-data': 7.27.1 '@babel/core': 7.26.9 @@ -12455,12 +12491,12 @@ snapshots: '@cspell/url': 8.19.3 import-meta-resolve: 4.1.0 - '@cspell/eslint-plugin@8.19.3(eslint@9.25.1(jiti@2.4.2))': + '@cspell/eslint-plugin@8.19.3(eslint@9.26.0(jiti@2.4.2))': dependencies: '@cspell/cspell-types': 8.19.3 '@cspell/url': 8.19.3 cspell-lib: 8.19.3 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) synckit: 0.11.4 '@cspell/filetypes@8.17.4': {} @@ -12495,11 +12531,11 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} - '@cypress/code-coverage@3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.26.9(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0))': + '@cypress/code-coverage@3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0))': dependencies: '@babel/core': 7.26.9 - '@babel/preset-env': 7.26.9(@babel/core@7.26.9) - '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.26.9(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0)) + '@babel/preset-env': 7.27.1(@babel/core@7.26.9) + '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0)) babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)) chalk: 4.1.2 cypress: 14.0.3 @@ -12535,10 +12571,10 @@ snapshots: tunnel-agent: 0.6.0 uuid: 8.3.2 - '@cypress/webpack-preprocessor@6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.26.9(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0))': + '@cypress/webpack-preprocessor@6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0))': dependencies: '@babel/core': 7.26.9 - '@babel/preset-env': 7.26.9(@babel/core@7.26.9) + '@babel/preset-env': 7.27.1(@babel/core@7.26.9) babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)) bluebird: 3.7.1 debug: 4.4.0(supports-color@8.1.1) @@ -12815,9 +12851,14 @@ snapshots: '@esbuild/win32-x64@0.25.0': optional: true - '@eslint-community/eslint-utils@4.5.1(eslint@9.25.1(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.26.0(jiti@2.4.2))': dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': + dependencies: + eslint: 9.26.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -12850,7 +12891,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.25.1': {} + '@eslint/js@9.26.0': {} '@eslint/object-schema@2.1.6': {} @@ -13273,6 +13314,21 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} + '@modelcontextprotocol/sdk@1.11.0': + dependencies: + content-type: 1.0.5 + cors: 2.8.5 + cross-spawn: 7.0.6 + eventsource: 3.0.6 + express: 5.1.0 + express-rate-limit: 7.5.0(express@5.1.0) + pkce-challenge: 5.0.0 + raw-body: 3.0.0 + zod: 3.24.4 + zod-to-json-schema: 3.24.5(zod@3.24.4) + transitivePeerDependencies: + - supports-color + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -13983,31 +14039,31 @@ snapshots: '@types/node': 22.13.5 optional: true - '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/type-utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.31.1 - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/parser': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/type-utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.32.0 + eslint: 9.26.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) + ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.31.1 + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.32.0 debug: 4.4.0(supports-color@8.1.1) - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -14017,18 +14073,18 @@ snapshots: '@typescript-eslint/types': 8.24.1 '@typescript-eslint/visitor-keys': 8.24.1 - '@typescript-eslint/scope-manager@8.31.1': + '@typescript-eslint/scope-manager@8.32.0': dependencies: - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/visitor-keys': 8.31.1 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/visitor-keys': 8.32.0 - '@typescript-eslint/type-utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) debug: 4.4.0(supports-color@8.1.1) - eslint: 9.25.1(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) + eslint: 9.26.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -14037,7 +14093,7 @@ snapshots: '@typescript-eslint/types@8.24.1': {} - '@typescript-eslint/types@8.31.1': {} + '@typescript-eslint/types@8.32.0': {} '@typescript-eslint/typescript-estree@7.18.0(typescript@5.7.3)': dependencies: @@ -14068,38 +14124,38 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.31.1(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.32.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/visitor-keys': 8.31.1 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/visitor-keys': 8.32.0 debug: 4.4.0(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) + ts-api-utils: 2.1.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.24.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.24.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.26.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.24.1 '@typescript-eslint/types': 8.24.1 '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3)': + '@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.25.1(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.7.3) - eslint: 9.25.1(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.0 + '@typescript-eslint/types': 8.32.0 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -14114,9 +14170,9 @@ snapshots: '@typescript-eslint/types': 8.24.1 eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.31.1': + '@typescript-eslint/visitor-keys@8.32.0': dependencies: - '@typescript-eslint/types': 8.31.1 + '@typescript-eslint/types': 8.32.0 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.3.0': {} @@ -16582,38 +16638,38 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.1.1(eslint@9.25.1(jiti@2.4.2)): + eslint-config-prettier@10.1.1(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) - eslint-plugin-cypress@4.3.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-cypress@4.3.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) globals: 15.15.0 eslint-plugin-html@8.1.2: dependencies: htmlparser2: 9.1.0 - eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.5))(typescript@5.7.3): + eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(jest@29.7.0(@types/node@22.13.5))(typescript@5.7.3): dependencies: - '@typescript-eslint/utils': 8.24.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/utils': 8.24.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.26.0(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) jest: 29.7.0(@types/node@22.13.5) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@50.6.9(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-jsdoc@50.6.9(eslint@9.26.0(jiti@2.4.2)): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.4.0(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) espree: 10.3.0 esquery: 1.6.0 parse-imports: 2.2.1 @@ -16628,14 +16684,14 @@ snapshots: lodash: 4.17.21 vscode-json-languageservice: 4.2.1 - eslint-plugin-lodash@8.0.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-lodash@8.0.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) lodash: 4.17.21 - eslint-plugin-markdown@5.1.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-markdown@5.1.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color @@ -16647,15 +16703,15 @@ snapshots: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - eslint-plugin-unicorn@59.0.0(eslint@9.25.1(jiti@2.4.2)): + eslint-plugin-unicorn@59.0.0(eslint@9.26.0(jiti@2.4.2)): dependencies: '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.5.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.26.0(jiti@2.4.2)) '@eslint/plugin-kit': 0.2.8 ci-info: 4.2.0 clean-regexp: 1.0.0 core-js-compat: 3.41.0 - eslint: 9.25.1(jiti@2.4.2) + eslint: 9.26.0(jiti@2.4.2) esquery: 1.6.0 find-up-simple: 1.0.1 globals: 16.0.0 @@ -16682,19 +16738,20 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.25.1(jiti@2.4.2): + eslint@9.26.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.5.1(eslint@9.25.1(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.26.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.1 '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.25.1 + '@eslint/js': 9.26.0 '@eslint/plugin-kit': 0.2.8 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 + '@modelcontextprotocol/sdk': 1.11.0 '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 ajv: 6.12.6 @@ -16719,6 +16776,7 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + zod: 3.24.4 optionalDependencies: jiti: 2.4.2 transitivePeerDependencies: @@ -16782,6 +16840,12 @@ snapshots: events@3.3.0: {} + eventsource-parser@3.0.1: {} + + eventsource@3.0.6: + dependencies: + eventsource-parser: 3.0.1 + execa@1.0.0: dependencies: cross-spawn: 6.0.6 @@ -16844,6 +16908,10 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + express-rate-limit@7.5.0(express@5.1.0): + dependencies: + express: 5.1.0 + express@4.21.0: dependencies: accepts: 1.3.8 @@ -19739,6 +19807,8 @@ snapshots: dependencies: pngjs: 6.0.0 + pkce-challenge@5.0.0: {} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 @@ -21127,6 +21197,10 @@ snapshots: dependencies: typescript: 5.7.3 + ts-api-utils@2.1.0(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + ts-dedent@2.2.0: {} ts-interface-checker@0.1.13: {} @@ -21233,12 +21307,12 @@ snapshots: typescript: 5.7.3 yaml: 2.7.0 - typescript-eslint@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3): + typescript-eslint@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3))(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.25.1(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/parser': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -22219,4 +22293,10 @@ snapshots: yocto-queue@1.2.1: {} + zod-to-json-schema@3.24.5(zod@3.24.4): + dependencies: + zod: 3.24.4 + + zod@3.24.4: {} + zwitch@2.0.4: {} From bbe3489b4f91bb041d971d290ef0ed890bca88c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 07:32:47 +0000 Subject: [PATCH 52/54] chore(deps): update dependency vite to v6.1.6 [security] --- pnpm-lock.yaml | 300 +++++++++++++++++++++++++------------------------ 1 file changed, 154 insertions(+), 146 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 684a786f9..8daccd890 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,7 +36,7 @@ importers: version: 9.26.0 '@rollup/plugin-typescript': specifier: ^12.1.2 - version: 12.1.2(rollup@4.40.1)(tslib@2.8.1)(typescript@5.7.3) + version: 12.1.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.7.3) '@types/cors': specifier: ^2.8.17 version: 2.8.17 @@ -60,7 +60,7 @@ importers: version: 22.13.5 '@types/rollup-plugin-visualizer': specifier: ^5.0.3 - version: 5.0.3(rollup@4.40.1) + version: 5.0.3(rollup@4.40.2) '@vitest/coverage-v8': specifier: ^3.0.6 version: 3.0.6(vitest@3.0.6) @@ -189,7 +189,7 @@ importers: version: 6.0.1 rollup-plugin-visualizer: specifier: ^5.14.0 - version: 5.14.0(rollup@4.40.1) + version: 5.14.0(rollup@4.40.2) start-server-and-test: specifier: ^2.0.10 version: 2.0.10 @@ -494,7 +494,7 @@ importers: version: 66.0.0(postcss@8.5.3)(vite@6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1))(vue@3.5.13(typescript@5.7.3)) unplugin-vue-components: specifier: ^28.4.0 - version: 28.4.0(@babel/parser@7.27.1)(vue@3.5.13(typescript@5.7.3)) + version: 28.4.0(@babel/parser@7.27.2)(vue@3.5.13(typescript@5.7.3)) vite: specifier: ^6.1.1 version: 6.1.1(@types/node@22.13.5)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.1) @@ -805,8 +805,8 @@ packages: resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.1': - resolution: {integrity: sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==} + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} engines: {node: '>=6.9.0'} '@babel/core@7.26.9': @@ -833,8 +833,8 @@ packages: resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.1': - resolution: {integrity: sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==} + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.27.1': @@ -951,8 +951,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.27.1': - resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} engines: {node: '>=6.0.0'} hasBin: true @@ -1281,8 +1281,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.27.1': - resolution: {integrity: sha512-/sSliVc9gHE20/7D5qsdGlq7RG5NCDTWsAhyqzGuq174EtWJoGzIu1BQ7G56eDsTcy1jseBZwv50olSdXOlGuA==} + '@babel/plugin-transform-object-rest-spread@7.27.2': + resolution: {integrity: sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1407,6 +1407,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.27.2': + resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: @@ -1424,8 +1430,8 @@ packages: resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.1': - resolution: {integrity: sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} '@babel/traverse@7.26.9': @@ -2836,8 +2842,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm-eabi@4.40.1': - resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} cpu: [arm] os: [android] @@ -2846,8 +2852,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-android-arm64@4.40.1': - resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} cpu: [arm64] os: [android] @@ -2856,8 +2862,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-arm64@4.40.1': - resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} cpu: [arm64] os: [darwin] @@ -2866,8 +2872,8 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.1': - resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} cpu: [x64] os: [darwin] @@ -2876,8 +2882,8 @@ packages: cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-arm64@4.40.1': - resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} cpu: [arm64] os: [freebsd] @@ -2886,8 +2892,8 @@ packages: cpu: [x64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.1': - resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} cpu: [x64] os: [freebsd] @@ -2896,8 +2902,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': - resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} cpu: [arm] os: [linux] @@ -2906,8 +2912,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.1': - resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} cpu: [arm] os: [linux] @@ -2916,8 +2922,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.1': - resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} cpu: [arm64] os: [linux] @@ -2926,8 +2932,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.1': - resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} cpu: [arm64] os: [linux] @@ -2936,8 +2942,8 @@ packages: cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': - resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} cpu: [loong64] os: [linux] @@ -2946,8 +2952,8 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': - resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} cpu: [ppc64] os: [linux] @@ -2956,13 +2962,13 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.1': - resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.1': - resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} cpu: [riscv64] os: [linux] @@ -2971,8 +2977,8 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.1': - resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} cpu: [s390x] os: [linux] @@ -2981,8 +2987,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.1': - resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} cpu: [x64] os: [linux] @@ -2991,8 +2997,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.1': - resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} cpu: [x64] os: [linux] @@ -3001,8 +3007,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.40.1': - resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} cpu: [arm64] os: [win32] @@ -3011,8 +3017,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.1': - resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} cpu: [ia32] os: [win32] @@ -3021,8 +3027,8 @@ packages: cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.1': - resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} cpu: [x64] os: [win32] @@ -8564,8 +8570,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.40.1: - resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -10658,7 +10664,7 @@ snapshots: '@babel/compat-data@7.26.8': {} - '@babel/compat-data@7.27.1': {} + '@babel/compat-data@7.27.2': {} '@babel/core@7.26.9': dependencies: @@ -10685,11 +10691,11 @@ snapshots: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) '@babel/helpers': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 '@babel/traverse': 7.27.1 '@babel/types': 7.27.1 convert-source-map: 2.0.0 @@ -10710,7 +10716,7 @@ snapshots: '@babel/generator@7.27.1': dependencies: - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 @@ -10728,9 +10734,9 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-compilation-targets@7.27.1': + '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.27.1 + '@babel/compat-data': 7.27.2 '@babel/helper-validator-option': 7.27.1 browserslist: 4.24.4 lru-cache: 5.1.1 @@ -10779,7 +10785,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.9)': dependencies: '@babel/core': 7.26.9 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -10790,7 +10796,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.0(supports-color@8.1.1) lodash.debounce: 4.0.8 @@ -10913,7 +10919,7 @@ snapshots: '@babel/helper-wrap-function@7.27.1': dependencies: - '@babel/template': 7.27.1 + '@babel/template': 7.27.2 '@babel/traverse': 7.27.1 '@babel/types': 7.27.1 transitivePeerDependencies: @@ -10926,14 +10932,14 @@ snapshots: '@babel/helpers@7.27.1': dependencies: - '@babel/template': 7.27.1 + '@babel/template': 7.27.2 '@babel/types': 7.27.1 '@babel/parser@7.26.9': dependencies: '@babel/types': 7.26.9 - '@babel/parser@7.27.1': + '@babel/parser@7.27.2': dependencies: '@babel/types': 7.27.1 @@ -11234,7 +11240,7 @@ snapshots: dependencies: '@babel/core': 7.26.9 '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.9) '@babel/traverse': 7.27.1 @@ -11246,7 +11252,7 @@ snapshots: dependencies: '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) '@babel/traverse': 7.27.1 @@ -11258,13 +11264,13 @@ snapshots: dependencies: '@babel/core': 7.26.9 '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.1 + '@babel/template': 7.27.2 '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.1 + '@babel/template': 7.27.2 '@babel/plugin-transform-destructuring@7.27.1(@babel/core@7.26.9)': dependencies: @@ -11359,7 +11365,7 @@ snapshots: '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.26.9)': dependencies: '@babel/core': 7.26.9 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/traverse': 7.27.1 transitivePeerDependencies: @@ -11368,7 +11374,7 @@ snapshots: '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/traverse': 7.27.1 transitivePeerDependencies: @@ -11524,18 +11530,20 @@ snapshots: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.27.1(@babel/core@7.26.9)': + '@babel/plugin-transform-object-rest-spread@7.27.2(@babel/core@7.26.9)': dependencies: '@babel/core': 7.26.9 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.26.9) '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.26.9) - '@babel/plugin-transform-object-rest-spread@7.27.1(@babel/core@7.27.1)': + '@babel/plugin-transform-object-rest-spread@7.27.2(@babel/core@7.27.1)': dependencies: '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.26.9)': @@ -11770,9 +11778,9 @@ snapshots: '@babel/preset-env@7.27.1(@babel/core@7.26.9)': dependencies: - '@babel/compat-data': 7.27.1 + '@babel/compat-data': 7.27.2 '@babel/core': 7.26.9 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.26.9) @@ -11814,7 +11822,7 @@ snapshots: '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.26.9) '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.26.9) '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.26.9) - '@babel/plugin-transform-object-rest-spread': 7.27.1(@babel/core@7.26.9) + '@babel/plugin-transform-object-rest-spread': 7.27.2(@babel/core@7.26.9) '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.26.9) '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.26.9) '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.26.9) @@ -11843,11 +11851,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-env@7.27.1(@babel/core@7.27.1)': + '@babel/preset-env@7.27.2(@babel/core@7.27.1)': dependencies: - '@babel/compat-data': 7.27.1 + '@babel/compat-data': 7.27.2 '@babel/core': 7.27.1 - '@babel/helper-compilation-targets': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1) @@ -11889,7 +11897,7 @@ snapshots: '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1) - '@babel/plugin-transform-object-rest-spread': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-object-rest-spread': 7.27.2(@babel/core@7.27.1) '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) @@ -11944,10 +11952,10 @@ snapshots: '@babel/parser': 7.26.9 '@babel/types': 7.26.9 - '@babel/template@7.27.1': + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@babel/traverse@7.26.9': @@ -11966,8 +11974,8 @@ snapshots: dependencies: '@babel/code-frame': 7.27.1 '@babel/generator': 7.27.1 - '@babel/parser': 7.27.1 - '@babel/template': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 '@babel/types': 7.27.1 debug: 4.4.0(supports-color@8.1.1) globals: 11.12.0 @@ -13385,13 +13393,13 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/plugin-typescript@12.1.2(rollup@4.40.1)(tslib@2.8.1)(typescript@5.7.3)': + '@rollup/plugin-typescript@12.1.2(rollup@4.40.2)(tslib@2.8.1)(typescript@5.7.3)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.1) + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) resolve: 1.22.10 typescript: 5.7.3 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 tslib: 2.8.1 '@rollup/pluginutils@3.1.0(rollup@2.79.2)': @@ -13409,129 +13417,129 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@rollup/pluginutils@5.1.4(rollup@4.40.1)': + '@rollup/pluginutils@5.1.4(rollup@4.40.2)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 '@rollup/rollup-android-arm-eabi@4.34.8': optional: true - '@rollup/rollup-android-arm-eabi@4.40.1': + '@rollup/rollup-android-arm-eabi@4.40.2': optional: true '@rollup/rollup-android-arm64@4.34.8': optional: true - '@rollup/rollup-android-arm64@4.40.1': + '@rollup/rollup-android-arm64@4.40.2': optional: true '@rollup/rollup-darwin-arm64@4.34.8': optional: true - '@rollup/rollup-darwin-arm64@4.40.1': + '@rollup/rollup-darwin-arm64@4.40.2': optional: true '@rollup/rollup-darwin-x64@4.34.8': optional: true - '@rollup/rollup-darwin-x64@4.40.1': + '@rollup/rollup-darwin-x64@4.40.2': optional: true '@rollup/rollup-freebsd-arm64@4.34.8': optional: true - '@rollup/rollup-freebsd-arm64@4.40.1': + '@rollup/rollup-freebsd-arm64@4.40.2': optional: true '@rollup/rollup-freebsd-x64@4.34.8': optional: true - '@rollup/rollup-freebsd-x64@4.40.1': + '@rollup/rollup-freebsd-x64@4.40.2': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.34.8': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': optional: true '@rollup/rollup-linux-arm-musleabihf@4.34.8': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.1': + '@rollup/rollup-linux-arm-musleabihf@4.40.2': optional: true '@rollup/rollup-linux-arm64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.1': + '@rollup/rollup-linux-arm64-gnu@4.40.2': optional: true '@rollup/rollup-linux-arm64-musl@4.34.8': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.1': + '@rollup/rollup-linux-arm64-musl@4.40.2': optional: true '@rollup/rollup-linux-loongarch64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': optional: true '@rollup/rollup-linux-riscv64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.1': + '@rollup/rollup-linux-riscv64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.1': + '@rollup/rollup-linux-riscv64-musl@4.40.2': optional: true '@rollup/rollup-linux-s390x-gnu@4.34.8': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.1': + '@rollup/rollup-linux-s390x-gnu@4.40.2': optional: true '@rollup/rollup-linux-x64-gnu@4.34.8': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.1': + '@rollup/rollup-linux-x64-gnu@4.40.2': optional: true '@rollup/rollup-linux-x64-musl@4.34.8': optional: true - '@rollup/rollup-linux-x64-musl@4.40.1': + '@rollup/rollup-linux-x64-musl@4.40.2': optional: true '@rollup/rollup-win32-arm64-msvc@4.34.8': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.1': + '@rollup/rollup-win32-arm64-msvc@4.40.2': optional: true '@rollup/rollup-win32-ia32-msvc@4.34.8': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.1': + '@rollup/rollup-win32-ia32-msvc@4.40.2': optional: true '@rollup/rollup-win32-x64-msvc@4.34.8': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.1': + '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true '@shikijs/core@2.5.0': @@ -13972,9 +13980,9 @@ snapshots: '@types/retry@0.12.0': {} - '@types/rollup-plugin-visualizer@5.0.3(rollup@4.40.1)': + '@types/rollup-plugin-visualizer@5.0.3(rollup@4.40.2)': dependencies: - rollup-plugin-visualizer: 5.14.0(rollup@4.40.1) + rollup-plugin-visualizer: 5.14.0(rollup@4.40.2) transitivePeerDependencies: - rolldown - rollup @@ -14991,7 +14999,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.9): dependencies: - '@babel/compat-data': 7.27.1 + '@babel/compat-data': 7.27.2 '@babel/core': 7.26.9 '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.9) semver: 6.3.1 @@ -15000,7 +15008,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): dependencies: - '@babel/compat-data': 7.27.1 + '@babel/compat-data': 7.27.2 '@babel/core': 7.27.1 '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) semver: 6.3.1 @@ -20272,14 +20280,14 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-visualizer@5.14.0(rollup@4.40.1): + rollup-plugin-visualizer@5.14.0(rollup@4.40.2): dependencies: open: 8.4.2 picomatch: 4.0.2 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.40.1 + rollup: 4.40.2 rollup@2.79.2: optionalDependencies: @@ -20310,30 +20318,30 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.34.8 fsevents: 2.3.3 - rollup@4.40.1: + rollup@4.40.2: dependencies: '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.1 - '@rollup/rollup-android-arm64': 4.40.1 - '@rollup/rollup-darwin-arm64': 4.40.1 - '@rollup/rollup-darwin-x64': 4.40.1 - '@rollup/rollup-freebsd-arm64': 4.40.1 - '@rollup/rollup-freebsd-x64': 4.40.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 - '@rollup/rollup-linux-arm-musleabihf': 4.40.1 - '@rollup/rollup-linux-arm64-gnu': 4.40.1 - '@rollup/rollup-linux-arm64-musl': 4.40.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-musl': 4.40.1 - '@rollup/rollup-linux-s390x-gnu': 4.40.1 - '@rollup/rollup-linux-x64-gnu': 4.40.1 - '@rollup/rollup-linux-x64-musl': 4.40.1 - '@rollup/rollup-win32-arm64-msvc': 4.40.1 - '@rollup/rollup-win32-ia32-msvc': 4.40.1 - '@rollup/rollup-win32-x64-msvc': 4.40.1 + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 fsevents: 2.3.3 roughjs@4.6.6(patch_hash=3543d47108cb41b68ec6a671c0e1f9d0cfe2ce524fea5b0992511ae84c3c6b64): @@ -21458,7 +21466,7 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.2 - unplugin-vue-components@28.4.0(@babel/parser@7.27.1)(vue@3.5.13(typescript@5.7.3)): + unplugin-vue-components@28.4.0(@babel/parser@7.27.2)(vue@3.5.13(typescript@5.7.3)): dependencies: chokidar: 3.6.0 debug: 4.4.0(supports-color@8.1.1) @@ -21470,7 +21478,7 @@ snapshots: unplugin-utils: 0.2.4 vue: 3.5.13(typescript@5.7.3) optionalDependencies: - '@babel/parser': 7.27.1 + '@babel/parser': 7.27.2 transitivePeerDependencies: - supports-color @@ -21581,7 +21589,7 @@ snapshots: dependencies: esbuild: 0.21.5 postcss: 8.5.3 - rollup: 4.40.1 + rollup: 4.40.2 optionalDependencies: '@types/node': 22.13.5 fsevents: 2.3.3 @@ -21604,7 +21612,7 @@ snapshots: dependencies: esbuild: 0.24.2 postcss: 8.5.3 - rollup: 4.40.1 + rollup: 4.40.2 optionalDependencies: '@types/node': 22.13.5 fsevents: 2.3.3 @@ -22080,7 +22088,7 @@ snapshots: dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) '@babel/core': 7.27.1 - '@babel/preset-env': 7.27.1(@babel/core@7.27.1) + '@babel/preset-env': 7.27.2(@babel/core@7.27.1) '@babel/runtime': 7.27.1 '@rollup/plugin-babel': 5.3.1(@babel/core@7.27.1)(@types/babel__core@7.20.5)(rollup@2.79.2) '@rollup/plugin-node-resolve': 15.3.1(rollup@2.79.2) From 4fd64c5bc0380eca2cd98d26563a872433dc4295 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 19:16:11 +0000 Subject: [PATCH 53/54] chore(deps): update dependency vite to v6.1.6 [security] --- pnpm-lock.yaml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8daccd890..14d4e0032 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,7 +30,7 @@ importers: version: 8.19.3(eslint@9.26.0(jiti@2.4.2)) '@cypress/code-coverage': specifier: ^3.12.49 - version: 3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0)) + version: 3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.27.2(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0)) '@eslint/js': specifier: ^9.26.0 version: 9.26.0 @@ -1401,12 +1401,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.27.1': - resolution: {integrity: sha512-TZ5USxFpLgKDpdEt8YWBR7p6g+bZo6sHaXLqP2BY/U0acaoI8FTVflcYCr/v94twM1C5IWFdZ/hscq9WjUeLXA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/preset-env@7.27.2': resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} engines: {node: '>=6.9.0'} @@ -11776,7 +11770,7 @@ snapshots: '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.27.1(@babel/core@7.26.9)': + '@babel/preset-env@7.27.2(@babel/core@7.26.9)': dependencies: '@babel/compat-data': 7.27.2 '@babel/core': 7.26.9 @@ -12539,11 +12533,11 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} - '@cypress/code-coverage@3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0))': + '@cypress/code-coverage@3.13.4(@babel/core@7.26.9)(@babel/preset-env@7.27.2(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(cypress@14.0.3)(webpack@5.95.0(esbuild@0.25.0))': dependencies: '@babel/core': 7.26.9 - '@babel/preset-env': 7.27.1(@babel/core@7.26.9) - '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0)) + '@babel/preset-env': 7.27.2(@babel/core@7.26.9) + '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.27.2(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0)) babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)) chalk: 4.1.2 cypress: 14.0.3 @@ -12579,10 +12573,10 @@ snapshots: tunnel-agent: 0.6.0 uuid: 8.3.2 - '@cypress/webpack-preprocessor@6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.27.1(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0))': + '@cypress/webpack-preprocessor@6.0.2(@babel/core@7.26.9)(@babel/preset-env@7.27.2(@babel/core@7.26.9))(babel-loader@9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)))(webpack@5.95.0(esbuild@0.25.0))': dependencies: '@babel/core': 7.26.9 - '@babel/preset-env': 7.27.1(@babel/core@7.26.9) + '@babel/preset-env': 7.27.2(@babel/core@7.26.9) babel-loader: 9.2.1(@babel/core@7.26.9)(webpack@5.95.0(esbuild@0.25.0)) bluebird: 3.7.1 debug: 4.4.0(supports-color@8.1.1) From 0d047ccbcc4aaf33f802cd1a33cb28f1c66ffdd3 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Fri, 9 May 2025 05:04:43 -0700 Subject: [PATCH 54/54] Update mermaid-tiny README.md --- packages/tiny/README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/tiny/README.md b/packages/tiny/README.md index a877a95da..707cc4307 100644 --- a/packages/tiny/README.md +++ b/packages/tiny/README.md @@ -23,14 +23,6 @@ If you need to use mermaid in your project, please install the full [`mermaid` p ## Usage via CDN -### Latest version - -```html - -``` - -### Specific version - ```html