From 0cc12392288a1154f77f49c15da40839083bea00 Mon Sep 17 00:00:00 2001 From: Lucalopezz Date: Fri, 23 Oct 2026 06:51:39 -0300 Subject: [PATCH 1/2] feat(web): render Mermaid diagrams in Markdown fields Closes #15 --- apps/web/e2e/mocked/markdown-mermaid.spec.ts | 66 ++ apps/web/package.json | 1 + apps/web/src/components/markdown.tsx | 23 +- apps/web/src/components/mermaid-diagram.tsx | 98 +++ .../projects/components/project-list.tsx | 2 +- .../components/technical-entry-list.tsx | 4 +- pnpm-lock.yaml | 686 ++++++++++++++++++ 7 files changed, 875 insertions(+), 5 deletions(-) create mode 100644 apps/web/e2e/mocked/markdown-mermaid.spec.ts create mode 100644 apps/web/src/components/mermaid-diagram.tsx diff --git a/apps/web/e2e/mocked/markdown-mermaid.spec.ts b/apps/web/e2e/mocked/markdown-mermaid.spec.ts new file mode 100644 index 0000000..a1abb5d --- /dev/null +++ b/apps/web/e2e/mocked/markdown-mermaid.spec.ts @@ -0,0 +1,66 @@ +import { expect, test } from '@playwright/test' +import { authenticatedApi, entry, entryId, mockApi, project, projectId } from './mock-api' + +const diagram = '```mermaid\nflowchart LR\n A[Start] --> B[Done]\n```' +const namedDiagram = '```mermaid\nflowchart LR\n accTitle: Delivery flow\n accDescr: Start leads to Done\n A[Start] --> B[Done]\n```' +const invalidDiagram = '```mermaid\nthis is not a diagram\n```' + +test('Mermaid fences render in project and journal Markdown fields', async ({ page }) => { + await page.setViewportSize({ width: 390, height: 844 }) + const assertNoUnexpected = await mockApi(page, (request, url) => { + if (request.method() === 'GET' && url.pathname === `/api/project/${projectId}`) { + return { body: { ...project, description: `${namedDiagram}\n\n\`\`\`ts\nconst answer = 42\n\`\`\`` } } + } + if (request.method() === 'GET' && url.pathname === `/api/technical-entry/${entryId}`) { + return { body: { ...entry, context: diagram, conclusion: invalidDiagram } } + } + return authenticatedApi(request, url) + }) + + await page.goto(`/projects/${projectId}`) + const projectDiagram = page.getByRole('img', { name: 'Delivery flow' }) + await expect(projectDiagram.locator('svg')).toBeVisible() + await expect(projectDiagram).toHaveAttribute('aria-description', 'Start leads to Done') + await expect(projectDiagram).toContainText('Start') + await expect(projectDiagram).toContainText('Done') + await expect(page.locator('pre code.language-ts')).toHaveText('const answer = 42') + await page.getByText('View diagram source').click() + await expect(page.locator('pre code.language-mermaid')).toContainText('flowchart LR') + + await page.goto(`/technical-entries/${entryId}`) + const entryDiagram = page.getByRole('img', { name: 'Mermaid diagram' }) + await expect(entryDiagram.locator('svg')).toBeVisible() + await expect(page.getByText('Diagram could not be rendered')).toBeVisible() + await expect(page.locator('pre code.language-mermaid').filter({ hasText: 'this is not a diagram' })).toBeVisible() + + for (const width of [390, 320]) { + await page.setViewportSize({ width, height: 844 }) + const layout = await page.evaluate(() => ({ + viewport: document.documentElement.clientWidth, + document: document.documentElement.scrollWidth, + })) + expect(layout.document, JSON.stringify(layout)).toBeLessThanOrEqual(layout.viewport) + } + assertNoUnexpected() +}) + +test('compact project and journal cards leave Mermaid fences as code', async ({ page }) => { + const assertNoUnexpected = await mockApi(page, (request, url) => { + if (request.method() === 'GET' && url.pathname === '/api/project') { + return { body: { data: [{ ...project, description: diagram }], meta: { currentPage: 1, perPage: 10, lastPage: 1, total: 1 } } } + } + if (request.method() === 'GET' && url.pathname === '/api/technical-entry') { + return { body: { data: [{ ...entry, context: diagram }], meta: { currentPage: 1, perPage: 10, lastPage: 1, total: 1 } } } + } + return authenticatedApi(request, url) + }) + + await page.goto('/projects') + await expect(page.locator('pre code.language-mermaid')).toHaveCount(1) + await expect(page.getByRole('img', { name: 'Mermaid diagram' })).toHaveCount(0) + + await page.goto('/technical-entries') + await expect(page.locator('pre code.language-mermaid')).toHaveCount(1) + await expect(page.getByRole('img', { name: 'Mermaid diagram' })).toHaveCount(0) + assertNoUnexpected() +}) diff --git a/apps/web/package.json b/apps/web/package.json index 2058dad..2641269 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -26,6 +26,7 @@ "clsx": "^2.1.1", "date-fns": "^4.4.0", "lucide-react": "^1.39.0", + "mermaid": "12.2.0", "radix-ui": "^1.6.7", "react": "^19.2.7", "react-dom": "^19.2.7", diff --git a/apps/web/src/components/markdown.tsx b/apps/web/src/components/markdown.tsx index 4c0c209..d84b639 100644 --- a/apps/web/src/components/markdown.tsx +++ b/apps/web/src/components/markdown.tsx @@ -1,15 +1,18 @@ +import { Children, isValidElement } from "react"; import ReactMarkdown from "react-markdown"; import remarkGfm from "remark-gfm"; import { cn } from "@/lib/utils"; +import { MermaidDiagram } from "./mermaid-diagram"; type MarkdownProps = React.ComponentProps & { className?: string; + renderDiagrams?: boolean; }; // Renders Markdown content using ReactMarkdown and remarkGfm. The wrapper // owns typography, block spacing, and element styles so every feature gets // the same reading experience without duplicating Markdown configuration. -export function Markdown({ className, ...props }: MarkdownProps) { +export function Markdown({ className, renderDiagrams = true, ...props }: MarkdownProps) { return (
{/* Keep GFM enabled after spreading props so callers cannot accidentally replace the plugin and lose tables, task lists, or strikethrough. */} - + (code)) { + const language = code.props.className?.split(/\s+/).includes("language-mermaid"); + if (language && typeof code.props.children === "string") { + return ; + } + } + return
{children}
; + }, + }} + remarkPlugins={[remarkGfm]} + />
); } diff --git a/apps/web/src/components/mermaid-diagram.tsx b/apps/web/src/components/mermaid-diagram.tsx new file mode 100644 index 0000000..c67b751 --- /dev/null +++ b/apps/web/src/components/mermaid-diagram.tsx @@ -0,0 +1,98 @@ +import { useEffect, useState } from "react"; + +type DiagramResult = + | { source: string; status: "ready"; svg: string; title?: string; description?: string } + | { source: string; status: "error" }; + +let diagramNumber = 0; +let mermaidLoader: Promise | undefined; + +function loadMermaid() { + // Diagram rendering is needed only for full Markdown fields that actually + // contain a Mermaid fence, so ordinary pages do not load the large library. + mermaidLoader ??= import("mermaid").then(({ default: mermaid }) => { + mermaid.initialize({ + startOnLoad: false, + securityLevel: "strict", + suppressErrorRendering: true, + theme: "dark", + // Dagre keeps common diagrams light to load; a diagram can still opt + // into ELK through Mermaid frontmatter when its layout needs it. + layout: "dagre", + }); + return mermaid; + }); + return mermaidLoader; +} + +export function MermaidDiagram({ source }: { source: string }) { + const [result, setResult] = useState(null); + + useEffect(() => { + let active = true; + const id = `markdown-mermaid-${++diagramNumber}`; + + void loadMermaid() + .then((mermaid) => (active ? mermaid.render(id, source) : null)) + .then((rendered) => { + if (!active || !rendered) return; + const { svg } = rendered; + // Mermaid turns accTitle/accDescr into SVG metadata. Reuse that output + // for the wrapper's accessible name instead of parsing its syntax twice. + const document = new DOMParser().parseFromString(svg, "image/svg+xml"); + const title = document.querySelector("svg > title")?.textContent?.trim(); + const description = document.querySelector("svg > desc")?.textContent?.trim(); + setResult({ source, status: "ready", svg, title, description }); + }) + .catch(() => { + if (active) setResult({ source, status: "error" }); + }); + + // A field can change while rendering; an old result must not replace the + // diagram for the new Markdown text or update an unmounted component. + return () => { + active = false; + }; + }, [source]); + + const currentResult = result?.source === source ? result : null; + const sourceBlock = ( +
+      {source}
+    
+ ); + + if (currentResult?.status !== "ready") { + return ( +
+ {currentResult?.status === "error" ? ( +

Diagram could not be rendered

+ ) : null} + {sourceBlock} +
+ ); + } + + return ( +
+ {/* The app currently uses a dark theme, so keep Mermaid's palette and + the diagram surface aligned instead of relying on CSS inversion. */} +
+
+
+
+ + View diagram source + +
{sourceBlock}
+
+
+ ); +} diff --git a/apps/web/src/features/projects/components/project-list.tsx b/apps/web/src/features/projects/components/project-list.tsx index f303a88..eb017a2 100644 --- a/apps/web/src/features/projects/components/project-list.tsx +++ b/apps/web/src/features/projects/components/project-list.tsx @@ -50,7 +50,7 @@ export function ProjectList({ projects }: ProjectListProps) { {project.description ? ( - + {project.description} ) : ( diff --git a/apps/web/src/features/technical-entry/components/technical-entry-list.tsx b/apps/web/src/features/technical-entry/components/technical-entry-list.tsx index 0418b2a..24a78ac 100644 --- a/apps/web/src/features/technical-entry/components/technical-entry-list.tsx +++ b/apps/web/src/features/technical-entry/components/technical-entry-list.tsx @@ -77,14 +77,14 @@ export function TechnicalEntryList({ ) : null} - + {entry.context} {entry.conclusion?.trim() ? (

Conclusion

- + {entry.conclusion}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eb49cf1..5f780b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -189,6 +189,9 @@ importers: lucide-react: specifier: ^1.39.0 version: 1.39.0(react@19.2.8) + mermaid: + specifier: 12.2.0 + version: 12.2.0 radix-ui: specifier: ^1.6.7 version: 1.6.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -332,6 +335,9 @@ packages: resolution: {integrity: sha512-/PZmyAlb2NGWPikRRuiWLdfHQd8Wrx6lX4HqvTcaDhlU43M3T0ud4PH2T3QDp7BzHYY92xtD8iPxX2asg67G1A==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@antfu/install-pkg@2.1.0': + resolution: {integrity: sha512-sdg9NxU3zR4Mnawfbc/x6GB5Wf17WYud5qOuEuxXjaKpYpMkISSJEjItGebXJ2bQ4DIcly4NYH23mtkGJjvKUw==} + '@asamuzakjp/css-color@6.0.7': resolution: {integrity: sha512-vC/bk1Lz7Tn/EfU9/apOTBk80/8dyGyWMowPoV1tJ52muDGsDqt2HPT2klrFUiY60MQmQv9q8yIht15JnBgDGw==} engines: {node: ^22.13.0 || >=24.0.0} @@ -562,10 +568,28 @@ packages: '@borewit/text-codec@0.2.2': resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@bramus/specificity@2.4.2': resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} hasBin: true + '@chevrotain/cst-dts-gen@13.2.0': + resolution: {integrity: sha512-bA9dvWlhAUcHkNwU+8w9yiUxJPlj/Lm3VqS7MD+NbIR/7LmpNLuK/AWNFdCo/T3SK5ND0/UHf3IJvl/Jn/i6yg==} + + '@chevrotain/gast@13.2.0': + resolution: {integrity: sha512-bCARdAsG+eEbOveSXcOAC7pVxA04I1ionzeMOwIYf5NX7SaS7zgn4Dgug2BSqoL+iyKeMNSorQjsFSHJHsCNwg==} + + '@chevrotain/regexp-to-ast@13.2.0': + resolution: {integrity: sha512-kxpUkLtiaK09ph+dib+Yvm+3sWSnuwlo25gqfKRgTPNmF6H7uW4gVkMjaRdtnN783S9sM6vUNWh9CsxYX4QwKw==} + + '@chevrotain/types@13.2.0': + resolution: {integrity: sha512-7qrYHRlKfWf2AvBfJi5eVOrKAkbxvMFsy/iIHTGIiApNcEecCaVIdR+mIQhyCBsTDJxBz4JWXHMo6krbhR9hVg==} + + '@chevrotain/utils@13.2.0': + resolution: {integrity: sha512-SzKYY68rseOrb9KILVzPsl6SjkQtdWw01SRGB5aCVI5kFcHltQsOYV3JB0Ffst72DgkvHCyDQ0NLwxtmCCf97Q==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -851,6 +875,12 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.7': + resolution: {integrity: sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==} + '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -1149,6 +1179,10 @@ packages: resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} + '@mermaid-js/parser@2.0.1': + resolution: {integrity: sha512-j37dj/h6p6pots1L7pLPPNuABEEu9WP4OYg9pW1g+nYG331j0+3canE9OagtYdytYvdSAMG+2fKU5cxep6LgjA==} + engines: {node: '>=22.12.0'} + '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} @@ -2519,27 +2553,75 @@ packages: '@types/d3-array@3.0.3': resolution: {integrity: sha512-Reoy+pKnvsksN0lQUlcH6dOGjRZ/3WRwXR//m+/8lt1BXeI4xyaUZoqULNjyXXRuh0Mj4LNpkCvhUpQlY3X5xQ==} + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + '@types/d3-color@3.1.0': resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + '@types/d3-delaunay@6.0.1': resolution: {integrity: sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==} + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + '@types/d3-format@3.0.1': resolution: {integrity: sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==} '@types/d3-geo@3.1.0': resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + '@types/d3-interpolate@3.0.1': resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} '@types/d3-path@3.1.1': resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.4': + resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + '@types/d3-scale@4.0.2': resolution: {integrity: sha512-Yk4htunhPAwN0XGlIwArRomOjdoBFXC3+kCxK2Ubg7I9shQlVSJy/pG/Ht5ASN+gdMIalpk8TJ5xV74jFsetLA==} + '@types/d3-selection@3.0.12': + resolution: {integrity: sha512-Qe/KWYhEiIIxGs7HrAAjMfShxKldx19SJtr5zu53f3afPsdZNz7HHtdTLXo/kqeiWNXVycI24kSnfzBYkTzpgw==} + '@types/d3-shape@3.1.7': resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} @@ -2549,6 +2631,18 @@ packages: '@types/d3-time@3.0.0': resolution: {integrity: sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==} + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.9': + resolution: {integrity: sha512-0sE1406XBYJGiqD3AusTl9ZqC//2mIXix51tbom25gDCA8ri4xnSZg28CaSE8Srl6FClqABUKfsn0qghgdepMA==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.13': resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} @@ -2656,6 +2750,9 @@ packages: '@types/supertest@7.2.1': resolution: {integrity: sha512-4CbBvoYVLHL7+yhbYrZET0vsvuyXTC05aRe7dNQkwMzm56auceoy6Yu3K50uZmwfHna1os3CMSgM/3QVkUtPTw==} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -2856,6 +2953,9 @@ packages: cpu: [x64] os: [win32] + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + '@visx/curve@4.0.1-alpha.0': resolution: {integrity: sha512-jRu61Uz274pV1zyioXmboyrLutYbnKsgjj4njSGCnhdXj5GkZvZbg+ThDb6oOzoAnJOBRLz4rzPlWvNJOzuVMg==} @@ -3318,6 +3418,10 @@ packages: chardet@2.2.0: resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} + chevrotain@13.2.0: + resolution: {integrity: sha512-GTouk5YzgBxlTPCaDn5q0q2EJKkrYmnPF+HmF8v0Qo4r3iyPG7HJivkN1wthCXZcm3sIcZFpGTRovLPNdJNRCA==} + engines: {node: '>=22.0.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -3413,6 +3517,10 @@ packages: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -3420,6 +3528,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + comment-json@5.0.0: resolution: {integrity: sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==} engines: {node: '>= 6'} @@ -3485,6 +3597,12 @@ packages: resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} engines: {node: '>= 0.10'} + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + cosmiconfig@8.3.6: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -3525,6 +3643,23 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.34.4: + resolution: {integrity: sha512-msY99tMY8iWTg+sIPGfSqDcPNOt4xcj+v/K/7qUFaCUxxlqnMkUYLBjRUzn9W5CU/R2hrmtJa5+UtovrEM2ctg==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + d3-array@3.2.1: resolution: {integrity: sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==} engines: {node: '>=12'} @@ -3533,14 +3668,55 @@ packages: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + d3-delaunay@6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} @@ -3549,18 +3725,51 @@ packages: resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} engines: {node: '>=12'} + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + d3-path@3.1.0: resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + d3-shape@3.2.0: resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} @@ -3573,6 +3782,27 @@ packages: resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + data-urls@7.0.0: resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -3580,6 +3810,9 @@ packages: date-fns@4.4.0: resolution: {integrity: sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==} + dayjs@1.11.23: + resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} + debounce-fn@4.0.0: resolution: {integrity: sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ==} engines: {node: '>=10'} @@ -3693,6 +3926,9 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dompurify@3.4.17: + resolution: {integrity: sha512-B/pSlYVHQ58kqISD/yDjuJ1yfzI34m1gF4lAod2bwSRhiN4K5Cl3H8Af7hqB2PmTL911tdEudnnXn5FnhRoz0w==} + dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -3731,6 +3967,9 @@ packages: elkjs@0.11.1: resolution: {integrity: sha512-zxxR9k+rx5ktMwT/FwyLdPCrq7xN6e4VGGHH8hA01vVYKjTFik7nHOxBnAYtrgYUB1RpAiLvA1/U2YraWxyKKg==} + elkjs@0.9.3: + resolution: {integrity: sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==} + emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -3794,6 +4033,9 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + es-toolkit@1.52.0: + resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -4239,6 +4481,9 @@ packages: resolution: {integrity: sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + handlebars@4.7.9: resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} engines: {node: '>=0.4.7'} @@ -4305,6 +4550,10 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + iconv-lite@0.7.3: resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} engines: {node: '>=0.10.0'} @@ -4329,6 +4578,9 @@ packages: engines: {node: '>=8'} hasBin: true + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -4347,6 +4599,9 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} @@ -4724,9 +4979,16 @@ packages: jws@4.0.1: resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + katex@0.18.10: + resolution: {integrity: sha512-/B6p9eY9DX7aHBfpkHdpirDTZ5QH9xTwL9y837PWuzuv41O5jFdqNQwVQEQsimY0/iVNkwBY4+4hMfhQ7d4Dbw==} + hasBin: true + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -4735,6 +4997,12 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -4917,6 +5185,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -5006,6 +5277,11 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -5081,6 +5357,10 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid@12.2.0: + resolution: {integrity: sha512-w7nr/SFrLO7BaVTs3dQTvYSV6nYSBj0Yy9DjBhsIJtAcHqRzXSq4Pg32ujHZ/AdWsAMNEvvhbm5dt9E2tOiHzw==} + engines: {node: '>=22.12.0'} + methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -5390,6 +5670,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.9.0: + resolution: {integrity: sha512-zAMfbta9nPA8AKkA4WdmNAT8R8s6Dk0/xwPsqNnRidMFcLo1YkLuPDTgs2f64XdzS8vbLNnoJ+uUIkgbz7oRHA==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -5415,6 +5698,9 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -5545,6 +5831,12 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + postcss-selector-parser@7.1.5: resolution: {integrity: sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==} engines: {node: '>=4'} @@ -5841,6 +6133,9 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + router@2.2.0: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} @@ -5852,6 +6147,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -6105,6 +6403,9 @@ packages: style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + stylis@4.4.0: + resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} + superagent@10.3.0: resolution: {integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==} engines: {node: '>=14.18.0'} @@ -6217,6 +6518,10 @@ packages: resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} engines: {node: '>=18'} + tinyexec@1.3.1: + resolution: {integrity: sha512-GCvB3aoys96IuDFBMcTB46JOR6mdMtAToqwiW8JlWhsoh1mhHi/xn9ss/Dg7N555GiJyEt2qzoG/NHCwM6h1EA==} + engines: {node: '>=18'} + tinyglobby@0.2.17: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} @@ -6267,6 +6572,10 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} + engines: {node: '>=6.10'} + ts-jest@29.4.12: resolution: {integrity: sha512-Ov6ClY53Fflh6BGAnY2DlTq1hYDrTycz2PVTXBWFW2CU+9zrEqAp9fWdGXl42EXO5RLSFAcAZ2JFKbP+zBTFfw==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} @@ -6821,6 +7130,11 @@ snapshots: transitivePeerDependencies: - chokidar + '@antfu/install-pkg@2.1.0': + dependencies: + package-manager-detector: 1.9.0 + tinyexec: 1.3.1 + '@asamuzakjp/css-color@6.0.7': dependencies: '@csstools/css-calc': 3.4.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) @@ -7105,10 +7419,27 @@ snapshots: '@borewit/text-codec@0.2.2': {} + '@braintree/sanitize-url@7.1.2': {} + '@bramus/specificity@2.4.2': dependencies: css-tree: 3.2.1 + '@chevrotain/cst-dts-gen@13.2.0': + dependencies: + '@chevrotain/gast': 13.2.0 + '@chevrotain/types': 13.2.0 + + '@chevrotain/gast@13.2.0': + dependencies: + '@chevrotain/types': 13.2.0 + + '@chevrotain/regexp-to-ast@13.2.0': {} + + '@chevrotain/types@13.2.0': {} + + '@chevrotain/utils@13.2.0': {} + '@colors/colors@1.5.0': optional: true @@ -7341,6 +7672,14 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.7': + dependencies: + '@antfu/install-pkg': 2.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + '@inquirer/ansi@1.0.2': {} '@inquirer/ansi@2.0.8': {} @@ -7736,6 +8075,10 @@ snapshots: '@lukeed/csprng@1.1.0': {} + '@mermaid-js/parser@2.0.1': + dependencies: + '@chevrotain/types': 13.2.0 + '@microsoft/tsdoc@0.16.0': {} '@modelcontextprotocol/sdk@1.30.0(supports-color@8.1.1)(zod@3.25.76)': @@ -9148,26 +9491,69 @@ snapshots: '@types/d3-array@3.0.3': {} + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.12 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.12 + + '@types/d3-chord@3.0.6': {} + '@types/d3-color@3.1.0': {} + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.0.3 + '@types/geojson': 7946.0.16 + '@types/d3-delaunay@6.0.1': {} + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.12 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + '@types/d3-format@3.0.1': {} '@types/d3-geo@3.1.0': dependencies: '@types/geojson': 7946.0.16 + '@types/d3-hierarchy@3.1.7': {} + '@types/d3-interpolate@3.0.1': dependencies: '@types/d3-color': 3.1.0 '@types/d3-path@3.1.1': {} + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.4': {} + + '@types/d3-scale-chromatic@3.1.0': {} + '@types/d3-scale@4.0.2': dependencies: '@types/d3-time': 3.0.0 + '@types/d3-selection@3.0.12': {} + '@types/d3-shape@3.1.7': dependencies: '@types/d3-path': 3.1.1 @@ -9176,6 +9562,50 @@ snapshots: '@types/d3-time@3.0.0': {} + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.12 + + '@types/d3-zoom@3.0.9': + dependencies: + '@types/d3-interpolate': 3.0.1 + '@types/d3-selection': 3.0.12 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.0.3 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.0 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.1 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.1 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.1 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.4 + '@types/d3-scale': 4.0.2 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.12 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.0 + '@types/d3-time-format': 2.1.0 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.9 + '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 @@ -9304,6 +9734,9 @@ snapshots: '@types/methods': 1.1.4 '@types/superagent': 8.1.11 + '@types/trusted-types@2.0.7': + optional: true + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} @@ -9560,6 +9993,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.12.2': optional: true + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + '@visx/curve@4.0.1-alpha.0': dependencies: '@visx/vendor': 4.0.0-alpha.0 @@ -10122,6 +10560,14 @@ snapshots: chardet@2.2.0: {} + chevrotain@13.2.0: + dependencies: + '@chevrotain/cst-dts-gen': 13.2.0 + '@chevrotain/gast': 13.2.0 + '@chevrotain/regexp-to-ast': 13.2.0 + '@chevrotain/types': 13.2.0 + '@chevrotain/utils': 13.2.0 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -10200,10 +10646,14 @@ snapshots: commander@14.0.3: {} + commander@15.0.0: {} + commander@2.20.3: {} commander@4.1.1: {} + commander@7.2.0: {} + comment-json@5.0.0: dependencies: array-timsort: 1.0.3 @@ -10265,6 +10715,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + cosmiconfig@8.3.6(typescript@5.9.3): dependencies: import-fresh: 3.3.1 @@ -10302,6 +10760,22 @@ snapshots: csstype@3.2.3: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.4): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.34.4 + + cytoscape-fcose@2.2.0(cytoscape@3.34.4): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.34.4 + + cytoscape@3.34.4: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + d3-array@3.2.1: dependencies: internmap: 2.0.3 @@ -10310,24 +10784,87 @@ snapshots: dependencies: internmap: 2.0.3 + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + d3-color@3.1.0: {} + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-delaunay@6.0.2: dependencies: delaunator: 5.1.0 + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + d3-format@3.1.0: {} d3-geo@3.1.0: dependencies: d3-array: 3.2.4 + d3-hierarchy@3.1.2: {} + d3-interpolate@3.0.1: dependencies: d3-color: 3.1.0 + d3-path@1.0.9: {} + d3-path@3.1.0: {} + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + d3-scale@4.0.2: dependencies: d3-array: 3.2.4 @@ -10336,6 +10873,12 @@ snapshots: d3-time: 3.1.0 d3-time-format: 4.1.0 + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + d3-shape@3.2.0: dependencies: d3-path: 3.1.0 @@ -10348,6 +10891,63 @@ snapshots: dependencies: d3-array: 3.2.4 + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.2 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.0 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + data-urls@7.0.0(@noble/hashes@1.8.0): dependencies: whatwg-mimetype: 5.0.0 @@ -10357,6 +10957,8 @@ snapshots: date-fns@4.4.0: {} + dayjs@1.11.23: {} + debounce-fn@4.0.0: dependencies: mimic-fn: 3.1.0 @@ -10435,6 +11037,10 @@ snapshots: dom-accessibility-api@0.6.3: {} + dompurify@3.4.17: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dot-prop@6.0.1: dependencies: is-obj: 2.0.0 @@ -10470,6 +11076,8 @@ snapshots: elkjs@0.11.1: {} + elkjs@0.9.3: {} + emittery@0.13.1: {} emoji-regex@10.6.0: {} @@ -10519,6 +11127,8 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.4 + es-toolkit@1.52.0: {} + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -11059,6 +11669,8 @@ snapshots: graphql@16.14.2: {} + hachure-fill@0.5.2: {} + handlebars@4.7.9: dependencies: minimist: 1.2.8 @@ -11146,6 +11758,10 @@ snapshots: human-signals@8.0.1: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.3: dependencies: safer-buffer: 2.1.2 @@ -11166,6 +11782,8 @@ snapshots: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -11179,6 +11797,8 @@ snapshots: inline-style-parser@0.2.7: {} + internmap@1.0.1: {} + internmap@2.0.3: {} ip-address@10.7.0: {} @@ -11716,14 +12336,24 @@ snapshots: jwa: 2.0.1 safe-buffer: 5.2.1 + katex@0.18.10: + dependencies: + commander: 15.0.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + khroma@2.1.0: {} + kleur@3.0.3: {} kleur@4.1.5: {} + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + leven@3.1.0: {} levn@0.4.1: @@ -11850,6 +12480,8 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash-es@4.18.1: {} + lodash.includes@4.3.0: {} lodash.isboolean@3.0.3: {} @@ -11926,6 +12558,8 @@ snapshots: markdown-table@3.0.4: {} + marked@16.4.2: {} + math-intrinsics@1.1.0: {} mdast-util-find-and-replace@3.0.2: @@ -12097,6 +12731,32 @@ snapshots: merge2@1.4.1: {} + mermaid@12.2.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.7 + '@mermaid-js/parser': 2.0.1 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + chevrotain: 13.2.0 + cytoscape: 3.34.4 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.4) + cytoscape-fcose: 2.2.0(cytoscape@3.34.4) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.23 + dompurify: 3.4.17 + elkjs: 0.9.3 + es-toolkit: 1.52.0 + katex: 0.18.10 + khroma: 2.1.0 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.4.0 + ts-dedent: 2.3.0 + uuid: 11.1.1 + methods@1.1.2: {} micromark-core-commonmark@2.0.3: @@ -12518,6 +13178,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.9.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -12549,6 +13211,8 @@ snapshots: path-browserify@1.0.1: {} + path-data-parser@0.1.0: {} + path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -12650,6 +13314,13 @@ snapshots: pluralize@8.0.0: {} + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + postcss-selector-parser@7.1.5: dependencies: cssesc: 3.0.0 @@ -13014,6 +13685,13 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.5 '@rolldown/binding-win32-x64-msvc': 1.1.5 + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + router@2.2.0(supports-color@8.1.1): dependencies: debug: 4.4.3(supports-color@8.1.1) @@ -13030,6 +13708,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@7.8.1: dependencies: tslib: 2.8.1 @@ -13315,6 +13995,8 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + stylis@4.4.0: {} + superagent@10.3.0(supports-color@8.1.1): dependencies: component-emitter: 1.3.1 @@ -13398,6 +14080,8 @@ snapshots: tinyexec@1.3.0: {} + tinyexec@1.3.1: {} + tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.7) @@ -13445,6 +14129,8 @@ snapshots: dependencies: typescript: 6.0.3 + ts-dedent@2.3.0: {} + ts-jest@29.4.12(@babel/core@7.29.7(supports-color@8.1.1))(@jest/transform@30.4.1(supports-color@8.1.1))(@jest/types@30.4.1)(babel-jest@30.4.1(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1))(jest-util@30.4.1)(jest@30.4.2(@types/node@24.13.3)(supports-color@8.1.1)(ts-node@10.9.2(@types/node@24.13.3)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 From 84f7715cae2159ff754055f6baf421661469e764 Mon Sep 17 00:00:00 2001 From: Lucalopezz Date: Fri, 23 Oct 2026 06:51:43 -0300 Subject: [PATCH 2/2] docs: explain Mermaid Markdown rendering and show mobile examples --- apps/web/README.md | 6 ++--- docs/guides/frontend_structure.md | 28 +++++++++++++++++++++++ docs/images/issue-15-entry-mermaid.png | Bin 0 -> 82079 bytes docs/images/issue-15-project-mermaid.png | Bin 0 -> 57692 bytes 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 docs/images/issue-15-entry-mermaid.png create mode 100644 docs/images/issue-15-project-mermaid.png diff --git a/apps/web/README.md b/apps/web/README.md index 0eb0bc9..f67dce2 100644 --- a/apps/web/README.md +++ b/apps/web/README.md @@ -44,9 +44,9 @@ store credentials or deployment configuration. ### Technical journal The journal provides paginated active and archived lists, filters for title, -type, issue status, and tag, plus entry details with Markdown rendering. Users -can create entries, edit title/context/conclusion, assign or remove tags, and -archive, restore, or permanently delete entries. +type, issue status, and tag, plus entry details with Markdown and Mermaid +rendering. Users can create entries, edit title/context/conclusion, assign or +remove tags, and archive, restore, or permanently delete entries. Links from Knowledge Overview can scope the active journal using `projectId` in the URL. Search and pagination preserve that scope. **Show all projects** diff --git a/docs/guides/frontend_structure.md b/docs/guides/frontend_structure.md index 80a5b22..70d7695 100644 --- a/docs/guides/frontend_structure.md +++ b/docs/guides/frontend_structure.md @@ -164,6 +164,34 @@ keeps profile consumers synchronized. Use `presentation.ts` for display details that should not leak into the API: status text, badge colors, icons, and specific formats. For example, a `PAUSED` API value could be displayed as “Paused” by that map. Use English display text throughout. +## Markdown diagrams + +Project descriptions and technical-entry context and conclusions store plain +Markdown. To include a diagram, write a fenced `mermaid` block. Add an +accessible title and description when the diagram carries useful information: + +````markdown +```mermaid +flowchart LR + accTitle: Delivery flow + accDescr: A request moves from start to completion. + Start --> Done +``` +```` + +The shared [`Markdown` component](../../apps/web/src/components/markdown.tsx) +renders these blocks in full detail fields. It loads Mermaid only when a diagram +is present; ordinary Markdown and code fences keep their existing rendering. +Compact list cards leave the fence as code because their content is clipped. +Invalid diagrams retain their source with a readable error message, so saved +text is never lost. Mermaid runs with strict security settings, which encode +HTML labels and disable diagram links. The original source is also available +from **View diagram source** below each successful diagram. + +See [Mermaid's syntax guide](https://mermaid.js.org/intro/syntax-reference.html) +for diagram types and [accessibility options](https://mermaid.js.org/config/accessibility) +for `accTitle` and `accDescr`. + ## Tests The frontend uses Vitest with Testing Library and MSW. `src/test/` holds shared diff --git a/docs/images/issue-15-entry-mermaid.png b/docs/images/issue-15-entry-mermaid.png new file mode 100644 index 0000000000000000000000000000000000000000..ed224fc2b5f7d3412b9bcc53fc8b06297aceb13a GIT binary patch literal 82079 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∈+1q%BSAS^nrXemsMuJR`Uvd^in==&!n)R zPxajd230PLt*i>l)6O{U5S^IGw>;pE%P+fA+d`-Qgatotwvc?H2F4SuZlj4Bj9?fbBkkVD=c3+oxxgqek~BPuH=%CIrWP+*Adyu*yv^W3-vCfp1k)f@{g6pjDEFDWZBQ;`0*+JMzbUW-FlwBGV=Z*W>PUYI`>DfIH zuUS1heNRH*H{T~O-@P?gf#$5C<0tr)(;o5h3G`bunDRwR@$X14Rp8e)@#aP3~CF!ZRB zMOn)N)ubKJf+nqxk4FJJjN9E|X8Im7Nnd$)ULJ(QX!+>*kFK9g%jZc>*3Z@( z03f?*)VQ@?Uv=9$b~i1Q#O(3MMWiMf+4VA`eUC#ca>kc)<~0BUWg6)neR>lg81pUo zZSyJI1MAo$#gQ$`58q!M3SXrl-x_1*roAzKz1FRmnRe^=O}z7%{`YFDAr6rNnSvh7 zLeYVXIv1>4W?il5Zt3AYc>w$JBM_X!(E&Hg!Xh%pEBgD!-D5_tSf<#SXEXq7LE+-k z`{c>qn+Hub7yBc(f*J`GY=@LX0%KG|-x{bKD=E7f3_khQE^zgDM5FjNbJm8ow$Rds2dt(-3`$mCU;MAC~7N`8^2t~@%cx2UAC zNDT=H7?q>nO=qxyQKo~+r~Lv5LmFVtMJR0Q&JA|o zPfl_(Gu!cP4Bfi!HkFS{A3Mdt&Mh1nlxK}~?7~*qw_{Zvu}m4a#~i0EPei9E4}VNG%a5hBpOxsUtdGyUA<$1W6d5FZSXj=>YA>r zD@j4V%y5aPjqka@z3NPW+9UK;ft*s~M z0l+KRoE+F&iVUc!`w4OAle#F->g6p(zn)Fq$ty}U=i}L_u+T7_I=nof z-~Fcce#N;79gcY#(Gb}j0*rFApX_T~8RKImWxejNP{2)i--W_pdQFt!Y zN4rWfkzd8A)Yr#)$w4-v`13GM=!Uz1XkHBQZEHE#oc@7&D{^Q31Yg0cdD%114CtX* zmP~+Og@>rPg-74*xyQO8@X_>r8~;MF`o9xQkWj9pW4N|Geg7r!T)1v$SN=RP9@dC+ ziFj#Y>>Wfp*N{EG{QGco`+sfM-~Q-z8&7nH2`Ps1H}AIIwf_R=-8D?p>ajuHLyL(A+4P2fRP_#ixUDap7NQ zJDxZU+*0&{F~-xL|2%{K`jEdq7ET?HT-aICL_}1cJmZ*q;q%@l$(flK|1rkR`8{#M zDn_Q;7ytcpzZ}$B_d-)%f@9B&saLH`rks-oZO{D-oVj>zWc;}#w%RGZo2}~Q%V+mA zG(13)ioQ)v-L4-uelc07z3b>Cm4MU0IZRz=r;T%ul^OxB9=P)L`}%jUf4e6oEv$Q= z>s>NUr9n&S&pkVxGpFx1bIS+?{mhV&2)S;bQ2c0W%;JC9vq0OtJGmGN*RKxg3c(C;*X42+d6rrSiW#1H=FS|DA$3 h85kJYKz(m!hPCw@bKZ-X2LeSHJYD@<);T3K0RYRW5d{DM literal 0 HcmV?d00001 diff --git a/docs/images/issue-15-project-mermaid.png b/docs/images/issue-15-project-mermaid.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bf04b2d993327db59fdb091875f1a858ba5490 GIT binary patch literal 57692 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%0A8xNP?7iHgCES& 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 Q2);suQPV{ipv(gQ2lwuBfdBvi literal 0 HcmV?d00001