diff --git a/.vitepress/components/LLMDropdown.vue b/.vitepress/components/LLMDropdown.vue
new file mode 100644
index 0000000..f5495d6
--- /dev/null
+++ b/.vitepress/components/LLMDropdown.vue
@@ -0,0 +1,477 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.vitepress/components/LLMDropdown.vue.d.ts b/.vitepress/components/LLMDropdown.vue.d.ts
new file mode 100644
index 0000000..a89e6e7
--- /dev/null
+++ b/.vitepress/components/LLMDropdown.vue.d.ts
@@ -0,0 +1,4 @@
+import { DefineComponent } from 'vue'
+
+declare const LLMDropdown: DefineComponent, Record, unknown>
+export default LLMDropdown
diff --git a/.vitepress/config.mts b/.vitepress/config.mts
index 67a0724..1824b64 100644
--- a/.vitepress/config.mts
+++ b/.vitepress/config.mts
@@ -1,4 +1,5 @@
import { defineConfig } from 'vitepress'
+import { llmsPlugin } from './plugins/llms-plugin'
const { BASE: base = "/" } = process.env;
@@ -11,6 +12,16 @@ export default defineConfig({
cleanUrls: true,
ignoreDeadLinks: true,
base: base,
+ vite: {
+ plugins: [
+ llmsPlugin({
+ title: 'Optimum Docs',
+ description: 'The world\'s first high-performance memory infrastructure for any blockchain.',
+ basePath: base,
+ rootDir: process.cwd()
+ })
+ ]
+ },
markdown: {
math: true,
},
@@ -153,32 +164,7 @@ export default defineConfig({
})
function nav() {
- return [
- {
- text: "Menu",
- items: [
- // { text: "Get Started", link: "/docs/how-to-guides/overview" },
- { text: "Learn", link: "/docs/learn/overview/intro" },
- {
- text: "Resources",
- items: [
- // {
- // text: "Optimum Improvement Proposals (OIPs)",
- // link: "https://docs.getoptimum.xyz/", // TODO: Update link once live.
- // },
- {
- text: "Optimum ADRs",
- link: "https://github.com/getoptimum/optimum/tree/main/docs/architecture#adr-table-of-contents",
- },
- // {
- // text: "Flexnode API Docs",
- // link: "https://docs.getoptimum.xyz/", // TODO: Update link once live.
- // },
- ],
- },
- ],
- },
- ];
+ return [];
}
function sidebarHome() {
diff --git a/.vitepress/plugins/llms-plugin.ts b/.vitepress/plugins/llms-plugin.ts
new file mode 100644
index 0000000..2946dcb
--- /dev/null
+++ b/.vitepress/plugins/llms-plugin.ts
@@ -0,0 +1,262 @@
+import { resolve } from 'node:path'
+import { writeFileSync, readFileSync, existsSync, mkdirSync } from 'node:fs'
+import { globby } from 'globby'
+import matter from 'gray-matter'
+import type { Plugin as VitePlugin } from 'vite'
+
+export interface LLMsPluginOptions {
+ /**
+ * Output directory for llms.txt files
+ * @default 'dist'
+ */
+ outDir?: string
+ /**
+ * Base path for the site
+ * @default '/'
+ */
+ basePath?: string
+ /**
+ * Site title
+ * @default 'Documentation'
+ */
+ title?: string
+ /**
+ * Site description
+ */
+ description?: string
+ /**
+ * Root directory containing markdown files
+ * @default process.cwd()
+ */
+ rootDir?: string
+ /**
+ * Patterns to exclude from processing
+ * @default ['node_modules/**', 'README.md']
+ */
+ exclude?: string[]
+}
+
+export function llmsPlugin(options: LLMsPluginOptions = {}): VitePlugin {
+ const {
+ outDir = 'dist',
+ basePath = '/',
+ title = 'Documentation',
+ description,
+ rootDir = process.cwd(),
+ exclude = ['**/node_modules/**', '**/.*/**', '**/README.md']
+ } = options
+
+ let viteConfig: { build?: { outDir?: string } }
+
+ return {
+ name: 'vitepress-llms-plugin',
+ configResolved(config) {
+ viteConfig = config
+ },
+ async buildStart() {
+ await generateLLMsFiles()
+ },
+ async handleHotUpdate(ctx) {
+ // Regenerate on markdown file changes in dev mode
+ if (ctx.file.endsWith('.md')) {
+ await generateLLMsFiles()
+ }
+ },
+ configureServer(server) {
+ // Serve llms.txt files in dev mode
+ server.middlewares.use('/llms.txt', (req, res) => {
+ const llmsPath = resolve(process.cwd(), 'dist', 'llms.txt')
+ if (existsSync(llmsPath)) {
+ res.setHeader('Content-Type', 'text/plain')
+ res.end(readFileSync(llmsPath, 'utf-8'))
+ } else {
+ res.statusCode = 404
+ res.end('llms.txt not found')
+ }
+ })
+
+ server.middlewares.use('/llms-full.txt', (req, res) => {
+ const llmsPath = resolve(process.cwd(), 'dist', 'llms-full.txt')
+ if (existsSync(llmsPath)) {
+ res.setHeader('Content-Type', 'text/plain')
+ res.end(readFileSync(llmsPath, 'utf-8'))
+ } else {
+ res.statusCode = 404
+ res.end('llms-full.txt not found')
+ }
+ })
+ }
+ }
+
+ async function generateLLMsFiles() {
+ try {
+ const actualOutDir = viteConfig?.build?.outDir || outDir
+
+ // Ensure output directory exists
+ if (!existsSync(actualOutDir)) {
+ mkdirSync(actualOutDir, { recursive: true })
+ }
+
+ // Build content arrays with metadata
+ const content = [
+ `# ${title} LLM Guide`,
+ `llms.txt for https://docs.getoptimum.xyz/`,
+ `version: 1.0`,
+ `attribution: Required`,
+ `attribution_url: https://docs.getoptimum.xyz/`,
+ '',
+ '# Crawl settings',
+ 'crawl_delay: 1',
+ 'allow_paths:',
+ ' - /',
+ 'disallow_paths:',
+ ' - /private/',
+ ' - /drafts/',
+ 'sitemaps:',
+ ' - https://docs.getoptimum.xyz/sitemap.xml',
+ '',
+ '## Site Overview',
+ description || 'Official documentation for Optimum - the world\'s first high-performance memory infrastructure for any blockchain.',
+ '',
+ '## llms-full.txt',
+ '',
+ 'For a complete text version of all documentation pages, use https://docs.getoptimum.xyz/llms-full.txt',
+ ''
+ ]
+
+ // Find all markdown files
+ const patterns = [
+ `${rootDir}/**/*.md`,
+ `!${rootDir}/node_modules/**`,
+ `!${rootDir}/.*/**`,
+ ...exclude.map((pattern: string) => `!${rootDir}/${pattern}`)
+ ]
+
+ const files = await globby(patterns)
+
+ // Content for llms.txt (index format)
+ const llmsTxtContent = [...content, '## Documentation', '']
+
+ // Content for llms-full.txt (full content)
+ const llmsFullContent = [...content]
+
+ for (const file of files.sort()) {
+ try {
+ const fileContent = readFileSync(file, 'utf-8')
+ const { data: frontmatter, content: markdownContent } = matter(fileContent)
+
+ // Generate relative path for URL
+ let relativePath = file.replace(rootDir, '').replace(/\\/g, '/')
+ if (relativePath.startsWith('/')) {
+ relativePath = relativePath.substring(1)
+ }
+
+ // Convert file path to URL path
+ let urlPath = relativePath.replace(/\.md$/, '')
+ if (urlPath.endsWith('/index')) {
+ urlPath = urlPath.replace('/index', '')
+ }
+ if (urlPath === 'index') {
+ urlPath = ''
+ }
+
+ // Skip if this is the main index file and it's just frontmatter
+ if (urlPath === '' && markdownContent.trim().length < 50) {
+ continue
+ }
+
+ const fullUrl = basePath === '/' ? `/${urlPath}` : `${basePath}/${urlPath}`
+
+ // Extract title from frontmatter or first heading
+ const pageTitle = frontmatter.title || extractTitleFromMarkdown(markdownContent) || 'Untitled'
+
+ // Extract description
+ const pageDescription = frontmatter.description || extractDescriptionFromMarkdown(markdownContent)
+
+ // Add to index format (llms.txt)
+ const indexEntry = pageDescription
+ ? `- [${pageTitle}](${fullUrl}): ${pageDescription}`
+ : `- [${pageTitle}](${fullUrl})`
+ llmsTxtContent.push(indexEntry)
+
+ // Add to full content format (llms-full.txt)
+ llmsFullContent.push(
+ `## ${pageTitle}`,
+ '',
+ `**URL:** ${fullUrl}`,
+ '',
+ processMarkdownContent(markdownContent),
+ '',
+ '---',
+ ''
+ )
+ } catch (error) {
+ console.warn(`Warning: Could not process file ${file}:`, error)
+ }
+ }
+
+ // Write files
+ const llmsTxtPath = resolve(actualOutDir, 'llms.txt')
+ const llmsFullTxtPath = resolve(actualOutDir, 'llms-full.txt')
+
+ writeFileSync(llmsTxtPath, llmsTxtContent.join('\n'))
+ writeFileSync(llmsFullTxtPath, llmsFullContent.join('\n'))
+
+ console.log(`✅ Generated LLM files:`)
+ console.log(` 📄 ${llmsTxtPath}`)
+ console.log(` 📄 ${llmsFullTxtPath}`)
+
+ } catch (error) {
+ console.error('Error generating LLM files:', error)
+ }
+ }
+}
+
+function extractTitleFromMarkdown(content: string): string | null {
+ // Look for first # heading
+ const headingMatch = content.match(/^#\s+(.+)$/m)
+ if (headingMatch) {
+ return headingMatch[1].trim()
+ }
+
+ // Look for any heading
+ const anyHeadingMatch = content.match(/^#+\s+(.+)$/m)
+ if (anyHeadingMatch) {
+ return anyHeadingMatch[1].trim()
+ }
+
+ return null
+}
+
+function extractDescriptionFromMarkdown(content: string): string | null {
+ // Remove frontmatter and headings, get first paragraph
+ const withoutFrontmatter = content.replace(/^---[\s\S]*?---/, '').trim()
+ const withoutHeadings = withoutFrontmatter.replace(/^#+\s+.+$/gm, '').trim()
+
+ // Get first paragraph
+ const paragraphs = withoutHeadings.split('\n\n')
+ const firstParagraph = paragraphs.find(p => p.trim().length > 0)
+
+ if (firstParagraph && firstParagraph.length > 10) {
+ // Clean up markdown formatting and limit length
+ const cleaned = firstParagraph
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // Remove links
+ .replace(/[*_`]/g, '') // Remove formatting
+ .replace(/\n/g, ' ') // Replace newlines with spaces
+ .trim()
+
+ return cleaned.length > 150 ? cleaned.substring(0, 147) + '...' : cleaned
+ }
+
+ return null
+}
+
+function processMarkdownContent(content: string): string {
+ // Remove frontmatter
+ const withoutFrontmatter = content.replace(/^---[\s\S]*?---/, '').trim()
+
+ // Clean up the content but preserve structure
+ return withoutFrontmatter
+ .replace(/\n{3,}/g, '\n\n') // Reduce multiple newlines
+ .trim()
+}
\ No newline at end of file
diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts
index 419dde9..ce37392 100644
--- a/.vitepress/theme/index.ts
+++ b/.vitepress/theme/index.ts
@@ -4,15 +4,18 @@ import type { Theme } from "vitepress";
import DefaultTheme from 'vitepress/theme-without-fonts';
import "./style.css";
import "./fonts.css";
+import LLMDropdown from '../components/LLMDropdown.vue';
export default {
extends: DefaultTheme,
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
+ 'nav-bar-content-after': () => h(LLMDropdown),
});
},
enhanceApp({ app, router, siteData }) {
- // ...
+ // Register global components
+ app.component('LLMDropdown', LLMDropdown);
},
} satisfies Theme;
diff --git a/.vitepress/vue-shims.d.ts b/.vitepress/vue-shims.d.ts
new file mode 100644
index 0000000..28b0633
--- /dev/null
+++ b/.vitepress/vue-shims.d.ts
@@ -0,0 +1,5 @@
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ const component: DefineComponent, Record, unknown>
+ export default component
+}
diff --git a/package-lock.json b/package-lock.json
index e798920..4c82642 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,11 +11,14 @@
},
"devDependencies": {
"@eslint/js": "^9.22.0",
+ "@types/node": "^24.1.0",
"@typescript-eslint/eslint-plugin": "^8.26.1",
"@typescript-eslint/parser": "^8.26.1",
"eslint": "^9.22.0",
"eslint-plugin-vue": "^10.0.0",
"globals": "^16.0.0",
+ "globby": "^14.1.0",
+ "gray-matter": "^4.0.3",
"lint-staged": "^15.4.3",
"markdown-it-mathjax3": "^4.3.2",
"markdownlint-cli": "^0.44.0",
@@ -1917,6 +1920,19 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
+ "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@types/debug": {
"version": "4.1.12",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
@@ -2000,6 +2016,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/node": {
+ "version": "24.3.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz",
+ "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.10.0"
+ }
+ },
"node_modules/@types/unist": {
"version": "2.0.11",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
@@ -3616,6 +3642,20 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/esquery": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
@@ -3700,6 +3740,19 @@
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -3940,6 +3993,37 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/globby": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz",
+ "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^2.1.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.3",
+ "path-type": "^6.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
"node_modules/good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
@@ -3956,6 +4040,46 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/gray-matter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
+ "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "js-yaml": "^3.13.1",
+ "kind-of": "^6.0.2",
+ "section-matter": "^1.0.0",
+ "strip-bom-string": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/gray-matter/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/gray-matter/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4143,6 +4267,16 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -4367,6 +4501,16 @@
"json-buffer": "3.0.1"
}
},
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -5669,6 +5813,19 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/path-type": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz",
+ "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/perfect-debounce": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
@@ -6031,6 +6188,20 @@
"license": "MIT",
"peer": true
},
+ "node_modules/section-matter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
+ "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/select": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
@@ -6103,6 +6274,19 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/slice-ansi": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz",
@@ -6221,6 +6405,13 @@
"node": "^12.20.0 || >=14"
}
},
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
"node_modules/string-argv": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
@@ -6360,6 +6551,16 @@
"node": ">=8"
}
},
+ "node_modules/strip-bom-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
+ "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-final-newline": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
@@ -6533,6 +6734,26 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/undici-types": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz",
+ "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/unist-util-is": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
diff --git a/package.json b/package.json
index f66540c..91fe8d6 100644
--- a/package.json
+++ b/package.json
@@ -16,6 +16,8 @@
"eslint": "^9.22.0",
"eslint-plugin-vue": "^10.0.0",
"globals": "^16.0.0",
+ "globby": "^14.1.0",
+ "gray-matter": "^4.0.3",
"lint-staged": "^15.4.3",
"markdown-it-mathjax3": "^4.3.2",
"markdownlint-cli": "^0.44.0",
diff --git a/public/chatgpt-dark.svg b/public/chatgpt-dark.svg
new file mode 100644
index 0000000..3fc5080
--- /dev/null
+++ b/public/chatgpt-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/chatgpt-light.svg b/public/chatgpt-light.svg
new file mode 100644
index 0000000..0944147
--- /dev/null
+++ b/public/chatgpt-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/claude-dark.svg b/public/claude-dark.svg
new file mode 100644
index 0000000..c65ea53
--- /dev/null
+++ b/public/claude-dark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/claude-light.svg b/public/claude-light.svg
new file mode 100644
index 0000000..934547b
--- /dev/null
+++ b/public/claude-light.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 52ee578..d64fead 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -54,6 +54,11 @@
resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.20.4.tgz"
integrity sha512-OCGa8hKAP6kQKBwi+tu9flTXshz4qeCK5P8J6bI1qq8KYs+/TU1xSotT+E7hO+uyDanGU6dT6soiMSi4A38JgA==
+"@algolia/client-common@5.34.1":
+ version "5.34.1"
+ resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.34.1.tgz"
+ integrity sha512-otPWALs72KvmVuP0CN0DI6sqVx1jQWKi+/DgAiP8DysVMgiNlva3GDKTtAK6XVGlT08f4h32FNuL0yQODuCfKA==
+
"@algolia/client-insights@5.20.4":
version "5.20.4"
resolved "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.20.4.tgz"
@@ -84,6 +89,16 @@
"@algolia/requester-fetch" "5.20.4"
"@algolia/requester-node-http" "5.20.4"
+"@algolia/client-search@>= 4.9.1 < 6":
+ version "5.34.1"
+ resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.34.1.tgz"
+ integrity sha512-bt5hC9vvjaKvdvsgzfXJ42Sl3qjQqoi/FD8V7HOQgtNFhwSauZOlgLwFoUiw67sM+r7ehF7QDk5WRDgY7fAkIg==
+ dependencies:
+ "@algolia/client-common" "5.34.1"
+ "@algolia/requester-browser-xhr" "5.34.1"
+ "@algolia/requester-fetch" "5.34.1"
+ "@algolia/requester-node-http" "5.34.1"
+
"@algolia/client-search@5.20.4":
version "5.20.4"
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.4.tgz"
@@ -131,6 +146,13 @@
dependencies:
"@algolia/client-common" "5.20.4"
+"@algolia/requester-browser-xhr@5.34.1":
+ version "5.34.1"
+ resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.34.1.tgz"
+ integrity sha512-567LfFTc9VOiPtuySQohoqaWMeohYWbXK71aMSin+SLMgeKX7hz5LrVmkmMQj9udwWK6/mtHEYZGPYHSuXpLQg==
+ dependencies:
+ "@algolia/client-common" "5.34.1"
+
"@algolia/requester-fetch@5.20.4":
version "5.20.4"
resolved "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.20.4.tgz"
@@ -138,6 +160,13 @@
dependencies:
"@algolia/client-common" "5.20.4"
+"@algolia/requester-fetch@5.34.1":
+ version "5.34.1"
+ resolved "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.34.1.tgz"
+ integrity sha512-YRbygPgGBEik5U593JvyjgxFjcsyZMR25eIQxNHvSQumdAzt5A4E4Idw3yXnwhrmMdjML54ZXT7EAjnTjWy8Xw==
+ dependencies:
+ "@algolia/client-common" "5.34.1"
+
"@algolia/requester-node-http@5.20.4":
version "5.20.4"
resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.20.4.tgz"
@@ -145,6 +174,13 @@
dependencies:
"@algolia/client-common" "5.20.4"
+"@algolia/requester-node-http@5.34.1":
+ version "5.34.1"
+ resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.34.1.tgz"
+ integrity sha512-o0mqRYbS82Rt4DE02Od7RL6pNtV7oSxScPuIw8LW4aqO2V5eCF05Pry/SnUgcI/Vb2QCYC66hytBCqzyC/toZA==
+ dependencies:
+ "@algolia/client-common" "5.34.1"
+
"@babel/helper-string-parser@^7.27.1":
version "7.27.1"
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz"
@@ -155,7 +191,7 @@
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz"
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
-"@babel/parser@^7.25.3":
+"@babel/parser@^7.23.5", "@babel/parser@^7.25.3":
version "7.28.0"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz"
integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==
@@ -205,16 +241,16 @@
resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz"
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-"@esbuild/android-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz"
- integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-
"@esbuild/android-arm@0.21.5":
version "0.21.5"
resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz"
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
+"@esbuild/android-arm64@0.21.5":
+ version "0.21.5"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz"
+ integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
+
"@esbuild/android-x64@0.21.5":
version "0.21.5"
resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz"
@@ -240,16 +276,16 @@
resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz"
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-"@esbuild/linux-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz"
- integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-
"@esbuild/linux-arm@0.21.5":
version "0.21.5"
resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz"
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
+"@esbuild/linux-arm64@0.21.5":
+ version "0.21.5"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz"
+ integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
+
"@esbuild/linux-ia32@0.21.5":
version "0.21.5"
resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz"
@@ -363,7 +399,7 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@9.22.0", "@eslint/js@^9.22.0":
+"@eslint/js@^9.22.0", "@eslint/js@9.22.0":
version "9.22.0"
resolved "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz"
integrity sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==
@@ -446,7 +482,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -559,7 +595,7 @@
resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz"
integrity sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==
-"@shikijs/core@2.5.0", "@shikijs/core@^2.1.0":
+"@shikijs/core@^2.1.0", "@shikijs/core@2.5.0":
version "2.5.0"
resolved "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz"
integrity sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==
@@ -610,7 +646,7 @@
"@shikijs/core" "2.5.0"
"@shikijs/types" "2.5.0"
-"@shikijs/types@2.5.0", "@shikijs/types@^2.1.0":
+"@shikijs/types@^2.1.0", "@shikijs/types@2.5.0":
version "2.5.0"
resolved "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz"
integrity sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==
@@ -623,6 +659,11 @@
resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz"
integrity sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==
+"@sindresorhus/merge-streams@^2.1.0":
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz"
+ integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==
+
"@types/debug@^4.0.0":
version "4.1.12"
resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz"
@@ -630,7 +671,7 @@
dependencies:
"@types/ms" "*"
-"@types/estree@1.0.6", "@types/estree@^1.0.6":
+"@types/estree@^1.0.6", "@types/estree@1.0.6":
version "1.0.6"
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
@@ -682,10 +723,10 @@
resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz"
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
-"@types/node@^24.1.0":
- version "24.2.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-24.2.0.tgz#cde712f88c5190006d6b069232582ecd1f94a760"
- integrity sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==
+"@types/node@^18.0.0 || >=20.0.0", "@types/node@^24.1.0":
+ version "24.3.1"
+ resolved "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz"
+ integrity sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==
dependencies:
undici-types "~7.10.0"
@@ -704,7 +745,7 @@
resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz"
integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==
-"@typescript-eslint/eslint-plugin@8.26.1", "@typescript-eslint/eslint-plugin@^8.26.1":
+"@typescript-eslint/eslint-plugin@^8.26.1", "@typescript-eslint/eslint-plugin@8.26.1":
version "8.26.1"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz"
integrity sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==
@@ -719,7 +760,7 @@
natural-compare "^1.4.0"
ts-api-utils "^2.0.1"
-"@typescript-eslint/parser@8.26.1", "@typescript-eslint/parser@^8.26.1":
+"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.26.1", "@typescript-eslint/parser@8.26.1":
version "8.26.1"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz"
integrity sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==
@@ -814,6 +855,17 @@
"@vue/compiler-core" "3.5.13"
"@vue/shared" "3.5.13"
+"@vue/compiler-sfc@2.7.16":
+ version "2.7.16"
+ resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz"
+ integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
+ dependencies:
+ "@babel/parser" "^7.23.5"
+ postcss "^8.4.14"
+ source-map "^0.6.1"
+ optionalDependencies:
+ prettier "^1.18.2 || ^2.0.0"
+
"@vue/compiler-sfc@3.5.13":
version "3.5.13"
resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz"
@@ -897,12 +949,12 @@
"@vue/compiler-ssr" "3.5.13"
"@vue/shared" "3.5.13"
-"@vue/shared@3.5.13", "@vue/shared@^3.5.13":
+"@vue/shared@^3.5.13", "@vue/shared@3.5.13":
version "3.5.13"
resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz"
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
-"@vueuse/core@12.8.2", "@vueuse/core@^12.4.0":
+"@vueuse/core@^12.4.0", "@vueuse/core@12.8.2":
version "12.8.2"
resolved "https://registry.npmjs.org/@vueuse/core/-/core-12.8.2.tgz"
integrity sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==
@@ -938,7 +990,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn@^8.14.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0:
version "8.14.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz"
integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
@@ -953,7 +1005,7 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-algoliasearch@^5.14.2:
+algoliasearch@^5.14.2, "algoliasearch@>= 4.9.1 < 6":
version "5.20.4"
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.4.tgz"
integrity sha512-wjfzqruxovJyDqga8M6Xk5XtfuVg3igrWjhjgkRya87+WwfEa1kg+IluujBLzgAiMSd6rO6jqRb7czjgeeSYgQ==
@@ -1001,11 +1053,28 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
dependencies:
color-convert "^2.0.1"
-ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1:
+ansi-styles@^6.0.0:
version "6.2.1"
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+ansi-styles@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+ansi-styles@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
+ integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
@@ -1161,11 +1230,6 @@ comma-separated-tokens@^2.0.0:
resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz"
integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
-commander@9.2.0:
- version "9.2.0"
- resolved "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz"
- integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==
-
commander@^13.1.0, commander@~13.1.0:
version "13.1.0"
resolved "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz"
@@ -1181,6 +1245,11 @@ commander@^8.3.0:
resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+commander@9.2.0:
+ version "9.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz"
+ integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
@@ -1223,7 +1292,7 @@ cssesc@^3.0.0:
resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-csstype@^3.1.3:
+csstype@^3.1.0, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@@ -1336,7 +1405,12 @@ entities@^2.0.0:
resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-entities@^4.4.0, entities@^4.5.0:
+entities@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+entities@^4.5.0:
version "4.5.0"
resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
@@ -1415,7 +1489,7 @@ eslint-visitor-keys@^4.2.0:
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
-eslint@^9.22.0:
+"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.22.0:
version "9.22.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz"
integrity sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==
@@ -1470,6 +1544,11 @@ espree@^10.0.1, espree@^10.3.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.2.0"
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
esquery@^1.5.0, esquery@^1.6.0:
version "1.6.0"
resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz"
@@ -1519,12 +1598,19 @@ execa@^8.0.1:
signal-exit "^4.1.0"
strip-final-newline "^3.0.0"
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.3.2:
+fast-glob@^3.3.2, fast-glob@^3.3.3:
version "3.3.3"
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz"
integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
@@ -1587,7 +1673,7 @@ flatted@^3.2.9:
resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz"
integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==
-focus-trap@^7.6.4:
+focus-trap@^7, focus-trap@^7.6.4:
version "7.6.4"
resolved "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz"
integrity sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==
@@ -1653,6 +1739,18 @@ globals@^16.0.0:
resolved "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz"
integrity sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==
+globby@^14.1.0:
+ version "14.1.0"
+ resolved "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz"
+ integrity sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==
+ dependencies:
+ "@sindresorhus/merge-streams" "^2.1.0"
+ fast-glob "^3.3.3"
+ ignore "^7.0.3"
+ path-type "^6.0.0"
+ slash "^5.1.0"
+ unicorn-magic "^0.3.0"
+
good-listener@^1.2.2:
version "1.2.2"
resolved "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz"
@@ -1665,6 +1763,16 @@ graphemer@^1.4.0:
resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+gray-matter@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz"
+ integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
+ dependencies:
+ js-yaml "^3.13.1"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
@@ -1734,6 +1842,11 @@ ignore@^5.2.0, ignore@^5.3.1:
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
+ignore@^7.0.3:
+ version "7.0.5"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz"
+ integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==
+
ignore@~7.0.3:
version "7.0.3"
resolved "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz"
@@ -1775,6 +1888,11 @@ is-decimal@^2.0.0:
resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz"
integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==
+is-extendable@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
@@ -1838,6 +1956,14 @@ jackspeak@^3.1.2:
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
js-yaml@^4.1.0, js-yaml@~4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
@@ -1895,6 +2021,11 @@ keyv@^4.5.4:
dependencies:
json-buffer "3.0.1"
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
@@ -1988,7 +2119,7 @@ mark.js@8.11.1:
resolved "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz"
integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==
-markdown-it-mathjax3@^4.3.2:
+markdown-it-mathjax3@^4, markdown-it-mathjax3@^4.3.2:
version "4.3.2"
resolved "https://registry.npmjs.org/markdown-it-mathjax3/-/markdown-it-mathjax3-4.3.2.tgz"
integrity sha512-TX3GW5NjmupgFtMJGRauioMbbkGsOXAAt1DZ/rzzYmTHqzkO1rNAdiMD4NiruurToPApn2kYy76x02QN26qr2w==
@@ -2089,7 +2220,7 @@ mhchemparser@^4.1.0:
resolved "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz"
integrity sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==
-micromark-core-commonmark@2.0.2, micromark-core-commonmark@^2.0.0:
+micromark-core-commonmark@^2.0.0, micromark-core-commonmark@2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz"
integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==
@@ -2306,7 +2437,7 @@ micromark-util-symbol@^2.0.0:
resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz"
integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==
-micromark-util-types@2.0.1, micromark-util-types@^2.0.0:
+micromark-util-types@^2.0.0, micromark-util-types@2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz"
integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==
@@ -2541,6 +2672,11 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+path-type@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz"
+ integrity sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==
+
perfect-debounce@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz"
@@ -2574,7 +2710,7 @@ postcss-selector-parser@^6.0.15:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss@^8.4.43, postcss@^8.4.48:
+postcss@^8, postcss@^8.4.14, postcss@^8.4.43, postcss@^8.4.48:
version "8.5.3"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz"
integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==
@@ -2593,6 +2729,11 @@ prelude-ls@^1.2.1:
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+"prettier@^1.18.2 || ^2.0.0":
+ version "2.8.8"
+ resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
+ integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
prettier@^3.5.3:
version "3.5.3"
resolved "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz"
@@ -2710,6 +2851,19 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
+"search-insights@>= 1 < 3":
+ version "2.17.3"
+ resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz"
+ integrity sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==
+
+section-matter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
select@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz"
@@ -2751,6 +2905,11 @@ signal-exit@^4.0.1, signal-exit@^4.1.0:
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+slash@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz"
+ integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==
+
slice-ansi@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz"
@@ -2782,6 +2941,11 @@ source-map-js@^1.2.0, source-map-js@^1.2.1:
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz"
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
space-separated-tokens@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
@@ -2801,6 +2965,11 @@ speech-rule-engine@^4.0.6:
wicked-good-xpath "1.3.0"
xmldom-sre "0.1.31"
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
string-argv@^0.3.2:
version "0.3.2"
resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz"
@@ -2871,6 +3040,11 @@ strip-ansi@^7.0.1, strip-ansi@^7.1.0:
dependencies:
ansi-regex "^6.0.1"
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz"
+ integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==
+
strip-final-newline@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz"
@@ -2948,7 +3122,7 @@ typescript-eslint@^8.26.1:
"@typescript-eslint/parser" "8.26.1"
"@typescript-eslint/utils" "8.26.1"
-typescript@^5.2.2:
+typescript@*, typescript@^5.2.2, typescript@>=4.8.4, "typescript@>=4.8.4 <5.9.0":
version "5.8.2"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz"
integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==
@@ -2960,9 +3134,14 @@ uc.micro@^2.0.0, uc.micro@^2.1.0:
undici-types@~7.10.0:
version "7.10.0"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350"
+ resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz"
integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==
+unicorn-magic@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz"
+ integrity sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==
+
unist-util-is@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz"
@@ -3044,7 +3223,7 @@ vfile@^6.0.0:
"@types/unist" "^3.0.0"
vfile-message "^4.0.0"
-vite@^5.4.14:
+"vite@^5.0.0 || ^6.0.0", vite@^5.4.14:
version "5.4.14"
resolved "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz"
integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==
@@ -3086,7 +3265,7 @@ vue-clipboard2@^0.3.3:
dependencies:
clipboard "^2.0.0"
-vue-eslint-parser@^10.1.1:
+vue-eslint-parser@^10.0.0, vue-eslint-parser@^10.1.1:
version "10.1.1"
resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.1.1.tgz"
integrity sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q==
@@ -3106,7 +3285,15 @@ vue-resize@^1.0.1:
dependencies:
"@babel/runtime" "^7.13.10"
-vue@^3.5.13:
+vue@^2.6.0:
+ version "2.7.16"
+ resolved "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz"
+ integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
+ dependencies:
+ "@vue/compiler-sfc" "2.7.16"
+ csstype "^3.1.0"
+
+vue@^3.2.25, vue@^3.5.13, vue@3.5.13:
version "3.5.13"
resolved "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz"
integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==