From afb97e098b1e7d8b407ae1370e42787156e41a1b Mon Sep 17 00:00:00 2001 From: mashehu Date: Mon, 16 Jun 2025 09:25:37 +0200 Subject: [PATCH] add file-tree component --- bin/remark-tree.ts | 293 +++++++++ package-lock.json | 604 +++++++++--------- package.json | 4 + sites/configs/astro.config.mjs | 4 +- sites/configs/package.json | 1 + sites/docs/astro.config.mjs | 4 +- sites/docs/package.json | 1 + .../docs/contributing/website/markdown.md | 28 + .../pipelines/recommendations/testing.md | 6 +- sites/main-site/astro.config.mjs | 2 + sites/main-site/package.json | 1 + .../src/components/markdown/Markdown.svelte | 2 + .../markdown/MarkdownWrapper.svelte | 105 +++ sites/main-site/src/styles/main.scss | 34 + sites/modules-subworkflows/astro.config.mjs | 4 +- sites/modules-subworkflows/package.json | 1 + sites/pipeline-results/astro.config.mjs | 4 +- sites/pipeline-results/package.json | 1 + sites/pipelines/astro.config.mjs | 4 +- sites/pipelines/package.json | 1 + test-tree.md | 25 + 21 files changed, 832 insertions(+), 297 deletions(-) create mode 100644 bin/remark-tree.ts create mode 100644 test-tree.md diff --git a/bin/remark-tree.ts b/bin/remark-tree.ts new file mode 100644 index 0000000000..deb19ed857 --- /dev/null +++ b/bin/remark-tree.ts @@ -0,0 +1,293 @@ +import type { RemarkPlugin } from '@astrojs/markdown-remark'; +import type { Element, ElementContent, Text } from 'hast'; +import { type Child, h } from 'hastscript'; +import { toHtml } from 'hast-util-to-html'; +import { visit } from 'unist-util-visit'; +import { getIconData, iconToSVG, replaceIDs } from '@iconify/utils'; +import type { IconifyJSON } from '@iconify/types'; +import { fromHtml } from 'hast-util-from-html'; + +// Import icon collections +import vscodeIcons from '@iconify-json/vscode-icons/icons.json' assert { type: 'json' }; + +/** + * Get hast element for an icon + */ +function getIconElement(iconName: string, iconSet: IconifyJSON): Element | null { + const iconData = getIconData(iconSet, iconName); + if (!iconData) return null; + + const renderResult = iconToSVG(iconData, { + height: '16', + width: '16', + }); + + // Create complete SVG as HTML string and parse it into hast + const svgString = ``; + const cleanSvg = replaceIDs(svgString); + + // Parse the SVG HTML into a proper hast tree + const parsed = fromHtml(cleanSvg, { fragment: true }); + + // Return the first (and only) child which should be the SVG element + return (parsed.children[0] as Element) || null; +} + +/** + * Get appropriate icon name for file/folder using VSCode Icons + */ +function getVSCodeIconName(filename: string, isDirectory: boolean): string { + if (isDirectory) { + return 'default-folder'; + } + + // Get file extension + const ext = filename.split('.').pop()?.toLowerCase() || ''; + + // Map common extensions to vscode-icons names + const iconMap: Record = { + // Documents + 'md': 'file-type-markdown', + 'txt': 'file-type-text', + 'pdf': 'file-type-pdf2', + 'doc': 'file-type-word', + 'docx': 'file-type-word', + + // Code files + 'js': 'file-type-js', + 'ts': 'file-type-typescript', + 'jsx': 'file-type-reactjs', + 'tsx': 'file-type-reactts', + 'py': 'file-type-python', + 'java': 'file-type-java', + 'test': 'file-type-nextflow', + 'nf': 'file-type-nextflow', + + // Web files + 'html': 'file-type-html', + 'css': 'file-type-css', + 'scss': 'file-type-scss', + 'sass': 'file-type-sass', + 'svelte': 'file-type-svelte', + 'astro': 'file-type-astro', + + // Config files + 'json': 'file-type-json', + 'yaml': 'file-type-yaml', + 'yml': 'file-type-yaml', + 'toml': 'file-type-toml', + 'xml': 'file-type-xml', + 'ini': 'file-type-config', + 'conf': 'file-type-config', + 'config': 'file-type-nextflow', + + // Images + 'png': 'file-type-image', + 'jpg': 'file-type-image', + 'jpeg': 'file-type-image', + 'gif': 'file-type-image', + 'svg': 'file-type-svg', + + // Archives + 'zip': 'file-type-zip', + 'tar': 'file-type-zip2', + 'gz': 'file-type-zip2', + + // Special files + 'dockerfile': 'file-type-docker', + 'lock': 'file-type-lock', + 'log': 'file-type-log', + 'env': 'file-type-dotenv', + 'gitignore': 'file-type-git', + 'gitmodules': 'file-type-git', + 'gitattributes': 'file-type-git', + 'license': 'file-type-certificate', + 'readme': 'file-type-readme', + }; + + // Check for special filenames (case insensitive) + const lowerFilename = filename.toLowerCase(); + if (lowerFilename.includes('dockerfile')) return 'file-type-docker'; + if (lowerFilename.includes('readme')) return 'file-type-readme'; + if (lowerFilename.includes('license')) return 'file-type-certificate'; + if (lowerFilename.includes('changelog')) return 'file-type-readme'; + if (lowerFilename.includes('.env')) return 'file-type-dotenv'; + if (lowerFilename.includes('prettier')) return 'file-type-prettier'; + + // Return mapped icon or default document icon + return iconMap[ext] || 'default-file'; +} + +/** + * Parse tree structure from text content and generate hast tree + */ +function parseTreeContent(content: string): Element { + const lines = content.trim().split('\n'); + const rootList = h('ul', { class: 'file-tree border rounded p-3 bg-body-tertiary list-unstyled' }); + + // Stack to keep track of parent elements at each depth level + const parentStack: Element[] = [rootList]; + + for (const line of lines) { + if (!line.trim()) continue; + + // Count leading spaces to determine depth + const leadingSpaces = line.match(/^\s*/)?.[0] || ''; + const rest = line.slice(leadingSpaces.length); + + // Parse tree characters and extract filename + const cleanLine = rest.replace(/^[├└│─\s]*/, '').trim(); + if (!cleanLine) continue; + + // Calculate depth based on tree structure + let depth = 0; + + // Count all tree structure characters (│, ├, └) to determine depth + const treeChars = (rest.match(/[│├└]/g) || []).length; + depth = treeChars; + + // If no tree characters, use indentation-based depth calculation + if (depth === 0 && leadingSpaces.length > 0) { + depth = Math.floor(leadingSpaces.length / 4); + } + + // Parse filename and comment + const [filename, ...commentParts] = cleanLine.split(' '); + const comment = commentParts.join(' ').trim(); + + // Determine if it's a directory + const isDirectory = filename.endsWith('/') || !filename.includes('.'); + const cleanFilename = filename.endsWith('/') ? filename.slice(0, -1) : filename; + + // Adjust parent stack to match current depth + // We need to ensure we have the right parent at the current depth + while (parentStack.length > depth + 1) { + parentStack.pop(); + } + + // Get current parent (should be a ul element) + const currentParent = parentStack[parentStack.length - 1]; + + // Create list item with proper structure + const listItem = createTreeEntry(cleanFilename, comment, isDirectory, depth); + + // Add the list item to current parent + currentParent.children.push(listItem); + + // If this is a directory, create a nested ul and add it to the stack + if (isDirectory) { + const nestedList = h('ul', { class: 'nested-list ms-2 mt-1 list-unstyled' }); + listItem.children.push(nestedList); + parentStack.push(nestedList); + } + } + + return rootList; +} + +/** + * Create a tree entry (list item) with icon, filename, and optional comment + */ +function createTreeEntry(filename: string, comment: string, isDirectory: boolean, depth: number): Element { + const iconElement = createFileIcon(filename, isDirectory); + + // Create the main content + const entryChildren: Child[] = [iconElement]; + + // Add filename + entryChildren.push(h('span', { class: 'file-name', title: filename }, filename)); + + // Add comment if present + if (comment) { + entryChildren.push(makeText(' '), h('span', { class: 'text-muted comment' }, comment)); + } + + // Create the tree entry span + const treeEntry = h('span', { class: 'tree-entry' }, ...entryChildren); + + // Create list item with proper Bootstrap classes + const listItem = h('li', { + class: 'tree-item', + 'data-filename': filename, + 'data-is-directory': isDirectory.toString(), + 'data-depth': depth.toString() + }, h('div', { class: 'd-flex align-items-center py-0' }, treeEntry)); + + return listItem; +} + +/** + * Create file icon element using inline SVG from VSCode Icons + */ +function createFileIcon(filename: string, isDirectory: boolean): Element { + const iconName = getVSCodeIconName(filename, isDirectory); + const iconElement = getIconElement(iconName, vscodeIcons); + + if (iconElement) { + return iconElement; + } + + // Fallback to a simple generic icon if SVG generation fails + const fallbackIcon = isDirectory + ? '📁' + : '📄'; + + return h('span', { + class: 'tree-icon me-2', + 'aria-hidden': 'true', + style: 'font-size: 16px; line-height: 1;' + }, fallbackIcon); +} + +/** + * Create a text node with the specified value + */ +function makeText(value = ''): Text { + return { type: 'text', value }; +} + +/** + * Validate tree content structure + */ +function validateTreeContent(content: string): void { + if (!content || !content.trim()) { + throw new Error('Tree content cannot be empty'); + } + + const lines = content.trim().split('\n'); + const validLines = lines.filter(line => line.trim()); + + if (validLines.length === 0) { + throw new Error('Tree must contain at least one valid entry'); + } +} + +/** + * Process tree content and return HTML string + */ +function processTreeContent(content: string): string { + validateTreeContent(content); + const hastTree = parseTreeContent(content); + return toHtml(hastTree); +} + +export const remarkTree: RemarkPlugin<[]> = () => (tree) => { + visit(tree, 'code', (node) => { + if (node.lang !== 'tree') return; + + try { + const treeHTML = processTreeContent(node.value); + // @ts-ignore + node.type = 'html'; + node.value = treeHTML; + } catch (error) { + console.error('Error processing tree:', error); + // Fallback to original content wrapped in a code block + // @ts-ignore + node.type = 'html'; + node.value = `
Error rendering tree: ${error instanceof Error ? error.message : 'Unknown error'}
`; + } + }); +}; + +export default remarkTree; diff --git a/package-lock.json b/package-lock.json index 1aedc7ac1f..27765cd34b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,10 @@ "sites/*" ], "dependencies": { + "@iconify-json/vscode-icons": "^1.2.22", + "hast": "^1.0.0", + "hast-util-to-html": "^9.0.5", + "hastscript": "^9.0.1", "remark": "^15.0.1", "unist-util-visit": "^5.0.0" } @@ -672,16 +676,16 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.826.0.tgz", - "integrity": "sha512-odX3C3CEbcBoxB06vgBjJ9jQheFsIFwHmvCIMXn8duuVyIL/klgp14+ICzbEwIgPv7xVjSlycaiURcKS876QHA==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.828.0.tgz", + "integrity": "sha512-TvFyrEfJkf9NN3cq5mXCgFv/sPaA8Rm5tEPgV5emuLedeGsORlWmVpdSKqfZ4lSoED1tMfNM6LY4uA9D8/RS5g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.826.0", - "@aws-sdk/credential-provider-node": "3.826.0", + "@aws-sdk/credential-provider-node": "3.828.0", "@aws-sdk/middleware-bucket-endpoint": "3.821.0", "@aws-sdk/middleware-expect-continue": "3.821.0", "@aws-sdk/middleware-flexible-checksums": "3.826.0", @@ -691,13 +695,13 @@ "@aws-sdk/middleware-recursion-detection": "3.821.0", "@aws-sdk/middleware-sdk-s3": "3.826.0", "@aws-sdk/middleware-ssec": "3.821.0", - "@aws-sdk/middleware-user-agent": "3.826.0", + "@aws-sdk/middleware-user-agent": "3.828.0", "@aws-sdk/region-config-resolver": "3.821.0", "@aws-sdk/signature-v4-multi-region": "3.826.0", "@aws-sdk/types": "3.821.0", - "@aws-sdk/util-endpoints": "3.821.0", + "@aws-sdk/util-endpoints": "3.828.0", "@aws-sdk/util-user-agent-browser": "3.821.0", - "@aws-sdk/util-user-agent-node": "3.826.0", + "@aws-sdk/util-user-agent-node": "3.828.0", "@aws-sdk/xml-builder": "3.821.0", "@smithy/config-resolver": "^4.1.4", "@smithy/core": "^3.5.3", @@ -739,9 +743,9 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.826.0.tgz", - "integrity": "sha512-/FEKnUC3xPkLL4RuRydwzx+y4b55HIX6qLPbGnyIs+sNmCUyc/62ijtV1Ml+b++YzEF6jWNBsJOxeyZdgrJ3Ig==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.828.0.tgz", + "integrity": "sha512-qxw8JcPTaFaBwTBUr4YmLajaMh3En65SuBWAKEtjctbITRRekzR7tvr/TkwoyVOh+XoAtkwOn+BQeQbX+/wgHw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -750,12 +754,12 @@ "@aws-sdk/middleware-host-header": "3.821.0", "@aws-sdk/middleware-logger": "3.821.0", "@aws-sdk/middleware-recursion-detection": "3.821.0", - "@aws-sdk/middleware-user-agent": "3.826.0", + "@aws-sdk/middleware-user-agent": "3.828.0", "@aws-sdk/region-config-resolver": "3.821.0", "@aws-sdk/types": "3.821.0", - "@aws-sdk/util-endpoints": "3.821.0", + "@aws-sdk/util-endpoints": "3.828.0", "@aws-sdk/util-user-agent-browser": "3.821.0", - "@aws-sdk/util-user-agent-node": "3.826.0", + "@aws-sdk/util-user-agent-node": "3.828.0", "@smithy/config-resolver": "^4.1.4", "@smithy/core": "^3.5.3", "@smithy/fetch-http-handler": "^5.0.4", @@ -885,18 +889,18 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.826.0.tgz", - "integrity": "sha512-g7n+qSklq/Lzjxe2Ke5QFNCgYn26a3ydZnbFIk8QqYin4pzG+qiunaqJjpV3c/EeHMlfK8bBc7MXAylKzGRccQ==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.828.0.tgz", + "integrity": "sha512-T3DJMo2/j7gCPpFg2+xEHWgua05t8WP89ye7PaZxA2Fc6CgScHkZsJZTri1QQIU2h+eOZ75EZWkeFLIPgN0kRQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.826.0", "@aws-sdk/credential-provider-env": "3.826.0", "@aws-sdk/credential-provider-http": "3.826.0", "@aws-sdk/credential-provider-process": "3.826.0", - "@aws-sdk/credential-provider-sso": "3.826.0", - "@aws-sdk/credential-provider-web-identity": "3.826.0", - "@aws-sdk/nested-clients": "3.826.0", + "@aws-sdk/credential-provider-sso": "3.828.0", + "@aws-sdk/credential-provider-web-identity": "3.828.0", + "@aws-sdk/nested-clients": "3.828.0", "@aws-sdk/types": "3.821.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -909,17 +913,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.826.0.tgz", - "integrity": "sha512-UfIJXxHjmSxH6bea00HBPLkjNI2D04enQA/xNLZvB+4xtzt1/gYdCis1P4/73f5aGVVVB4/zQMobBbnjkrmbQw==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.828.0.tgz", + "integrity": "sha512-9z3iPwVYOQYNzVZj8qycZaS/BOSKRXWA+QVNQlfEnQ4sA4sOcKR4kmV2h+rJcuBsSFfmOF62ZDxyIBGvvM4t/w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.826.0", "@aws-sdk/credential-provider-http": "3.826.0", - "@aws-sdk/credential-provider-ini": "3.826.0", + "@aws-sdk/credential-provider-ini": "3.828.0", "@aws-sdk/credential-provider-process": "3.826.0", - "@aws-sdk/credential-provider-sso": "3.826.0", - "@aws-sdk/credential-provider-web-identity": "3.826.0", + "@aws-sdk/credential-provider-sso": "3.828.0", + "@aws-sdk/credential-provider-web-identity": "3.828.0", "@aws-sdk/types": "3.821.0", "@smithy/credential-provider-imds": "^4.0.6", "@smithy/property-provider": "^4.0.4", @@ -949,14 +953,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.826.0.tgz", - "integrity": "sha512-F19J3zcfoom6OnQ0MyAtvduVKQXPgkz9i5ExSO01J2CzjbyMhCDA99qAjHYe+LwhW+W7P/jzBPd0+uOQ2Nhh9Q==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.828.0.tgz", + "integrity": "sha512-9CEAXzUDSzOjOCb3XfM15TZhTaM+l07kumZyx2z8NC6T2U4qbCJqn4h8mFlRvYrs6cBj2SN40sD3r5Wp0Cq2Kw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.826.0", + "@aws-sdk/client-sso": "3.828.0", "@aws-sdk/core": "3.826.0", - "@aws-sdk/token-providers": "3.826.0", + "@aws-sdk/token-providers": "3.828.0", "@aws-sdk/types": "3.821.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -968,13 +972,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.826.0.tgz", - "integrity": "sha512-o27GZ6Hy7qhuvMFVUL2eFEpBzf33Jaa/x3u3SHwU0nL7ko7jmbpeF0x4+wmagpI9X2IvVlUxIs0VaQ3YayPLEA==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.828.0.tgz", + "integrity": "sha512-MguDhGHlQBeK9CQ/P4NOY0whAJ4HJU4x+f1dphg3I1sGlccFqfB8Moor2vXNKu0Th2kvAwkn9pr7gGb/+NGR9g==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.826.0", - "@aws-sdk/nested-clients": "3.826.0", + "@aws-sdk/nested-clients": "3.828.0", "@aws-sdk/types": "3.821.0", "@smithy/property-provider": "^4.0.4", "@smithy/types": "^4.3.1", @@ -1139,14 +1143,14 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.826.0.tgz", - "integrity": "sha512-j404+EcfBbtTlAhyObjXbdKwwDXO1pCxHvR5Fw8FXNvp/H330j6YnXgs3SJ6d3bZUwUJ/ztPx2S5AlBbLVLDFw==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.828.0.tgz", + "integrity": "sha512-nixvI/SETXRdmrVab4D9LvXT3lrXkwAWGWk2GVvQvzlqN1/M/RfClj+o37Sn4FqRkGH9o9g7Fqb1YqZ4mqDAtA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.826.0", "@aws-sdk/types": "3.821.0", - "@aws-sdk/util-endpoints": "3.821.0", + "@aws-sdk/util-endpoints": "3.828.0", "@smithy/core": "^3.5.3", "@smithy/protocol-http": "^5.1.2", "@smithy/types": "^4.3.1", @@ -1157,9 +1161,9 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.826.0.tgz", - "integrity": "sha512-p7olPq0uTtHqGuXI1GSc/gzKDvV55PMbLtnmupEDfnY9SoRu+QatbWQ6da9sI1lhOcNmRMgiNQBXFzaUFrG+SQ==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.828.0.tgz", + "integrity": "sha512-xmeOILiR9LvfC8MctgeRXXN8nQTwbOvO4wHvgE8tDRsjnBpyyO0j50R4+viHXdMUGtgGkHEXRv8fFNBq54RgnA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1168,12 +1172,12 @@ "@aws-sdk/middleware-host-header": "3.821.0", "@aws-sdk/middleware-logger": "3.821.0", "@aws-sdk/middleware-recursion-detection": "3.821.0", - "@aws-sdk/middleware-user-agent": "3.826.0", + "@aws-sdk/middleware-user-agent": "3.828.0", "@aws-sdk/region-config-resolver": "3.821.0", "@aws-sdk/types": "3.821.0", - "@aws-sdk/util-endpoints": "3.821.0", + "@aws-sdk/util-endpoints": "3.828.0", "@aws-sdk/util-user-agent-browser": "3.821.0", - "@aws-sdk/util-user-agent-node": "3.826.0", + "@aws-sdk/util-user-agent-node": "3.828.0", "@smithy/config-resolver": "^4.1.4", "@smithy/core": "^3.5.3", "@smithy/fetch-http-handler": "^5.0.4", @@ -1240,13 +1244,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.826.0.tgz", - "integrity": "sha512-iCOcVAqGPSHtQL8ZBXifZMEcHyUl9wJ8HvLZ5l1ohA/3ZNP+dqEPGi7jfhR5jZKs+xyp2jxByFqfil9PjI9c5A==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.828.0.tgz", + "integrity": "sha512-JdOjI/TxkfQpY/bWbdGMdCiePESXTbtl6MfnJxz35zZ3tfHvBnxAWCoYJirdmjzY/j/dFo5oEyS6mQuXAG9w2w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.826.0", - "@aws-sdk/nested-clients": "3.826.0", + "@aws-sdk/nested-clients": "3.828.0", "@aws-sdk/types": "3.821.0", "@smithy/property-provider": "^4.0.4", "@smithy/shared-ini-file-loader": "^4.0.4", @@ -1283,9 +1287,9 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.821.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.821.0.tgz", - "integrity": "sha512-Uknt/zUZnLE76zaAAPEayOeF5/4IZ2puTFXvcSCWHsi9m3tqbb9UozlnlVqvCZLCRWfQryZQoG2W4XSS3qgk5A==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.828.0.tgz", + "integrity": "sha512-RvKch111SblqdkPzg3oCIdlGxlQs+k+P7Etory9FmxPHyPDvsP1j1c74PmgYqtzzMWmoXTjd+c9naUHh9xG8xg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.821.0", @@ -1322,12 +1326,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.826.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.826.0.tgz", - "integrity": "sha512-wHw6bZQWIMcFF/8r03aY9Itp6JLBYY4absGGhCDK1dc3tPEfi8NVSdb05a/Oz+g4TVaDdxLo0OQ/OKMS1DFRHQ==", + "version": "3.828.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.828.0.tgz", + "integrity": "sha512-LdN6fTBzTlQmc8O8f1wiZN0qF3yBWVGis7NwpWK7FUEzP9bEZRxYfIkV9oV9zpt6iNRze1SedK3JQVB/udxBoA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.826.0", + "@aws-sdk/middleware-user-agent": "3.828.0", "@aws-sdk/types": "3.821.0", "@smithy/node-config-provider": "^4.1.3", "@smithy/types": "^4.3.1", @@ -2024,9 +2028,9 @@ } }, "node_modules/@iconify-json/fluent": { - "version": "1.2.23", - "resolved": "https://registry.npmjs.org/@iconify-json/fluent/-/fluent-1.2.23.tgz", - "integrity": "sha512-xSN0Qmg1YiHXhnF64+ghINT32SA8mNsoryjgG86jDmcmEePCdsx55Z4qNDnfzNGECfSx1M88h3y4DEA1og/oNg==", + "version": "1.2.24", + "resolved": "https://registry.npmjs.org/@iconify-json/fluent/-/fluent-1.2.24.tgz", + "integrity": "sha512-+v2oKQ7Jkvsm0cyJgD3IuilXkKp5De+3LhgR3T9u8PsdOxWqtBYYbxju6X4u50XhgNI5ciFoEC9FIwcjDNsSbg==", "license": "MIT", "dependencies": { "@iconify/types": "*" @@ -2086,6 +2090,15 @@ "@iconify/types": "*" } }, + "node_modules/@iconify-json/vscode-icons": { + "version": "1.2.23", + "resolved": "https://registry.npmjs.org/@iconify-json/vscode-icons/-/vscode-icons-1.2.23.tgz", + "integrity": "sha512-gFTcKecKra2/b5SbGDgHGI/l8CuikHyBPmqGlK+YCmS8AK72dtDQbUekdoACsju/3TYS37QvdPoOQwnyx2LdYg==", + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@iconify/tools": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/@iconify/tools/-/tools-4.1.2.tgz", @@ -2998,9 +3011,9 @@ } }, "node_modules/@netlify/zip-it-and-ship-it/node_modules/@netlify/serverless-functions-api": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-2.1.1.tgz", - "integrity": "sha512-MNYfEmZC6F7ZExOrB/Hrfkif7JW2Cbid9y5poTFEJ6rcAhCLQB8lo0SGlQrFXgKvXowXB14IjpOubaQu2zsyfg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@netlify/serverless-functions-api/-/serverless-functions-api-2.1.2.tgz", + "integrity": "sha512-uEFA0LAcBGd3+fgDSLkTTsrgyooKqu8mN/qA+F/COS2A7NFWRcLFnjVKH/xZhxq+oQkrSa+XPS9qj2wgQosiQw==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -3423,13 +3436,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", - "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.53.0.tgz", + "integrity": "sha512-15hjKreZDcp7t6TL/7jkAo6Df5STZN09jGiv5dbP9A6vMVncXRqE7/B2SncsyOwrkZRBH2i6/TPOL8BVmm3c7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.52.0" + "playwright": "1.53.0" }, "bin": { "playwright": "cli.js" @@ -3516,9 +3529,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz", - "integrity": "sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", "cpu": [ "arm" ], @@ -3529,9 +3542,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz", - "integrity": "sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", "cpu": [ "arm64" ], @@ -3542,9 +3555,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz", - "integrity": "sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", "cpu": [ "arm64" ], @@ -3555,9 +3568,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz", - "integrity": "sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", "cpu": [ "x64" ], @@ -3568,9 +3581,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz", - "integrity": "sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", "cpu": [ "arm64" ], @@ -3581,9 +3594,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz", - "integrity": "sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", "cpu": [ "x64" ], @@ -3594,9 +3607,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz", - "integrity": "sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", "cpu": [ "arm" ], @@ -3607,9 +3620,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz", - "integrity": "sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", "cpu": [ "arm" ], @@ -3620,9 +3633,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz", - "integrity": "sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", "cpu": [ "arm64" ], @@ -3633,9 +3646,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz", - "integrity": "sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", "cpu": [ "arm64" ], @@ -3646,9 +3659,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz", - "integrity": "sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", "cpu": [ "loong64" ], @@ -3659,9 +3672,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz", - "integrity": "sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", "cpu": [ "ppc64" ], @@ -3672,9 +3685,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz", - "integrity": "sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", "cpu": [ "riscv64" ], @@ -3685,9 +3698,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz", - "integrity": "sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", "cpu": [ "riscv64" ], @@ -3698,9 +3711,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz", - "integrity": "sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", "cpu": [ "s390x" ], @@ -3711,9 +3724,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz", - "integrity": "sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", "cpu": [ "x64" ], @@ -3724,9 +3737,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz", - "integrity": "sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", "cpu": [ "x64" ], @@ -3737,9 +3750,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz", - "integrity": "sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", "cpu": [ "arm64" ], @@ -3750,9 +3763,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz", - "integrity": "sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", "cpu": [ "ia32" ], @@ -3763,9 +3776,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz", - "integrity": "sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", "cpu": [ "x64" ], @@ -5021,9 +5034,9 @@ } }, "node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "version": "22.15.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", + "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -5084,13 +5097,13 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.1.tgz", - "integrity": "sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.0.tgz", + "integrity": "sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw==", "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.33.1", - "@typescript-eslint/types": "^8.33.1", + "@typescript-eslint/tsconfig-utils": "^8.34.0", + "@typescript-eslint/types": "^8.34.0", "debug": "^4.3.4" }, "engines": { @@ -5105,9 +5118,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz", - "integrity": "sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz", + "integrity": "sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5121,9 +5134,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.1.tgz", - "integrity": "sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.0.tgz", + "integrity": "sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5134,15 +5147,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz", - "integrity": "sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz", + "integrity": "sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg==", "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.33.1", - "@typescript-eslint/tsconfig-utils": "8.33.1", - "@typescript-eslint/types": "8.33.1", - "@typescript-eslint/visitor-keys": "8.33.1", + "@typescript-eslint/project-service": "8.34.0", + "@typescript-eslint/tsconfig-utils": "8.34.0", + "@typescript-eslint/types": "8.34.0", + "@typescript-eslint/visitor-keys": "8.34.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5162,12 +5175,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz", - "integrity": "sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz", + "integrity": "sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.1", + "@typescript-eslint/types": "8.34.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -5639,12 +5652,12 @@ } }, "node_modules/astro": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.9.1.tgz", - "integrity": "sha512-wxoJcTbuDZNFSv6EaL0PAlrp0Wx6VnOAULCXvy0scsV70oWMeUkdxuBxfO54JxO5Qgyvwj9h99y6E0elqOpGtA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.9.3.tgz", + "integrity": "sha512-VReZrpUa/3rfeiVvsQ1A2M3ujDPI+pDGIYOMtXPEZwut8tZoEyealXXLjitgCsJ+3dunKGZbg4Eak6i+r0vniw==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.12.1", + "@astrojs/compiler": "^2.12.2", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.2", "@astrojs/telemetry": "3.3.0", @@ -6219,9 +6232,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -6404,9 +6417,9 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -7860,9 +7873,9 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -8508,9 +8521,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8843,9 +8856,9 @@ } }, "node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -9373,6 +9386,13 @@ "node": ">= 0.4" } }, + "node_modules/hast": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hast/-/hast-1.0.0.tgz", + "integrity": "sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==", + "deprecated": "Renamed to rehype", + "license": "MIT" + }, "node_modules/hast-util-classnames": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-classnames/-/hast-util-classnames-3.0.0.tgz", @@ -9855,9 +9875,9 @@ "license": "BSD-3-Clause" }, "node_modules/immutable": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.2.tgz", - "integrity": "sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", "devOptional": true, "license": "MIT" }, @@ -12773,13 +12793,13 @@ "license": "MIT" }, "node_modules/playwright": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", - "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.53.0.tgz", + "integrity": "sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.52.0" + "playwright-core": "1.53.0" }, "bin": { "playwright": "cli.js" @@ -12792,9 +12812,9 @@ } }, "node_modules/playwright-core": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", - "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.53.0.tgz", + "integrity": "sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -12821,9 +12841,9 @@ } }, "node_modules/postcss": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", - "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", "funding": [ { "type": "opencollective", @@ -12872,9 +12892,9 @@ } }, "node_modules/preact": { - "version": "10.26.8", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.8.tgz", - "integrity": "sha512-1nMfdFjucm5hKvq0IClqZwK4FJkGXhRrQstOQ3P4vp8HxKrJEMFcY6RdBRVTdfQS/UlnX6gfbPuTvaqx/bDoeQ==", + "version": "10.26.9", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.26.9.tgz", + "integrity": "sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==", "license": "MIT", "funding": { "type": "opencollective", @@ -14040,9 +14060,9 @@ "license": "Unlicense" }, "node_modules/rollup": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz", - "integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", "license": "MIT", "dependencies": { "@types/estree": "1.0.7" @@ -14055,26 +14075,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.42.0", - "@rollup/rollup-android-arm64": "4.42.0", - "@rollup/rollup-darwin-arm64": "4.42.0", - "@rollup/rollup-darwin-x64": "4.42.0", - "@rollup/rollup-freebsd-arm64": "4.42.0", - "@rollup/rollup-freebsd-x64": "4.42.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.42.0", - "@rollup/rollup-linux-arm-musleabihf": "4.42.0", - "@rollup/rollup-linux-arm64-gnu": "4.42.0", - "@rollup/rollup-linux-arm64-musl": "4.42.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.42.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0", - "@rollup/rollup-linux-riscv64-gnu": "4.42.0", - "@rollup/rollup-linux-riscv64-musl": "4.42.0", - "@rollup/rollup-linux-s390x-gnu": "4.42.0", - "@rollup/rollup-linux-x64-gnu": "4.42.0", - "@rollup/rollup-linux-x64-musl": "4.42.0", - "@rollup/rollup-win32-arm64-msvc": "4.42.0", - "@rollup/rollup-win32-ia32-msvc": "4.42.0", - "@rollup/rollup-win32-x64-msvc": "4.42.0", + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", "fsevents": "~2.3.2" } }, @@ -14178,13 +14198,13 @@ "license": "MIT" }, "node_modules/sass-embedded": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.1.tgz", - "integrity": "sha512-alvGGlyYdkSXYKOfS/TTxUD0993EYOe3adIPtwCWEg037qe183p2dkYnbaRsCLJFKt+QoyRzhsrbCsK7sbR6MA==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.2.tgz", + "integrity": "sha512-Ack2K8rc57kCFcYlf3HXpZEJFNUX8xd8DILldksREmYXQkRHI879yy8q4mRDJgrojkySMZqmmmW1NxrFxMsYaA==", "devOptional": true, "license": "MIT", "dependencies": { - "@bufbuild/protobuf": "^2.0.0", + "@bufbuild/protobuf": "^2.5.0", "buffer-builder": "^0.2.0", "colorjs.io": "^0.5.0", "immutable": "^5.0.2", @@ -14200,28 +14220,28 @@ "node": ">=16.0.0" }, "optionalDependencies": { - "sass-embedded-android-arm": "1.89.1", - "sass-embedded-android-arm64": "1.89.1", - "sass-embedded-android-riscv64": "1.89.1", - "sass-embedded-android-x64": "1.89.1", - "sass-embedded-darwin-arm64": "1.89.1", - "sass-embedded-darwin-x64": "1.89.1", - "sass-embedded-linux-arm": "1.89.1", - "sass-embedded-linux-arm64": "1.89.1", - "sass-embedded-linux-musl-arm": "1.89.1", - "sass-embedded-linux-musl-arm64": "1.89.1", - "sass-embedded-linux-musl-riscv64": "1.89.1", - "sass-embedded-linux-musl-x64": "1.89.1", - "sass-embedded-linux-riscv64": "1.89.1", - "sass-embedded-linux-x64": "1.89.1", - "sass-embedded-win32-arm64": "1.89.1", - "sass-embedded-win32-x64": "1.89.1" + "sass-embedded-android-arm": "1.89.2", + "sass-embedded-android-arm64": "1.89.2", + "sass-embedded-android-riscv64": "1.89.2", + "sass-embedded-android-x64": "1.89.2", + "sass-embedded-darwin-arm64": "1.89.2", + "sass-embedded-darwin-x64": "1.89.2", + "sass-embedded-linux-arm": "1.89.2", + "sass-embedded-linux-arm64": "1.89.2", + "sass-embedded-linux-musl-arm": "1.89.2", + "sass-embedded-linux-musl-arm64": "1.89.2", + "sass-embedded-linux-musl-riscv64": "1.89.2", + "sass-embedded-linux-musl-x64": "1.89.2", + "sass-embedded-linux-riscv64": "1.89.2", + "sass-embedded-linux-x64": "1.89.2", + "sass-embedded-win32-arm64": "1.89.2", + "sass-embedded-win32-x64": "1.89.2" } }, "node_modules/sass-embedded-android-arm": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.1.tgz", - "integrity": "sha512-wVchZSz8zbJBwwOs9/iwco/M5G3L5BaeqwUF1EC3Gtzn1BsXYUEkJfftW2HxGl4hQz2YlpR7BY1GRN817uxADA==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.2.tgz", + "integrity": "sha512-oHAPTboBHRZlDBhyRB6dvDKh4KvFs+DZibDHXbkSI6dBZxMTT+Yb2ivocHnctVGucKTLQeT7+OM5DjWHyynL/A==", "cpu": [ "arm" ], @@ -14236,9 +14256,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.1.tgz", - "integrity": "sha512-Je6x7uuJRGQdr5ziSJdaPA4NhBSO26BU/E55qiuMUZpjq2EWBEJPbNeugu/cWlCEmfqoVuxj37r8aEU+KG0H1g==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.2.tgz", + "integrity": "sha512-+pq7a7AUpItNyPu61sRlP6G2A8pSPpyazASb+8AK2pVlFayCSPAEgpwpCE9A2/Xj86xJZeMizzKUHxM2CBCUxA==", "cpu": [ "arm64" ], @@ -14253,9 +14273,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.1.tgz", - "integrity": "sha512-DhWe+A4RVtpHMVaQgdzRpiczAXKPl7XhyY9USkY9Xkhv94+csTfjyuFmsUuCpKSiQDQkD+rGByfg+9yQIk/RgQ==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.2.tgz", + "integrity": "sha512-HfJJWp/S6XSYvlGAqNdakeEMPOdhBkj2s2lN6SHnON54rahKem+z9pUbCriUJfM65Z90lakdGuOfidY61R9TYg==", "cpu": [ "riscv64" ], @@ -14270,9 +14290,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.1.tgz", - "integrity": "sha512-LTEzxTXrv3evPiHBmDMtJtO5tEprg7bvNOwYTjDEhE9ZCYdb70l+haIY0dVyhGxyeaBJlyvatjWOKEduPP3Lyw==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.2.tgz", + "integrity": "sha512-BGPzq53VH5z5HN8de6jfMqJjnRe1E6sfnCWFd4pK+CAiuM7iw5Fx6BQZu3ikfI1l2GY0y6pRXzsVLdp/j4EKEA==", "cpu": [ "x64" ], @@ -14287,9 +14307,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.1.tgz", - "integrity": "sha512-7qMO4BLdIOFMMc1M+hg5iWEjPxbPlH1XTPUCwyuXYqubz6kXkdrrtJXolNAAey/0ZOE6uXk0APugm93a/veQdQ==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.2.tgz", + "integrity": "sha512-UCm3RL/tzMpG7DsubARsvGUNXC5pgfQvP+RRFJo9XPIi6elopY5B6H4m9dRYDpHA+scjVthdiDwkPYr9+S/KGw==", "cpu": [ "arm64" ], @@ -14304,9 +14324,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.1.tgz", - "integrity": "sha512-Jzuws3NNx4YtDdL2/skP8BvGqMBKn26XINehwLnD2kgbh0+k+vKNWt5JDomvIuZVLsK8zWrMoRkXpk4wuHdqrw==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.2.tgz", + "integrity": "sha512-D9WxtDY5VYtMApXRuhQK9VkPHB8R79NIIR6xxVlN2MIdEid/TZWi1MHNweieETXhWGrKhRKglwnHxxyKdJYMnA==", "cpu": [ "x64" ], @@ -14321,9 +14341,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.1.tgz", - "integrity": "sha512-8TvFr/lh7FARtNr9mM57m7NNvtSZwnlkXtfY1D48B81Ve6GgtLqQhELNzvTcfQ0WZa0aNnVjq9XUuWLlrMDaZQ==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.2.tgz", + "integrity": "sha512-leP0t5U4r95dc90o8TCWfxNXwMAsQhpWxTkdtySDpngoqtTy3miMd7EYNYd1znI0FN1CBaUvbdCMbnbPwygDlA==", "cpu": [ "arm" ], @@ -14338,9 +14358,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.1.tgz", - "integrity": "sha512-h967EV2armjV+Re+hHv7LaIzCOvV6DoFod9GJhXTdnPvilqs7DAPTUfN07wOqbzjlaGEnITZXzLsWAoZ1Z7tWQ==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.2.tgz", + "integrity": "sha512-2N4WW5LLsbtrWUJ7iTpjvhajGIbmDR18ZzYRywHdMLpfdPApuHPMDF5CYzHbS+LLx2UAx7CFKBnj5LLjY6eFgQ==", "cpu": [ "arm64" ], @@ -14355,9 +14375,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.1.tgz", - "integrity": "sha512-Tl8wDL+3qFa/AhvZZBb1OvhN1SvIsRSLaPdGP8cv3VmKKVBdlLp2zedPTlcLJpR9dG/bjtGJYGX15kWHAvZ6mQ==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.2.tgz", + "integrity": "sha512-Z6gG2FiVEEdxYHRi2sS5VIYBmp17351bWtOCUZ/thBM66+e70yiN6Eyqjz80DjL8haRUegNQgy9ZJqsLAAmr9g==", "cpu": [ "arm" ], @@ -14372,9 +14392,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.1.tgz", - "integrity": "sha512-l4TrsUmE3AEPy2gDThb+OQV5xSyrb807DJbkQiFtTwvtOZAAkoVl1v2QeocW0npgKjc/W7nHMiSempJe0UcV7w==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.2.tgz", + "integrity": "sha512-nTyuaBX6U1A/cG7WJh0pKD1gY8hbg1m2SnzsyoFG+exQ0lBX/lwTLHq3nyhF+0atv7YYhYKbmfz+sjPP8CZ9lw==", "cpu": [ "arm64" ], @@ -14389,9 +14409,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.1.tgz", - "integrity": "sha512-YJVZmz032U7dv4RW3u+SJGp+DQWmYWc5fX/aXzLuoL6PPUPon1/Sseaf/5YGtcuQf8RnxZBbM2nFHFVHDJfsQw==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.2.tgz", + "integrity": "sha512-N6oul+qALO0SwGY8JW7H/Vs0oZIMrRMBM4GqX3AjM/6y8JsJRxkAwnfd0fDyK+aICMFarDqQonQNIx99gdTZqw==", "cpu": [ "riscv64" ], @@ -14406,9 +14426,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.1.tgz", - "integrity": "sha512-67ijpk87V0VlpdVTtgnfIzRkVUMtEH79nvGctvNpk0XT6v+oxoFRljFRiYItZOxb5gRZMnvtkgaz1VHVcMrhtg==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.2.tgz", + "integrity": "sha512-K+FmWcdj/uyP8GiG9foxOCPfb5OAZG0uSVq80DKgVSC0U44AdGjvAvVZkrgFEcZ6cCqlNC2JfYmslB5iqdL7tg==", "cpu": [ "x64" ], @@ -14423,9 +14443,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.1.tgz", - "integrity": "sha512-SQNWy5kUvlQJUKRXFy8jS05DBik+2ERIWDxOBk+QuJYEIktlA9fKKBU8c7RkgpZFNXSXZa0W1Gy27oOFCzhhuA==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.2.tgz", + "integrity": "sha512-g9nTbnD/3yhOaskeqeBQETbtfDQWRgsjHok6bn7DdAuwBsyrR3JlSFyqKc46pn9Xxd9SQQZU8AzM4IR+sY0A0w==", "cpu": [ "riscv64" ], @@ -14440,9 +14460,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.1.tgz", - "integrity": "sha512-KUqGzBvTDZG6D3Pq41sCzqO1wkxM0WmxxlI7PTuVkvgciTywHf8F7mkg2alMLVZQ6APJEYtlnCGQgn4cCgYsqw==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.2.tgz", + "integrity": "sha512-Ax7dKvzncyQzIl4r7012KCMBvJzOz4uwSNoyoM5IV6y5I1f5hEwI25+U4WfuTqdkv42taCMgpjZbh9ERr6JVMQ==", "cpu": [ "x64" ], @@ -14457,9 +14477,9 @@ } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.1.tgz", - "integrity": "sha512-Lk6dYA18RasZxQhShT91G7Z2o7+F9necTNJ951a5AICsSJpTbg3tTnAGB7Rvd6xB5reQSZoXfB/zXKEKwtzaow==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.2.tgz", + "integrity": "sha512-j96iJni50ZUsfD6tRxDQE2QSYQ2WrfHxeiyAXf41Kw0V4w5KYR/Sf6rCZQLMTUOHnD16qTMVpQi20LQSqf4WGg==", "cpu": [ "arm64" ], @@ -14474,9 +14494,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.89.1", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.1.tgz", - "integrity": "sha512-YlvzrzFPHd4GKa04jMfP0t2DGJHPTm7zN4GEYtaOFqeS6BoEAUY5kBNYFy7zhwKesN3kGyU/D9rz1MfLRgGv0g==", + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.2.tgz", + "integrity": "sha512-cS2j5ljdkQsb4PaORiClaVYynE9OAPZG/XjbOMxpQmjRIf7UroY4PEIH+Waf+y47PfXFX9SyxhYuw2NIKGbEng==", "cpu": [ "x64" ], @@ -15054,18 +15074,18 @@ "license": "MIT" }, "node_modules/style-to-js": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", - "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz", + "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==", "license": "MIT", "dependencies": { - "style-to-object": "1.0.8" + "style-to-object": "1.0.9" } }, "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", + "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", "license": "MIT", "dependencies": { "inline-style-parser": "0.2.4" @@ -15116,9 +15136,9 @@ } }, "node_modules/svelte": { - "version": "5.33.18", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.33.18.tgz", - "integrity": "sha512-GVAhi8vi8pGne/wlEdnfWIJvSR9eKvEknxjfL5Sr8gQALiyk8Ey+H0lhUYLpjW+MrqgH9h4dgh2NF6/BTFprRg==", + "version": "5.34.3", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.34.3.tgz", + "integrity": "sha512-Y0QKP2rfWD+ARKe91c4JgZgc/nXa2BfOnVBUjYUMB819m7VyPszihkjdzXPIV0qlGRZYEukpgNq7hgbzTbopJw==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", @@ -16638,9 +16658,9 @@ } }, "node_modules/zod": { - "version": "3.25.56", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.56.tgz", - "integrity": "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==", + "version": "3.25.64", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.64.tgz", + "integrity": "sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -16687,6 +16707,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } }, @@ -16703,6 +16724,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1", "yaml": "^2.7.1" } @@ -16734,6 +16756,7 @@ "@iconify-json/pepicons-print": "^1.2.1", "@iconify-json/ri": "^1.2.5", "@iconify-json/simple-icons": "^1.2.33", + "@iconify-json/vscode-icons": "^1.2.23", "@iconify/utils": "^2.3.0", "@nanostores/persistent": "^1.0.0", "@octokit/types": "^14.0.0", @@ -16820,6 +16843,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } }, @@ -16837,6 +16861,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } }, @@ -16853,6 +16878,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } } diff --git a/package.json b/package.json index bdf196ab63..92a9ff5031 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,10 @@ "sites/*" ], "dependencies": { + "@iconify-json/vscode-icons": "^1.2.22", + "hast": "^1.0.0", + "hast-util-to-html": "^9.0.5", + "hastscript": "^9.0.1", "remark": "^15.0.1", "unist-util-visit": "^5.0.0" } diff --git a/sites/configs/astro.config.mjs b/sites/configs/astro.config.mjs index 693f9d1f3d..14afd2b26d 100644 --- a/sites/configs/astro.config.mjs +++ b/sites/configs/astro.config.mjs @@ -1,5 +1,6 @@ import admonitionsPlugin from '../../bin/remark-admonitions'; -import mermaid from '../../bin/remark-mermaid'; +import { mermaid } from '../../bin/remark-mermaid.ts'; +import { remarkTree } from '../../bin/remark-tree.ts'; import { rehypeCheckboxParser } from '../../bin/rehype-checkbox-parser.ts'; import { rehypeHeadingNumbers } from '../../bin/rehype-heading-numbers.ts'; import mdx from '@astrojs/mdx'; @@ -140,6 +141,7 @@ export default defineConfig({ remarkDirective, admonitionsPlugin, mermaid, + remarkTree, remarkMath, // [ // remarkDescription, diff --git a/sites/configs/package.json b/sites/configs/package.json index 42b6410a05..37e704d326 100644 --- a/sites/configs/package.json +++ b/sites/configs/package.json @@ -18,6 +18,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } } diff --git a/sites/docs/astro.config.mjs b/sites/docs/astro.config.mjs index b119a697ca..530e59ce2a 100644 --- a/sites/docs/astro.config.mjs +++ b/sites/docs/astro.config.mjs @@ -1,5 +1,6 @@ import admonitionsPlugin from '../../bin/remark-admonitions'; -import mermaid from '../../bin/remark-mermaid'; +import { mermaid } from '../../bin/remark-mermaid.ts'; +import { remarkTree } from '../../bin/remark-tree.ts'; import { rehypeCheckboxParser } from '../../bin/rehype-checkbox-parser.ts'; import { rehypeHeadingNumbers } from '../../bin/rehype-heading-numbers.ts'; import mdx from '@astrojs/mdx'; @@ -132,6 +133,7 @@ export default defineConfig({ admonitionsPlugin, mermaid, remarkMath, + remarkTree, // [ // remarkDescription, // { diff --git a/sites/docs/package.json b/sites/docs/package.json index 41b69df8a3..801a240d14 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -18,6 +18,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1", "yaml": "^2.7.1" } diff --git a/sites/docs/src/content/docs/contributing/website/markdown.md b/sites/docs/src/content/docs/contributing/website/markdown.md index 31be332898..45162e761b 100644 --- a/sites/docs/src/content/docs/contributing/website/markdown.md +++ b/sites/docs/src/content/docs/contributing/website/markdown.md @@ -250,6 +250,34 @@ process { } ``` +## File trees + +You can display file trees using the `tree` language. + +````md +```tree +tests +├─ alignment-pair-end.nf.test # comment +├─ alignment-single-end.nf.test +├─ going-deeper/ +│ ├─ deeper.nf.test +│ └─ deeper.nf.test.md +└─ default.nf.test +``` +```` + +This will be rendered as: + +```tree +tests +├─ alignment-pair-end.nf.test # comment +├─ alignment-single-end.nf.test +├─ going-deeper/ +│ ├─ deeper.nf.test +│ └─ deeper.nf.test.md +└─ default.nf.test +``` + # Mermaid diagrams [Mermaid](https://mermaid.js.org/intro/) is a simple markdown-like script language for generating charts from text via javascript. It supports many different types of diagrams, including flowcharts, sequence diagrams, gantt charts and class diagrams. To display them correctly on an nf-co.re page, you need to wrap them in a code block with the language set to `mermaid`,e.g.,: diff --git a/sites/docs/src/content/docs/guidelines/pipelines/recommendations/testing.md b/sites/docs/src/content/docs/guidelines/pipelines/recommendations/testing.md index 525626f686..ef6c4d49a9 100644 --- a/sites/docs/src/content/docs/guidelines/pipelines/recommendations/testing.md +++ b/sites/docs/src/content/docs/guidelines/pipelines/recommendations/testing.md @@ -37,9 +37,9 @@ Each nf-test file should be named after the set-up it tests in the following for ```tree tests -└── alignment-pair-end.nf.test -└── alignment-single-end.nf.test -├── default.nf.test +├── alignment-pair-end.nf.test +├── alignment-single-end.nf.test +└── default.nf.test ``` ### Pipeline nf-tests additional guidance diff --git a/sites/main-site/astro.config.mjs b/sites/main-site/astro.config.mjs index 8934db458e..6a595a1e89 100644 --- a/sites/main-site/astro.config.mjs +++ b/sites/main-site/astro.config.mjs @@ -1,5 +1,6 @@ import admonitionsPlugin from '../../bin/remark-admonitions'; import { mermaid } from '../../bin/remark-mermaid.ts'; +import { remarkTree } from '../../bin/remark-tree.ts'; import { rehypeCheckboxParser } from '../../bin/rehype-checkbox-parser.ts'; import { rehypeHeadingNumbers } from '../../bin/rehype-heading-numbers.ts'; import mdx from '@astrojs/mdx'; @@ -161,6 +162,7 @@ export default defineConfig({ remarkDirective, admonitionsPlugin, mermaid, + remarkTree, remarkMath // [ // remarkDescription, diff --git a/sites/main-site/package.json b/sites/main-site/package.json index 089160d0d2..391f2e9d8d 100644 --- a/sites/main-site/package.json +++ b/sites/main-site/package.json @@ -34,6 +34,7 @@ "@iconify-json/pepicons-print": "^1.2.1", "@iconify-json/ri": "^1.2.5", "@iconify-json/simple-icons": "^1.2.33", + "@iconify-json/vscode-icons": "^1.2.23", "@iconify/utils": "^2.3.0", "@nanostores/persistent": "^1.0.0", "@octokit/types": "^14.0.0", diff --git a/sites/main-site/src/components/markdown/Markdown.svelte b/sites/main-site/src/components/markdown/Markdown.svelte index 3085f2ded5..c9bbc549df 100644 --- a/sites/main-site/src/components/markdown/Markdown.svelte +++ b/sites/main-site/src/components/markdown/Markdown.svelte @@ -4,6 +4,7 @@ import remarkGfm from "remark-gfm"; import remarkDirective from "remark-directive"; import admonitionsPlugin from "@root/bin/remark-admonitions.js"; + import { remarkTree } from "@root/bin/remark-tree.ts"; import addClasses from "rehype-class-names"; import rehypeAutolinkHeadings from "rehype-autolink-headings"; import rehypeHighlight from "rehype-highlight"; @@ -23,6 +24,7 @@ plugins.push({ remarkPlugin: [remarkGfm] }); plugins.push({ remarkPlugin: [remarkDirective] }); plugins.push({ remarkPlugin: [admonitionsPlugin] }); + plugins.push({ remarkPlugin: [remarkTree] }); plugins.push({ remarkPlugin: [remarkMath] }); plugins.push({ rehypePlugin: [rehypeSlug] }); diff --git a/sites/main-site/src/components/markdown/MarkdownWrapper.svelte b/sites/main-site/src/components/markdown/MarkdownWrapper.svelte index 9fdcd3f07a..f60de4cd4b 100644 --- a/sites/main-site/src/components/markdown/MarkdownWrapper.svelte +++ b/sites/main-site/src/components/markdown/MarkdownWrapper.svelte @@ -107,6 +107,7 @@ } block.prepend(icon); }); + // change stored Checkboxes to checked $Checkboxes.forEach((checkbox) => { const element = document.getElementById(checkbox.id); @@ -142,3 +143,107 @@
{@render children?.()}
+ + diff --git a/sites/main-site/src/styles/main.scss b/sites/main-site/src/styles/main.scss index 8fe55d5634..70e67fff9a 100644 --- a/sites/main-site/src/styles/main.scss +++ b/sites/main-site/src/styles/main.scss @@ -1383,6 +1383,40 @@ div.mermaid { fill: transparent; } +// File Tree Styles +.file-tree { + font-family: $font-family-monospace; + font-size: 0.9rem; + line-height: 1.4; + max-width: 100%; + overflow-x: auto; + + .tree-entry { + transition: background-color 0.2s ease; + border-radius: 0.25rem; + margin: 0.125rem 0; + + &:hover { + background-color: rgba(var(--bs-primary-rgb), 0.1); + } + + .tree-icon { + display: inline-flex; + align-items: center; + min-width: 1rem; + + i, span { + font-size: 0.875rem; + } + } + + .file-name { + word-break: break-all; + user-select: text; + } + } +} + //////////////////////////// /// Dark Mode Overrides /// /////////////////////////// diff --git a/sites/modules-subworkflows/astro.config.mjs b/sites/modules-subworkflows/astro.config.mjs index 24d90afb2f..b973d41a76 100644 --- a/sites/modules-subworkflows/astro.config.mjs +++ b/sites/modules-subworkflows/astro.config.mjs @@ -1,5 +1,6 @@ import admonitionsPlugin from '../../bin/remark-admonitions'; -import mermaid from '../../bin/remark-mermaid'; +import { mermaid } from '../../bin/remark-mermaid.ts'; +import { remarkTree } from '../../bin/remark-tree.ts'; import { rehypeCheckboxParser } from '../../bin/rehype-checkbox-parser.ts'; import { rehypeHeadingNumbers } from '../../bin/rehype-heading-numbers.ts'; import mdx from '@astrojs/mdx'; @@ -132,6 +133,7 @@ export default defineConfig({ remarkDirective, admonitionsPlugin, mermaid, + remarkTree, remarkMath, // [ // remarkDescription, diff --git a/sites/modules-subworkflows/package.json b/sites/modules-subworkflows/package.json index ba4609292f..a5eae9e677 100644 --- a/sites/modules-subworkflows/package.json +++ b/sites/modules-subworkflows/package.json @@ -23,6 +23,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } } diff --git a/sites/pipeline-results/astro.config.mjs b/sites/pipeline-results/astro.config.mjs index cb7acae94d..13ba98ecdd 100644 --- a/sites/pipeline-results/astro.config.mjs +++ b/sites/pipeline-results/astro.config.mjs @@ -1,5 +1,6 @@ import admonitionsPlugin from '../../bin/remark-admonitions'; -import mermaid from '../../bin/remark-mermaid'; +import { mermaid } from '../../bin/remark-mermaid.ts'; +import { remarkTree } from '../../bin/remark-tree.ts'; import pipelines_json from './public/pipelines.json'; import { rehypeCheckboxParser } from '../../bin/rehype-checkbox-parser.ts'; import { rehypeHeadingNumbers } from '../../bin/rehype-heading-numbers.ts'; @@ -138,6 +139,7 @@ export default defineConfig({ remarkDirective, admonitionsPlugin, mermaid, + remarkTree, remarkMath, // [ // remarkDescription, diff --git a/sites/pipeline-results/package.json b/sites/pipeline-results/package.json index e36bd56b79..613f760891 100644 --- a/sites/pipeline-results/package.json +++ b/sites/pipeline-results/package.json @@ -19,6 +19,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } } diff --git a/sites/pipelines/astro.config.mjs b/sites/pipelines/astro.config.mjs index 3fa56c24ee..ee997cda28 100644 --- a/sites/pipelines/astro.config.mjs +++ b/sites/pipelines/astro.config.mjs @@ -1,5 +1,6 @@ import admonitionsPlugin from '../../bin/remark-admonitions'; -import mermaid from '../../bin/remark-mermaid'; +import { mermaid } from '../../bin/remark-mermaid.ts'; +import { remarkTree } from '../../bin/remark-tree.ts'; import { rehypeCheckboxParser } from '../../bin/rehype-checkbox-parser.ts'; import { rehypeHeadingNumbers } from '../../bin/rehype-heading-numbers.ts'; @@ -158,6 +159,7 @@ export default defineConfig({ remarkDirective, admonitionsPlugin, mermaid, + remarkTree, remarkMath, // [ // remarkDescription, diff --git a/sites/pipelines/package.json b/sites/pipelines/package.json index 34eb48b76b..21854a9df3 100644 --- a/sites/pipelines/package.json +++ b/sites/pipelines/package.json @@ -21,6 +21,7 @@ "@iconify-json/logos": "^1.2.4", "@iconify-json/mdi": "^1.2.3", "@iconify-json/octicon": "^1.2.5", + "@iconify-json/vscode-icons": "^1.2.23", "svelte-exmarkdown": "^5.0.1" } } diff --git a/test-tree.md b/test-tree.md new file mode 100644 index 0000000000..b5517a11c5 --- /dev/null +++ b/test-tree.md @@ -0,0 +1,25 @@ +# Test File Tree + +Here's a test of the tree functionality: + +```tree +project/ +├── src/ +│ ├── components/ +│ │ ├── Header.svelte +│ │ └── Footer.svelte +│ ├── pages/ +│ │ ├── index.astro +│ │ └── about.astro +│ └── styles/ +│ └── main.scss +├── public/ +│ ├── favicon.ico +│ └── images/ +│ └── logo.png +├── package.json +├── astro.config.mjs +└── README.md +``` + +This should render as a nice file tree with appropriate icons for each file type.