From 03cfc4c3e1911cc8c5bd86e5a5cc23fe63de3269 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Wed, 28 Jan 2026 20:17:28 +0900 Subject: [PATCH 1/2] refactor: fix createGraphWithElements setEdge call The order of the arguments for `graph.setEdge()` in `createGraphWithElements` is incorrect. I've updated the call to instead use an object to make it a bit more clear, since the order is a bit unusual. This function isn't actually used anywhere in our code, which is why this is only a `refactor:` commit, not a `fix:` commit. But from talking to @knsv, it sounds like this is going to be used by future layout algorithms, so we should keep this file. But, this unblocks upgrading to `dagre-d3-es` `7.0.14`, which has updated types for this. --- .../mermaid/src/rendering-util/createGraph.ts | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/mermaid/src/rendering-util/createGraph.ts b/packages/mermaid/src/rendering-util/createGraph.ts index b08a3aae004..b7038dc2f7e 100644 --- a/packages/mermaid/src/rendering-util/createGraph.ts +++ b/packages/mermaid/src/rendering-util/createGraph.ts @@ -121,8 +121,22 @@ export async function createGraphWithElements( arrowTypeStart: 'none', arrowTypeEnd: 'arrow_point', }; - graph.setEdge(edgeToLabel.id, edgeToLabel.start, edgeToLabel.end, { ...edgeToLabel }); - graph.setEdge(edgeFromLabel.id, edgeFromLabel.start, edgeFromLabel.end, { ...edgeFromLabel }); + graph.setEdge( + { + v: edgeToLabel.start ?? 'undefined', + w: edgeToLabel.end, + name: edgeToLabel.id, + }, + { ...edgeToLabel } + ); + graph.setEdge( + { + v: edgeFromLabel.start, + w: edgeFromLabel.end ?? 'undefined', + name: edgeFromLabel.id, + }, + { ...edgeFromLabel } + ); data4Layout.edges.push(edgeToLabel, edgeFromLabel); const edgeIdToRemove = edge.id; data4Layout.edges = data4Layout.edges.filter((edge) => edge.id !== edgeIdToRemove); @@ -132,7 +146,14 @@ export async function createGraphWithElements( } } else { // Regular edge without label - graph.setEdge(edge.id, edge.start, edge.end, { ...edge }); + graph.setEdge( + { + v: edge.start ?? 'undefined', + w: edge.end ?? 'undefined', + name: edge.id, + }, + { ...edge } + ); const edgeExists = data4Layout.edges.some((existingEdge) => existingEdge.id === edge.id); if (!edgeExists) { data4Layout.edges.push(edge); From a411b9fb1ec6b9cd7049a154aea1cf4e26f4ba92 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Wed, 28 Jan 2026 20:20:17 +0900 Subject: [PATCH 2/2] chore(dev-deps): upgrade dagre-d3-es to v7.0.14 This release includes some basic TypeScript types, which makes our life easier! See: https://github.com/tbo47/dagre-es/releases/tag/7.0.14 --- packages/mermaid/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/mermaid/package.json b/packages/mermaid/package.json index c69305740a2..4c6fdb341a7 100644 --- a/packages/mermaid/package.json +++ b/packages/mermaid/package.json @@ -76,7 +76,7 @@ "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.13", + "dagre-d3-es": "7.0.14", "dayjs": "^1.11.19", "dompurify": "^3.3.1", "katex": "^0.16.25", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6cb8d5bfe2..80d20e64061 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -257,8 +257,8 @@ importers: specifier: ^0.12.3 version: 0.12.3 dagre-d3-es: - specifier: 7.0.13 - version: 7.0.13 + specifier: 7.0.14 + version: 7.0.14 dayjs: specifier: ^1.11.19 version: 1.11.19 @@ -5068,8 +5068,8 @@ packages: resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} - dagre-d3-es@7.0.13: - resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} @@ -16044,7 +16044,7 @@ snapshots: d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 - dagre-d3-es@7.0.13: + dagre-d3-es@7.0.14: dependencies: d3: 7.9.0 lodash-es: 4.17.21