Merge branch 'develop' into sidv/returnConfig

* develop:
  chore(deps): update dependency eslint-plugin-jsdoc to v50
  chore: add git command and set safe dir
  Version Packages
  Adding changeset
  Cleanup of test-file
  Updated cypress test for self-loops
  Fix for issues with self loops
  rebuild docs
  add another maybe-undefined operator elk
  pass linter
  fix import
  make rendering-util/types a real ts file
This commit is contained in:
Sidharth Vinod
2024-09-09 17:19:28 +05:30
12 changed files with 70 additions and 298 deletions

View File

@@ -5,6 +5,9 @@ USER 0:0
RUN corepack enable \
&& corepack enable pnpm
RUN apk add --no-cache git~=2.43.4 \
&& git config --add --system safe.directory /mermaid
ENV NODE_OPTIONS="--max_old_space_size=8192"
EXPOSE 9000 3333

View File

@@ -1052,5 +1052,28 @@ end
}
);
});
it('Should render self-loops', () => {
imgSnapshotTest(
`flowchart
A --> A
subgraph B
B1 --> B1
end
subgraph C
subgraph C1
C2 --> C2
subgraph D
D1 --> D1
end
D --> D
end
C1 --> C1
end
`,
{
flowchart: { subGraphTitleMargin: { top: 10, bottom: 5 } },
}
);
});
});
});

View File

@@ -83,7 +83,6 @@
</head>
<body>
<div class="flex">
<pre id="diagram" class="mermaid">
---
title: hello2
@@ -243,114 +242,6 @@ stateDiagram-v2
</pre>
<pre id="diagram" class="mermaid2">
---
title: hello2
config:
look: handDrawn
layout: dagre
elk:
nodePlacementStrategy: BRANDES_KOEPF
---
stateDiagram-v2
A --> A
state A {
B --> D
state B {
C
}
state D {
E
}
}
</pre
>
<pre id="diagram" class="mermaid2">
---
title: hello2
config:
look: handDrawn
layout: dagre
elk:
nodePlacementStrategy: BRANDES_KOEPF
---
flowchart
A --> A
subgraph A
B --> B
subgraph B
C
end
end
</pre
>
<pre id="diagram" class="mermaid2">
---
config:
look: handdrawn
flowchart:
htmlLabels: true
---
flowchart
A[I am a long text, where do I go??? handdrawn - true]
</pre
>
</div>
<div class="flex">
<pre id="diagram" class="mermaid2">
---
config:
flowchart:
htmlLabels: false
---
flowchart
A[I am a long text, where do I go??? classic - false]
</pre
>
<pre id="diagram" class="mermaid2">
---
config:
flowchart:
htmlLabels: true
---
flowchart
A[I am a long text, where do I go??? classic - true]
</pre
>
</div>
<pre id="diagram2" class="mermaid2">
flowchart LR
id1(Start)-->id2(Stop)
style id1 fill:#f9f,stroke:#333,stroke-width:4px
style id2 fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
</pre>
<pre id="diagram3" class="mermaid2">
flowchart LR
A:::foo & B:::bar --> C:::foobar
classDef foo stroke:#f00
classDef bar stroke:#0f0
classDef ash color:red
class C ash
style C stroke:#00f, fill:black
</pre>
<pre id="diagram4" class="mermaid2">
stateDiagram
A:::foo
B:::bar --> C:::foobar
classDef foo stroke:#f00
classDef bar stroke:#0f0
style C stroke:#00f, fill:black, color:white
</pre>
<script type="module">

View File

