From e95c436a99d1c648cfa00334b04f2ecdc1cdf587 Mon Sep 17 00:00:00 2001 From: Costa Tsaousis Date: Thu, 17 Sep 2026 08:20:00 +0300 Subject: [PATCH] Update documentation and Nedi diagrams to Mermaid 12 --- README.md | 9 ++- package.json | 3 +- src/components/Nedi/assets.js | 12 ++-- tests/dependency_authority.test.js | 1 + yarn.lock | 94 +++++++++++++++++++++--------- 5 files changed, 83 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 08a4092fd..01b1f8cf4 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,13 @@ add a root `package-lock.json`. The npm lock below `scripts/site-build-gate/` is website-owned vendor contract and remains npm-managed. Dependabot watches the root Yarn graph and GitHub Actions; owner-controlled vendor packages are intentionally excluded from automatic updates. -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. +Root Yarn resolutions normally select security releases compatible with every selected parent +range. Mermaid 12.0.0 is a qualified exception: Chevrotain 11.1.2 and its parser helpers pin +`lodash-es` 4.17.23, which is affected by GHSA-r5fr-rjxr-66jc and GHSA-f23m-r3pf-42rh. +The root resolution selects fixed 4.18.1, validated through the documentation build and real +light/dark diagram rendering. Remove this exception when Mermaid's parser dependencies accept +a fixed release. The resolution affects Learn's bundled documentation renderer; it does not +rewrite the separately pinned, integrity-checked Nedi CDN asset. ### Cloudflare Web Analytics diff --git a/package.json b/package.json index 5e88ec873..d0becf8ef 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "**/gray-matter/js-yaml": "3.15.1", "**/http-proxy-middleware": "2.0.10", "**/joi": "17.13.6", + "**/lodash-es": "4.18.1", "**/nanoid": "3.3.18", "**/svgo": "3.3.4" }, @@ -54,7 +55,7 @@ "axios": "^1.19.0", "clsx": "^2.1.1", "dotenv": "^17.4.2", - "mermaid": "^11.17.2", + "mermaid": "^12.0.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 47ca55a99..af44bb3ca 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.0.0/dist/mermaid.min.js', + integrity: 'sha384-xzghz1GQ5u9HCpVskeDPqMsdogD1yvuMQbEK53+wi+G70+6J1AG0L2cfi9PHjDWI', }, { 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.30.0/dist/viz-global.js', + integrity: 'sha384-KtL79YzRfvZ8ULC1SlgbwCIy18KoEk5fAudzHYqetJVonV6ubRN1KD2sDvNT9uuX', }, { type: 'js', diff --git a/tests/dependency_authority.test.js b/tests/dependency_authority.test.js index 2da76f952..ce723ce8d 100644 --- a/tests/dependency_authority.test.js +++ b/tests/dependency_authority.test.js @@ -13,6 +13,7 @@ const expectedResolutions = { '**/gray-matter/js-yaml': '3.15.1', '**/http-proxy-middleware': '2.0.10', '**/joi': '17.13.6', + '**/lodash-es': '4.18.1', '**/nanoid': '3.3.18', '**/svgo': '3.3.4', }; diff --git a/yarn.lock b/yarn.lock index 92f9a7890..f32e87145 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1260,11 +1260,38 @@ dependencies: css-tree "^3.0.0" -"@chevrotain/types@~11.1.2": +"@chevrotain/cst-dts-gen@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz#501ea6177fa21cc57264c792ef5cc3d0bb9410fd" + integrity sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q== + dependencies: + "@chevrotain/gast" "11.1.2" + "@chevrotain/types" "11.1.2" + lodash-es "4.17.23" + +"@chevrotain/gast@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz#213393f2b5842e8bf13369bdc042c7fd18201af2" + integrity sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g== + dependencies: + "@chevrotain/types" "11.1.2" + lodash-es "4.17.23" + +"@chevrotain/regexp-to-ast@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz#6aeb0b3fd5e3f220b063b3d856fbbaed582e4cfa" + integrity sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw== + +"@chevrotain/types@11.1.2", "@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/utils@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz#a0b13637acc0a2933d8a2edeba4bf1da789c565d" + integrity sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" @@ -3278,10 +3305,10 @@ 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.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@mermaid-js/parser/-/parser-2.0.0.tgz#018b3e6754e4302fb059765c37bae30ecdff4147" + integrity sha512-K8BeapFUfrfxbRAUQAG5oBOCwo1+bNWzaVnPxTCutkfrTBn6T/j91FIhqxWJ32SUeQ9T3iy1zcmPZ5ROZEvDrg== dependencies: "@chevrotain/types" "~11.1.2" @@ -6679,6 +6706,18 @@ cheerio@^1.0.0: undici "^7.19.0" whatwg-mimetype "^4.0.0" +chevrotain@~11.1.2: + version "11.1.2" + resolved "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz#1db446bdeb63fe42d366508a34280c2e3c0c4f62" + integrity sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg== + dependencies: + "@chevrotain/cst-dts-gen" "11.1.2" + "@chevrotain/gast" "11.1.2" + "@chevrotain/regexp-to-ast" "11.1.2" + "@chevrotain/types" "11.1.2" + "@chevrotain/utils" "11.1.2" + lodash-es "4.17.23" + chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" @@ -7835,7 +7874,14 @@ 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: + version "3.4.15" + resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.4.15.tgz#30351b34513894f428c13bddb28bff0a027ae804" + integrity sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + +dompurify@^3.4.13: version "3.4.14" resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.4.14.tgz#a789edb2c7bcdb69a93713a34edb7e0a5245d8c9" integrity sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg== @@ -7921,6 +7967,11 @@ electron-to-chromium@^1.5.263, electron-to-chromium@^1.5.402: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.412.tgz#79b93ba8d96ada5c9ef0d916ea0663f01ea15498" integrity sha512-z4rMe3esBzlzovKHj4gxJnsCGZRK5l4baUvm+gCGJBPE+gsyUMKsuU9tnEUtI1dOebXz1ytAPGjvXhmQ7rIPwA== +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" @@ -8333,13 +8384,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.5.tgz#610f37419a030270430cecd68d74e3d4d96725d0" integrity sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw== -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" @@ -9606,7 +9650,7 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -katex@^0.16.45, katex@^0.16.47: +katex@^0.16.47: version "0.16.47" resolved "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz#0a13a42c2deb4f74e61f162d440b9165a548030f" integrity sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg== @@ -9865,7 +9909,7 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" -lodash-es@^4.17.21: +lodash-es@4.17.23, lodash-es@4.18.1, lodash-es@^4.17.21: version "4.18.1" resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz#b962eeb80d9d983a900bf342961fb7418ca10b1d" integrity sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A== @@ -10296,16 +10340,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.0.0: + version "12.0.0" + resolved "https://registry.npmjs.org/mermaid/-/mermaid-12.0.0.tgz#3c4cdf54fd24110c988b90def857127055eb842b" + integrity sha512-/wQXC9iBxoGV8p3erbvaXs9h77VyLDBH6GdayVjj3hEcSQhFU4N1WUhUppotCEqlIxI2pRMwjwBSwTB1MfZBgQ== dependencies: "@braintree/sanitize-url" "^7.1.2" "@iconify/utils" "^3.0.2" - "@mermaid-js/parser" "^1.2.1" + "@mermaid-js/parser" "^2.0.0" "@types/d3" "^7.4.3" "@upsetjs/venn.js" "^2.0.0" + chevrotain "~11.1.2" cytoscape "^3.34.0" cytoscape-cose-bilkent "^4.1.0" cytoscape-fcose "^2.2.0" @@ -10313,9 +10358,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" @@ -13469,11 +13514,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"