From 12e7bf692084e14563ea53b34d3135d2fd1cc11b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20Marussy?= Date: Thu, 11 Apr 2024 20:45:18 +0200 Subject: [PATCH] feat(web): embed SVG into HTML directly * Makes sure element IDs and CSS do not interfere with other diagrams in the same HTML document. * Disables SVGO to allow embedding in Docusaurus with CSS intact. * Replaces PNG figures with SVG in documentation. --- subprojects/docs/docusaurus.config.ts | 1 + subprojects/docs/src/css/custom.css | 4 + .../src/learn/tutorials/file-system/fig1.png | Bin 20110 -> 0 bytes .../src/learn/tutorials/file-system/fig1.svg | 72 +++++++++ .../{fig1.png.license => fig1.svg.license} | 0 .../src/learn/tutorials/file-system/fig2.png | Bin 44020 -> 0 bytes .../src/learn/tutorials/file-system/fig2.svg | 145 ++++++++++++++++++ .../{fig2.png.license => fig2.svg.license} | 0 .../src/learn/tutorials/file-system/fig3.png | Bin 26950 -> 0 bytes .../src/learn/tutorials/file-system/fig3.svg | 124 +++++++++++++++ .../{fig3.png.license => fig3.svg.license} | 0 .../src/learn/tutorials/file-system/fig4.png | Bin 38143 -> 0 bytes .../src/learn/tutorials/file-system/fig4.svg | 131 ++++++++++++++++ .../{fig4.png.license => fig4.svg.license} | 0 .../src/learn/tutorials/file-system/index.md | 16 +- subprojects/docs/src/plugins/loadersPlugin.ts | 72 +++++++++ .../frontend/src/graph/export/ExportPanel.tsx | 52 +++++-- .../src/graph/export/ExportSettingsStore.ts | 28 +++- .../src/graph/export/exportDiagram.tsx | 122 ++++++++++++--- yarn.lock | 132 +++++++++------- 20 files changed, 801 insertions(+), 98 deletions(-) delete mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig1.png create mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig1.svg rename subprojects/docs/src/learn/tutorials/file-system/{fig1.png.license => fig1.svg.license} (100%) delete mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig2.png create mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig2.svg rename subprojects/docs/src/learn/tutorials/file-system/{fig2.png.license => fig2.svg.license} (100%) delete mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig3.png create mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig3.svg rename subprojects/docs/src/learn/tutorials/file-system/{fig3.png.license => fig3.svg.license} (100%) delete mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig4.png create mode 100644 subprojects/docs/src/learn/tutorials/file-system/fig4.svg rename subprojects/docs/src/learn/tutorials/file-system/{fig4.png.license => fig4.svg.license} (100%) create mode 100644 subprojects/docs/src/plugins/loadersPlugin.ts diff --git a/subprojects/docs/docusaurus.config.ts b/subprojects/docs/docusaurus.config.ts index ed5e450eb..62d963a19 100644 --- a/subprojects/docs/docusaurus.config.ts +++ b/subprojects/docs/docusaurus.config.ts @@ -52,6 +52,7 @@ export default { markdownOptions satisfies PagesOptions, ], '@docusaurus/plugin-sitemap', + './src/plugins/loadersPlugin.ts', './src/plugins/swcMinifyPlugin.ts', ], themes: [ diff --git a/subprojects/docs/src/css/custom.css b/subprojects/docs/src/css/custom.css index f9c14bc4a..51d9e6981 100644 --- a/subprojects/docs/src/css/custom.css +++ b/subprojects/docs/src/css/custom.css @@ -125,3 +125,7 @@ code { .hero__title { font-weight: 800; } + +.markdown svg { + max-width: 100%; +} diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig1.png b/subprojects/docs/src/learn/tutorials/file-system/fig1.png deleted file mode 100644 index da30af3c016fbbee74533f72d3140e59a8f074be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20110 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 diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig1.svg b/subprojects/docs/src/learn/tutorials/file-system/fig1.svg new file mode 100644 index 000000000..f39a43fe6 --- /dev/null +++ b/subprojects/docs/src/learn/tutorials/file-system/fig1.svg @@ -0,0 +1,72 @@ + + + + + + + + +FileSystem::new + +FileSystem + + + + + + + + + +File::new + +File + + + + + + + + + +root + + + + + + +Dir::new + +File + + +Dir + + + + + + + + + +root + + + + + + +element + + + + + + +element + + + \ No newline at end of file diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig1.png.license b/subprojects/docs/src/learn/tutorials/file-system/fig1.svg.license similarity index 100% rename from subprojects/docs/src/learn/tutorials/file-system/fig1.png.license rename to subprojects/docs/src/learn/tutorials/file-system/fig1.svg.license diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig2.png b/subprojects/docs/src/learn/tutorials/file-system/fig2.png deleted file mode 100644 index f42e3d3e023f1438312992361677684fef1eb3a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44020 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
n{y|z%tZxxIA#2x!XL7 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 Y`x+IQNR~v|N&uUN5=ms+&p>-1{0NwE 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 ezdsQB^7w3#UK?tz(;e{yyvax?ikFEQ`2R1 + + + + + + + +FileSystem::new + +FileSystem + + + + + + + + + +File::new + +File + + + + + + + + + +root + + + + + + +Dir::new + +File + + +Dir + + + + + + + + + +root + + + + + + + +element + + + + +resources + +File + + +Dir + + + + + + + + + + + +element + + + + +root + + + + + + + + +element + + + + + + +element + + + + + + +img + +File + + +Dir + + + + + + + + + +element + + + + + + +element + + + + + + +element + + + \ No newline at end of file diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig2.png.license b/subprojects/docs/src/learn/tutorials/file-system/fig2.svg.license similarity index 100% rename from subprojects/docs/src/learn/tutorials/file-system/fig2.png.license rename to subprojects/docs/src/learn/tutorials/file-system/fig2.svg.license diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig3.png b/subprojects/docs/src/learn/tutorials/file-system/fig3.png deleted file mode 100644 index 9506417a3dd9a25aefa66af9f85e3a5c5d8c9a44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26950 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 + + + + + + + +FileSystem::new + +FileSystem +exists + + + + + + + + + + + +File::new + +File +exists + + + + + + + + + +equals + + + + + + +Dir::new + +File +exists + + + + +Dir + + + + + + + + + + +equals + + + + + + +resources + +File +exists + + + + +Dir + + + + + + + +equals + + + + + + + + +equals + + + + + + +img + +File +exists + + + + +Dir + + + + + + + + + + +equals + + + \ No newline at end of file diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig3.png.license b/subprojects/docs/src/learn/tutorials/file-system/fig3.svg.license similarity index 100% rename from subprojects/docs/src/learn/tutorials/file-system/fig3.png.license rename to subprojects/docs/src/learn/tutorials/file-system/fig3.svg.license diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig4.png b/subprojects/docs/src/learn/tutorials/file-system/fig4.png deleted file mode 100644 index cc012f2401d1102ab3f8c7db849e029b841c6c27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38143 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 TL_Htn00000NkvXXu0mjfxz{4- diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig4.svg b/subprojects/docs/src/learn/tutorials/file-system/fig4.svg new file mode 100644 index 000000000..704f94049 --- /dev/null +++ b/subprojects/docs/src/learn/tutorials/file-system/fig4.svg @@ -0,0 +1,131 @@ + + + + + + + + +FileSystem::new + +FileSystem + + + + + + + + + +File::new + +File + + + + + + + + + +Dir::new + +File + + + +Dir + + + + + + +root + + + + + + + + + +resources + +File + + + +Dir + + + + + + + + +root + + + + + + +element + + + + + + + +element + + + + + + +img + +File +invalidContainer + + + + + + + + + +root + + + + + +element + + + + + + + +element + + + + + + + +element + + + \ No newline at end of file diff --git a/subprojects/docs/src/learn/tutorials/file-system/fig4.png.license b/subprojects/docs/src/learn/tutorials/file-system/fig4.svg.license similarity index 100% rename from subprojects/docs/src/learn/tutorials/file-system/fig4.png.license rename to subprojects/docs/src/learn/tutorials/file-system/fig4.svg.license diff --git a/subprojects/docs/src/learn/tutorials/file-system/index.md b/subprojects/docs/src/learn/tutorials/file-system/index.md index 1d15512fc..365d0fba2 100644 --- a/subprojects/docs/src/learn/tutorials/file-system/index.md +++ b/subprojects/docs/src/learn/tutorials/file-system/index.md @@ -42,7 +42,9 @@ import Link from '@docusaurus/Link'; - Notice that the syntax is essentially identical to [Xcore](https://wiki.eclipse.org/Xcore). - Review the partial model visualization. You should get something like this: -![Initial model](fig1.png) +import Fig1 from './fig1.svg'; + + - Add some statements about a partial model: @@ -64,7 +66,9 @@ File(img). scope node = 10. ``` -![Partial model extended with new facts](fig2.png) +import Fig2 from './fig2.svg'; + + ### Partial models @@ -72,7 +76,9 @@ scope node = 10. - Check the disabled `equals` and `exist` predicates. check the visual annotation of those predicates in the visualization (dashed line, shadow). -![Object existence and equality](fig3.png) +import Fig3 from './fig3.svg'; + + ### Information merging @@ -95,7 +101,9 @@ element(resources, img). - Inconsistent models parts in a partial model typically make the problem trivially unsatisfiable. -![Inconsistent partial model](fig4.png) +import Fig4 from './fig4.svg'; + + - However, the model can be saved if the inconsistent part may not exist... diff --git a/subprojects/docs/src/plugins/loadersPlugin.ts b/subprojects/docs/src/plugins/loadersPlugin.ts new file mode 100644 index 000000000..284745118 --- /dev/null +++ b/subprojects/docs/src/plugins/loadersPlugin.ts @@ -0,0 +1,72 @@ +/* + * SPDX-FileCopyrightText: 2024 The Refinery Authors + * + * SPDX-License-Identifier: EPL-2.0 + */ + +import type { Plugin } from '@docusaurus/types'; + +export default function loadersPlugin(): Plugin { + return { + name: 'refinery-loaders-plugin', + configureWebpack(config) { + let svgoDisabled = false; + const rules = [...(config.module?.rules ?? [])]; + rules.forEach((rule) => { + // Compare with + // https://github.com/facebook/docusaurus/blob/73016d4936164ba38d4b86ec2aa8c168b5904a21/packages/docusaurus-utils/src/webpackUtils.ts#L128-L166 + if ( + typeof rule !== 'object' || + rule === null || + !('test' in rule) || + !(rule.test instanceof RegExp) || + !rule.test.test('.svg') || + !('oneOf' in rule) + ) { + return; + } + const { + oneOf: [svgLoader], + } = rule; + if ( + typeof svgLoader !== 'object' || + svgLoader === null || + !('use' in svgLoader) || + typeof svgLoader.use !== 'object' || + svgLoader.use === null || + !(0 in svgLoader.use) + ) { + return; + } + const { + use: [loader], + } = svgLoader; + if ( + typeof loader !== 'object' || + loader === null || + !('options' in loader) + ) { + return; + } + loader.options = { + ...(typeof loader.options === 'object' ? loader.options : {}), + // Disable SVGO, because it interferes styling figures exported from Refinery with CSS. + svgo: false, + svgoConfig: undefined, + }; + svgoDisabled = true; + }); + if (!svgoDisabled) { + throw new Error('Failed to disable SVGO.'); + } + return { + mergeStrategy: { + 'module.rules': 'replace', + }, + module: { + rules, + }, + }; + }, + }; +} diff --git a/subprojects/frontend/src/graph/export/ExportPanel.tsx b/subprojects/frontend/src/graph/export/ExportPanel.tsx index c93fa8377..8d82b95c7 100644 --- a/subprojects/frontend/src/graph/export/ExportPanel.tsx +++ b/subprojects/frontend/src/graph/export/ExportPanel.tsx @@ -6,6 +6,7 @@ import ChevronRightIcon from '@mui/icons-material/ChevronRight'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; +import ContrastIcon from '@mui/icons-material/Contrast'; import DarkModeIcon from '@mui/icons-material/DarkMode'; import ImageIcon from '@mui/icons-material/Image'; import InsertDriveFileOutlinedIcon from '@mui/icons-material/InsertDriveFileOutlined'; @@ -50,6 +51,13 @@ const SwitchButtonGroup = styled(ToggleButtonGroup, { }, })); +const AutoThemeMessage = styled(Typography, { + name: 'ExportPanel-AutoThemeMessage', +})(({ theme }) => ({ + width: '260px', + marginInline: theme.spacing(2), +})); + function getLabel(value: number): string { return `${value}%`; } @@ -155,29 +163,40 @@ function ExportPanel({ exportSettingsStore.setTheme('light')} > Light exportSettingsStore.setTheme('dark')} > Dark + {exportSettingsStore.canSetDynamicTheme && ( + exportSettingsStore.setTheme('dynamic')} + > + Auto + + )} - exportSettingsStore.toggleTransparent()} - /> - } - label="Transparent background" - /> + {exportSettingsStore.canChangeTransparency && ( + exportSettingsStore.toggleTransparent()} + /> + } + label="Transparent background" + /> + )} {exportSettingsStore.canEmbedFonts && ( )} + {exportSettingsStore.theme === 'dynamic' && ( + <> + + For embedding into HTML directly + + + Set data-theme="dark" on a containing element + to use a dark theme + + + )} {exportSettingsStore.canScale && ( (); + let i = 0; + svgDocument.querySelectorAll('[id]').forEach((node) => { + const oldId = node.getAttribute('id'); + if (oldId === null) { + return; + } + if (oldId.endsWith(',clip')) { + const newId = `refinery-${id}-clip-${i}`; + i += 1; + idMap.set(`url(#${oldId})`, `url(#${newId})`); + node.setAttribute('id', newId); + } else { + node.setAttribute('id', ''); + } + }); + svgDocument.querySelectorAll('[clip-path]').forEach((node) => { + const oldPath = node.getAttribute('clip-path'); + if (oldPath === null) { + return; + } + const newPath = idMap.get(oldPath); + if (newPath === undefined) { + return; + } + node.setAttribute('clip-path', newPath); + }); +} + function addBackground( svgDocument: XMLDocument, svg: SVGSVGElement, @@ -142,40 +173,54 @@ async function fetchVariableFontCSS(): Promise { return variableFontCSS; } +interface ThemeVariant { + selector: string; + theme: Theme; +} + function appendStyles( + id: string, svgDocument: XMLDocument, svg: SVGSVGElement, - theme: Theme, + themes: ThemeVariant[], colorNodes: boolean, hexTypeHashes: string[], fontsCSS: string, ): void { - const cache = createCache({ - key: 'refinery', - container: svg, - prepend: true, - }); - // @ts-expect-error `CSSObject` types don't match up between `@mui/material` and - // `@emotion/serialize`, but they are compatible in practice. - const styles = serializeStyles([createGraphTheme], cache.registered, { - theme, - colorNodes, - hexTypeHashes, - noEmbedIcons: true, - }); + const className = `refinery-${id}`; + svg.classList.add(className); const rules: string[] = [fontsCSS]; - const sheet = { - insert(rule) { - rules.push(rule); - }, - } as StyleSheet; - cache.insert('', styles, sheet, false); + themes.forEach(({ selector, theme }) => { + const cache = createCache({ + key: 'refinery', + container: svg, + prepend: true, + }); + // @ts-expect-error `CSSObject` types don't match up between `@mui/material` and + // `@emotion/serialize`, but they are compatible in practice. + const styles = serializeStyles([createGraphTheme], cache.registered, { + theme, + colorNodes, + hexTypeHashes, + noEmbedIcons: true, + }); + const sheet = { + insert(rule) { + rules.push(rule); + }, + } as StyleSheet; + cache.insert(`${selector} .${className}`, styles, sheet, false); + }); const styleElement = svgDocument.createElementNS(SVG_NS, 'style'); svg.prepend(styleElement); styleElement.innerHTML = rules.join(''); } -function fixForeignObjects(svgDocument: XMLDocument, svg: SVGSVGElement): void { +function fixForeignObjects( + id: string, + svgDocument: XMLDocument, + svg: SVGSVGElement, +): void { const foreignObjects: SVGForeignObjectElement[] = []; svg .querySelectorAll('foreignObject') @@ -197,7 +242,7 @@ function fixForeignObjects(svgDocument: XMLDocument, svg: SVGSVGElement): void { object.children[0]?.classList?.forEach((className) => { useElement.classList.add(className); if (ICONS.has(className)) { - useElement.setAttribute('href', `#${className}`); + useElement.setAttribute('href', `#refinery-${id}-${className}`); } }); object.replaceWith(useElement); @@ -206,6 +251,7 @@ function fixForeignObjects(svgDocument: XMLDocument, svg: SVGSVGElement): void { svg.prepend(defs); ICONS.forEach((value) => { const importedValue = svgDocument.importNode(value, true); + importedValue.id = `refinery-${id}-${importedValue.id}`; defs.appendChild(importedValue); }); } @@ -322,12 +368,37 @@ export default async function exportDiagram( svgDocument.replaceChild(copyOfSVG, originalRoot); } - const theme = settings.theme === 'light' ? lightTheme : darkTheme; + const id = nanoid(); + fixIDs(id, svgDocument); + + let theme: Theme; + let themes: ThemeVariant[]; + if (settings.theme === 'dynamic') { + theme = lightTheme; + themes = [ + { + selector: '', + theme: lightTheme, + }, + { + selector: '[data-theme="dark"]', + theme: darkTheme, + }, + ]; + } else { + theme = settings.theme === 'light' ? lightTheme : darkTheme; + themes = [ + { + selector: '', + theme, + }, + ]; + } if (!settings.transparent) { addBackground(svgDocument, copyOfSVG, theme); } - fixForeignObjects(svgDocument, copyOfSVG); + fixForeignObjects(id, svgDocument, copyOfSVG); const { colorNodes } = graph; let fontsCSS = ''; @@ -339,9 +410,10 @@ export default async function exportDiagram( fontsCSS = await fetchFontCSS(); } appendStyles( + id, svgDocument, copyOfSVG, - theme, + themes, colorNodes, graph.hexTypeHashes, fontsCSS, diff --git a/yarn.lock b/yarn.lock index 25d0919d5..0dd63986e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3141,93 +3141,107 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.13.0" +"@rollup/rollup-android-arm-eabi@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.14.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-android-arm64@npm:4.13.0" +"@rollup/rollup-android-arm64@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-android-arm64@npm:4.14.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.13.0" +"@rollup/rollup-darwin-arm64@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.14.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.13.0" +"@rollup/rollup-darwin-x64@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.14.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.13.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.14.1" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.13.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.14.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.13.0" +"@rollup/rollup-linux-arm64-musl@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.14.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.13.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.14.1" + conditions: os=linux & cpu=ppc64le & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-riscv64-gnu@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.14.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.13.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.14.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@rollup/rollup-linux-x64-gnu@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.14.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.13.0" +"@rollup/rollup-linux-x64-musl@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.14.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.13.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.14.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.13.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.14.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.13.0": - version: 4.13.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.13.0" +"@rollup/rollup-win32-x64-msvc@npm:4.14.1": + version: 4.14.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.14.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -14138,22 +14152,24 @@ __metadata: linkType: hard "rollup@npm:^4.13.0": - version: 4.13.0 - resolution: "rollup@npm:4.13.0" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.13.0" - "@rollup/rollup-android-arm64": "npm:4.13.0" - "@rollup/rollup-darwin-arm64": "npm:4.13.0" - "@rollup/rollup-darwin-x64": "npm:4.13.0" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.13.0" - "@rollup/rollup-linux-arm64-gnu": "npm:4.13.0" - "@rollup/rollup-linux-arm64-musl": "npm:4.13.0" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.13.0" - "@rollup/rollup-linux-x64-gnu": "npm:4.13.0" - "@rollup/rollup-linux-x64-musl": "npm:4.13.0" - "@rollup/rollup-win32-arm64-msvc": "npm:4.13.0" - "@rollup/rollup-win32-ia32-msvc": "npm:4.13.0" - "@rollup/rollup-win32-x64-msvc": "npm:4.13.0" + version: 4.14.1 + resolution: "rollup@npm:4.14.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.14.1" + "@rollup/rollup-android-arm64": "npm:4.14.1" + "@rollup/rollup-darwin-arm64": "npm:4.14.1" + "@rollup/rollup-darwin-x64": "npm:4.14.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.14.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.14.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.14.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.14.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.14.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.14.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.14.1" + "@rollup/rollup-linux-x64-musl": "npm:4.14.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.14.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.14.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.14.1" "@types/estree": "npm:1.0.5" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -14171,8 +14187,12 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true "@rollup/rollup-linux-x64-gnu": optional: true "@rollup/rollup-linux-x64-musl": @@ -14187,7 +14207,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/90f8cdf9c2115223cbcfe91d932170a85c0928ae1943f45af6877907ea150585b80f656cf2bc471c6f809cb7e158dd85dbea9f91ab4fd5bce0eaf6c3f5f4fd92 + checksum: 10c0/c9028c04537f7f16f9b5e4d75c84d2f0dc960d280fc4eca5960f0d67e786d993b8b707a63fc8b2e054b018fdb3a5a98d5eb7ed5674635c7612dd0b66696805fa languageName: node linkType: hard