@@ -16,11 +16,11 @@
### config
**config**: `MermaidConfig`
**config**: [`MermaidConfig`](mermaid.MermaidConfig.md)
#### Defined in
[packages/mermaid/src/rendering-util/types.d.ts:118](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L118)
[packages/mermaid/src/rendering-util/types.ts:117](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L117)
---
@@ -30,7 +30,7 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.d.ts:117](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L117)
[packages/mermaid/src/rendering-util/types.ts:116](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L116)
---
@@ -40,4 +40,4 @@
#### Defined in
[packages/mermaid/src/rendering-util/types.d.ts:116](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.d.ts#L116)
[packages/mermaid/src/rendering-util/types.ts:115](https://github.com/mermaid-js/mermaid/blob/master/packages/mermaid/src/rendering-util/types.ts#L115)

View File

@@ -23,6 +23,7 @@ export default tseslint.config(
'**/generated/',
'**/coverage/',
'packages/mermaid/src/config.type.ts',
'packages/mermaid/src/docs/.vitepress/components.d.ts',
],
},
{

View File

@@ -96,7 +96,7 @@
"eslint-plugin-cypress": "^3.3.0",
"eslint-plugin-html": "^8.1.1",
"eslint-plugin-jest": "^28.6.0",
"eslint-plugin-jsdoc": "^48.2.9",
"eslint-plugin-jsdoc": "^50.0.0",
"eslint-plugin-json": "^4.0.0",
"eslint-plugin-lodash": "^8.0.0",
"eslint-plugin-markdown": "^5.0.0",

View File

@@ -224,7 +224,7 @@ export const render = async (
* Add edges to graph based on parsed graph definition
*/
const addEdges = async function (
dataForLayout: { edges: any; direction: string },
dataForLayout: { edges: any; direction?: string },
graph: {
id?: string;
layoutOptions?: {
@@ -749,12 +749,12 @@ export const render = async (
layoutOptions: {
'elk.hierarchyHandling': 'INCLUDE_CHILDREN',
'elk.algorithm': algorithm,
'nodePlacement.strategy': data4Layout.config.elk.nodePlacementStrategy,
'elk.layered.mergeEdges': data4Layout.config.elk.mergeEdges,
'nodePlacement.strategy': data4Layout.config.elk?.nodePlacementStrategy,
'elk.layered.mergeEdges': data4Layout.config.elk?.mergeEdges,
'elk.direction': 'DOWN',
'spacing.baseValue': 35,
'elk.layered.unnecessaryBendpoints': true,
'elk.layered.cycleBreaking.strategy': data4Layout.config.elk.cycleBreakingStrategy,
'elk.layered.cycleBreaking.strategy': data4Layout.config.elk?.cycleBreakingStrategy,
// 'spacing.nodeNode': 20,
// 'spacing.nodeNodeBetweenLayers': 25,
// 'spacing.edgeNode': 20,
@@ -837,8 +837,8 @@ export const render = async (
...node.layoutOptions,
'elk.algorithm': algorithm,
'elk.direction': dir2ElkDirection(node.dir),
'nodePlacement.strategy': data4Layout.config['elk.nodePlacement.strategy'],
'elk.layered.mergeEdges': data4Layout.config['elk.mergeEdges'],
'nodePlacement.strategy': data4Layout.config.elk?.nodePlacementStrategy,
'elk.layered.mergeEdges': data4Layout.config.elk?.mergeEdges,
'elk.hierarchyHandling': 'SEPARATE_CHILDREN',
};
}

View File

@@ -1,5 +1,11 @@
# mermaid
## 11.1.1
### Patch Changes
- [#5828](https://github.com/mermaid-js/mermaid/pull/5828) [`4c43d21`](https://github.com/mermaid-js/mermaid/commit/4c43d21196f784b6f483ae635fc462329f3d176f) Thanks [@knsv](https://github.com/knsv)! - fix: Fix for issue where self-loops in the root of diagrams break the rendering
## 11.1.0
### Minor Changes

View File

@@ -1,6 +1,6 @@
{
"name": "mermaid",
"version": "11.1.0",
"version": "11.1.1",
"description": "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",
"type": "module",
"module": "./dist/mermaid.core.mjs",

View File

@@ -349,8 +349,10 @@ export const render = async (data4Layout, svg) => {
edgeMid.arrowTypeEnd = 'none';
edgeMid.id = nodeId + '-cyclic-special-mid';
edge2.label = '';
if (node.isGroup) {
edge1.fromCluster = nodeId;
edge2.toCluster = nodeId;
}
edge2.id = nodeId + '-cyclic-special-2';
graph.setEdge(nodeId, specialId1, edge1, nodeId + '-cyclic-special-0');
graph.setEdge(specialId1, specialId2, edgeMid, nodeId + '-cyclic-special-1');

View File

@@ -1,5 +1,5 @@
export type MarkdownWordType = 'normal' | 'strong' | 'em';
import type { MermaidConfig } from '../../dist/config.type';
import type { MermaidConfig } from '../config.type.js';
export interface MarkdownWord {
content: string;
type: MarkdownWordType;
@@ -9,7 +9,7 @@ export type MarkdownLine = MarkdownWord[];
export type CheckFitFunction = (text: MarkdownLine) => boolean;
// Common properties for any node in the system
interface Node {
export interface Node {
id: string;
label?: string;
description?: string[];
@@ -38,7 +38,6 @@ interface Node {
tooltip?: string;
padding?: number; //REMOVE?, use from LayoutData.config - Keep, this could be shape specific
shape?: string;
tooltip?: string;
isGroup: boolean;
width?: number;
height?: number;
@@ -68,7 +67,7 @@ interface Node {
}
// Common properties for any edge in the system
interface Edge {
export interface Edge {
id: string;
label?: string;
classes?: string;
@@ -98,7 +97,7 @@ interface Edge {
look?: string;
}
interface RectOptions {
export interface RectOptions {
rx: number;
ry: number;
labelPaddingX: number;
@@ -107,7 +106,7 @@ interface RectOptions {
}
// Extending the Node interface for specific types if needed
interface ClassDiagramNode extends Node {
export interface ClassDiagramNode extends Node {
memberData: any; // Specific property for class diagram nodes
}

179
pnpm-lock.yaml generated
View File

@@ -111,8 +111,8 @@ importers:
specifier: ^28.6.0
version: 28.7.0(@typescript-eslint/eslint-plugin@8.0.1(@typescript-eslint/parser@8.0.1(eslint@9.8.0)(typescript@5.4.5))(eslint@9.8.0)(typescript@5.4.5))(eslint@9.8.0)(jest@29.7.0(@types/node@20.16.2))(typescript@5.4.5)
eslint-plugin-jsdoc:
specifier: ^48.2.9
version: 48.11.0(eslint@9.8.0)
specifier: ^50.0.0
version: 50.2.2(eslint@9.8.0)
eslint-plugin-json:
specifier: ^4.0.0
version: 4.0.1
@@ -503,67 +503,6 @@ importers:
specifier: ^7.0.0
version: 7.1.0
packages/mermaid/src/vitepress:
dependencies:
'@mdi/font':
specifier: ^7.0.0
version: 7.4.47
'@vueuse/core':
specifier: ^10.9.0
version: 10.11.1(vue@3.4.38(typescript@5.4.5))
font-awesome:
specifier: ^4.7.0
version: 4.7.0
jiti:
specifier: ^1.21.0
version: 1.21.6
mermaid:
specifier: workspace:^
version: link:../..
vue:
specifier: ^3.4.21
version: 3.4.38(typescript@5.4.5)
devDependencies:
'@iconify-json/carbon':
specifier: ^1.1.31
version: 1.1.37
'@unocss/reset':
specifier: ^0.59.0
version: 0.59.4
'@vite-pwa/vitepress':
specifier: ^0.4.0
version: 0.4.0(vite-plugin-pwa@0.19.8(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0))
'@vitejs/plugin-vue':
specifier: ^5.0.0
version: 5.1.2(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(vue@3.4.38(typescript@5.4.5))
fast-glob:
specifier: ^3.3.2
version: 3.3.2
https-localhost:
specifier: ^4.7.1
version: 4.7.1
pathe:
specifier: ^1.1.2
version: 1.1.2
unocss:
specifier: ^0.59.0
version: 0.59.4(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))
unplugin-vue-components:
specifier: ^0.26.0
version: 0.26.0(@babel/parser@7.25.4)(rollup@4.21.1)(vue@3.4.38(typescript@5.4.5))
vite:
specifier: ^5.0.0
version: 5.4.2(@types/node@22.5.1)(terser@5.31.6)
vite-plugin-pwa:
specifier: ^0.19.7
version: 0.19.8(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0)
vitepress:
specifier: 1.1.4
version: 1.1.4(@algolia/client-search@4.24.0)(@types/node@22.5.1)(axios@1.7.5)(postcss@8.4.41)(search-insights@2.15.0)(terser@5.31.6)(typescript@5.4.5)
workbox-window:
specifier: ^7.0.0
version: 7.1.0
packages/parser:
dependencies:
langium:
@@ -1871,8 +1810,8 @@ packages:
'@emnapi/runtime@1.2.0':
resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==}
'@es-joy/jsdoccomment@0.46.0':
resolution: {integrity: sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==}
'@es-joy/jsdoccomment@0.48.0':
resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==}
engines: {node: '>=16'}
'@esbuild/aix-ppc64@0.21.5':
@@ -5013,8 +4952,8 @@ packages:
jest:
optional: true
eslint-plugin-jsdoc@48.11.0:
resolution: {integrity: sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==}
eslint-plugin-jsdoc@50.2.2:
resolution: {integrity: sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==}
engines: {node: '>=18'}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -6329,8 +6268,8 @@ packages:
jsbn@0.1.1:
resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
jsdoc-type-pratt-parser@4.0.0:
resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==}
jsdoc-type-pratt-parser@4.1.0:
resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==}
engines: {node: '>=12.0.0'}
jsdom@24.1.3:
@@ -11072,11 +11011,11 @@ snapshots:
tslib: 2.7.0
optional: true
'@es-joy/jsdoccomment@0.46.0':
'@es-joy/jsdoccomment@0.48.0':
dependencies:
comment-parser: 1.4.1
esquery: 1.6.0
jsdoc-type-pratt-parser: 4.0.0
jsdoc-type-pratt-parser: 4.1.0
'@esbuild/aix-ppc64@0.21.5':
optional: true
@@ -12389,16 +12328,6 @@ snapshots:
transitivePeerDependencies:
- rollup
'@unocss/astro@0.59.4(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))':
dependencies:
'@unocss/core': 0.59.4
'@unocss/reset': 0.59.4
'@unocss/vite': 0.59.4(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))
optionalDependencies:
vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6)
transitivePeerDependencies:
- rollup
'@unocss/cli@0.59.4(rollup@2.79.1)':
dependencies:
'@ampproject/remapping': 2.3.0
@@ -12417,24 +12346,6 @@ snapshots:
transitivePeerDependencies:
- rollup
'@unocss/cli@0.59.4(rollup@4.21.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0(rollup@4.21.1)
'@unocss/config': 0.59.4
'@unocss/core': 0.59.4
'@unocss/preset-uno': 0.59.4
cac: 6.7.14
chokidar: 3.6.0
colorette: 2.0.20
consola: 3.2.3
fast-glob: 3.3.2
magic-string: 0.30.11
pathe: 1.1.2
perfect-debounce: 1.0.0
transitivePeerDependencies:
- rollup
'@unocss/config@0.59.4':
dependencies:
'@unocss/core': 0.59.4
@@ -12560,22 +12471,6 @@ snapshots:
transitivePeerDependencies:
- rollup
'@unocss/vite@0.59.4(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))':
dependencies:
'@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0(rollup@4.21.1)
'@unocss/config': 0.59.4
'@unocss/core': 0.59.4
'@unocss/inspector': 0.59.4
'@unocss/scope': 0.59.4
'@unocss/transformer-directives': 0.59.4
chokidar: 3.6.0
fast-glob: 3.3.2
magic-string: 0.30.11
vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6)
transitivePeerDependencies:
- rollup
'@vite-pwa/vitepress@0.4.0(vite-plugin-pwa@0.19.8(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0))':
dependencies:
vite-plugin-pwa: 0.19.8(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))(workbox-build@7.1.1(@types/babel__core@7.20.5))(workbox-window@7.1.0)
@@ -14694,9 +14589,9 @@ snapshots:
- supports-color
- typescript
eslint-plugin-jsdoc@48.11.0(eslint@9.8.0):
eslint-plugin-jsdoc@50.2.2(eslint@9.8.0):
dependencies:
'@es-joy/jsdoccomment': 0.46.0
'@es-joy/jsdoccomment': 0.48.0
are-docs-informative: 0.0.2
comment-parser: 1.4.1
debug: 4.3.6(supports-color@8.1.1)
@@ -16347,7 +16242,7 @@ snapshots:
jsbn@0.1.1: {}
jsdoc-type-pratt-parser@4.0.0: {}
jsdoc-type-pratt-parser@4.1.0: {}
jsdom@24.1.3:
dependencies:
@@ -18977,35 +18872,6 @@ snapshots:
- rollup
- supports-color
unocss@0.59.4(postcss@8.4.41)(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6)):
dependencies:
'@unocss/astro': 0.59.4(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))
'@unocss/cli': 0.59.4(rollup@4.21.1)
'@unocss/core': 0.59.4
'@unocss/extractor-arbitrary-variants': 0.59.4
'@unocss/postcss': 0.59.4(postcss@8.4.41)
'@unocss/preset-attributify': 0.59.4
'@unocss/preset-icons': 0.59.4
'@unocss/preset-mini': 0.59.4
'@unocss/preset-tagify': 0.59.4
'@unocss/preset-typography': 0.59.4
'@unocss/preset-uno': 0.59.4
'@unocss/preset-web-fonts': 0.59.4
'@unocss/preset-wind': 0.59.4
'@unocss/reset': 0.59.4
'@unocss/transformer-attributify-jsx': 0.59.4
'@unocss/transformer-attributify-jsx-babel': 0.59.4
'@unocss/transformer-compile-class': 0.59.4
'@unocss/transformer-directives': 0.59.4
'@unocss/transformer-variant-group': 0.59.4
'@unocss/vite': 0.59.4(rollup@4.21.1)(vite@5.4.2(@types/node@22.5.1)(terser@5.31.6))
optionalDependencies:
vite: 5.4.2(@types/node@22.5.1)(terser@5.31.6)
transitivePeerDependencies:
- postcss
- rollup
- supports-color
unpipe@1.0.0: {}
unplugin-vue-components@0.26.0(@babel/parser@7.25.4)(rollup@2.79.1)(vue@3.4.38(typescript@5.4.5)):
@@ -19027,25 +18893,6 @@ snapshots:
- rollup
- supports-color
unplugin-vue-components@0.26.0(@babel/parser@7.25.4)(rollup@4.21.1)(vue@3.4.38(typescript@5.4.5)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.0(rollup@4.21.1)
chokidar: 3.6.0
debug: 4.3.6(supports-color@8.1.1)
fast-glob: 3.3.2
local-pkg: 0.4.3
magic-string: 0.30.11
minimatch: 9.0.5
resolve: 1.22.8
unplugin: 1.12.0
vue: 3.4.38(typescript@5.4.5)
optionalDependencies:
'@babel/parser': 7.25.4
transitivePeerDependencies:
- rollup
- supports-color
unplugin@1.12.0:
dependencies:
acorn: 8.12.1