From f71b81d249e5847e3069c017aba27334eb5b748c Mon Sep 17 00:00:00 2001 From: Costa Tsaousis Date: Fri, 9 Oct 2026 03:52:34 +0300 Subject: [PATCH] Update documentation and Nedi diagrams to Mermaid 12.1 --- README.md | 10 ++++ package.json | 2 +- src/components/Nedi/assets.js | 12 ++--- src/theme/Mermaid/index.js | 9 ++++ yarn.lock | 88 +++++++++++++++++++++++------------ 5 files changed, 85 insertions(+), 36 deletions(-) create mode 100644 src/theme/Mermaid/index.js diff --git a/README.md b/README.md index 0e431e7574..934badbb51 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,16 @@ GitHub Actions; owner-controlled vendor packages are intentionally excluded from Root Yarn resolutions are only used for security releases that are compatible with every selected parent range. Do not use a resolution to bypass an incompatible upstream dependency constraint. +### Diagram browser compatibility + +Documentation diagrams and Ask Nedi use Mermaid 12.1.0 with its version 12 rendering defaults. +The renderer requires an ES2024-capable browser, including Safari 17.4 or newer. The local +Docusaurus dependency and the separately loaded, integrity-checked Nedi asset use the same +version; updating a local lock does not update the CDN bytes. +The supported Mermaid theme wrapper remounts the upstream renderer when the color mode changes, +so theme hydration cannot reuse a diagram's previous render identity. Rendering options remain +owned by Docusaurus and Mermaid. + ### Cloudflare Web Analytics The shared `docusaurus.config.js` script configuration installs one deferred module beacon on diff --git a/package.json b/package.json index 298cd46c30..1aae76a4b7 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "axios": "^1.20.0", "clsx": "^2.1.1", "dotenv": "^17.4.2", - "mermaid": "^11.17.2", + "mermaid": "^12.1.0", "parse5": "8.0.1", "postcss": "^8.5.26", "postcss-import": "^17.0.0", diff --git a/src/components/Nedi/assets.js b/src/components/Nedi/assets.js index 47ca55a994..3fb8d8b58d 100644 --- a/src/components/Nedi/assets.js +++ b/src/components/Nedi/assets.js @@ -12,18 +12,18 @@ export const NEDI_ASSETS = [ { type: 'css', src: `${NEDI_ENDPOINT}/ai-agent-ui.css?v=19` }, { type: 'js', - src: 'https://cdn.jsdelivr.net/npm/markdown-it@15.0.1/dist/browser/markdown-it.umd.min.js', - integrity: 'sha384-lX8HkDCIMBsB/UN/Vv18JAmM0RGX9rzKdL1513w2k3hKLBDcvj5jHUaMZdQpbOm4', + src: 'https://cdn.jsdelivr.net/npm/markdown-it@15.0.2/dist/browser/markdown-it.umd.min.js', + integrity: 'sha384-eaXixoauKhs0THQDG40r2SPao0FZmzCXLMECD9sbA02doHE3APxry0Az2P/oBq9E', }, { type: 'js', - src: 'https://cdn.jsdelivr.net/npm/mermaid@11.17.2/dist/mermaid.min.js', - integrity: 'sha384-EOXBFmc3gx5mb+vn0vPvvGqACToJD24hhacX5Yx+8NUUQrHIle/Qi5Bg9o3zKwW2', + src: 'https://cdn.jsdelivr.net/npm/mermaid@12.1.0/dist/mermaid.min.js', + integrity: 'sha384-EbBpjO7rlR6eqZEcG7GaPpyk9H9WrMyPWX4d3KvPYltgt8Z8l0z6R56B1qP40pR4', }, { type: 'js', - src: 'https://cdn.jsdelivr.net/npm/@viz-js/viz@3.29.0/dist/viz-global.js', - integrity: 'sha384-39ZxW8vr+xPchaaptsOWpdQjpckcdy40zkLeHLA4Yv3x0el06s2iBnWQ/s/ppFXQ', + src: 'https://cdn.jsdelivr.net/npm/@viz-js/viz@3.31.0/dist/viz-global.js', + integrity: 'sha384-iX6VK6ib27dxYB4T470zbHOsDDoLewuYvrIgv2B3XXe8kgfKsGMf8QIleFy6VPi4', }, { type: 'js', diff --git a/src/theme/Mermaid/index.js b/src/theme/Mermaid/index.js new file mode 100644 index 0000000000..ecd523f1bd --- /dev/null +++ b/src/theme/Mermaid/index.js @@ -0,0 +1,9 @@ +import React from 'react'; +import Mermaid from '@theme-original/Mermaid'; +import { useColorMode } from '@docusaurus/theme-common'; + +export default function MermaidWrapper(props) { + const { colorMode } = useColorMode(); + // A fresh render identity prevents theme hydration from removing a prior SVG. + return ; +} diff --git a/yarn.lock b/yarn.lock index 2281a2f3dc..2c96061035 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1275,10 +1275,35 @@ dependencies: css-tree "^3.0.0" -"@chevrotain/types@~11.1.2": - version "11.1.2" - resolved "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz#e83a1a2704f0c5e49e7592b214031a0f4a34d7e5" - integrity sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw== +"@chevrotain/cst-dts-gen@13.2.0": + version "13.2.0" + resolved "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-13.2.0.tgz#64d904738c224327b14ed616d174cb2c097c8eea" + integrity sha512-bA9dvWlhAUcHkNwU+8w9yiUxJPlj/Lm3VqS7MD+NbIR/7LmpNLuK/AWNFdCo/T3SK5ND0/UHf3IJvl/Jn/i6yg== + dependencies: + "@chevrotain/gast" "13.2.0" + "@chevrotain/types" "13.2.0" + +"@chevrotain/gast@13.2.0": + version "13.2.0" + resolved "https://registry.npmjs.org/@chevrotain/gast/-/gast-13.2.0.tgz#3fd21451c3a6d1550e8ef61aca656359fd468644" + integrity sha512-bCARdAsG+eEbOveSXcOAC7pVxA04I1ionzeMOwIYf5NX7SaS7zgn4Dgug2BSqoL+iyKeMNSorQjsFSHJHsCNwg== + dependencies: + "@chevrotain/types" "13.2.0" + +"@chevrotain/regexp-to-ast@13.2.0": + version "13.2.0" + resolved "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-13.2.0.tgz#fc254a6af6461f7cce6a0f5b8ecbd3dd2dadf3ea" + integrity sha512-kxpUkLtiaK09ph+dib+Yvm+3sWSnuwlo25gqfKRgTPNmF6H7uW4gVkMjaRdtnN783S9sM6vUNWh9CsxYX4QwKw== + +"@chevrotain/types@13.2.0", "@chevrotain/types@~13.2.0": + version "13.2.0" + resolved "https://registry.npmjs.org/@chevrotain/types/-/types-13.2.0.tgz#546500791f9713e8c7bcd1a090fdc232374cf832" + integrity sha512-7qrYHRlKfWf2AvBfJi5eVOrKAkbxvMFsy/iIHTGIiApNcEecCaVIdR+mIQhyCBsTDJxBz4JWXHMo6krbhR9hVg== + +"@chevrotain/utils@13.2.0": + version "13.2.0" + resolved "https://registry.npmjs.org/@chevrotain/utils/-/utils-13.2.0.tgz#87111f7fa043331083adb0e65ec4d8e66ff98688" + integrity sha512-SzKYY68rseOrb9KILVzPsl6SjkQtdWw01SRGB5aCVI5kFcHltQsOYV3JB0Ffst72DgkvHCyDQ0NLwxtmCCf97Q== "@colors/colors@1.5.0": version "1.5.0" @@ -3346,12 +3371,12 @@ dependencies: "@types/mdx" "^2.0.0" -"@mermaid-js/parser@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.1.tgz#94cc40416137bb10d2bc1b0a49c623d716e76233" - integrity sha512-n12NohV3mrUyUL2o93IgG/ifeW9FTyeJn3zDxkhwa8MJ9Fxg3HQMlA3RiGmD/3UnJvheztkjjQAjA2T4LmUcpw== +"@mermaid-js/parser@^2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.1.tgz#ac69b59ead67a3b16a8e6d7ec5159e3cd66ee7c5" + integrity sha512-j37dj/h6p6pots1L7pLPPNuABEEu9WP4OYg9pW1g+nYG331j0+3canE9OagtYdytYvdSAMG+2fKU5cxep6LgjA== dependencies: - "@chevrotain/types" "~11.1.2" + "@chevrotain/types" "~13.2.0" "@module-federation/error-codes@0.22.0": version "0.22.0" @@ -6821,6 +6846,17 @@ cheerio@^1.0.0: undici "^7.19.0" whatwg-mimetype "^4.0.0" +chevrotain@~13.2.0: + version "13.2.0" + resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-13.2.0.tgz#eb4426dcd8befff3d4c2880f8a54367498803ba4" + integrity sha512-GTouk5YzgBxlTPCaDn5q0q2EJKkrYmnPF+HmF8v0Qo4r3iyPG7HJivkN1wthCXZcm3sIcZFpGTRovLPNdJNRCA== + 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@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" @@ -7973,7 +8009,7 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.3.3, dompurify@^3.4.13: +dompurify@^3.4.12, dompurify@^3.4.13: version "3.4.16" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.4.16.tgz#c51b3709ea15ee9abb07e804f2ef30ea9b953128" integrity sha512-sqo+pNp3qRhCIpbgRi1y8Tgk27Bo2Ry7w0dC1NBeNTdZChWjz9Xb/KOoZbRP/R6pQZ80Qw8YhXw13hWWBbMRnQ== @@ -8059,6 +8095,11 @@ electron-to-chromium@^1.5.439: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.451.tgz#864347c1a8e7041ef0a6a70372b6cbaa66564c14" integrity sha512-vUNKPrUzw8ByEMOxloq0a71iD/mPuPxVkbDm3G5YhnxTzOw/I6qAg2MUS0cYj/c267lWmw26yW4Vv7foxTxPLg== +elkjs@^0.9.3: + version "0.9.3" + resolved "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161" + integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -8438,13 +8479,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.8.tgz#f7db8d942e20eead3cfe93b0beeb4eb0169e938b" integrity sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg== -fastdom@1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/fastdom/-/fastdom-1.0.12.tgz#ae43d55af017252ae499b2e186511ab97412de39" - integrity sha512-LB+xjSTEbjHE1cWsxu+tN2Xqr1kpi+V9aADI7sVM5ZMaXyYGPHULQMzpJMYqOTULK/73pUkWVzzObFRBkPr+hg== - dependencies: - strictdom "^1.0.1" - fastq@^1.6.0: version "1.20.1" resolved "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz" @@ -10395,16 +10429,17 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -mermaid@>=11.6.0, mermaid@^11.17.2: - version "11.17.2" - resolved "https://registry.npmjs.org/mermaid/-/mermaid-11.17.2.tgz#e3caf3717582c0e44e5d04cff043e025caec7cba" - integrity sha512-V6K3C8EBdEsPFZXSKMJe6ppQOENxuHARr9GvHX4hh47lAbhMRD9qf4oEK7LoaRQxULMa80/qt5gHO73aCleBBg== +mermaid@>=11.6.0, mermaid@^12.1.0: + version "12.1.0" + resolved "https://registry.npmjs.org/mermaid/-/mermaid-12.1.0.tgz#b9f893f32dc2f86bf7b31d3399e2e2d381e0464b" + integrity sha512-wlVCp+8eTupfCeeFvoZNNiTuHrvag0P2jz/ILgb/f/6jkVokUefOcujefi8qUe/j2asHiSePncVsz/xzzA80LQ== dependencies: "@braintree/sanitize-url" "^7.1.2" "@iconify/utils" "^3.0.2" - "@mermaid-js/parser" "^1.2.1" + "@mermaid-js/parser" "^2.0.1" "@types/d3" "^7.4.3" "@upsetjs/venn.js" "^2.0.0" + chevrotain "~13.2.0" cytoscape "^3.34.0" cytoscape-cose-bilkent "^4.1.0" cytoscape-fcose "^2.2.0" @@ -10412,9 +10447,9 @@ mermaid@>=11.6.0, mermaid@^11.17.2: d3-sankey "^0.12.3" dagre-d3-es "7.0.14" dayjs "^1.11.21" - dompurify "^3.3.3" + dompurify "^3.4.12" + elkjs "^0.9.3" es-toolkit "^1.45.1" - fastdom "1.0.12" katex "^0.16.47" khroma "^2.1.0" marked "^16.3.0" @@ -13558,11 +13593,6 @@ std-env@^4.0.0-rc.1: resolved "https://registry.yarnpkg.com/std-env/-/std-env-4.1.0.tgz#45899abc590d86d682e87f0acd1033a75084cd3f" integrity sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ== -strictdom@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/strictdom/-/strictdom-1.0.1.tgz#189de91649f73d44d59b8432efa68ef9d2659460" - integrity sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg== - string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"