Merge from upstream mermaid to sync 11.4.1

This commit is contained in:
Ashish Jain
2024-11-27 12:25:04 +01:00
18 changed files with 242 additions and 126 deletions

View File

@@ -1,5 +0,0 @@
---
'mermaid': patch
---
fix: Intersection calculations for tilted cylinder/DAS when using handdrawn look. Some random seeds could cause the calculations to break.

View File

@@ -1,6 +1,6 @@
import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts'; import { imgSnapshotTest, renderGraph } from '../../helpers/util.ts';
describe.skip('Flowchart ELK', () => { describe('Flowchart ELK', () => {
it('1-elk: should render a simple flowchart', () => { it('1-elk: should render a simple flowchart', () => {
imgSnapshotTest( imgSnapshotTest(
`flowchart-elk TD `flowchart-elk TD
@@ -857,6 +857,49 @@ flowchart LR
D --> E D --> E
A["A"] A["A"]
`,
{ flowchart: { titleTopMargin: 0 } }
);
});
it('6080: should handle diamond shape intersections', () => {
imgSnapshotTest(
`---
config:
layout: elk
---
flowchart LR
subgraph s1["Untitled subgraph"]
n1["Evaluate"]
n2["Option 1"]
n3["Option 2"]
n4["fa:fa-car Option 3"]
end
subgraph s2["Untitled subgraph"]
n5["Evaluate"]
n6["Option 1"]
n7["Option 2"]
n8["fa:fa-car Option 3"]
end
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
n1 -- One --> n2
n1 -- Two --> n3
n1 -- Three --> n4
n5 -- One --> n6
n5 -- Two --> n7
n5 -- Three --> n8
n1@{ shape: diam}
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
n5@{ shape: diam}
n6@{ shape: rect}
n7@{ shape: rect}
n8@{ shape: rect}
`, `,
{ flowchart: { titleTopMargin: 0 } } { flowchart: { titleTopMargin: 0 } }
); );

View File

@@ -90,40 +90,134 @@
</head> </head>
<body> <body>
<pre id="diagram4" class="mermaid"> <pre id="diagram4" class="mermaid2">
--- ---
config: config:
look: handDrawn layout: elk
theme: default
--- ---
flowchart LR flowchart LR
n00@{ shape: triangle, label: 'This is a label for triangle shape' } subgraph s1["Untitled subgraph"]
n11@{ shape: sloped-rectangle, label: 'This is a label for sloped-rectangle shape' } n1["Evaluate"]
n22@{ shape: horizontal-cylinder, label: 'This is a label for horizontal-cylinder shape' } n2["Option 1"]
n33@{ shape: flipped-triangle, label: 'This is a label for flipped-triangle shape' } n3["Option 2"]
n44@{ shape: hourglass, label: 'This is a label for hourglass shape' } n4["fa:fa-car Option 3"]
n00 --> n11 end
n00 --> n22 n1 -- One --> n2
n00 --> n33 n1 -- Two --> n3
n00 --> n44 n1 -- Three --> n4
n11 --> n22 n5
n11 --> n33 n1@{ shape: diam}
n11 --> n44 n2@{ shape: rect}
n22 --> n33 n3@{ shape: rect}
n22 --> n44 n4@{ shape: rect}
n33 --> n44 A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
</pre> </pre>
<pre id="diagram4" class="mermaid"> <pre id="diagram4" class="mermaid">
--- ---
config: config:
look: handDrawn layout: elk
theme: default
--- ---
flowchart LR flowchart LR
n22@{ shape: h-cyl } subgraph s1["Untitled subgraph"]
n00 --> n11 n1["Evaluate"]
n00 --> n22 n2["Option 1"]
n11 --> n22 n3["Option 2"]
n4["fa:fa-car Option 3"]
end
subgraph s2["Untitled subgraph"]
n5["Evaluate"]
n6["Option 1"]
n7["Option 2"]
n8["fa:fa-car Option 3"]
end
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
n1 -- One --> n2
n1 -- Two --> n3
n1 -- Three --> n4
n5 -- One --> n6
n5 -- Two --> n7
n5 -- Three --> n8
n1@{ shape: diam}
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
n5@{ shape: diam}
n6@{ shape: rect}
n7@{ shape: rect}
n8@{ shape: rect}
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
---
flowchart LR
subgraph s1["Untitled subgraph"]
n1["Evaluate"]
n2["Option 1"]
end
n1 -- One --> n2
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
---
flowchart LR
A{A} --> B & C
</pre
>
<pre id="diagram4" class="mermaid2">
---
config:
layout: elk
---
flowchart LR
n2@{ shape: rect}
n3@{ shape: rect}
n4@{ shape: rect}
A["Start"] -- Some text --> B("Continue")
B --> C{"Evaluate"}
C -- One --> D["Option 1"]
C -- Two --> E["Option 2"]
C -- Three --> F["fa:fa-car Option 3"]
%% C@{ shape: hexagon}
</pre>
<pre id="diagram4" class="mermaid2">
---
config:
kanban:
ticketBaseUrl: 'https://github.com/your-repo/issues/#TICKET#'
---
kanban
Backlog
task1[📝 Define project requirements]@{ ticket: a101 }
To Do
task2[🔍 Research technologies]@{ ticket: a102 }
Review
task4[🔍 Code review for login feature]@{ ticket: a104 }
Done
task5[✅ Deploy initial version]@{ ticket: a105 }
In Progress
task3[💻 Develop login feature]@{ ticket: 103 }
</pre> </pre>
<pre id="diagram4" class="mermaid2"> <pre id="diagram4" class="mermaid2">
flowchart LR flowchart LR

View File

@@ -39,8 +39,8 @@ graph TB
<script type="module"> <script type="module">
import mermaid from '/mermaid.esm.mjs'; import mermaid from '/mermaid.esm.mjs';
import flowchartELK from '/mermaid-flowchart-elk.esm.mjs'; import layouts from '/mermaid-layout-elk.esm.mjs';
await mermaid.registerExternalDiagrams([flowchartELK]); mermaid.registerLayoutLoaders(layouts);
async function render(str) { async function render(str) {
const { svg } = await mermaid.render('dynamic', str); const { svg } = await mermaid.render('dynamic', str);
document.getElementById('dynamicDiagram').innerHTML = svg; document.getElementById('dynamicDiagram').innerHTML = svg;

View File

@@ -185,8 +185,6 @@ Communication tools and platforms
- [=Diagram block](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams) - [=Diagram block](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams)
- [Standard Notes](https://standardnotes.com/) - [Standard Notes](https://standardnotes.com/)
- [Mermaid Extension](https://github.com/nienow/sn-mermaid) - [Mermaid Extension](https://github.com/nienow/sn-mermaid)
- [Sublime Text 3](https://sublimetext.com)
- [Mermaid Package](https://packagecontrol.io/packages/Mermaid)
- [VS Code](https://code.visualstudio.com/) - [VS Code](https://code.visualstudio.com/)
- [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor) - [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor)
- [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export) - [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export)

View File

@@ -86,7 +86,7 @@ todo[Todo]
## Configuration Options ## Configuration Options
You can customize the Kanban diagram using a configuration block at the beginning of your markdown file. This is useful for setting global settings like a base URL for tickets. Currently there is one configuration option for kanban diagrams tacketBaseUrl. This can be set as in the the following example: You can customize the Kanban diagram using a configuration block at the beginning of your markdown file. This is useful for setting global settings like a base URL for tickets. Currently there is one configuration option for kanban diagrams `ticketBaseUrl`. This can be set as in the the following example:
```yaml ```yaml
--- ---

View File

@@ -1,5 +1,14 @@
# @mermaid-js/layout-elk # @mermaid-js/layout-elk
## 0.1.6
### Patch Changes
- [#6081](https://github.com/mermaid-js/mermaid/pull/6081) [`68f41f6`](https://github.com/mermaid-js/mermaid/commit/68f41f685d2afe7d12f63aabf3de0c3461898471) Thanks [@knsv](https://github.com/knsv)! - fix: Elk rendering of Diamond shape intersections
- Updated dependencies [[`01b5079`](https://github.com/mermaid-js/mermaid/commit/01b5079562ec8d34ce9964910f168873843c68f8), [`1388662`](https://github.com/mermaid-js/mermaid/commit/1388662132cc829f9820c2e9970ae04e2dd90588), [`fe3cffb`](https://github.com/mermaid-js/mermaid/commit/fe3cffbb673a25b81989aacb06e5d0eda35326db)]:
- mermaid@11.4.1
## 0.1.5 ## 0.1.5
### Patch Changes ### Patch Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@mermaid-chart/layout-elk", "name": "@mermaid-chart/layout-elk",
"version": "0.1.5-b.1", "version": "0.1.6-b.1",
"description": "ELK layout engine for mermaid", "description": "ELK layout engine for mermaid",
"module": "dist/mermaid-layout-elk.core.mjs", "module": "dist/mermaid-layout-elk.core.mjs",
"types": "dist/layouts.d.ts", "types": "dist/layouts.d.ts",

View File

@@ -491,6 +491,8 @@ export const render = async (
const r3 = a1 * q1.x + b1 * q1.y + c1; const r3 = a1 * q1.x + b1 * q1.y + c1;
const r4 = a1 * q2.x + b1 * q2.y + c1; const r4 = a1 * q2.x + b1 * q2.y + c1;
const epsilon = 1e-6;
// Check signs of r3 and r4. If both point 3 and point 4 lie on // Check signs of r3 and r4. If both point 3 and point 4 lie on
// same side of line 1, the line segments do not intersect. // same side of line 1, the line segments do not intersect.
if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) { if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {
@@ -509,7 +511,7 @@ export const render = async (
// Check signs of r1 and r2. If both point 1 and point 2 lie // Check signs of r1 and r2. If both point 1 and point 2 lie
// on same side of second line segment, the line segments do // on same side of second line segment, the line segments do
// not intersect. // not intersect.
if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) { if (Math.abs(r1) < epsilon && Math.abs(r2) < epsilon && sameSign(r1, r2)) {
return /*DON'T_INTERSECT*/; return /*DON'T_INTERSECT*/;
} }
@@ -554,11 +556,11 @@ export const render = async (
{ x: x1 - w / 2, y: y1 }, { x: x1 - w / 2, y: y1 },
]; ];
log.debug( log.debug(
`UIO diamondIntersection calc abc89: `APA16 diamondIntersection calc abc89:
outsidePoint: ${JSON.stringify(outsidePoint)} outsidePoint: ${JSON.stringify(outsidePoint)}
insidePoint : ${JSON.stringify(insidePoint)} insidePoint : ${JSON.stringify(insidePoint)}
node : x:${bounds.x} y:${bounds.y} w:${bounds.width} h:${bounds.height}`, node-bounds : x:${bounds.x} y:${bounds.y} w:${bounds.width} h:${bounds.height}`,
polyPoints JSON.stringify(polyPoints)
); );
const intersections = []; const intersections = [];
@@ -571,8 +573,8 @@ export const render = async (
minY = Math.min(minY, entry.y); minY = Math.min(minY, entry.y);
}); });
// const left = x1 - w / 2; const left = x1 - w / 2 - minX;
// const top = y1 + h / 2; const top = y1 - h / 2 - minY;
for (let i = 0; i < polyPoints.length; i++) { for (let i = 0; i < polyPoints.length; i++) {
const p1 = polyPoints[i]; const p1 = polyPoints[i];
@@ -580,8 +582,8 @@ export const render = async (
const intersect = intersectLine( const intersect = intersectLine(
bounds, bounds,
outsidePoint, outsidePoint,
{ x: p1.x, y: p1.y }, { x: left + p1.x, y: top + p1.y },
{ x: p2.x, y: p2.y } { x: left + p2.x, y: top + p2.y }
); );
if (intersect) { if (intersect) {
@@ -775,7 +777,6 @@ export const render = async (
} }
} }
}); });
log.debug('returning points', points);
return points; return points;
}; };
@@ -990,17 +991,17 @@ export const render = async (
startNode.innerHTML startNode.innerHTML
); );
} }
if (startNode.shape === 'diamond') { if (startNode.shape === 'diamond' || startNode.shape === 'diam') {
edge.points.unshift({ edge.points.unshift({
x: startNode.x + startNode.width / 2 + offset.x, x: startNode.x + startNode.width / 2 + offset.x,
y: startNode.y + startNode.height / 2 + offset.y, y: startNode.y + startNode.height / 2 + offset.y,
}); });
} }
if (endNode.shape === 'diamond') { if (endNode.shape === 'diamond' || endNode.shape === 'diam') {
const x = endNode.x + endNode.width / 2 + offset.x; const x = endNode.x + endNode.width / 2 + offset.x;
// Add a point at the center of the diamond // Add a point at the center of the diamond
if ( if (
Math.abs(edge.points[edge.points.length - 1].y - endNode.y - offset.y) > 0.001 || Math.abs(edge.points[edge.points.length - 1].y - endNode.y - offset.y) > 0.01 ||
Math.abs(edge.points[edge.points.length - 1].x - x) > 0.001 Math.abs(edge.points[edge.points.length - 1].x - x) > 0.001
) { ) {
edge.points.push({ edge.points.push({
@@ -1035,7 +1036,7 @@ export const render = async (
height: startNode.height, height: startNode.height,
padding: startNode.padding, padding: startNode.padding,
}, },
startNode.shape === 'diamond' startNode.shape === 'diamond' || startNode.shape === 'diam'
).reverse(); ).reverse();
edge.points = cutPathAtIntersect( edge.points = cutPathAtIntersect(
@@ -1047,7 +1048,7 @@ export const render = async (
height: endNode.height, height: endNode.height,
padding: endNode.padding, padding: endNode.padding,
}, },
endNode.shape === 'diamond' endNode.shape === 'diamond' || endNode.shape === 'diam'
); );
const paths = insertEdge( const paths = insertEdge(

View File

@@ -1,5 +1,15 @@
# mermaid # mermaid
## 11.4.1
### Patch Changes
- [#6059](https://github.com/mermaid-js/mermaid/pull/6059) [`01b5079`](https://github.com/mermaid-js/mermaid/commit/01b5079562ec8d34ce9964910f168873843c68f8) Thanks [@knsv](https://github.com/knsv)! - fix: Kanban diagrams will not render when adding a number as ticket id or assigned for a task
- [#6038](https://github.com/mermaid-js/mermaid/pull/6038) [`1388662`](https://github.com/mermaid-js/mermaid/commit/1388662132cc829f9820c2e9970ae04e2dd90588) Thanks [@knsv](https://github.com/knsv)! - fix: Intersection calculations for tilted cylinder/DAS when using handdrawn look. Some random seeds could cause the calculations to break.
- [#6079](https://github.com/mermaid-js/mermaid/pull/6079) [`fe3cffb`](https://github.com/mermaid-js/mermaid/commit/fe3cffbb673a25b81989aacb06e5d0eda35326db) Thanks [@aloisklink](https://github.com/aloisklink)! - Bump dompurify to `^3.2.1`. This removes the need for `@types/dompurify`.
## 11.4.0 ## 11.4.0
### Minor Changes ### Minor Changes

View File

@@ -1,6 +1,6 @@
{ {
"name": "@mermaid-chart/mermaid", "name": "@mermaid-chart/mermaid",
"version": "11.4.0-b.3", "version": "11.4.1-b.1",
"description": "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.", "description": "Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",
"type": "module", "type": "module",
"module": "./dist/mermaid.core.mjs", "module": "./dist/mermaid.core.mjs",
@@ -71,7 +71,6 @@
"@iconify/utils": "^2.1.32", "@iconify/utils": "^2.1.32",
"@mermaid-js/parser": "^0.3.1-rc.1", "@mermaid-js/parser": "^0.3.1-rc.1",
"@types/d3": "^7.4.3", "@types/d3": "^7.4.3",
"@types/dompurify": "^3.0.5",
"cytoscape": "^3.29.2", "cytoscape": "^3.29.2",
"cytoscape-cose-bilkent": "^4.1.0", "cytoscape-cose-bilkent": "^4.1.0",
"cytoscape-fcose": "^2.2.0", "cytoscape-fcose": "^2.2.0",
@@ -79,7 +78,7 @@
"d3-sankey": "^0.12.3", "d3-sankey": "^0.12.3",
"dagre-d3-es": "7.0.11", "dagre-d3-es": "7.0.11",
"dayjs": "^1.11.10", "dayjs": "^1.11.10",
"dompurify": "^3.0.11 <3.1.7", "dompurify": "^3.2.1",
"katex": "^0.16.9", "katex": "^0.16.9",
"khroma": "^2.1.0", "khroma": "^2.1.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",

View File

@@ -32,14 +32,14 @@ const setupDompurifyHooksIfNotSetup = (() => {
function setupDompurifyHooks() { function setupDompurifyHooks() {
const TEMPORARY_ATTRIBUTE = 'data-temp-href-target'; const TEMPORARY_ATTRIBUTE = 'data-temp-href-target';
DOMPurify.addHook('beforeSanitizeAttributes', (node: Element) => { DOMPurify.addHook('beforeSanitizeAttributes', (node) => {
if (node.tagName === 'A' && node.hasAttribute('target')) { if (node instanceof Element && node.tagName === 'A' && node.hasAttribute('target')) {
node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute('target') ?? ''); node.setAttribute(TEMPORARY_ATTRIBUTE, node.getAttribute('target') ?? '');
} }
}); });
DOMPurify.addHook('afterSanitizeAttributes', (node: Element) => { DOMPurify.addHook('afterSanitizeAttributes', (node) => {
if (node.tagName === 'A' && node.hasAttribute(TEMPORARY_ATTRIBUTE)) { if (node instanceof Element && node.tagName === 'A' && node.hasAttribute(TEMPORARY_ATTRIBUTE)) {
node.setAttribute('target', node.getAttribute(TEMPORARY_ATTRIBUTE) ?? ''); node.setAttribute('target', node.getAttribute(TEMPORARY_ATTRIBUTE) ?? '');
node.removeAttribute(TEMPORARY_ATTRIBUTE); node.removeAttribute(TEMPORARY_ATTRIBUTE);
if (node.getAttribute('target') === '_blank') { if (node.getAttribute('target') === '_blank') {
@@ -83,7 +83,6 @@ export const sanitizeText = (text: string, config: MermaidConfig): string => {
return text; return text;
} }
if (config.dompurifyConfig) { if (config.dompurifyConfig) {
// eslint-disable-next-line @typescript-eslint/no-base-to-string
text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString(); text = DOMPurify.sanitize(sanitizeMore(text, config), config.dompurifyConfig).toString();
} else { } else {
text = DOMPurify.sanitize(sanitizeMore(text, config), { text = DOMPurify.sanitize(sanitizeMore(text, config), {

View File

@@ -138,13 +138,13 @@ const addNode = (level: number, id: string, descr: string, type: number, shapeDa
node.label = doc?.label; node.label = doc?.label;
} }
if (doc?.icon) { if (doc?.icon) {
node.icon = doc?.icon; node.icon = doc?.icon.toString();
} }
if (doc?.assigned) { if (doc?.assigned) {
node.assigned = doc?.assigned; node.assigned = doc?.assigned.toString();
} }
if (doc?.ticket) { if (doc?.ticket) {
node.ticket = doc?.ticket; node.ticket = doc?.ticket.toString();
} }
if (doc?.priority) { if (doc?.priority) {

View File

@@ -180,8 +180,6 @@ Communication tools and platforms
- [=Diagram block](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams) - [=Diagram block](https://github.com/zag/podlite/tree/main/packages/podlite-diagrams)
- [Standard Notes](https://standardnotes.com/) - [Standard Notes](https://standardnotes.com/)
- [Mermaid Extension](https://github.com/nienow/sn-mermaid) - [Mermaid Extension](https://github.com/nienow/sn-mermaid)
- [Sublime Text 3](https://sublimetext.com)
- [Mermaid Package](https://packagecontrol.io/packages/Mermaid)
- [VS Code](https://code.visualstudio.com/) - [VS Code](https://code.visualstudio.com/)
- [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor) - [Mermaid Editor](https://marketplace.visualstudio.com/items?itemName=tomoyukim.vscode-mermaid-editor)
- [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export) - [Mermaid Export](https://marketplace.visualstudio.com/items?itemName=Gruntfuggly.mermaid-export)

View File

@@ -64,7 +64,7 @@ todo[Todo]
## Configuration Options ## Configuration Options
You can customize the Kanban diagram using a configuration block at the beginning of your markdown file. This is useful for setting global settings like a base URL for tickets. Currently there is one configuration option for kanban diagrams tacketBaseUrl. This can be set as in the the following example: You can customize the Kanban diagram using a configuration block at the beginning of your markdown file. This is useful for setting global settings like a base URL for tickets. Currently there is one configuration option for kanban diagrams `ticketBaseUrl`. This can be set as in the the following example:
```yaml ```yaml
--- ---

View File

@@ -462,6 +462,7 @@ const render = async function (
svgCode = DOMPurify.sanitize(svgCode, { svgCode = DOMPurify.sanitize(svgCode, {
ADD_TAGS: DOMPURIFY_TAGS, ADD_TAGS: DOMPURIFY_TAGS,
ADD_ATTR: DOMPURIFY_ATTR, ADD_ATTR: DOMPURIFY_ATTR,
HTML_INTEGRATION_POINTS: { foreignobject: true },
}); });
} }

92
pnpm-lock.yaml generated
View File

@@ -226,9 +226,6 @@ importers:
'@types/d3': '@types/d3':
specifier: ^7.4.3 specifier: ^7.4.3
version: 7.4.3 version: 7.4.3
'@types/dompurify':
specifier: ^3.0.5
version: 3.0.5
cytoscape: cytoscape:
specifier: ^3.29.2 specifier: ^3.29.2
version: 3.30.2 version: 3.30.2
@@ -251,8 +248,8 @@ importers:
specifier: ^1.11.10 specifier: ^1.11.10
version: 1.11.10 version: 1.11.10
dompurify: dompurify:
specifier: ^3.0.11 <3.1.7 specifier: ^3.2.1
version: 3.1.6 version: 3.2.1
katex: katex:
specifier: ^0.16.9 specifier: ^0.16.9
version: 0.16.9 version: 0.16.9
@@ -3004,9 +3001,6 @@ packages:
'@types/debug@4.1.8': '@types/debug@4.1.8':
resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
'@types/dompurify@3.0.5':
resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==}
'@types/estree@0.0.39': '@types/estree@0.0.39':
resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
@@ -3197,6 +3191,9 @@ packages:
'@types/trusted-types@2.0.3': '@types/trusted-types@2.0.3':
resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==}
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
'@types/unist@2.0.7': '@types/unist@2.0.7':
resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==} resolution: {integrity: sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==}
@@ -4027,10 +4024,6 @@ packages:
resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
engines: {node: '>=8.0.0'} engines: {node: '>=8.0.0'}
available-typed-arrays@1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
engines: {node: '>= 0.4'}
available-typed-arrays@1.0.7: available-typed-arrays@1.0.7:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -5201,8 +5194,8 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'} engines: {node: '>= 4'}
dompurify@3.1.6: dompurify@3.2.1:
resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==} resolution: {integrity: sha512-NBHEsc0/kzRYQd+AY6HR6B/IgsqzBABrqJbpCDQII/OK6h7B7LXzweZTDsqSW2LkTRpoxf18YUP+YjGySk6B3w==}
domutils@3.1.0: domutils@3.1.0:
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
@@ -8299,10 +8292,6 @@ packages:
resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
hasBin: true hasBin: true
regexp.prototype.flags@1.5.0:
resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
engines: {node: '>= 0.4'}
regexp.prototype.flags@1.5.3: regexp.prototype.flags@1.5.3:
resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -9872,10 +9861,6 @@ packages:
which-module@2.0.1: which-module@2.0.1:
resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
which-typed-array@1.1.11:
resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
engines: {node: '>= 0.4'}
which-typed-array@1.1.15: which-typed-array@1.1.15:
resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -10714,7 +10699,7 @@ snapshots:
'@babel/helper-plugin-utils': 7.24.8 '@babel/helper-plugin-utils': 7.24.8
debug: 4.3.7 debug: 4.3.7
lodash.debounce: 4.0.8 lodash.debounce: 4.0.8
resolve: 1.22.4 resolve: 1.22.8
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -10725,7 +10710,7 @@ snapshots:
'@babel/helper-plugin-utils': 7.24.8 '@babel/helper-plugin-utils': 7.24.8
debug: 4.3.7 debug: 4.3.7
lodash.debounce: 4.0.8 lodash.debounce: 4.0.8
resolve: 1.22.4 resolve: 1.22.8
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -13414,7 +13399,7 @@ snapshots:
builtin-modules: 3.3.0 builtin-modules: 3.3.0
deepmerge: 4.3.1 deepmerge: 4.3.1
is-module: 1.0.0 is-module: 1.0.0
resolve: 1.22.4 resolve: 1.22.8
rollup: 2.79.2 rollup: 2.79.2
'@rollup/plugin-replace@2.4.2(rollup@2.79.2)': '@rollup/plugin-replace@2.4.2(rollup@2.79.2)':
@@ -13779,10 +13764,6 @@ snapshots:
dependencies: dependencies:
'@types/ms': 0.7.31 '@types/ms': 0.7.31
'@types/dompurify@3.0.5':
dependencies:
'@types/trusted-types': 2.0.3
'@types/estree@0.0.39': {} '@types/estree@0.0.39': {}
'@types/estree@1.0.1': {} '@types/estree@1.0.1': {}
@@ -13978,6 +13959,9 @@ snapshots:
'@types/trusted-types@2.0.3': {} '@types/trusted-types@2.0.3': {}
'@types/trusted-types@2.0.7':
optional: true
'@types/unist@2.0.7': {} '@types/unist@2.0.7': {}
'@types/unist@3.0.3': {} '@types/unist@3.0.3': {}
@@ -14812,7 +14796,7 @@ snapshots:
antlr4: 4.11.0 antlr4: 4.11.0
color-string: 1.9.1 color-string: 1.9.1
dom-to-image-more: 2.16.0 dom-to-image-more: 2.16.0
dompurify: 3.1.6 dompurify: 3.2.1
file-saver: 2.0.5 file-saver: 2.0.5
highlight.js: 10.7.3 highlight.js: 10.7.3
html-to-image: 1.11.11 html-to-image: 1.11.11
@@ -15026,7 +15010,7 @@ snapshots:
dependencies: dependencies:
array-buffer-byte-length: 1.0.0 array-buffer-byte-length: 1.0.0
call-bind: 1.0.7 call-bind: 1.0.7
define-properties: 1.2.0 define-properties: 1.2.1
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
is-array-buffer: 3.0.2 is-array-buffer: 3.0.2
is-shared-array-buffer: 1.0.2 is-shared-array-buffer: 1.0.2
@@ -15053,8 +15037,6 @@ snapshots:
atomic-sleep@1.0.0: {} atomic-sleep@1.0.0: {}
available-typed-arrays@1.0.5: {}
available-typed-arrays@1.0.7: available-typed-arrays@1.0.7:
dependencies: dependencies:
possible-typed-array-names: 1.0.0 possible-typed-array-names: 1.0.0
@@ -16488,7 +16470,9 @@ snapshots:
dependencies: dependencies:
domelementtype: 2.3.0 domelementtype: 2.3.0
dompurify@3.1.6: {} dompurify@3.2.1:
optionalDependencies:
'@types/trusted-types': 2.0.7
domutils@3.1.0: domutils@3.1.0:
dependencies: dependencies:
@@ -16579,7 +16563,7 @@ snapshots:
dependencies: dependencies:
array-buffer-byte-length: 1.0.0 array-buffer-byte-length: 1.0.0
arraybuffer.prototype.slice: 1.0.1 arraybuffer.prototype.slice: 1.0.1
available-typed-arrays: 1.0.5 available-typed-arrays: 1.0.7
call-bind: 1.0.7 call-bind: 1.0.7
es-set-tostringtag: 2.0.1 es-set-tostringtag: 2.0.1
es-to-primitive: 1.2.1 es-to-primitive: 1.2.1
@@ -16604,7 +16588,7 @@ snapshots:
object-inspect: 1.13.2 object-inspect: 1.13.2
object-keys: 1.1.1 object-keys: 1.1.1
object.assign: 4.1.4 object.assign: 4.1.4
regexp.prototype.flags: 1.5.0 regexp.prototype.flags: 1.5.3
safe-array-concat: 1.0.0 safe-array-concat: 1.0.0
safe-regex-test: 1.0.0 safe-regex-test: 1.0.0
string.prototype.trim: 1.2.7 string.prototype.trim: 1.2.7
@@ -16615,7 +16599,7 @@ snapshots:
typed-array-byte-offset: 1.0.0 typed-array-byte-offset: 1.0.0
typed-array-length: 1.0.4 typed-array-length: 1.0.4
unbox-primitive: 1.0.2 unbox-primitive: 1.0.2
which-typed-array: 1.1.11 which-typed-array: 1.1.15
es-define-property@1.0.0: es-define-property@1.0.0:
dependencies: dependencies:
@@ -16643,7 +16627,7 @@ snapshots:
dependencies: dependencies:
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
has: 1.0.3 has: 1.0.3
has-tostringtag: 1.0.0 has-tostringtag: 1.0.2
es-to-primitive@1.2.1: es-to-primitive@1.2.1:
dependencies: dependencies:
@@ -17480,7 +17464,7 @@ snapshots:
function.prototype.name@1.1.5: function.prototype.name@1.1.5:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
define-properties: 1.2.0 define-properties: 1.2.1
es-abstract: 1.22.1 es-abstract: 1.22.1
functions-have-names: 1.2.3 functions-have-names: 1.2.3
@@ -17627,7 +17611,7 @@ snapshots:
globalthis@1.0.3: globalthis@1.0.3:
dependencies: dependencies:
define-properties: 1.2.0 define-properties: 1.2.1
globby@11.1.0: globby@11.1.0:
dependencies: dependencies:
@@ -19184,7 +19168,7 @@ snapshots:
d3-sankey: 0.12.3 d3-sankey: 0.12.3
dagre-d3-es: 7.0.10 dagre-d3-es: 7.0.10
dayjs: 1.11.10 dayjs: 1.11.10
dompurify: 3.1.6 dompurify: 3.2.1
katex: 0.16.9 katex: 0.16.9
khroma: 2.1.0 khroma: 2.1.0
lodash-es: 4.17.21 lodash-es: 4.17.21
@@ -20263,12 +20247,6 @@ snapshots:
regexp-tree@0.1.27: {} regexp-tree@0.1.27: {}
regexp.prototype.flags@1.5.0:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.0
functions-have-names: 1.2.3
regexp.prototype.flags@1.5.3: regexp.prototype.flags@1.5.3:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
@@ -20992,30 +20970,30 @@ snapshots:
string.prototype.matchall@4.0.8: string.prototype.matchall@4.0.8:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
define-properties: 1.2.0 define-properties: 1.2.1
es-abstract: 1.22.1 es-abstract: 1.22.1
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
has-symbols: 1.0.3 has-symbols: 1.0.3
internal-slot: 1.0.5 internal-slot: 1.0.5
regexp.prototype.flags: 1.5.0 regexp.prototype.flags: 1.5.3
side-channel: 1.0.6 side-channel: 1.0.6
string.prototype.trim@1.2.7: string.prototype.trim@1.2.7:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
define-properties: 1.2.0 define-properties: 1.2.1
es-abstract: 1.22.1 es-abstract: 1.22.1
string.prototype.trimend@1.0.6: string.prototype.trimend@1.0.6:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
define-properties: 1.2.0 define-properties: 1.2.1
es-abstract: 1.22.1 es-abstract: 1.22.1
string.prototype.trimstart@1.0.6: string.prototype.trimstart@1.0.6:
dependencies: dependencies:
call-bind: 1.0.7 call-bind: 1.0.7
define-properties: 1.2.0 define-properties: 1.2.1
es-abstract: 1.22.1 es-abstract: 1.22.1
string_decoder@1.1.1: string_decoder@1.1.1:
@@ -21429,7 +21407,7 @@ snapshots:
typed-array-byte-offset@1.0.0: typed-array-byte-offset@1.0.0:
dependencies: dependencies:
available-typed-arrays: 1.0.5 available-typed-arrays: 1.0.7
call-bind: 1.0.7 call-bind: 1.0.7
for-each: 0.3.3 for-each: 0.3.3
has-proto: 1.0.1 has-proto: 1.0.1
@@ -22230,14 +22208,6 @@ snapshots:
which-module@2.0.1: {} which-module@2.0.1: {}
which-typed-array@1.1.11:
dependencies:
available-typed-arrays: 1.0.5
call-bind: 1.0.7
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.0
which-typed-array@1.1.15: which-typed-array@1.1.15:
dependencies: dependencies:
available-typed-arrays: 1.0.7 available-typed-arrays: 1.0.7

View File

@@ -38,7 +38,6 @@ const SRC = {
// to match the real `package.json` values // to match the real `package.json` values
'type-fest': '*', 'type-fest': '*',
'@types/d3': '^7.4.3', '@types/d3': '^7.4.3',
'@types/dompurify': '^3.0.5',
typescript: '*', typescript: '*',
}, },
}, },