From fbfb7c67e2adff32a70b69d6d08ef58bcec05630 Mon Sep 17 00:00:00 2001 From: Oussama Hansal Date: Wed, 8 Apr 2026 17:06:59 -0400 Subject: [PATCH 1/8] Docs site prototype --- .github/workflows/docs.yml | 50 + docs-site/.gitignore | 5 + docs-site/astro.config.mjs | 52 + docs-site/package-lock.json | 6417 +++++++++++++++++ docs-site/package.json | 24 + docs-site/src/assets/logo.svg | 21 + docs-site/src/components/StoreUrlBuilder.tsx | 159 + docs-site/src/content.config.ts | 7 + docs-site/src/content/docs/404.mdx | 7 + .../content/docs/byokg-rag/configuration.mdx | 264 + .../src/content/docs/byokg-rag/overview.mdx | 95 + .../content/docs/byokg-rag/query-engine.mdx | 299 + docs-site/src/content/docs/index.mdx | 67 + .../docs/lexical-graph/configuration.mdx | 304 + .../content/docs/lexical-graph/indexing.mdx | 413 ++ .../content/docs/lexical-graph/overview.mdx | 184 + .../content/docs/lexical-graph/querying.mdx | 133 + .../src/content/images/extract-and-build.png | Bin 0 -> 157285 bytes .../src/content/images/question-answering.png | Bin 0 -> 222260 bytes docs-site/src/env.d.ts | 1 + docs-site/src/styles/custom.css | 174 + docs-site/tsconfig.json | 3 + 22 files changed, 8679 insertions(+) create mode 100644 .github/workflows/docs.yml create mode 100644 docs-site/.gitignore create mode 100644 docs-site/astro.config.mjs create mode 100644 docs-site/package-lock.json create mode 100644 docs-site/package.json create mode 100644 docs-site/src/assets/logo.svg create mode 100644 docs-site/src/components/StoreUrlBuilder.tsx create mode 100644 docs-site/src/content.config.ts create mode 100644 docs-site/src/content/docs/404.mdx create mode 100644 docs-site/src/content/docs/byokg-rag/configuration.mdx create mode 100644 docs-site/src/content/docs/byokg-rag/overview.mdx create mode 100644 docs-site/src/content/docs/byokg-rag/query-engine.mdx create mode 100644 docs-site/src/content/docs/index.mdx create mode 100644 docs-site/src/content/docs/lexical-graph/configuration.mdx create mode 100644 docs-site/src/content/docs/lexical-graph/indexing.mdx create mode 100644 docs-site/src/content/docs/lexical-graph/overview.mdx create mode 100644 docs-site/src/content/docs/lexical-graph/querying.mdx create mode 100644 docs-site/src/content/images/extract-and-build.png create mode 100644 docs-site/src/content/images/question-answering.png create mode 100644 docs-site/src/env.d.ts create mode 100644 docs-site/src/styles/custom.css create mode 100644 docs-site/tsconfig.json diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..23f656af --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,50 @@ +name: Deploy docs site + +# Builds the Astro Starlight site under docs-site/ and publishes it to GitHub Pages. +# Requires "Settings → Pages → Source: GitHub Actions" to be enabled on the repo. + +on: + push: + branches: [main, prototype-docs-site] + paths: + - 'docs-site/**' + - '.github/workflows/docs.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: docs-site + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + cache-dependency-path: docs-site/package-lock.json + - run: npm ci + - run: npm run build + - uses: actions/upload-pages-artifact@v3 + with: + path: docs-site/dist + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - id: deployment + uses: actions/deploy-pages@v4 diff --git a/docs-site/.gitignore b/docs-site/.gitignore new file mode 100644 index 00000000..2c5d6f49 --- /dev/null +++ b/docs-site/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +.astro/ +.env +.DS_Store diff --git a/docs-site/astro.config.mjs b/docs-site/astro.config.mjs new file mode 100644 index 00000000..3502981e --- /dev/null +++ b/docs-site/astro.config.mjs @@ -0,0 +1,52 @@ +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; +import react from '@astrojs/react'; + +// `site` and `base` together determine the public URL. +// For the upstream awslabs project page: site='https://awslabs.github.io', base='/graphrag-toolkit' +// For a fork's project page: site='https://.github.io', base='/' +export default defineConfig({ + site: 'https://oussamahansal.github.io', + base: '/graphrag-toolkit-fork1', + integrations: [ + react(), + starlight({ + title: 'GraphRAG Toolkit', + description: + 'Documentation for the AWS GraphRAG Toolkit — lexical-graph and BYOKG-RAG.', + logo: { src: './src/assets/logo.svg' }, + customCss: ['./src/styles/custom.css'], + social: { + github: 'https://github.com/awslabs/graphrag-toolkit', + }, + head: [ + { + tag: 'link', + attrs: { + rel: 'stylesheet', + href: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap', + }, + }, + ], + sidebar: [ + { + label: 'Lexical Graph', + items: [ + { label: 'Overview', slug: 'lexical-graph/overview' }, + { label: 'Indexing', slug: 'lexical-graph/indexing' }, + { label: 'Querying', slug: 'lexical-graph/querying' }, + { label: 'Configuration', slug: 'lexical-graph/configuration' }, + ], + }, + { + label: 'BYOKG-RAG', + items: [ + { label: 'Overview', slug: 'byokg-rag/overview' }, + { label: 'Query Engine', slug: 'byokg-rag/query-engine' }, + { label: 'Configuration', slug: 'byokg-rag/configuration' }, + ], + }, + ], + }), + ], +}); diff --git a/docs-site/package-lock.json b/docs-site/package-lock.json new file mode 100644 index 00000000..5b8dd865 --- /dev/null +++ b/docs-site/package-lock.json @@ -0,0 +1,6417 @@ +{ + "name": "graphrag-toolkit-docs", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "graphrag-toolkit-docs", + "version": "0.0.1", + "dependencies": { + "@astrojs/react": "^4.2.0", + "@astrojs/starlight": "0.32.5", + "@types/react": "^18.3.28", + "@types/react-dom": "^18.3.7", + "astro": "5.6.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "sharp": "^0.33.5" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.1.tgz", + "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.6.tgz", + "integrity": "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q==" + }, + "node_modules/@astrojs/markdown-remark": { + "version": "6.3.11", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.11.tgz", + "integrity": "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ==", + "dependencies": { + "@astrojs/internal-helpers": "0.7.6", + "@astrojs/prism": "3.3.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.2.0", + "js-yaml": "^4.1.1", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.2", + "remark-smartypants": "^3.0.2", + "shiki": "^3.21.0", + "smol-toml": "^1.6.0", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.2", + "vfile": "^6.0.3" + } + }, + "node_modules/@astrojs/mdx": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.14.tgz", + "integrity": "sha512-FBrqJQORVm+rkRa2TS5CjU9PBA6hkhrwLVBSS9A77gN2+iehvjq1w6yya/d0YKC7osiVorKkr3Qd9wNbl0ZkGA==", + "dependencies": { + "@astrojs/markdown-remark": "6.3.11", + "@mdx-js/mdx": "^3.1.1", + "acorn": "^8.15.0", + "es-module-lexer": "^1.7.0", + "estree-util-visit": "^2.0.0", + "hast-util-to-html": "^9.0.5", + "piccolore": "^0.1.3", + "rehype-raw": "^7.0.0", + "remark-gfm": "^4.0.1", + "remark-smartypants": "^3.0.2", + "source-map": "^0.7.6", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.3" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "astro": "^5.0.0" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", + "dependencies": { + "prismjs": "^1.30.0" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/react": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.4.2.tgz", + "integrity": "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==", + "dependencies": { + "@vitejs/plugin-react": "^4.7.0", + "ultrahtml": "^1.6.0", + "vite": "^6.4.1" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@astrojs/sitemap": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.2.1.tgz", + "integrity": "sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==", + "dependencies": { + "sitemap": "^8.0.0", + "stream-replace-string": "^2.0.0", + "zod": "^3.23.8" + } + }, + "node_modules/@astrojs/starlight": { + "version": "0.32.5", + "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.32.5.tgz", + "integrity": "sha512-KYZsYbA5eEAsCO3XNc6DWDPml1JCD6GVusuB15fYq5dbxyB7RtC6kgwbtiEmr84maIjcQUmDtFJCz3sN4CdaSg==", + "dependencies": { + "@astrojs/mdx": "^4.0.5", + "@astrojs/sitemap": "^3.2.1", + "@pagefind/default-ui": "^1.3.0", + "@types/hast": "^3.0.4", + "@types/js-yaml": "^4.0.9", + "@types/mdast": "^4.0.4", + "astro-expressive-code": "^0.40.0", + "bcp-47": "^2.1.0", + "hast-util-from-html": "^2.0.1", + "hast-util-select": "^6.0.2", + "hast-util-to-string": "^3.0.0", + "hastscript": "^9.0.0", + "i18next": "^23.11.5", + "js-yaml": "^4.1.0", + "klona": "^2.0.6", + "mdast-util-directive": "^3.0.0", + "mdast-util-to-markdown": "^2.1.0", + "mdast-util-to-string": "^4.0.0", + "pagefind": "^1.3.0", + "rehype": "^13.0.1", + "rehype-format": "^5.0.0", + "remark-directive": "^3.0.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.2" + }, + "peerDependencies": { + "astro": "^5.1.5" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz", + "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==", + "dependencies": { + "ci-info": "^4.1.0", + "debug": "^4.3.7", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.2.0.tgz", + "integrity": "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@expressive-code/core": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.40.2.tgz", + "integrity": "sha512-gXY3v7jbgz6nWKvRpoDxK4AHUPkZRuJsM79vHX/5uhV9/qX6Qnctp/U/dMHog/LCVXcuOps+5nRmf1uxQVPb3w==", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" + } + }, + "node_modules/@expressive-code/plugin-frames": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.40.2.tgz", + "integrity": "sha512-aLw5IlDlZWb10Jo/TTDCVsmJhKfZ7FJI83Zo9VDrV0OBlmHAg7klZqw68VDz7FlftIBVAmMby53/MNXPnMjTSQ==", + "dependencies": { + "@expressive-code/core": "^0.40.2" + } + }, + "node_modules/@expressive-code/plugin-shiki": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.40.2.tgz", + "integrity": "sha512-t2HMR5BO6GdDW1c1ISBTk66xO503e/Z8ecZdNcr6E4NpUfvY+MRje+LtrcvbBqMwWBBO8RpVKcam/Uy+1GxwKQ==", + "dependencies": { + "@expressive-code/core": "^0.40.2", + "shiki": "^1.26.1" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/@expressive-code/plugin-shiki/node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@expressive-code/plugin-text-markers": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.40.2.tgz", + "integrity": "sha512-/XoLjD67K9nfM4TgDlXAExzMJp6ewFKxNpfUw4F7q5Ecy+IU3/9zQQG/O70Zy+RxYTwKGw2MA9kd7yelsxnSmw==", + "dependencies": { + "@expressive-code/core": "^0.40.2" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz", + "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" + }, + "node_modules/@pagefind/darwin-arm64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.5.0.tgz", + "integrity": "sha512-OXQVlxALU9+Lz/LxkAa+RvaxY1cnRKUDCuwl9o8PY5Lg/znP573y4WIbVOOIz8Bv7uj7r00TGy7pD+NSLMJGBw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/darwin-x64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.5.0.tgz", + "integrity": "sha512-+LK1Xq5n/B0hHc08DW61SnfIlfLKyXZ1oKcbfZ1MimE7Rn0Q6R0VI/TlC04f/JDPm+67zAOwPGizzvefOi5vqQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@pagefind/default-ui": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.5.0.tgz", + "integrity": "sha512-C8VZ5pDz1Kc89GicXsWZiIlAwTVwUtFDOzh0RzJt5FmbkJzsmPVICPkLUfOsWgBCyFAH/vYR+lUTaGPDxZ4IXw==" + }, + "node_modules/@pagefind/freebsd-x64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/freebsd-x64/-/freebsd-x64-1.5.0.tgz", + "integrity": "sha512-kicDfUF9gn/z06NimTwNlZXF8z3pLsN3BIPPt6N8unuh0n55fr64tVs2p3a5RKYmQkJGjPfOE/C9GI5YTEpURg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@pagefind/linux-arm64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.5.0.tgz", + "integrity": "sha512-e5rDB3wPm89bcSLiatKBDTrVTbsMQrrtkXRaAoUJYU0C1suXVvEzZfjmMvrUDvYhZBx/Ls8hGuGxlqSJBz3gDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/linux-x64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.5.0.tgz", + "integrity": "sha512-vh52DcBiF/mRMmq+Rwt3M3RgEWgl00jFk/M5NWhLEHJFq4+papQXwbyKbi7cNlxaeYrKx6wOfW3fm9cftfc/Kg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@pagefind/windows-arm64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/windows-arm64/-/windows-arm64-1.5.0.tgz", + "integrity": "sha512-kg+szZwffZdyWn6SL6RHjAYjhSvJ2bT4qkv3KepGsbmD9fuSHUSC+2kydDneDVUA9qEDRf9uSFoEAsXsp1/JKA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@pagefind/windows-x64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.5.0.tgz", + "integrity": "sha512-8eOCmB8lnpyvwz+HrcTXLuBxhj7UseAFh6KGEXRe8UCcAfVQih+qPy/4akJRezViI+ONijz9oi7HpMkw9rdtBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==" + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz", + "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz", + "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.2.tgz", + "integrity": "sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==" + }, + "node_modules/@types/react": { + "version": "18.3.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.28.tgz", + "integrity": "sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/astro": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.6.2.tgz", + "integrity": "sha512-Ds4x3Au2s+YfBKLXY2HCHird+73ff4wTds+cuAGqaHmY4GR+Gc+sCAP54Mq6blkpuFqXwqjPUAcmxvAwovJPGQ==", + "dependencies": { + "@astrojs/compiler": "^2.11.0", + "@astrojs/internal-helpers": "0.6.1", + "@astrojs/markdown-remark": "6.3.1", + "@astrojs/telemetry": "3.2.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.1", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.2.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.0.2", + "cssesc": "^3.0.0", + "debug": "^4.4.0", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.1.1", + "diff": "^5.2.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "es-module-lexer": "^1.6.0", + "esbuild": "^0.25.0", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.1.1", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.0", + "package-manager-detector": "^1.1.0", + "picomatch": "^4.0.2", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.1", + "shiki": "^3.2.1", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.12", + "tsconfck": "^3.1.5", + "ultrahtml": "^1.6.0", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.15.0", + "vfile": "^6.0.3", + "vite": "^6.2.6", + "vitefu": "^1.0.6", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.1", + "zod": "^3.24.2", + "zod-to-json-schema": "^3.24.5", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.33.3" + } + }, + "node_modules/astro-expressive-code": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.40.2.tgz", + "integrity": "sha512-yJMQId0yXSAbW9I6yqvJ3FcjKzJ8zRL7elbJbllkv1ZJPlsI0NI83Pxn1YL1IapEM347EvOOkSW2GL+2+NO61w==", + "dependencies": { + "rehype-expressive-code": "^0.40.2" + }, + "peerDependencies": { + "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" + } + }, + "node_modules/astro/node_modules/@astrojs/internal-helpers": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz", + "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==" + }, + "node_modules/astro/node_modules/@astrojs/markdown-remark": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.1.tgz", + "integrity": "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==", + "dependencies": { + "@astrojs/internal-helpers": "0.6.1", + "@astrojs/prism": "3.2.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.1.0", + "js-yaml": "^4.1.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.1", + "remark-smartypants": "^3.0.2", + "shiki": "^3.0.0", + "smol-toml": "^1.3.1", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1", + "vfile": "^6.0.3" + } + }, + "node_modules/astro/node_modules/@astrojs/prism": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz", + "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==", + "dependencies": { + "prismjs": "^1.29.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/astro/node_modules/lru-cache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.3.tgz", + "integrity": "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/astro/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/astro/node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.16.tgz", + "integrity": "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bcp-47": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", + "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001787", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", + "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==" + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-selector-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", + "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.7.1.tgz", + "integrity": "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", + "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" + }, + "node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==" + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==" + }, + "node_modules/expressive-code": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.40.2.tgz", + "integrity": "sha512-1zIda2rB0qiDZACawzw2rbdBQiWHBT56uBctS+ezFe5XMAaFaHLnnSYND/Kd+dVzO9HfCXRDpzH3d+3fvOWRcw==", + "dependencies": { + "@expressive-code/core": "^0.40.2", + "@expressive-code/plugin-frames": "^0.40.2", + "@expressive-code/plugin-shiki": "^0.40.2", + "@expressive-code/plugin-text-markers": "^0.40.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-format": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-format/-/hast-util-format-1.1.0.tgz", + "integrity": "sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "html-whitespace-sensitive-tag-names": "^3.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-whitespace-sensitive-tag-names": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-whitespace-sensitive-tag-names/-/html-whitespace-sensitive-tag-names-3.0.1.tgz", + "integrity": "sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==" + }, + "node_modules/i18next": { + "version": "23.16.8", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz", + "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==", + "funding": [ + { + "type": "individual", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], + "dependencies": { + "@babel/runtime": "^7.23.2" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==" + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", + "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==" + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-directive": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz", + "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==" + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==" + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==" + }, + "node_modules/oniguruma-to-es": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.5.tgz", + "integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.1.0", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", + "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==" + }, + "node_modules/pagefind": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.5.0.tgz", + "integrity": "sha512-7vQ2xh0ZmjPjsuWONR68nqzb+QNfpPh7pdT6n6YDAthWAQiUkSACVegSswY5zPNONGYFWebFVgdnS5/m/Qqn+w==", + "bin": { + "pagefind": "lib/runner/bin.cjs" + }, + "optionalDependencies": { + "@pagefind/darwin-arm64": "1.5.0", + "@pagefind/darwin-x64": "1.5.0", + "@pagefind/freebsd-x64": "1.5.0", + "@pagefind/linux-arm64": "1.5.0", + "@pagefind/linux-x64": "1.5.0", + "@pagefind/windows-arm64": "1.5.0", + "@pagefind/windows-x64": "1.5.0" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/piccolore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/piccolore/-/piccolore-0.1.3.tgz", + "integrity": "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw==" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz", + "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-expressive-code": { + "version": "0.40.2", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.40.2.tgz", + "integrity": "sha512-+kn+AMGCrGzvtH8Q5lC6Y5lnmTV/r33fdmi5QU/IH1KPHKobKr5UnLwJuqHv5jBTSN/0v2wLDS7RTM73FVzqmQ==", + "dependencies": { + "expressive-code": "^0.40.2" + } + }, + "node_modules/rehype-format": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/rehype-format/-/rehype-format-5.0.1.tgz", + "integrity": "sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-format": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-directive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz", + "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-directive": "^3.0.0", + "micromark-extension-directive": "^3.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz", + "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shiki": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz", + "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", + "dependencies": { + "@shikijs/core": "3.23.0", + "@shikijs/engine-javascript": "3.23.0", + "@shikijs/engine-oniguruma": "3.23.0", + "@shikijs/langs": "3.23.0", + "@shikijs/themes": "3.23.0", + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", + "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.3.tgz", + "integrity": "sha512-9Ew1tR2WYw8RGE2XLy7GjkusvYXy8Rg6y8TYuBuQMfIEdGcWoJpY2Wr5DzsEiL/TKCw56+YKTCCUHglorEYK+A==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.4.1" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/smol-toml": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", + "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stream-replace-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==" + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tsconfck": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "optional": true + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", + "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", + "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz", + "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==", + "peerDependencies": { + "zod": "^3.25.28 || ^4" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docs-site/package.json b/docs-site/package.json new file mode 100644 index 00000000..574d2844 --- /dev/null +++ b/docs-site/package.json @@ -0,0 +1,24 @@ +{ + "name": "graphrag-toolkit-docs", + "type": "module", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "astro dev", + "build": "astro build", + "preview": "astro preview" + }, + "dependencies": { + "@astrojs/react": "^4.2.0", + "@astrojs/starlight": "0.32.5", + "@types/react": "^18.3.28", + "@types/react-dom": "^18.3.7", + "astro": "5.6.2", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "sharp": "^0.33.5" + }, + "overrides": { + "@astrojs/sitemap": "3.2.1" + } +} diff --git a/docs-site/src/assets/logo.svg b/docs-site/src/assets/logo.svg new file mode 100644 index 00000000..38144e03 --- /dev/null +++ b/docs-site/src/assets/logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/docs-site/src/components/StoreUrlBuilder.tsx b/docs-site/src/components/StoreUrlBuilder.tsx new file mode 100644 index 00000000..a863e82f --- /dev/null +++ b/docs-site/src/components/StoreUrlBuilder.tsx @@ -0,0 +1,159 @@ +import { useState } from 'react'; + +type Backend = + | { kind: 'neptune-db'; cluster: string; region: string } + | { kind: 'neptune-graph'; graphId: string } + | { kind: 'neo4j'; host: string; port: string } + | { kind: 'falkordb'; host: string; port: string }; + +const backends = [ + { id: 'neptune-db', label: 'Neptune DB' }, + { id: 'neptune-graph', label: 'Neptune Analytics' }, + { id: 'neo4j', label: 'Neo4j' }, + { id: 'falkordb', label: 'FalkorDB' }, +] as const; + +function buildUrl(b: Backend): string { + switch (b.kind) { + case 'neptune-db': + return `neptune-db://${b.cluster}.cluster-xxxxxxxx.${b.region}.neptune.amazonaws.com`; + case 'neptune-graph': + return `neptune-graph://${b.graphId}`; + case 'neo4j': + return `neo4j://${b.host}:${b.port}`; + case 'falkordb': + return `falkordb://${b.host}:${b.port}`; + } +} + +const inputStyle: React.CSSProperties = { + padding: '0.5rem 0.75rem', + background: 'var(--sl-color-bg-inline-code)', + color: 'var(--sl-color-white)', + border: '1px solid var(--sl-color-gray-5)', + borderRadius: '6px', + fontSize: '0.9rem', + fontFamily: 'var(--sl-font-system-mono)', + width: '100%', +}; + +const labelStyle: React.CSSProperties = { + display: 'block', + fontSize: '0.8rem', + color: 'var(--sl-color-gray-2)', + marginBottom: '0.25rem', + textTransform: 'uppercase', + letterSpacing: '0.05em', +}; + +export default function StoreUrlBuilder() { + const [kind, setKind] = useState('neptune-db'); + const [cluster, setCluster] = useState('my-graph'); + const [region, setRegion] = useState('us-east-1'); + const [graphId, setGraphId] = useState('g-abc123def456'); + const [host, setHost] = useState('localhost'); + const [port, setPort] = useState('7687'); + + let backend: Backend; + if (kind === 'neptune-db') backend = { kind, cluster, region }; + else if (kind === 'neptune-graph') backend = { kind, graphId }; + else if (kind === 'neo4j') backend = { kind, host, port }; + else backend = { kind, host, port }; + + const url = buildUrl(backend); + + return ( +
+
+ {backends.map((b) => ( + + ))} +
+ +
+ {kind === 'neptune-db' && ( + <> +
+ + setCluster(e.target.value)} /> +
+
+ + setRegion(e.target.value)} /> +
+ + )} + {kind === 'neptune-graph' && ( +
+ + setGraphId(e.target.value)} /> +
+ )} + {(kind === 'neo4j' || kind === 'falkordb') && ( + <> +
+ + setHost(e.target.value)} /> +
+
+ + setPort(e.target.value)} /> +
+ + )} +
+ +
+ + + {url} + +
+
+ ); +} diff --git a/docs-site/src/content.config.ts b/docs-site/src/content.config.ts new file mode 100644 index 00000000..6a7b7a02 --- /dev/null +++ b/docs-site/src/content.config.ts @@ -0,0 +1,7 @@ +import { defineCollection } from 'astro:content'; +import { docsLoader } from '@astrojs/starlight/loaders'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), +}; diff --git a/docs-site/src/content/docs/404.mdx b/docs-site/src/content/docs/404.mdx new file mode 100644 index 00000000..fd08f7e0 --- /dev/null +++ b/docs-site/src/content/docs/404.mdx @@ -0,0 +1,7 @@ +--- +title: 'Page not found' +template: splash +editUrl: false +--- + +That page does not exist. diff --git a/docs-site/src/content/docs/byokg-rag/configuration.mdx b/docs-site/src/content/docs/byokg-rag/configuration.mdx new file mode 100644 index 00000000..1aa4a13c --- /dev/null +++ b/docs-site/src/content/docs/byokg-rag/configuration.mdx @@ -0,0 +1,264 @@ +--- +title: Configuration +--- + +## Overview + +The byokg-rag library provides extensive configuration options to customize query processing, retrieval strategies, and LLM (Large Language Model) behavior. Configuration occurs at multiple levels: query engine initialization, retriever setup, entity linking, and LLM parameters. + +This document provides complete parameter documentation for all configurable components. Most components provide sensible defaults, allowing you to start with minimal configuration and adjust as needed for your specific use case. + +## Query Engine Configuration + +### ByoKGQueryEngine + +The query engine orchestrates the entire KGQA (Knowledge Graph Question Answering) pipeline, coordinating entity linking, retrieval, and answer generation. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `graph_store` | GraphStore | Required | Graph store instance providing access to knowledge graph data | `NeptuneAnalyticsGraphStore(...)` | +| `entity_linker` | EntityLinker | Auto-created | Component for linking text mentions to graph entities | `EntityLinker(...)` | +| `triplet_retriever` | GRetriever | Auto-created | Retriever for extracting relevant triplets from the graph | `AgenticRetriever(...)` | +| `path_retriever` | PathRetriever | Auto-created | Retriever for finding paths between entities | `PathRetriever(...)` | +| `graph_query_executor` | GraphQueryRetriever | Auto-created | Executor for running structured graph queries | `GraphQueryRetriever(...)` | +| `llm_generator` | BaseGenerator | Auto-created | Language model for generating responses | `BedrockGenerator(...)` | +| `kg_linker` | KGLinker | Auto-created | Linker for multi-strategy retrieval operations | `KGLinker(...)` | +| `cypher_kg_linker` | CypherKGLinker | None | Specialized linker for Cypher-based retrieval | `CypherKGLinker(...)` | +| `direct_query_linking` | bool | False | Enable direct entity linking using query embeddings | `True` | + +NOTE: When parameters are not provided, the query engine creates default instances with standard configurations. You can override any component to customize behavior. + +#### Query Method Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `query` | str | Required | The natural language question to answer | "Who won the Nobel Prize in Physics in 1921?" | +| `iterations` | int | 2 | Number of multi-strategy retrieval iterations | 3 | +| `cypher_iterations` | int | 2 | Number of Cypher query generation attempts | 3 | +| `user_input` | str | "" | Additional instructions or context for the LLM | "Focus on recent discoveries" | + +**Valid Ranges:** + +- `iterations`: 1-10 (higher values increase retrieval coverage but also latency) +- `cypher_iterations`: 1-5 (higher values allow more query refinement attempts) + +## Retriever Configuration + +### AgenticRetriever + +The agentic retriever implements iterative, LLM-guided exploration of the knowledge graph. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `llm_generator` | BaseGenerator | Required | Language model for guiding exploration | `BedrockGenerator(...)` | +| `graph_traversal` | GTraversal | Required | Component for traversing graph structure | `GTraversal(graph_store)` | +| `graph_verbalizer` | TripletGVerbalizer | Required | Component for converting triplets to text | `TripletGVerbalizer()` | +| `pruning_reranker` | Reranker | None | Optional reranker for pruning results | `BGEReranker()` | +| `max_num_relations` | int | 5 | Maximum relations to consider per iteration | 10 | +| `max_num_entities` | int | 3 | Maximum entities to explore per iteration | 5 | +| `max_num_iterations` | int | 3 | Maximum exploration iterations | 5 | +| `max_num_triplets` | int | 50 | Maximum triplets to retain after pruning | 100 | + +**Parameter Guidelines:** + +- Increase `max_num_relations` for broader exploration of relationship types +- Increase `max_num_entities` to explore more entity neighborhoods +- Increase `max_num_iterations` for complex multi-hop reasoning +- Increase `max_num_triplets` to retain more context (at the cost of LLM input length) + +### PathRetriever + +The path retriever finds structured paths between entities following metapath patterns. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `graph_traversal` | GTraversal | Required | Component for traversing graph structure | `GTraversal(graph_store)` | +| `path_verbalizer` | PathVerbalizer | Required | Component for converting paths to text | `PathVerbalizer()` | + +The path retriever has minimal configuration. Its behavior is primarily controlled by the metapaths provided during retrieval. + +### GraphQueryRetriever + +The graph query retriever executes structured queries (openCypher) against the graph store. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `graph_store` | GraphStore | Required | Graph store instance for query execution | `NeptuneAnalyticsGraphStore(...)` | +| `block_graph_modification` | bool | True | Block queries that modify the graph | `True` | + +WARNING: Setting `block_graph_modification` to False allows DELETE, CREATE, and other modification operations. Only disable this in controlled environments where query safety is guaranteed. + +## Entity Linker Configuration + +### KGLinker + +The KG linker coordinates LLM-based entity extraction and linking for multi-strategy retrieval. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `llm_generator` | BaseGenerator | Required | Language model for entity extraction | `BedrockGenerator(...)` | +| `graph_store` | GraphStore | Required | Graph store for schema and entity information | `NeptuneAnalyticsGraphStore(...)` | +| `max_input_tokens` | int | 32000 | Maximum tokens allowed in user input and question | 16000 | + +The `max_input_tokens` parameter prevents excessively long inputs that could cause LLM errors or high costs. + +### CypherKGLinker + +The Cypher KG linker specializes in generating and executing openCypher queries. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `llm_generator` | BaseGenerator | Required | Language model for Cypher generation | `BedrockGenerator(...)` | +| `graph_store` | GraphStore | Required | Graph store supporting openCypher execution | `NeptuneAnalyticsGraphStore(...)` | +| `max_input_tokens` | int | 32000 | Maximum tokens allowed in user input and question | 16000 | + +NOTE: The graph store must support openCypher query execution. Use Neptune Analytics or Neptune Database graph stores. + +## LLM Configuration + +### BedrockGenerator + +The Bedrock generator provides access to foundation models through Amazon Bedrock. + +#### Constructor Parameters + +| Parameter | Type | Default | Description | Example | +|-----------|------|---------|-------------|---------| +| `model_name` | str | "anthropic.claude-3-7-sonnet-20250219-v1:0" | Bedrock model identifier | "anthropic.claude-3-5-sonnet-20240620-v1:0" | +| `region_name` | str | "us-west-2" | AWS region for Bedrock service | "us-east-1" | +| `max_tokens` | int | 4096 | Maximum tokens to generate in responses | 8192 | +| `max_retries` | int | 10 | Maximum retry attempts for failed requests | 5 | +| `prefill` | bool | False | Enable response prefilling (advanced) | False | +| `inference_config` | dict | None | Custom inference configuration | `{"temperature": 0.7}` | +| `reasoning_config` | dict | None | Reasoning configuration for supported models | None | + +**Supported Models:** + +- Claude 3.5 Sonnet: `anthropic.claude-3-5-sonnet-20240620-v1:0` +- Claude 3.7 Sonnet: `anthropic.claude-3-7-sonnet-20250219-v1:0` +- Claude 3 Opus: `anthropic.claude-3-opus-20240229-v1:0` +- Claude 3 Haiku: `anthropic.claude-3-haiku-20240307-v1:0` + +TIP: Claude 3.5 Sonnet provides the best balance of performance and cost for most KGQA applications. Use Claude 3.7 Sonnet for the latest capabilities. + +**Inference Configuration:** + +The `inference_config` parameter accepts a dictionary with Bedrock inference parameters: + +```python +inference_config = { + "temperature": 0.7, # Controls randomness (0.0-1.0) + "topP": 0.9, # Nucleus sampling threshold + "maxTokens": 4096 # Maximum tokens to generate +} +``` + +## Complete Configuration Example + +This example shows a fully configured query engine with custom components: + +```python +from graphrag_toolkit.byokg_rag.graphstore import NeptuneAnalyticsGraphStore +from graphrag_toolkit.byokg_rag.llm import BedrockGenerator +from graphrag_toolkit.byokg_rag.graph_connectors import KGLinker +from graphrag_toolkit.byokg_rag.graph_retrievers import ( + AgenticRetriever, + PathRetriever, + GraphQueryRetriever, + EntityLinker, + GTraversal, + TripletGVerbalizer, + PathVerbalizer +) +from graphrag_toolkit.byokg_rag.indexing import FuzzyStringIndex +from graphrag_toolkit.byokg_rag.byokg_query_engine import ByoKGQueryEngine + +# Step 1: Set up graph store +graph_store = NeptuneAnalyticsGraphStore( + graph_identifier="", + region="" +) + +# Step 2: Set up LLM +llm_generator = BedrockGenerator( + model_name="anthropic.claude-3-5-sonnet-20240620-v1:0", + region_name="", + max_tokens=4096, + max_retries=10 +) + +# Step 3: Set up entity linking +fuzzy_index = FuzzyStringIndex() +fuzzy_index.add(graph_store.nodes()) +entity_matcher = fuzzy_index.as_entity_matcher() +entity_linker = EntityLinker(entity_matcher) + +# Step 4: Set up retrievers +graph_traversal = GTraversal(graph_store) +triplet_verbalizer = TripletGVerbalizer() +path_verbalizer = PathVerbalizer() + +triplet_retriever = AgenticRetriever( + llm_generator=llm_generator, + graph_traversal=graph_traversal, + graph_verbalizer=triplet_verbalizer, + max_num_relations=5, + max_num_entities=3, + max_num_iterations=3, + max_num_triplets=50 +) + +path_retriever = PathRetriever( + graph_traversal=graph_traversal, + path_verbalizer=path_verbalizer +) + +graph_query_executor = GraphQueryRetriever( + graph_store=graph_store, + block_graph_modification=True +) + +# Step 5: Set up KG linker +kg_linker = KGLinker( + llm_generator=llm_generator, + graph_store=graph_store, + max_input_tokens=32000 +) + +# Step 6: Create query engine +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + entity_linker=entity_linker, + triplet_retriever=triplet_retriever, + path_retriever=path_retriever, + graph_query_executor=graph_query_executor, + llm_generator=llm_generator, + kg_linker=kg_linker, + direct_query_linking=False +) + +# Step 7: Execute query +context = query_engine.query( + query="Who won the Nobel Prize in Physics in 1921?", + iterations=2, + user_input="" +) + +print("Retrieved context:") +for item in context: + print(f" - {item}") +``` + +This example demonstrates explicit configuration of all components. In practice, you can rely on defaults for most parameters and only customize what you need. diff --git a/docs-site/src/content/docs/byokg-rag/overview.mdx b/docs-site/src/content/docs/byokg-rag/overview.mdx new file mode 100644 index 00000000..7b3594f3 --- /dev/null +++ b/docs-site/src/content/docs/byokg-rag/overview.mdx @@ -0,0 +1,95 @@ +--- +title: Overview +--- + +The graphrag-toolkit [byokg-rag](../../byokg-rag/) library provides a framework for Knowledge Graph Question Answering (KGQA) that combines Large Language Models (LLMs) with existing knowledge graphs. The system allows applications to bring their own knowledge graph and perform complex question answering using multiple retrieval strategies. + + - [Graph stores and model providers](#graph-stores-and-model-providers) + - [Multi-strategy retrieval](#multi-strategy-retrieval) + - [Agentic retrieval](#agentic-retrieval) + - [Scoring-based retrieval](#scoring-based-retrieval) + - [Path-based retrieval](#path-based-retrieval) + - [Query-based retrieval](#query-based-retrieval) + - [System components](#system-components) + - [Query processing](#query-processing) + - [Getting started](#getting-started) + +### Graph stores and model providers + +The byokg-rag library depends on two backend systems: a _graph store_ and a _foundation model provider_. The graph store manages the knowledge graph data structure and provides interfaces for graph traversal and querying. The foundation model provider hosts the Large Language Models (LLMs) used for question understanding, entity linking, and answer generation. + +The library supports Amazon Neptune graph databases that provide schema information and query execution capabilities. The default LLM provider is Amazon Bedrock with Claude 3.5 Sonnet, though it can be extended to support other LLM providers. + +### Multi-strategy retrieval + +The byokg-rag library implements a multi-strategy approach to information retrieval from knowledge graphs. Unlike traditional single-strategy approaches, it combines four complementary retrieval methods to provide comprehensive coverage of relevant information. + +#### Agentic retrieval + +Agentic retrieval uses LLM-powered agents to dynamically explore the knowledge graph based on the question context. The agents make decisions about which graph paths to follow, adapting their exploration strategy based on intermediate findings. This approach is particularly effective for complex, multi-step reasoning tasks where the optimal retrieval path cannot be predetermined. + +#### Scoring-based retrieval + +Scoring-based retrieval assigns relevance scores to graph triplets based on their relationship to the user question. The system uses scoring functions relying on semantic similarity. Triplets (edges) are ranked by their scores, and the top-k results are selected for answer generation. + +#### Path-based retrieval + +Path-based retrieval focuses on multi-hop reasoning by following structured paths through the knowledge graph. The system identifies relevant metapath patterns and traverses the graph following these patterns to connect entities through intermediate nodes. This approach is effective for questions that require understanding complex relationships and dependencies between entities. + +#### Query-based retrieval + +Query-based retrieval translates natural language questions into structured graph queries (e.g., Cypher, SPARQL) and executes them directly against the knowledge graph. This approach provides precise, efficient access to specific information when the question can be mapped to well-defined query patterns. + +### System components + +The byokg-rag framework consists of several key components: + +1. **Graph Store** ([src/graphrag_toolkit/byokg_rag/graphstore](../../byokg-rag/src/graphrag_toolkit/byokg_rag/graphstore)) - Manages the knowledge graph data structure and provides interfaces for graph traversal and querying. + +2. **Graph Connectors** ([src/graphrag_toolkit/byokg_rag/graph_connectors](../../byokg-rag/src/graphrag_toolkit/byokg_rag/graph_connectors)) - Links natural language queries to graph entities and paths using LLMs. Includes KGLinker for basic linking functionality and CypherKGLinker for Cypher-specific operations. + +3. **Graph Retrievers** ([src/graphrag_toolkit/byokg_rag/graph_retrievers](../../byokg-rag/src/graphrag_toolkit/byokg_rag/graph_retrievers)) - Implements the various retrieval strategies: + - **Entity Linker** - Matches entities from text to graph nodes using exact matching, fuzzy string matching, and semantic similarity + - **Triplet Retriever** - Retrieves relevant triplets from the graph and verbalizes them in natural language format + - **Path Retriever** - Finds paths between entities following metapath patterns for structured traversal + +4. **Query Engine** ([src/graphrag_toolkit/byokg_rag/byokg_query_engine.py](../../byokg-rag/src/graphrag_toolkit/byokg_rag/byokg_query_engine.py)) - Orchestrates all components to process natural language questions and generate answers based on retrieved information. + +### Query processing + +Query processing in byokg-rag follows an iterative pipeline through the `ByoKGQueryEngine`: + +1. **Initialization** - Set up context lists and entity tracking for the retrieval process +2. **Direct Query Linking** (optional) - Use semantic similarity to link the query directly to graph entities +3. **Cypher-based Retrieval** (if CypherKGLinker provided) - Generate and execute Cypher queries with iterative refinement +4. **Multi-Strategy Retrieval** (if KGLinker provided) - Use iterative LLM-guided retrieval: + - Extract entities from natural language using LLM + - Link extracted entities to graph nodes using fuzzy string matching + - Retrieve triplets using agentic exploration from source entities + - Follow metapaths extracted by LLM between entities + - Execute structured graph queries generated by LLM +5. **Context Management** - Combine results with deduplication and order preservation +6. **Task Completion** - Monitor for LLM completion signals or reach maximum iterations + +The system's performance has been evaluated across multiple knowledge graph benchmarks: + +| KGQA Hit (%) | Wiki-KG | Temp-KG | Med-KG | +|--------------|---------|---------|--------| +| Agent | 77.8 | 57.3 | 59.2 | +| BYOKG-RAG | 80.1 | 65.5 | 65.0 | + +### Getting started + +You can get started with byokg-rag by installing the package and running the demo notebook: + +```bash +pip install https://github.com/awslabs/graphrag-toolkit/archive/refs/tags/v3.15.5.zip#subdirectory=byokg-rag +``` + +The repository includes several [example notebooks](../../examples/byokg-rag/) that demonstrate how to use the library with different graph stores and datasets: + +- [Local Graph Demo](../../examples/byokg-rag/byokg_rag_demo_local_graph.ipynb) - Getting started with local graph databases +- [Neptune Analytics Demo](../../examples/byokg-rag/byokg_rag_neptune_analytics_demo.ipynb) - Using Amazon Neptune Analytics +- [Neptune Analytics with Cypher](../../examples/byokg-rag/byokg_rag_neptune_analytics_demo_cypher.ipynb) - Cypher-based retrieval with Neptune Analytics +- [Neptune Database Demo](../../examples/byokg-rag/byokg_rag_neptune_db_cluster_demo.ipynb) - Using Amazon Neptune Database clusters +- [Neptune Analytics Embeddings](../../examples/byokg-rag/byokg_rag_neptune_analytics_embeddings.ipynb) - Working with embeddings in Neptune Analytics diff --git a/docs-site/src/content/docs/byokg-rag/query-engine.mdx b/docs-site/src/content/docs/byokg-rag/query-engine.mdx new file mode 100644 index 00000000..1f3aa778 --- /dev/null +++ b/docs-site/src/content/docs/byokg-rag/query-engine.mdx @@ -0,0 +1,299 @@ +--- +title: Query Engine +--- + +The `ByoKGQueryEngine` is the central orchestrating component that coordinates graph connectors, retrievers, and LLMs to process natural language questions and generate answers from knowledge graphs. It handles the high-level flow of query processing while delegating LLM-specific tasks to the KG Linker. + +### Overview + +The `ByoKGQueryEngine` orchestrates the interaction between multiple components to answer questions over knowledge graphs. It supports two main modes of operation: + +1. **Cypher-based retrieval** - Uses CypherKGLinker for direct query generation and execution +2. **Multi-strategy retrieval** - Uses KGLinker with multiple retrieval strategies (agentic, path-based, query-based) + +The engine can operate with either mode independently or combine both approaches for comprehensive question answering. + +### Architecture + +The query engine integrates the following components: + +- **Graph Store** - Provides access to graph data and schema information +- **Entity Linker** - Links natural language entities to graph nodes +- **Triplet Retriever** - Retrieves relevant triplets using agentic exploration +- **Path Retriever** - Finds and verbalizes paths between entities +- **Graph Query Executor** - Executes structured graph queries +- **KG Linker** - Handles LLM-based entity extraction and query understanding +- **Cypher KG Linker** - Specialized for Cypher query generation (optional) + +### Initialization + +#### Basic initialization + +```python +from graphrag_toolkit.byokg_rag.byokg_query_engine import ByoKGQueryEngine + +# Minimal initialization (uses defaults) +query_engine = ByoKGQueryEngine(graph_store=your_graph_store) +``` + +#### Full initialization with custom components + +```python +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + entity_linker=custom_entity_linker, + triplet_retriever=custom_triplet_retriever, + path_retriever=custom_path_retriever, + graph_query_executor=custom_query_executor, + llm_generator=custom_llm, + kg_linker=custom_kg_linker, + cypher_kg_linker=custom_cypher_linker, + direct_query_linking=False +) +``` + +#### Default component initialization + +When components are not provided, the engine initializes defaults: + +**Entity Linker**: Uses `FuzzyStringIndex` with all graph nodes +```python +from indexing import FuzzyStringIndex +from graph_retrievers import EntityLinker + +string_index = FuzzyStringIndex() +string_index.add(graph_store.nodes()) +entity_retriever = string_index.as_entity_matcher() +entity_linker = EntityLinker(entity_retriever) +``` + +**Triplet Retriever**: Uses `AgenticRetriever` with graph traversal +```python +from graph_retrievers import AgenticRetriever, GTraversal, TripletGVerbalizer + +graph_traversal = GTraversal(graph_store) +graph_verbalizer = TripletGVerbalizer() +triplet_retriever = AgenticRetriever( + llm_generator=llm_generator, + graph_traversal=graph_traversal, + graph_verbalizer=graph_verbalizer +) +``` + +**Path Retriever**: Uses `PathRetriever` with path verbalization +```python +from graph_retrievers import PathRetriever, GTraversal, PathVerbalizer + +graph_traversal = GTraversal(graph_store) +path_verbalizer = PathVerbalizer() +path_retriever = PathRetriever( + graph_traversal=graph_traversal, + path_verbalizer=path_verbalizer +) +``` + +### Query processing + +#### Main query method + +```python +def query(self, query: str, iterations: int = 2, cypher_iterations: int = 2) -> Tuple[List[str], List[str]] +``` + +The `query` method processes questions through the retrieval pipeline and returns retrieved context. + +**Parameters:** +- `query` (str): The search query +- `iterations` (int): Number of retrieval iterations for multi-strategy approach (default: 2) +- `cypher_iterations` (int): Number of Cypher generation retries (default: 2) + +**Returns:** +- Tuple of (retrieved context, final answers) as lists of strings + +#### Query processing flow + +1. **Initialize context** - Set up empty context lists and entity tracking +2. **Direct query linking** (optional) - Use semantic similarity for initial entity linking +3. **Cypher-based retrieval** (if CypherKGLinker provided) - Generate and execute Cypher queries +4. **Multi-strategy retrieval** (if KGLinker provided) - Use iterative entity extraction and retrieval +5. **Context aggregation** - Combine results from all strategies + +### Cypher-based retrieval + +When a `cypher_kg_linker` is provided, the engine performs Cypher-based retrieval: + +#### Process flow + +1. **Generate Cypher response** - Use CypherKGLinker to generate linking and query artifacts +2. **Execute linking queries** - Process `opencypher-linking` artifacts for entity discovery +3. **Execute main queries** - Process `opencypher` artifacts for answer retrieval +4. **Handle failures** - Provide feedback for failed queries to improve subsequent iterations +5. **Iterate** - Repeat for specified number of `cypher_iterations` + +#### Error handling + +The engine provides feedback for failed Cypher queries: + +```python +if len(answers) == 0: + cypher_context_with_feedback.append( + "No executable results for the above. Please improve cypher generation " + "in the future by focusing more on the given schema and the relations " + "between node types." + ) +``` + +### Multi-strategy retrieval + +When a `kg_linker` is provided, the engine performs multi-strategy retrieval: + +#### Iterative process + +1. **Generate LLM response** - Use KGLinker to extract entities, paths, and queries +2. **Link entities** - Connect extracted entities to graph nodes +3. **Retrieve triplets** - Use AgenticRetriever for contextual triplet extraction +4. **Process paths** - Follow extracted metapaths between entities +5. **Execute queries** - Run structured graph queries (Cypher, SPARQL) +6. **Check completion** - Stop if task completion signal is detected + +#### Task completion + +The engine checks for completion signals in LLM responses: + +```python +task_completion = parse_response(response, r"(.*?)") +if "FINISH" in " ".join(task_completion): + break +``` + +#### Iterative prompting + +The engine uses different prompts for different iterations: +- **First iteration**: Uses standard task prompts +- **Subsequent iterations**: Uses iterative prompts that build on previous context + +### Usage examples + +#### Basic usage + +```python +# Initialize with graph store +query_engine = ByoKGQueryEngine(graph_store=graph_store) + +# Process a question +question = "What are the side effects of aspirin?" +context = query_engine.query(question) + +print("Retrieved context:") +for item in context: + print(f"- {item}") +``` + +#### Cypher-focused usage + +```python +from graph_connectors import CypherKGLinker + +# Initialize with Cypher support +cypher_linker = CypherKGLinker(llm_generator, graph_store) +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + cypher_kg_linker=cypher_linker +) + +# Process question with Cypher iterations +question = "Find all drugs that interact with aspirin" +context = query_engine.query(question, cypher_iterations=3) +``` + +#### Multi-strategy with custom components + +```python +# Custom entity linker with semantic similarity +from indexing import SemanticIndex +semantic_index = SemanticIndex(embedding_model) +semantic_index.add(graph_store.nodes()) +entity_linker = EntityLinker(semantic_index.as_entity_matcher()) + +# Initialize with custom components +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + entity_linker=entity_linker, + direct_query_linking=True # Enable semantic entity linking +) + +# Process with multiple iterations +context = query_engine.query(question, iterations=3) +``` + +#### Response generation + +```python +# Generate final response from retrieved context +question = "What causes headaches?" +context = query_engine.query(question) + +# Generate answer using retrieved context +answers, full_response = query_engine.generate_response( + query=question, + graph_context="\n".join(context) +) + +print("Generated answers:") +for answer in answers: + print(f"- {answer}") +``` + +#### Combining both approaches + +```python +# Initialize with both KG Linker and Cypher KG Linker +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + kg_linker=kg_linker, + cypher_kg_linker=cypher_linker +) + +# The engine will first try Cypher-based retrieval, +# then fall back to multi-strategy retrieval +context = query_engine.query(question) +``` + +### Configuration options + +#### Direct query linking + +Enable semantic similarity-based entity linking: + +```python +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + direct_query_linking=True +) +``` + +#### Custom LLM configuration + +```python +from llm import BedrockGenerator + +custom_llm = BedrockGenerator( + model_name='us.anthropic.claude-3-5-sonnet-20240620-v1:0', + region_name='us-west-2' +) + +query_engine = ByoKGQueryEngine( + graph_store=graph_store, + llm_generator=custom_llm +) +``` + +#### Iteration control + +```python +# Fine-tune iteration counts for different strategies +context = query_engine.query( + question, + iterations=2, # Multi-strategy iterations + cypher_iterations=2 # Cypher retry iterations +) diff --git a/docs-site/src/content/docs/index.mdx b/docs-site/src/content/docs/index.mdx new file mode 100644 index 00000000..9375d10b --- /dev/null +++ b/docs-site/src/content/docs/index.mdx @@ -0,0 +1,67 @@ +--- +title: GraphRAG Toolkit +description: A Python toolkit for building graph-enhanced generative AI applications on AWS. +template: splash +hero: + title: | + Graph-enhanced
+ retrieval for
+ generative AI. + tagline: An open-source Python toolkit from AWS Labs for building hierarchical lexical graphs and querying them with multi-strategy retrieval. + actions: + - text: Get started + link: /graphrag-toolkit/lexical-graph/overview/ + icon: right-arrow + variant: primary + - text: View on GitHub + link: https://github.com/awslabs/graphrag-toolkit + icon: external + variant: minimal +--- + +import { Card, CardGrid, Code } from '@astrojs/starlight/components'; + + + + Automate the construction of a hierarchical lexical graph from unstructured documents, then query it with semantic-guided or traversal-based retrieval. + + + Bring your own knowledge graph. Plug an existing graph into a multi-strategy KGQA pipeline without re-extracting anything. + + + Graph stores: Amazon Neptune (DB and Analytics), Neo4j, FalkorDB. Vector stores: Neptune, OpenSearch, Postgres, S3 Vectors. + + + Apache 2.0, developed in the open by AWS Labs. + + + +## Install + + + +## Quickstart + + diff --git a/docs-site/src/content/docs/lexical-graph/configuration.mdx b/docs-site/src/content/docs/lexical-graph/configuration.mdx new file mode 100644 index 00000000..5784616f --- /dev/null +++ b/docs-site/src/content/docs/lexical-graph/configuration.mdx @@ -0,0 +1,304 @@ +--- +title: Configuration +--- + +import { Aside } from '@astrojs/starlight/components'; +import StoreUrlBuilder from '../../../components/StoreUrlBuilder.tsx'; + +## Graph store connection string builder + +Pick a backend and fill in the fields — this is the same URL you'll pass to `GraphStoreFactory.for_graph_store(...)`. + + + +## Overview + +The lexical-graph provides a `GraphRAGConfig` object that allows you to configure the LLMs and embedding models used by the indexing and retrieval processes, as well as the parallel and batch processing behaviours of the indexing pipelines. (The lexical-graph doesn't use the LlamaIndex `Settings` object: attributes configured in `Settings` will have no impact in the graphrag-toolkit.) + +The lexical-graph also allows you to set the logging level and apply logging filters from within your application. + +### GraphRAGConfig + +`GraphRAGConfig` is a module-level singleton (not a class to instantiate). It is created once at import time ([`config.py`](../../lexical-graph/src/graphrag_toolkit/lexical_graph/config.py#L1171)) and shared across the process. Set attributes directly on the imported object: + +```python +from graphrag_toolkit.lexical_graph import GraphRAGConfig + +GraphRAGConfig.aws_region = 'eu-west-1' +GraphRAGConfig.extraction_llm = 'anthropic.claude-3-5-sonnet-20241022-v2:0' +``` + +Setting `aws_profile` or `aws_region` automatically clears all cached boto3 clients. + + + +The configuration includes the following parameters: + +| Parameter | Description | Default Value | Environment Variable | +| ------------- | ------------- | ------------- | ------------- | +| `extraction_llm` | LLM used to perform graph extraction (see [LLM configuration](#llm-configuration)) | `us.anthropic.claude-3-7-sonnet-20250219-v1:0` | `EXTRACTION_MODEL` | +| `response_llm` | LLM used to generate responses (see [LLM configuration](#llm-configuration)) | `us.anthropic.claude-3-7-sonnet-20250219-v1:0` | `RESPONSE_MODEL` | +| `embed_model` | Embedding model used to generate embeddings for indexed data and queries (see [Embedding model configuration](#embedding-model-configuration)) | `cohere.embed-english-v3` | `EMBEDDINGS_MODEL` | +| `embed_dimensions` | Number of dimensions in each vector | `1024` | `EMBEDDINGS_DIMENSIONS` | +| `extraction_num_workers` | The number of parallel processes to use when running the extract stage | `2` | `EXTRACTION_NUM_WORKERS` | +| `extraction_num_threads_per_worker` | The number of threads used by each process in the extract stage | `4` | `EXTRACTION_NUM_THREADS_PER_WORKER` | +| `extraction_batch_size` | The number of input nodes to be processed in parallel across all workers in the extract stage | `4` | `EXTRACTION_BATCH_SIZE` | +| `build_num_workers` | The number of parallel processes to use when running the build stage | `2` | `BUILD_NUM_WORKERS` | +| `build_batch_size` | The number of input nodes to be processed in parallel across all workers in the build stage | `4` | `BUILD_BATCH_SIZE` | +| `build_batch_write_size` | The number of elements to be written in a bulk operation to the graph and vector stores (see [Batch writes](#batch-writes)) | `25` | `BUILD_BATCH_WRITE_SIZE` | +| `batch_writes_enabled` | Determines whether, on a per-worker basis, to write all elements (nodes and edges, or vectors) emitted by a batch of input nodes as a bulk operation, or singly, to the graph and vector stores (see [Batch writes](#batch-writes)) | `True` | `BATCH_WRITES_ENABLED` | +| `include_domain_labels` | Determines whether entities will have a domain-specific label (e.g. `Company`) as well as the [graph model's](./graph-model.md#entity-relationship-tier) `__Entity__` label | `False` | `INCLUDE_DOMAIN_LABELS` | +| `include_local_entities` | Whether to include local-context entities in the graph | `False` | `INCLUDE_LOCAL_ENTITIES` | +| `include_classification_in_entity_id` | Whether to include an entity's classification in its graph node id | `True` | `INCLUDE_CLASSIFICATION_IN_ENTITY_ID` | +| `enable_versioning` | Whether to enable versioned updates (see [Versioned Updates](./versioned-updates.md)) | `False` | `ENABLE_VERSIONING` | +| `enable_cache` | Determines whether the results of LLM calls to models on Amazon Bedrock are cached to the local filesystem (see [Caching Amazon Bedrock LLM responses](#caching-amazon-bedrock-llm-responses)) | `False` | `ENABLE_CACHE` | +| `aws_profile` | AWS CLI named profile used to authenticate requests to Bedrock and other services | *None* | `AWS_PROFILE` | +| `aws_region` | AWS region used to scope Bedrock service calls | *Default boto3 session region* | `AWS_REGION` | + +The following parameters configure the rerankers used by query retrievers: + +| Parameter | Description | Default | Environment Variable | +| ------------- | ------------- | ------------- | ------------- | +| `reranking_model` | Local reranker model (mixedbread-ai) | `mixedbread-ai/mxbai-rerank-xsmall-v1` | `RERANKING_MODEL` | +| `bedrock_reranking_model` | Amazon Bedrock reranker model | `cohere.rerank-v3-5:0` | `BEDROCK_RERANKING_MODEL` | + +The following parameter applies only when using Amazon OpenSearch Serverless as a vector store: + +| Parameter | Description | Default | Environment Variable | +| ------------- | ------------- | ------------- | ------------- | +| `opensearch_engine` | OpenSearch kNN engine | `nmslib` | `OPENSEARCH_ENGINE` | + +The following parameters configure local filesystem paths for container/EKS deployments: + +| Parameter | Description | Default | Environment Variable | +| ------------- | ------------- | ------------- | ------------- | +| `local_output_dir` | Local staging directory for batch files and temporary extraction outputs | `output` | `LOCAL_OUTPUT_DIR` | +| `log_output_dir` | Directory prefix for log files (when filename is relative) | *None* | `LOG_OUTPUT_DIR` | + +To set a configuration parameter in your application code: + +```python +from graphrag_toolkit.lexical_graph import GraphRAGConfig + +GraphRAGConfig.response_llm = 'anthropic.claude-3-haiku-20240307-v1:0' +GraphRAGConfig.extraction_num_workers = 4 +``` + +You can also set any of these via environment variables using the variable names in the tables above. + +#### LLM configuration + +The `extraction_llm` and `response_llm` configuration parameters accept three different types of value: + + - You can pass an instance of a LlamaIndex `LLM` object. This allows you to configure the lexical-graph for LLM backends other than Amazon Bedrock. + - You can pass the model id of an Amazon Bedrock model or [inference profile](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles.html). For example: `anthropic.claude-3-7-sonnet-20250219-v1:0` (model id) or `us.anthropic.claude-3-7-sonnet-20250219-v1:0` (inference profile). + - You can pass a JSON string representation of a LlamaIndex `BedrockConverse` instance. For example: + + ``` + { + "model": "anthropic.claude-3-7-sonnet-20250219-v1:0", + "temperature": 0.0, + "max_tokens": 4096 + } + ``` + +#### Embedding model configuration + +The `embed_model` configuration parameter accepts three different types of value: + + - You can pass an instance of a LlamaIndex `BaseEmbedding` object. This allows you to configure the lexical-graph for embedding backends other than Amazon Bedrock. + - You can pass the model name of an Amazon Bedrock model. For example: `amazon.titan-embed-text-v1`. + - You can pass a JSON string representation of a LlamaIndex `BedrockEmbedding` instance. For example: + + ``` + { + "model_name": "amazon.titan-embed-text-v2:0" + } + ``` + +When configuring an embedding model, you must also set the `embed_dimensions` configuration parameter to match the model's output dimensions. For example: + +```python +GraphRAGConfig.embed_model = '{"model_name": "amazon.titan-embed-text-v2:0"}' +GraphRAGConfig.embed_dimensions = 512 +``` + +##### Nova 2 Multimodal Embeddings + +Amazon Nova 2 multimodal embedding models (`amazon.nova-2-multimodal-embeddings-v1:0`) use a different API format than standard Bedrock embedding models. To use Nova 2 models, you must explicitly import and instantiate the `Nova2MultimodalEmbedding` class. + +**Usage:** + +```python +from graphrag_toolkit.lexical_graph import GraphRAGConfig +from graphrag_toolkit.lexical_graph.utils.bedrock_utils import Nova2MultimodalEmbedding + +GraphRAGConfig.embed_model = Nova2MultimodalEmbedding('amazon.nova-2-multimodal-embeddings-v1:0') +GraphRAGConfig.embed_dimensions = 3072 +``` + +**API Format Differences:** + +Standard Bedrock embeddings (Titan, Cohere) use: +```json +{"inputText": "text to embed"} +``` + +Nova 2 multimodal embeddings require: +```json +{ + "taskType": "SINGLE_EMBEDDING", + "singleEmbeddingParams": { + "embeddingDimension": 3072, + "embeddingPurpose": "TEXT_RETRIEVAL", + "text": { + "truncationMode": "END", + "value": "text to embed" + } + } +} +``` + +**Configuration Parameters:** + +| Parameter | Description | Default | Valid Values | +| --------- | ----------- | ------- | ------------ | +| `embed_dimensions` | Vector dimensions | `3072` | `1024`, `3072` | +| `embed_purpose` | Embedding optimization purpose | `TEXT_RETRIEVAL` | `TEXT_RETRIEVAL`, `GENERIC_RETRIEVAL`, `DOCUMENT_RETRIEVAL`, `CLASSIFICATION`, `CLUSTERING` | +| `truncation_mode` | How to handle text exceeding max length | `END` | `END`, `NONE` | + +**Advanced Configuration:** + +To configure Nova 2 multimodal embeddings with custom parameters: + +```python +from graphrag_toolkit.lexical_graph import GraphRAGConfig +from graphrag_toolkit.lexical_graph.utils.bedrock_utils import Nova2MultimodalEmbedding + +embedding = Nova2MultimodalEmbedding( + model_name='amazon.nova-2-multimodal-embeddings-v1:0', + embed_dimensions=3072, + embed_purpose='TEXT_RETRIEVAL', + truncation_mode='END' +) + +GraphRAGConfig.embed_model = embedding +GraphRAGConfig.embed_dimensions = 3072 +``` + +**Features:** +- Handles Nova 2's unique API format automatically +- Includes retry logic for transient Bedrock errors +- Custom pickle support for multiprocessing scenarios +- Lazy client initialization using GraphRAGConfig.session +- Empty text validation to prevent API errors + +#### Batch writes + +The lexical-graph uses microbatching to progress source data through the extract and build stages. + + - In the extract stage a batch of source nodes is processed in parallel by one or more workers, with each worker performing chunking, proposition extraction and topic/statement/fact/entity extraction over its allocated source nodes. For a given batch of source nodes, the extract stage emits a collection of chunks derived from those source nodes. + - In the build stage, chunks from the extract stage are broken down into smaller *indexable* nodes representing sources, chunks, topics, statements and facts. These indexable nodes are then processed by the graph construction and vector indexing handlers. + +The `batch_writes_enabled` configuration parameter determines whether all of the indexable nodes derived from a batch of incoming chunks are written to the graph and vector stores singly, or as a bulk operation. Bulk/batch operations tend to improve the throughput of the build stage, at the expense of some additonal latency with regard to this data becoming available to query. + +#### Caching Amazon Bedrock LLM responses + +If you're using Amazon Bedrock, you can use the local filesystem to cache and reuse LLM responses. Set `GraphRAGConfig.enable_cache` to `True`. LLM responses will then be saved in clear text to a `cache` directory. Subsequent invocations of the same model with the exact same prompt will return the cached response. + +Note that streaming responses from the query engine are _not_ cached. + +The `cache` directory can grow very large, particularly if you are caching extraction responses for a very large ingest. The lexical-graph will not manage the size of this directory or delete old entries. If you enable the cache, ensure you clear or prune the cache directory regularly. + +### Logging configuration + +The `graphrag_toolkit` provides two methods for configuring logging in your application. These methods allow you to set logging levels, apply filters to include or exclude specific modules or messages, and customize logging behavior: + +- `set_logging_config` +- `set_advanced_logging_config` + +#### set_logging_config + +The `set_logging_config` method allows you to configure logging with a basic set of options, such as logging level and module filters. Wildcards are supported for module names, and you can pass either a single string or a list of strings for included or excluded modules. You can optionally provide a `filename` to write log output to a file in addition to stdout. For example: + +```python +from graphrag_toolkit.lexical_graph import set_logging_config + +set_logging_config( + logging_level='DEBUG', # or logging.DEBUG + debug_include_modules='graphrag_toolkit.lexical_graph.storage', # single string or list of strings + debug_exclude_modules=['opensearch', 'boto'], # single string or list of strings + filename='output.log' # optional: also write logs to a file +) +``` + +#### set_advanced_logging_config + +The `set_advanced_logging_config` method provides more advanced logging configuration options, including the ability to specify filters for included and excluded modules or messages based on logging levels. Wildcards are supported for module names and included messages, and you can pass either a single string or a list of strings for modules or messages. This method offers greater flexibility and control over the logging behavior. + +##### Parameters + +| Parameter | Type | Description | Default Value | +|---------------------|-------------------------------|---------------------------------------------------------------------------------------------|----------------| +| `logging_level` | `str` or `int` | The logging level to apply (e.g., `'DEBUG'`, `'INFO'`, `logging.DEBUG`, etc.). | `logging.INFO` | +| `included_modules` | `dict[int, str \| list[str]]` | Modules to include in logging, grouped by logging level. Wildcards are supported. | `None` | +| `excluded_modules` | `dict[int, str \| list[str]]` | Modules to exclude from logging, grouped by logging level. Wildcards are supported. | `None` | +| `included_messages` | `dict[int, str \| list[str]]` | Specific messages to include in logging, grouped by logging level. Wildcards are supported. | `None` | +| `excluded_messages` | `dict[int, str \| list[str]]` | Specific messages to exclude from logging, grouped by logging level. | `None` | +| `filename` | `str` | If provided, log output is also written to this file in addition to stdout. | `None` | + +##### Example Usage + +Here is an example of how to use `set_advanced_logging_config`: + +```python +import logging +from graphrag_toolkit.lexical_graph import set_advanced_logging_config + +set_advanced_logging_config( + logging_level=logging.DEBUG, + included_modules={ + logging.DEBUG: 'graphrag_toolkit', # single string or list of strings + logging.INFO: '*', # wildcard supported + }, + excluded_modules={ + logging.DEBUG: ['opensearch', 'boto', 'urllib'], # single string or list of strings + logging.INFO: ['opensearch', 'boto', 'urllib'], # wildcard supported + }, + excluded_messages={ + logging.WARNING: 'Removing unpickleable private attribute', # single string or list of strings + } +) +``` + +### AWS profile configuration + +You can explicitly configure the AWS CLI profile and region to use when initializing Bedrock clients or other AWS service clients in `GraphRAGConfig`. This ensures compatibility across local development, EC2/ECS environments, or federated environments such as AWS SSO. + +You may set the AWS profile and region in your application code: + +```python +from graphrag_toolkit.lexical_graph import GraphRAGConfig + +GraphRAGConfig.aws_profile = 'padmin' +GraphRAGConfig.aws_region = 'us-east-1' +``` + +Alternatively, use environment variables: + +```bash +export AWS_PROFILE=padmin +export AWS_REGION=us-east-1 +``` + +If no profile or region is set explicitly, the system falls back to environment variables or the default AWS CLI configuration. + +See [Using AWS Profiles in `GraphRAGConfig`](./aws-profile.md) for more details on configuring and using AWS named profiles. + +#### Resilient clients and SSO token refresh + +All boto3 clients created by `GraphRAGConfig` are wrapped in a `ResilientClient` ([`config.py:94`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/config.py#L94)). On `ExpiredToken`, `RequestExpired`, or `InvalidClientTokenId` errors the client is refreshed automatically and the call is retried. + +When an AWS SSO profile is in use, the client wrapper also validates the SSO token age. If the token is more than one hour old, it runs `aws sso login` automatically before retrying. This is relevant for long-running indexing jobs and any environment where SSO sessions can expire mid-run. diff --git a/docs-site/src/content/docs/lexical-graph/indexing.mdx b/docs-site/src/content/docs/lexical-graph/indexing.mdx new file mode 100644 index 00000000..83b22ee7 --- /dev/null +++ b/docs-site/src/content/docs/lexical-graph/indexing.mdx @@ -0,0 +1,413 @@ +--- +title: Indexing +--- + +import { Aside } from '@astrojs/starlight/components'; + +## Overview + +There are two stages to indexing: extract, and build. The lexical-graph uses separate pipelines for each of these stages, plus micro-batching, to provide a continous ingest capability. This means that your graph will start being populated soon after extraction begins. + +You can run the extract and build pipelines together, to provide for the continuous ingest described above. Or you can run the two pipelines separately, extracting first to file-based chunks, and then later building a graph from these chunks. + +The `LexicalGraphIndex` allows you to run the extract and build pipelines together or separately. See the [Using the LexicalGraphIndex to construct a graph](#using-the-lexicalgraphindex-to-construct-a-graph) section below. + +Indexing supports [multi-tenancy](multi-tenancy.md), whereby you can store separate lexical graphs in the same backend graph and vector stores. + +#### Extract + +The extraction stage is, by default, a three-step process: + + 1. The source documents are broken down into chunks. + 2. For each chunk, an LLM extracts a set of propositions from the unstructured content. This proposition extraction helps 'clean' the content and improve the subsequent entity/topic/statement/fact extraction by breaking complex sentences into simpler sentences, replacing pronouns with specific names, and replacing acronyms where possible. These propositions are added to the chunk's metadata under the `aws::graph::propositions` key. + 3. Following the proposition extraction, a second LLM call extracts entities, relations, topics, statements and facts from the set of extracted propositions. These details are added to the chunk's metadata under the `aws::graph::topics` key. + +Only the third step here is mandatory. If your source data has already been chunked, you can omit step 1. If you're willing to trade a reduction in LLM calls and improved performance for a reduction in the quality of the entity/topic/statement/fact extraction, you can omit step 2. + +Extraction uses a lightly guided strategy whereby the extraction process is seeded with a list of preferred entity classifications. The LLM is instructed to use an existing classification from the list before creating new ones. Any new classifications introduced by the LLM are then carried forward to subsequent invocations. This approach reduces but doesn't eliminate unwanted variations in entity classification. + +The list of `DEFAULT_ENTITY_CLASSIFICATIONS` used to seed the extraction process can be found [here](https://github.com/awslabs/graphrag-toolkit/blob/main/src/graphrag_toolkit/indexing/constants.py). If these classifications are not appropriate to your workload you can replace them (see the [Configuring the extract and build stages](#configuring-the-extract-and-build-stages) section below). + +Relationship values are currently unguided (though relatively concise). + +#### Build + +In the build stage, the LlamaIndex chunk nodes emitted from the extract stage are broken down further into a stream of individual source, chunk, topic, statement and fact LlamaIndex nodes. Graph construction and vector indexing handlers process these nodes to build and index the graph content. Each of these nodes has an `aws::graph::index` metadata item containing data that can be used to index the node in a vector store (though only the chunk and statement nodes are actually indexed in the current implementation). + +### Using the LexicalGraphIndex to construct a graph + +The `LexicalGraphIndex` provides a convenient means of constructing a graph – via either continuous ingest, or separate extract and build stages. When constructing a `LexicalGraphIndex` you must supply a graph store and a vector store (see [Storage Model](./storage-model.md) for more details). In the examples below, the graph store and vector store connection strings are fetched from environment variables. + +The `LexicalGraphIndex` constructor has an `extraction_dir` named argument. This is the path to a local directory to which intermediate artefacts (such as [checkpoints](#checkpoints)) will be written. By default, the value of `extraction_dir` is set to the value of `GraphRAGConfig.local_output_dir`, which defaults to `'output'`. For containerized deployments (EKS/Kubernetes), you can configure this via the `LOCAL_OUTPUT_DIR` environment variable or by setting `GraphRAGConfig.local_output_dir` programmatically. See [Configuration](./configuration.md) for more details. + +#### Continous ingest + +Use `LexicalGraphIndex.extract_and_build()` to extract and build a graph in a manner that supports continous ingest. + +The extraction stage consumes LlamaIndex nodes – either documents, which will be chunked during extraction, or pre-chunked text nodes. Use a LlamaIndex reader to [load source documents](https://docs.llamaindex.ai/en/stable/understanding/loading/loading/). The example below uses a LlamaIndex `SimpleWebReader` to load several HTML pages. + +```python title="continuous_ingest.py" {22,30} "extract_and_build" +import os + +from graphrag_toolkit.lexical_graph import LexicalGraphIndex +from graphrag_toolkit.lexical_graph.storage import GraphStoreFactory +from graphrag_toolkit.lexical_graph.storage import VectorStoreFactory + +from llama_index.readers.web import SimpleWebPageReader + +doc_urls = [ + 'https://docs.aws.amazon.com/neptune/latest/userguide/intro.html', + 'https://docs.aws.amazon.com/neptune-analytics/latest/userguide/what-is-neptune-analytics.html', + 'https://docs.aws.amazon.com/neptune-analytics/latest/userguide/neptune-analytics-features.html', + 'https://docs.aws.amazon.com/neptune-analytics/latest/userguide/neptune-analytics-vs-neptune-database.html' +] + +docs = SimpleWebPageReader( + html_to_text=True, + metadata_fn=lambda url:{'url': url} +).load_data(doc_urls) + +with ( + GraphStoreFactory.for_graph_store(os.environ['GRAPH_STORE']) as graph_store, + VectorStoreFactory.for_vector_store(os.environ['VECTOR_STORE']) as vector_store +): + + graph_index = LexicalGraphIndex( + graph_store, + vector_store + ) + + graph_index.extract_and_build(docs) +``` + + + +The diff below shows what changes when you split the pipelines: + +```diff lang="python" +- graph_index.extract_and_build(docs) ++ extracted_docs = S3BasedDocs( ++ region=os.environ['AWS_REGION'], ++ bucket_name=os.environ['EXTRACTION_BUCKET'], ++ key_prefix='extracted', ++ ) ++ graph_index.extract(docs, handler=extracted_docs, show_progress=True) ++ graph_index.build(extracted_docs, show_progress=True) +``` + +#### Run the extract and build stages separately + +Using the `LexicalGraphIndex` you can perform the extract and build stages separately. This is useful if you want to extract the graph once, and then build it multiple times (in different environments, for example.) + +When you run the extract and build stages separately, you can persist the extracted documents to Amazon S3 or to the filesystem at the end of the extract stage, and then consume these same documents in the build stage. Use the graphrag-toolkit's `S3BasedDocss` and `FileBasedDocs` classes to persist and then retrieve JSON-serialized LlamaIndex nodes. + +The following example shows how to use a `S3BasedDocs` handler to persist extracted documents to an Amazon S3 bucket at the end of the extract stage: + +```python +import os + +from graphrag_toolkit.lexical_graph import LexicalGraphIndex +from graphrag_toolkit.lexical_graph.storage import GraphStoreFactory +from graphrag_toolkit.lexical_graph.storage import VectorStoreFactory +from graphrag_toolkit.lexical_graph.indexing.load import S3BasedDocs + +from llama_index.readers.web import SimpleWebPageReader + +extracted_docs = S3BasedDocs( + region='us-east-1', + bucket_name='my-bucket', + key_prefix='extracted', + collection_id='12345' +) + +with ( + GraphStoreFactory.for_graph_store(os.environ['GRAPH_STORE']) as graph_store, + VectorStoreFactory.for_vector_store(os.environ['VECTOR_STORE']) as vector_store +): + + graph_index = LexicalGraphIndex( + graph_store, + vector_store + ) + + doc_urls = [ + 'https://docs.aws.amazon.com/neptune/latest/userguide/intro.html', + 'https://docs.aws.amazon.com/neptune-analytics/latest/userguide/what-is-neptune-analytics.html', + 'https://docs.aws.amazon.com/neptune-analytics/latest/userguide/neptune-analytics-features.html', + 'https://docs.aws.amazon.com/neptune-analytics/latest/userguide/neptune-analytics-vs-neptune-database.html' + ] + + docs = SimpleWebPageReader( + html_to_text=True, + metadata_fn=lambda url:{'url': url} + ).load_data(doc_urls) + + graph_index.extract(docs, handler=extracted_docs) +``` + +Following the extract stage, you can then build the graph from the previously extracted documents. Whereas in the extract stage the `S3BasedDocs` object acted as a handler to persist extracted documents, in the build stage the `S3BasedDocs` object acts as a source of LlamaIndex nodes, and is thus passed as the first argument to the `build()` method: + +```python +import os + +from graphrag_toolkit.lexical_graph import LexicalGraphIndex +from graphrag_toolkit.lexical_graph.storage import GraphStoreFactory +from graphrag_toolkit.lexical_graph.storage import VectorStoreFactory +from graphrag_toolkit.lexical_graph.indexing.load import S3BasedDocs + +docs = S3BasedDocs( + region='us-east-1', + bucket_name='my-bucket', + key_prefix='extracted', + collection_id='12345' +) + +with ( + GraphStoreFactory.for_graph_store(os.environ['GRAPH_STORE']) as graph_store, + VectorStoreFactory.for_vector_store(os.environ['VECTOR_STORE']) as vector_store +): + + graph_index = LexicalGraphIndex( + graph_store, + vector_store + ) + + graph_index.build(docs) +``` + +The `S3BasedDocs` object has the following parameters: + +| Parameter | Description | Mandatory | +| ------------- | ------------- | ------------- | +| `region` | AWS Region in which the S3 bucket is located (e.g. `us-east-1`) | Yes | +| `bucket_name` | Amazon S3 bucket name | Yes | +| `key_prefix` | S3 key prefix | Yes | +| `collection_id` | Id for a particular collection of extracted documents. Optional: if no `collection_id` is supplied, the lexical-graph will create a timestamp value. Extracted documents will be written to `s3://///`. | No | +| `s3_encryption_key_id` | KMS key id (Key ID, Key ARN, or Key Alias) to use for object encryption. Optional: if no `s3_encryption_key_id` is supplied, the lexical-graph will encrypt objects in S3 using Amazon S3 managed keys. | No | + +If you use Amazon Web Services KMS keys to encrypt objects in S3, the identity under which the lexical-graph runs should include the following IAM policy. Replace `` with the ARN of the KMS key you want to use to encrypt objects: + +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Action": [ + "kms:GenerateDataKey", + "kms:Decrypt" + ], + "Resource": [ + "" + ], + "Effect": "Allow" + } + ] +} +``` + +If you want to persist extracted documents to the local filesystem instead of an S3 bucket, use a `FileBasedDocs` object instead: + +```python +from graphrag_toolkit.lexical_graph.indexing.load import FileBasedDocs + +chunks = FileBasedDocs( + docs_directory='./extracted/', + collection_id='12345' +) +``` + +The `FileBasedChunks` object has the following parameters: + +| Parameter | Description | Mandatory | +| ------------- | ------------- | ------------- | +| `docs_directory` | Root directory for the extracted documents | Yes | +| `collection_id` | Id for a particular collection of extracted documents. Optional: if no `collection_id` is supplied, the lexical-graph will create a timestamp value. Extracted documents will be written to `///`. | No | + + +#### Configuring the extract and build stages + +You can configure the number of workers and batch sizes for the extract and build stages of the `LexicalGraphIndex` using the `GraphRAGConfig` object. See [Configuration](./configuration.md) for more details on using the configuration object. + +Besides configuring the workers and batch sizes, you can also configure the indexing process with regard to chunking, proposition extraction and entity classification, and graph and vector store contents by passing an instance of `IndexingConfig` to the `LexicalGraphIndex` constructor: + +```python +from graphrag_toolkit.lexical_graph import LexicalGraphIndex, IndexingConfig, ExtractionConfig + +... + +graph_index = LexicalGraphIndex( + graph_store, + vector_store, + indexing_config = IndexingConfig( + chunking=None, + extraction=ExtractionConfig( + enable_proposition_extraction=False + ) + + ) +) +``` + +The `IndexingConfig` object has the following parameters: + +| Parameter | Description | Default Value | +| ------------- | ------------- | ------------- | +| `chunking` | A list of node parsers (e.g. LlamaIndex `SentenceSplitter`) to be used for chunking source documents. Set `chunking` to `None` to skip chunking. | `SentenceSplitter` with `chunk_size=256` and `chunk_overlap=25` | +| `extraction` | An `ExtractionConfig` object specifying extraction options | `ExtractionConfig` with default values | +| `build` | A `BuildConfig` object specifying build options | `BuildConfig` with default values | +| `batch_config` | Batch configuration to be used if performing [batch extraction](./batch-extraction.md). If `batch_config` is `None`, the toolkit will perform chunk-by-chunk extraction. | `None` | + +The `ExtractionConfig` object has the following parameters: + +| Parameter | Description | Default Value | +| ------------- | ------------- | ------------- | +| `enable_proposition_extraction` | Perform proposition extraction before extracting topics, statements, facts and entities | `True` | +| `preferred_entity_classifications` | Comma-separated list of preferred entity classifications used to seed the entity extraction | `DEFAULT_ENTITY_CLASSIFICATIONS` | +| `preferred_topics` | List of preferred topic names (or a callable that returns them) supplied to the LLM to seed topic extraction. Accepts the same type as `preferred_entity_classifications`. | `[]` | +| `infer_entity_classifications` | Determines whether to pre-process documents to identify significant domain entity classifications. Supply either `True` or `False`, or an `InferClassificationsConfig` object. When `True`, an `InferClassifications` step runs as a **pre-processor** before the main extraction loop — one extra LLM round-trip per batch, not per document. | `False` | +| `extract_propositions_prompt_template` | Prompt used to extract propositions from chunks. If `None`, the [default extract propositions template](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L29-L72) is used. See [Custom prompts](#custom-prompts) below. | `None` | +| `extract_topics_prompt_template` | Prompt used to extract topics, statements and entities from chunks. If `None`, the [default extract topics template](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L74-L191) is used. See [Custom prompts](#custom-prompts) below. | `None` | +| `extraction_llm` | LLM used to perform extraction and infer classifications. Accepts the model id of an Amazon Bedrock model, an Amazon Bedrock [inference profile](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles.html), a JSON string representation of a LlamaIndex `BedrockConverse` instance, or an instance of a LlamaIndex `LLM` object (see the [LLM configuration](./configuration.md#llm-configuration) section for more details). If `None`, the [`GraphRAG.extraction_llm`](./configuration.md#graphragconfig) configuration parameter is used. | `None` | + + +The `BuildConfig` object has the following parameters: + +| Parameter | Description | Default Value | +| ------------- | ------------- | ------------- | +| `build_filters` | A `BuildFilters` object to include or exclude specific node types during the build stage | `BuildFilters()` | +| `include_domain_labels` | Whether to add a domain-specific label (e.g. `Company`) to entity nodes in addition to `__Entity__` | `None` (falls back to `GraphRAGConfig.include_domain_labels`) | +| `include_local_entities` | Whether to include local-context entities in the graph | `None` (falls back to `GraphRAGConfig.include_local_entities`) | +| `source_metadata_formatter` | A `SourceMetadataFormatter` instance for customising source metadata written to the graph | `DefaultSourceMetadataFormatter()` | +| `enable_versioning` | Whether to enable versioned updates. Overrides `GraphRAGConfig.enable_versioning` when set. | `None` | + +The `InferClassificationsConfig` object has the following parameters: + +| Parameter | Description | Default Value | +| ------------- | ------------- | ------------- | +| `num_iterations` | Number of times to run the pre-processing over the source documents | 1 | +| `num_samples` | Number of chunks (selected at random) from which classifications are extracted per iteration | 5 | +| `prompt_template` | Prompt used to extract classifications from sampled chunks. If `None`, the [default domain entity classifications template](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L4-L27) is used. See [Custom prompts](#custom-prompts) below. | `None` | + + +#### Custom prompts + +The extract stage uses up to three LLM prompts: + + - [**Domain entity classifications:**](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L4-L27) Extracts significant domain entity classifications from a sample of source documents prior to processing the documents. These classificatiosn are then supplied to the extract topics prompt as the list of preferred entity classifications. + - [**Extract propositions:**](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L29-L72) Extracts a set of standalone, well-formed propositions from a chunk. + - [**Extract topics:**](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L74-L191) Extracts topics, statements and entities and their relations from either a set of propositions, or from the raw chunk text. + +Using the `ExtractionConfig` and `InferClassificationsConfig` you can customize one or more of these prompts. + +**Domain entity classifications:** + +The prompt template should included a `{text_chunks}` placeholder, into which the sampled chunks will be inserted. + +The template should return classifications in the following format: + +``` + +Classification1 +Classification2 +Classification3 + +``` + +**Extract propositions:** + +The prompt template should include a `{text}` placeholder, into which the chunk text will be inserted. + +The template should return propositions in the following format: + +``` +proposition +proposition +proposition +``` + +**Extract topics:** + +The prompt template should include a `{text}` placeholder, into which a set of propositions (or the raw chunk text) will be inserted, a `{preferred_topics}` placeholder, into which a list of topics will be inserted, and a `{preferred_entity_classifications}` placeholder, into which a liist of entity classifications will be inserted. + +The template should return extracted topics, statements, entities and relations in the following format: + +``` +topic: topic + + entities: + entity|classification + entity|classification + + proposition: [exact proposition text] + entity-attribute relationships: + entity|RELATIONSHIP|attribute + entity|RELATIONSHIP|attribute + + entity-entity relationships: + entity|RELATIONSHIP|entity + entity|RELATIONSHIP|entity + + proposition: [exact proposition text] + entity-attribute relationships: + entity|RELATIONSHIP|attribute + entity|RELATIONSHIP|attribute + + entity-entity relationships: + entity|RELATIONSHIP|entity + entity|RELATIONSHIP|entity +``` + + +#### Batch extraction + +You can use [Amazon Bedrock batch inference](https://docs.aws.amazon.com/bedrock/latest/userguide/batch-inference.html) with the extract stage of the indexing process. See [Batch Extraction](./batch-extraction.md) for more details. + +`BatchConfig` ([`indexing/extract/batch_config.py`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/extract/batch_config.py)) accepts the following parameters: + +| Parameter | Description | Required | +| ------------- | ------------- | ------------- | +| `role_arn` | ARN of the IAM role Bedrock will assume to run batch jobs | Yes | +| `region` | AWS region where batch jobs will run | Yes | +| `bucket_name` | S3 bucket for batch job input/output | Yes | +| `key_prefix` | S3 key prefix for job files | No | +| `s3_encryption_key_id` | KMS key ID for S3 object encryption | No | +| `subnet_ids` | VPC subnet IDs for the batch job network configuration | No | +| `security_group_ids` | VPC security group IDs | No | +| `max_batch_size` | Maximum records per batch job (Bedrock limit: 50,000; jobs under 100 records are skipped and processed inline) | `25000` | +| `max_num_concurrent_batches` | Maximum concurrent batch jobs per worker | `3` | +| `delete_on_success` | Whether to delete S3 job files after a successful run | `True` | + +#### Metadata filtering + +You can add metadata to source documents on ingest, and then use this metadata to filter documents during the extract and build stages. Source metadata is also used for metadata filtering when querying a lexical graph. See the [Metadata Filtering](./metadata-filtering.md) section for more details. + +#### Versioned updates + +The lexical graphs supports [versioned updates](./versioned-updates.mds). With versioned updates, if you re-ingest a document whose contents and/or metadata have changed since it was last extracted, any old documents will be archived, and the newly ingested document treated as the current version of the source document. + +#### Checkpoints + +The lexical-graph retries upsert operations and calls to LLMs and embedding models that don't succeed. However, failures can still happen. If an extract or build stage fails partway through, you typically don't want to reprocess chunks that have successfully made their way through the entire graph construction pipeline. + +To avoid having to reprocess chunks that have been successfully processed in a previous run, provide a `Checkpoint` instance to the `extract_and_build()`, `extract()` and/or `build()` methods. A checkpoint adds a checkpoint *filter* to steps in the extract and build stages, and a checkpoint *writer* to the end of the build stage. When a chunk is emitted from the build stage, after having been successfully handled by both the graph construction *and* vector indexing handlers, its id will be written to a save point in the graph index `extraction_dir`. If a chunk with the same id is subsequently introduced into either the extract or build stage, it will be filtered out by the checkpoint filter. + +The following example passes a checkpoint to the `extract_and_build()` method: + +```python +from graphrag_toolkit.lexical_graph.indexing.build import Checkpoint + +checkpoint = Checkpoint('my-checkpoint') + +... + +graph_index.extract_and_build(docs, checkpoint=checkpoint) +``` + +When you create a `Checkpoint`, you must give it a name. A checkpoint filter will only filter out chunks that were checkpointed by a checkpoint writer with the same name. If you use checkpoints when [running separate extract and build processes](#run-the-extract-and-build-stages-separately), ensure the checkpoints have different names. If you use the same name across separate extract and build processes, the build stage will ignore all the chunks created by the extract stage. + +Checkpoints do not provide any transactional guarantees. If a chunk is successfully processed by the graph construction handlers, but then fails in a vector indexing handler, it will not make it to the end of the build pipeline, and so will not be checkpointed. If the build stage is restarted, the chunk will be reprocessed by both the graph construction and vector indexing handlers. For stores that support upserts (e.g. Amazon Neptune Database and Amazon Neptune Analytics) this is not an issue. + +The lexical-graph does not clean up checkpoints. If you use checkpoints, periodically clean the checkpoint directory of old checkpoint files. + diff --git a/docs-site/src/content/docs/lexical-graph/overview.mdx b/docs-site/src/content/docs/lexical-graph/overview.mdx new file mode 100644 index 00000000..3c37fd71 --- /dev/null +++ b/docs-site/src/content/docs/lexical-graph/overview.mdx @@ -0,0 +1,184 @@ +--- +title: Overview +--- + +import { Tabs, TabItem, Aside, Card, CardGrid } from '@astrojs/starlight/components'; + +The graphrag-toolkit [lexical-graph](../../lexical-graph/) library provides a framework for automating the construction of a [hierarchical lexical graph](graph-model.md) (a graph representing textual elements at several levels of granularity extracted from source documents) from unstructured data, and composing question-answering strategies that query this graph when answering user questions. + + + +## Install + + + + ```sh + pip install graphrag-lexical-graph + ``` + + + ```sh + uv add graphrag-lexical-graph + ``` + + + ```sh + poetry add graphrag-lexical-graph + ``` + + + ```sh + pip install "https://github.com/awslabs/graphrag-toolkit/archive/refs/tags/graphrag-lexical-graph/v3.18.2.zip#subdirectory=lexical-graph" + ``` + + + +## At a glance + + + + Source → chunk → topic → statement → fact → entity, all linked. Retrieval can hop between any of these levels. + + + Graph: Amazon Neptune (DB and Analytics), Neo4j, FalkorDB. Vectors: Neptune, OpenSearch, Postgres, S3 Vectors. + + + Extract and build run as separate micro-batched pipelines so ingest is continuous and resumable. + + + Traversal-based search combines vector similarity with graph traversal. Semantic-guided search is also available. + + + + - [Store and model providers](#stores-and-model-providers) + - [Indexing and querying](#indexing-and-querying) + - [Indexing](#indexing) + - [Querying](#querying) + - [Multi tenancy](#multi-tenancy) + - [Metadata filtering](#metadata-filtering) + - [Versioned updates](#versioned-updates) + - [Model Context Protocol server](#model-context-protocol-server) + - [Security](#security) + - [Hybrid deployment](#hybrid-deployment) + - [Getting started](#getting-started) + +### Stores and model providers + +The lexical-graph library depends on three backend systems: a [_graph store_](./storage-model.md#graph-store), a [_vector store_](./storage-model.md#vector-store), and a _foundation model provider_. The graph store allows an application to store and query a lexical graph that has been extracted from unstructured, text-based sources. The vector store contains one or more indexes with emebddings for some of the elements in the lexical graph. These embeddings are primarily used to find starting points in the graph when the library runs a graph query. The foundation model provider hosts the Large Language Models (LLMs) and embedding models used to extract and embed information. + +The library has built-in graph store support for [Amazon Neptune Analytics](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/what-is-neptune-analytics.html), [Amazon Neptune Database](https://docs.aws.amazon.com/neptune/latest/userguide/intro.html), and [Neo4j](https://neo4j.com/docs/), and built-in vector store support for Neptune Analytics, [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless.html), [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html), and Postgres with the pgvector extension. It is configured to use Amazon Bedrock as its foundation model provider. Besides these defaults, the library can be extended to support other third-party backends. + +### Indexing and querying + +The lexical-graph library implements two high-level processes: [_indexing_](./indexing.md) and [_querying_](./querying.md). The indexing process ingests and extracts information from unstuctured, text-based source documents and then builds a graph and accompanying vector indexes. The query process retrieves content from the graph and vector indexes, and then supplies this content as context to an LLM to answer a user question. + +#### Indexing + +The indexing process is further split into two pipeline stages: [_extract_](./indexing.md#extract) and [_build_](./indexing.md#build). The extract stage ingests data from unstructured sources, chunks the content, and then uses an LLM to extract sets of topics, statements, facts and entities from these chunks. The build stage uses the results of the extract stage to populate a graph and create and index embeddings for some of the content. + +Extraction uses two LLM calls per chunk. The first 'cleans up' the content by extracting sets of well-formed, self-contained propositions from the chunked text. The second call then extracts topics, statements, facts, and entities and their relations from these propositions. Proposition extraction is optional: the second LLM call can be perfomed against the raw content, but the quality of the extraction tends to improve if the proposition extraction is performed first. + +The overall indexing process uses a micro-batching approach to progress data through the extract and build pipelines. This allows the host application to persist extracted information emitted by the extract pipeline, either to the filesystem or to Amazon S3, and/or inspect the contents, and if necessary filter and transform the extracted elements prior to consuming them in the build pipeline. Indexing can be run in a continuous-ingest fashion, or as separate extract and build steps. Both modes allow you to take advantage of Amazon Bedrock's batch inference capabilities to perform [batch extraction](./batch-extraction.md) over collections of documents. + +The following diagram shows a high-level view of the indexing process: + +![Indexing](../../images/extract-and-build.png) + +#### Querying + +[Querying](./querying.md) is a two-step process consisting of _retrieval_ and _generation_. Retrieval queries the graph and vector stores to fetch content relevant to answering a user question. Generation then supplies this content as context to an LLM to generate a response. The lexical-graph query engine allows an application to apply the retrieve operation by itself, which simply returns the search results fetched from the graph, or run an end-to-end query, which retrieves search results and then generates a response. + +The lexical-graph uses a [traversal-based search](./traversal-based-search.md) strategy for retrieving thematically related information distributed across multiple documents. + +The following diagram shows a high-level view of the end-to-end query process: + +![Querying](../../images/question-answering.png) + +Query steps: + + 1. The application submits a user question the lexical graph query engine. + 2. The engine generates an embedding for the user question. + 3. This embedding is used to perform a topK vector similarity search against embedded content in the vector store. + 4. The results of the similarity search are used to anchor one or more graph queries that retrieve relevant content from the graph. + 5. The engine supplies this retrieved content togther with the user question to an LLM, which generates a response. + 6. The query engine returns this response to the application. + +### Multi tenancy + +The lexical-graph library's [multi-tenancy](./multi-tenancy.md) feature allows an application to host multiple separate lexical graphs in the same underlying graph and vector stores. Tenant graphs may correspond to different domains, collections of documents, or individual users. + +### Metadata filtering + +The lexical-graph supports [metadata filtering](./metadata-filtering.md). Metadata filtering constrains the set of sources, topics and statements retrieved when querying a graph based on metadata filters and associated values. + +There are two parts to metadata filtering: + + - **Indexing** Add metadata to source documents passed to the indexing process + - **Querying** Supply metadata filters when querying a lexical graph + +Metadata filtering can also be used to [filter documents and chunks during the extract and build stages](./metadata-filtering.md#using-metadata-to-filter-documents-in-the-extract-and-build-stages) of the indexing process. + +#### Versioned updates + +The lexical graphs supports [versioned updates](./versioned-updates.mds). With versioned updates, if you re-ingest a document whose contents and/or metadata have changed since it was last extracted, any old documents will be archived, and the newly ingested document treated as the current version of the source document. You can then query the current state of the graph and vector stores, or configure the query to retrieve documents that were current at a specific point in time. + +### Model Context Protocol server + +The [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) is an open protocol that standardizes how applications provide context to LLMs. + +The lexical-graph can create a 'catalog' of tools, one per tenant in a multi-tenant graph. Each tool is capable of answering domain-specific questions based on the data in its tenant graph. This catalog is advertised to clients via an MCP server. Clients (typically agents and LLMs) can then browse the catalog and choose appropriate tools for addressing their information goals. + +Each tool in the catalog is accompanied by an auto-generated description that helps a client understand the domain, scope, potential uses and kinds of questions covered by the tool. The catalog also includes a 'search' tool, which, given the name of an entity or concept, recommends one or more domain tools with knowledge of the search term. + +### Security + +Implementers using the lexical-graph library are responsible for securing access to the data sources they wish to index, and for provisioning and securing the underlying AWS resources, such as Neptune and OpenSearch, used by the library. The documentation includes [guidance](./security.md) on using AWS Identity and Access Management (IAM) policies to control access to Amazon Neptune, Amazon OpenSearch Serverless, and Amazon Bedrock. + +Irrespective of the policies applied to the identity under which the a lexical-graph application runs, the library always Sigv4 signs requests to AWS resources. Connections always use TLS version 1.3. + +### Hybrid deployment + +The overview above assumes that all operations, indexing and querying, take place in a cloud environment. However, the separation between the extract and build stages of the indexing process allows for hybrid deploment options, whereby cost-effective local development is accomplished using containerized graph and vector stores, with high-throughput LLM inference via SageMaker and Bedrock. See the [Hybrid Deployment](./hybrid-deployment.md) documentation for more detail. + +### Getting started + +You can get up-and-running with a fresh AWS environment using one of the [quickstart AWS CloudFormation templates](../../examples/lexical-graph/cloudformation-templates/) supplied with the repository. Each of the quickstart templates creates an Amazon SageMaker-hosted Jupyter notebook containing several [example notebooks](../../examples/lexical-graph/notebooks/) that show you how to use the library to index and query content. + +The resources deployed by the CloudFormation templates incur costs in your account. Remember to delete the stack when you've finished with it so that you don't incur any unnecessary charges. + +Choose from the following templates: + + - [`graphrag-toolkit-neptune-analytics.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-analytics.json) creates the following lexical-graph environment: + - Amazon Neptune Analytics graph + - Amazon SageMaker notebook + - [`graphrag-toolkit-neptune-analytics-opensearch-serverless.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-analytics-opensearch-serverless.json) creates the following lexical-graph environment: + - Amazon Amazon Neptune Analytics graph + - Amazon OpenSearch Serverless collection with a public endpoint + - Amazon SageMaker notebook + - [`graphrag-toolkit-neptune-analytics-aurora-postgres.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-analytics-aurora-postgres.json) creates the following lexical-graph environment: + - Amazon VPC with three private subnets, one public subnet, and an internet gateway + - Amazon Neptune Analytics graph + - Amazon Aurora Postgres Database cluster with a single serverless instance + - Amazon SageMaker notebook + - [`graphrag-toolkit-neptune-analytics-s3-vectors.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-analytics-s3-vectors.json) creates the following lexical-graph environment: + - Amazon Neptune Analytics graph + - Amazon SageMaker notebook + - Amazon S3 Vectors bucket + - [`graphrag-toolkit-neptune-db-opensearch-serverless.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-db-opensearch-serverless.json) creates the following lexical-graph environment: + - Amazon VPC with three private subnets, one public subnet, and an internet gateway + - Amazon Neptune Database cluster with a single Neptune serverless instance + - Amazon OpenSearch Serverless collection with a public endpoint + - Amazon SageMaker notebook + - [`graphrag-toolkit-neptune-db-aurora-postgres.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-db-aurora-postgres.json) creates the following lexical-graph environment: + - Amazon VPC with three private subnets, one public subnet, and an internet gateway + - Amazon Neptune Database cluster with a single Neptune serverless instance + - Amazon Aurora Postgres Database cluster with a single serverless instance + - Amazon SageMaker notebook + - [`graphrag-toolkit-neptune-db-s3-vectors.json`](../../examples/lexical-graph/cloudformation-templates/graphrag-toolkit-neptune-db-s3-vectors.json) creates the following lexical-graph environment: + - Amazon VPC with three private subnets, one public subnet, and an internet gateway + - Amazon Neptune Database cluster with a single Neptune serverless instance + - Amazon SageMaker notebook + - Amazon S3 Vectors bucket + diff --git a/docs-site/src/content/docs/lexical-graph/querying.mdx b/docs-site/src/content/docs/lexical-graph/querying.mdx new file mode 100644 index 00000000..a53f627f --- /dev/null +++ b/docs-site/src/content/docs/lexical-graph/querying.mdx @@ -0,0 +1,133 @@ +--- +title: Querying +--- + +import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; + +The primary unit of context presented to the LLM is the *statement* — a standalone assertion or proposition extracted from a source chunk. Statements are grouped by topic and source, and that grouping is what the query engine presents to the LLM. + +The lexical-graph uses a [traversal-based search](./traversal-based-search.md) strategy that combines similarity search with graph traversal. A [semantic-guided search](./semantic-guided-search.md) approach also exists but is likely to be retired in a future release. + +Querying supports [metadata filtering](./metadata-filtering.md) and [multi-tenancy](multi-tenancy.md). + +### Factory methods + + + + ```python title="query_traversal.py" {1,5} + from graphrag_toolkit.lexical_graph import LexicalGraphQueryEngine + + query_engine = LexicalGraphQueryEngine.for_traversal_based_search( + graph_store, + vector_store, + versioning=False, + ) + + response = query_engine.query("How does Neptune Analytics differ from Neptune DB?") + print(response) + ``` + + + ```python title="query_semantic.py" {1,5} "enable_versioning" + from graphrag_toolkit.lexical_graph import LexicalGraphQueryEngine + + query_engine = LexicalGraphQueryEngine.for_semantic_guided_search( + graph_store, + vector_store, + enable_versioning=False, + ) + + response = query_engine.query("How does Neptune Analytics differ from Neptune DB?") + print(response) + ``` + + + +Use `for_traversal_based_search()` for most workloads. Use `for_semantic_guided_search()` only if you specifically need the semantic-guided strategy. + +Both factory methods accept `graph_store`, `vector_store`, `tenant_id`, `post_processors`, `filter_config`, and `**kwargs`. The versioning parameter name differs between the two ([`lexical_graph_query_engine.py:67`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/lexical_graph_query_engine.py#L67)): + +| Factory method | versioning parameter | +| --- | --- | +| `for_traversal_based_search` | `versioning` | +| `for_semantic_guided_search` | `enable_versioning` | + +You can also construct `LexicalGraphQueryEngine` directly, passing `system_prompt`, `user_prompt`, or a `prompt_provider` kwarg. See [Using Custom Prompt Providers](./prompts.md). + +### Context format + +The `context_format` kwarg controls how retrieved statements are serialised before being injected into the LLM prompt. Supported values ([`lexical_graph_query_engine.py:408`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/lexical_graph_query_engine.py#L408)): + +| Value | Description | Default for | +| --- | --- | --- | +| `'json'` | JSON array of topic/statement objects | `__init__` direct construction | +| `'yaml'` | YAML representation of the same structure | — | +| `'xml'` | XML representation of the same structure | — | +| `'text'` | Plain text, one topic heading per group | `for_traversal_based_search` | +| `'bedrock_xml'` | Pre-formatted XML produced by a `BedrockContextFormat` post-processor | `for_semantic_guided_search` (hardcoded) | + +`for_semantic_guided_search` always uses `'bedrock_xml'` and ignores any `context_format` kwarg you pass. `for_traversal_based_search` defaults to `'text'` but accepts any of the values above. + +### Verbose mode + +The `verbose` kwarg (default `True`) controls answer length. When `True`, the LLM is instructed to answer fully; when `False`, concisely. This only affects the non-streaming code path ([`lexical_graph_query_engine.py:356`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/lexical_graph_query_engine.py#L356)). + +```python +query_engine = LexicalGraphQueryEngine.for_traversal_based_search( + graph_store, + vector_store, + verbose=False +) +``` + +### Async querying + + + +It does not implement async querying — calling `await query_engine.aquery(...)` will raise a `NotImplementedError`. Use `query_engine.query(...)` instead ([`lexical_graph_query_engine.py:563`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/lexical_graph_query_engine.py#L563)). + +### Managing indexed sources + +`LexicalGraphIndex` exposes three methods for inspecting and managing what has been indexed ([`lexical_graph_index.py:596`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/lexical_graph_index.py#L596)): + +#### `get_stats()` + +Returns a dict with node counts and two graph connectivity metrics: + +```python +stats = graph_index.get_stats() +# { +# 'source': 12, 'chunk': 180, 'topic': 950, +# 'statement': 4200, 'fact': 3100, 'entity': 820, +# 'localConnectivity': 1.23456, +# 'globalConnectivity': 0.98765, +# ... +# } +``` + +#### `get_sources(...)` + +Queries the graph for source document metadata. Accepts a `source_id` (str), `source_ids` (list), `filter` (`FilterConfig`, dict, or list of dicts), an optional `versioning_config`, and an optional `order_by` field name or list. + +```python +sources = graph_index.get_sources(filter={'url': 'https://example.com/page'}) +``` + +#### `delete_sources(...)` + +Same filter API as `get_sources`. Removes matching sources from both the graph store and the vector store and returns the list of deleted source IDs. + +```python +deleted = graph_index.delete_sources(source_id='chunk::abc123') +``` + +--- + +See also: + +- [Traversal-Based Search](./traversal-based-search.md) +- [Configuring and Tuning Traversal-Based Search](./traversal-based-search-configuration.md) +- [Metadata Filtering](./metadata-filtering.md) +- [Multi-Tenancy](./multi-tenancy.md) diff --git a/docs-site/src/content/images/extract-and-build.png b/docs-site/src/content/images/extract-and-build.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a2ff90a6f2376c8ea8b1ef7d4eea65d04cfaa9 GIT binary patch literal 157285 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

$~5X$Z76vNC#BS&;-*U{9;n}ZbD=!@99P(; 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 literal 0 HcmV?d00001 diff --git a/docs-site/src/content/images/question-answering.png b/docs-site/src/content/images/question-answering.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e49d50c1ee990e6e2345fa8f0ac55d051a8e82 GIT binary patch literal 222260 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

9tn)E`ds_*L!&;k2;_-k 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/docs-site/src/env.d.ts b/docs-site/src/env.d.ts new file mode 100644 index 00000000..9bc5cb41 --- /dev/null +++ b/docs-site/src/env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/docs-site/src/styles/custom.css b/docs-site/src/styles/custom.css new file mode 100644 index 00000000..e0cce2be --- /dev/null +++ b/docs-site/src/styles/custom.css @@ -0,0 +1,174 @@ +/* Valkey-style theming for GraphRAG Toolkit docs. + Reference: https://glide.valkey.io */ + +:root { + /* Brand accent — graph-purple */ + --sl-color-accent-low: #1a0d2e; + --sl-color-accent: #7c3aed; + --sl-color-accent-high: #c4b5fd; + + /* Text */ + --sl-color-white: #ffffff; + --sl-color-gray-1: #e6e6f0; + --sl-color-gray-2: #b8b8cc; + --sl-color-gray-3: #8a8aa3; + --sl-color-gray-4: #4a4a66; + --sl-color-gray-5: #25253a; + --sl-color-gray-6: #14141f; + + /* Backgrounds */ + --sl-color-black: #0a0a14; + --sl-color-bg: #0a0a14; + --sl-color-bg-nav: #0f0f1e; + --sl-color-bg-sidebar: #0f0f1e; + --sl-color-bg-inline-code: #1c1c2e; + + --sl-font: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif; + --sl-font-system-mono: 'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace; +} + +:root[data-theme='light'] { + --sl-color-accent-low: #ede9fe; + --sl-color-accent: #6d28d9; + --sl-color-accent-high: #4c1d95; + + --sl-color-white: #0a0a14; + --sl-color-gray-1: #14141f; + --sl-color-gray-2: #25253a; + --sl-color-gray-3: #4a4a66; + --sl-color-gray-4: #8a8aa3; + --sl-color-gray-5: #d9d9e6; + --sl-color-gray-6: #f1f0f7; + --sl-color-gray-7: #faf9ff; + + --sl-color-black: #ffffff; + --sl-color-bg: #ffffff; + --sl-color-bg-nav: #faf9ff; + --sl-color-bg-sidebar: #faf9ff; + --sl-color-bg-inline-code: #f1f0f7; +} + +:root[data-theme='light'] .hero::before { + background: + radial-gradient(ellipse 80% 60% at 50% 0%, rgba(124, 58, 237, 0.18), transparent 60%), + radial-gradient(ellipse 60% 40% at 80% 30%, rgba(59, 130, 246, 0.14), transparent 60%), + radial-gradient(ellipse 60% 40% at 20% 40%, rgba(236, 72, 153, 0.10), transparent 60%); +} + +:root[data-theme='light'] .hero h1 { + background: linear-gradient(180deg, #1a0d2e 0%, #6d28d9 100%); + -webkit-background-clip: text; + background-clip: text; +} + +:root[data-theme='light'] .hero .tagline { + color: var(--sl-color-gray-3); +} + +:root[data-theme='light'] header.header { + background: rgba(255, 255, 255, 0.75); +} + +:root[data-theme='light'] .card { + background: linear-gradient(180deg, rgba(124, 58, 237, 0.05) 0%, rgba(124, 58, 237, 0.01) 100%); + border-color: var(--sl-color-gray-5); +} + +:root[data-theme='light'] .hero a.action.minimal { + color: var(--sl-color-gray-1); + border-color: var(--sl-color-gray-5); + background: #ffffff; +} + +/* Splash hero — big centered, gradient backdrop, valkey-style */ +.hero { + padding-block: 4rem 3rem; + position: relative; + overflow: hidden; +} + +.hero::before { + content: ''; + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 80% 60% at 50% 0%, rgba(124, 58, 237, 0.25), transparent 60%), + radial-gradient(ellipse 60% 40% at 80% 30%, rgba(59, 130, 246, 0.18), transparent 60%), + radial-gradient(ellipse 60% 40% at 20% 40%, rgba(236, 72, 153, 0.12), transparent 60%); + pointer-events: none; + z-index: -1; +} + +.hero h1 { + font-size: clamp(2.5rem, 6vw, 4.5rem); + font-weight: 800; + letter-spacing: -0.03em; + background: linear-gradient(180deg, #ffffff 0%, #c4b5fd 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + line-height: 1.05; +} + +.hero .tagline { + font-size: clamp(1.1rem, 1.8vw, 1.4rem); + color: var(--sl-color-gray-2); + max-width: 42rem; + margin-inline: auto; +} + +.hero .actions { + margin-top: 2rem; + gap: 0.75rem; +} + +.hero a.action.primary { + background: linear-gradient(135deg, #7c3aed 0%, #4f46e5 100%); + border: none; + box-shadow: 0 8px 24px -8px rgba(124, 58, 237, 0.6); + transition: transform 0.15s ease, box-shadow 0.15s ease; +} + +.hero a.action.primary:hover { + transform: translateY(-2px); + box-shadow: 0 12px 32px -8px rgba(124, 58, 237, 0.8); +} + +.hero a.action.minimal { + color: var(--sl-color-white); + border: 1px solid var(--sl-color-gray-4); + background: rgba(255, 255, 255, 0.03); +} + +/* Feature card grid below hero */ +.card-grid { + margin-block: 3rem; +} + +.card { + background: linear-gradient(180deg, rgba(124, 58, 237, 0.06) 0%, rgba(124, 58, 237, 0.02) 100%); + border: 1px solid var(--sl-color-gray-5); + border-radius: 12px; + transition: border-color 0.2s ease, transform 0.2s ease; +} + +.card:hover { + border-color: var(--sl-color-accent); + transform: translateY(-2px); +} + +.card .icon { + color: var(--sl-color-accent-high); +} + +/* Top nav polish */ +header.header { + border-bottom: 1px solid var(--sl-color-gray-5); + backdrop-filter: blur(12px); + background: rgba(10, 10, 20, 0.7); +} + +/* Code blocks */ +.expressive-code { + border-radius: 10px; +} diff --git a/docs-site/tsconfig.json b/docs-site/tsconfig.json new file mode 100644 index 00000000..bcbf8b50 --- /dev/null +++ b/docs-site/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "astro/tsconfigs/strict" +} From aa7415bd7f6937cd98486b945794872f6ebad264 Mon Sep 17 00:00:00 2001 From: Oussama Hansal Date: Wed, 8 Apr 2026 17:16:22 -0400 Subject: [PATCH 2/8] change link --- docs-site/src/content/docs/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/src/content/docs/index.mdx b/docs-site/src/content/docs/index.mdx index 9375d10b..ca55b9f9 100644 --- a/docs-site/src/content/docs/index.mdx +++ b/docs-site/src/content/docs/index.mdx @@ -10,7 +10,7 @@ hero: tagline: An open-source Python toolkit from AWS Labs for building hierarchical lexical graphs and querying them with multi-strategy retrieval. actions: - text: Get started - link: /graphrag-toolkit/lexical-graph/overview/ + link: /graphrag-toolkit-fork1/lexical-graph/overview/ icon: right-arrow variant: primary - text: View on GitHub From 4345830fbe40c2df1347b113a37869aa81bd60e2 Mon Sep 17 00:00:00 2001 From: Oussama Hansal Date: Wed, 8 Apr 2026 17:20:04 -0400 Subject: [PATCH 3/8] add an empty .nojekyll file to the build output --- docs-site/public/.nojekyll | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs-site/public/.nojekyll diff --git a/docs-site/public/.nojekyll b/docs-site/public/.nojekyll new file mode 100644 index 00000000..e69de29b From a64ab7a65a3d43377c718b920ad2e582be31d579 Mon Sep 17 00:00:00 2001 From: Oussama Hansal Date: Wed, 8 Apr 2026 17:25:16 -0400 Subject: [PATCH 4/8] fix typo --- docs-site/astro.config.mjs | 2 +- docs-site/src/content/docs/index.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-site/astro.config.mjs b/docs-site/astro.config.mjs index 3502981e..25d3b4ce 100644 --- a/docs-site/astro.config.mjs +++ b/docs-site/astro.config.mjs @@ -7,7 +7,7 @@ import react from '@astrojs/react'; // For a fork's project page: site='https://.github.io', base='/' export default defineConfig({ site: 'https://oussamahansal.github.io', - base: '/graphrag-toolkit-fork1', + base: '/graphrag-toolkit', integrations: [ react(), starlight({ diff --git a/docs-site/src/content/docs/index.mdx b/docs-site/src/content/docs/index.mdx index ca55b9f9..9375d10b 100644 --- a/docs-site/src/content/docs/index.mdx +++ b/docs-site/src/content/docs/index.mdx @@ -10,7 +10,7 @@ hero: tagline: An open-source Python toolkit from AWS Labs for building hierarchical lexical graphs and querying them with multi-strategy retrieval. actions: - text: Get started - link: /graphrag-toolkit-fork1/lexical-graph/overview/ + link: /graphrag-toolkit/lexical-graph/overview/ icon: right-arrow variant: primary - text: View on GitHub From 11aa193af5513af2f9c71518e52f845e30b1f91e Mon Sep 17 00:00:00 2001 From: Oussama Hansal Date: Thu, 9 Apr 2026 11:33:13 -0400 Subject: [PATCH 5/8] fix links --- .../src/content/docs/byokg-rag/overview.mdx | 22 ++++----- .../docs/lexical-graph/configuration.mdx | 8 ++-- .../content/docs/lexical-graph/indexing.mdx | 18 ++++---- .../content/docs/lexical-graph/overview.mdx | 46 +++++++++---------- .../content/docs/lexical-graph/querying.mdx | 14 +++--- 5 files changed, 54 insertions(+), 54 deletions(-) diff --git a/docs-site/src/content/docs/byokg-rag/overview.mdx b/docs-site/src/content/docs/byokg-rag/overview.mdx index 7b3594f3..9854e817 100644 --- a/docs-site/src/content/docs/byokg-rag/overview.mdx +++ b/docs-site/src/content/docs/byokg-rag/overview.mdx @@ -2,7 +2,7 @@ title: Overview --- -The graphrag-toolkit [byokg-rag](../../byokg-rag/) library provides a framework for Knowledge Graph Question Answering (KGQA) that combines Large Language Models (LLMs) with existing knowledge graphs. The system allows applications to bring their own knowledge graph and perform complex question answering using multiple retrieval strategies. +The graphrag-toolkit [byokg-rag](https://github.com/awslabs/graphrag-toolkit/blob/main/byokg-rag/) library provides a framework for Knowledge Graph Question Answering (KGQA) that combines Large Language Models (LLMs) with existing knowledge graphs. The system allows applications to bring their own knowledge graph and perform complex question answering using multiple retrieval strategies. - [Graph stores and model providers](#graph-stores-and-model-providers) - [Multi-strategy retrieval](#multi-strategy-retrieval) @@ -44,16 +44,16 @@ Query-based retrieval translates natural language questions into structured grap The byokg-rag framework consists of several key components: -1. **Graph Store** ([src/graphrag_toolkit/byokg_rag/graphstore](../../byokg-rag/src/graphrag_toolkit/byokg_rag/graphstore)) - Manages the knowledge graph data structure and provides interfaces for graph traversal and querying. +1. **Graph Store** ([src/graphrag_toolkit/byokg_rag/graphstore](https://github.com/awslabs/graphrag-toolkit/blob/main/byokg-rag/src/graphrag_toolkit/byokg_rag/graphstore)) - Manages the knowledge graph data structure and provides interfaces for graph traversal and querying. -2. **Graph Connectors** ([src/graphrag_toolkit/byokg_rag/graph_connectors](../../byokg-rag/src/graphrag_toolkit/byokg_rag/graph_connectors)) - Links natural language queries to graph entities and paths using LLMs. Includes KGLinker for basic linking functionality and CypherKGLinker for Cypher-specific operations. +2. **Graph Connectors** ([src/graphrag_toolkit/byokg_rag/graph_connectors](https://github.com/awslabs/graphrag-toolkit/blob/main/byokg-rag/src/graphrag_toolkit/byokg_rag/graph_connectors)) - Links natural language queries to graph entities and paths using LLMs. Includes KGLinker for basic linking functionality and CypherKGLinker for Cypher-specific operations. -3. **Graph Retrievers** ([src/graphrag_toolkit/byokg_rag/graph_retrievers](../../byokg-rag/src/graphrag_toolkit/byokg_rag/graph_retrievers)) - Implements the various retrieval strategies: +3. **Graph Retrievers** ([src/graphrag_toolkit/byokg_rag/graph_retrievers](https://github.com/awslabs/graphrag-toolkit/blob/main/byokg-rag/src/graphrag_toolkit/byokg_rag/graph_retrievers)) - Implements the various retrieval strategies: - **Entity Linker** - Matches entities from text to graph nodes using exact matching, fuzzy string matching, and semantic similarity - **Triplet Retriever** - Retrieves relevant triplets from the graph and verbalizes them in natural language format - **Path Retriever** - Finds paths between entities following metapath patterns for structured traversal -4. **Query Engine** ([src/graphrag_toolkit/byokg_rag/byokg_query_engine.py](../../byokg-rag/src/graphrag_toolkit/byokg_rag/byokg_query_engine.py)) - Orchestrates all components to process natural language questions and generate answers based on retrieved information. +4. **Query Engine** ([src/graphrag_toolkit/byokg_rag/byokg_query_engine.py](https://github.com/awslabs/graphrag-toolkit/blob/main/byokg-rag/src/graphrag_toolkit/byokg_rag/byokg_query_engine.py)) - Orchestrates all components to process natural language questions and generate answers based on retrieved information. ### Query processing @@ -86,10 +86,10 @@ You can get started with byokg-rag by installing the package and running the dem pip install https://github.com/awslabs/graphrag-toolkit/archive/refs/tags/v3.15.5.zip#subdirectory=byokg-rag ``` -The repository includes several [example notebooks](../../examples/byokg-rag/) that demonstrate how to use the library with different graph stores and datasets: +The repository includes several [example notebooks](https://github.com/awslabs/graphrag-toolkit/blob/main/examples/byokg-rag/) that demonstrate how to use the library with different graph stores and datasets: -- [Local Graph Demo](../../examples/byokg-rag/byokg_rag_demo_local_graph.ipynb) - Getting started with local graph databases -- [Neptune Analytics Demo](../../examples/byokg-rag/byokg_rag_neptune_analytics_demo.ipynb) - Using Amazon Neptune Analytics -- [Neptune Analytics with Cypher](../../examples/byokg-rag/byokg_rag_neptune_analytics_demo_cypher.ipynb) - Cypher-based retrieval with Neptune Analytics -- [Neptune Database Demo](../../examples/byokg-rag/byokg_rag_neptune_db_cluster_demo.ipynb) - Using Amazon Neptune Database clusters -- [Neptune Analytics Embeddings](../../examples/byokg-rag/byokg_rag_neptune_analytics_embeddings.ipynb) - Working with embeddings in Neptune Analytics +- [Local Graph Demo](https://github.com/awslabs/graphrag-toolkit/blob/main/examples/byokg-rag/byokg_rag_demo_local_graph.ipynb) - Getting started with local graph databases +- [Neptune Analytics Demo](https://github.com/awslabs/graphrag-toolkit/blob/main/examples/byokg-rag/byokg_rag_neptune_analytics_demo.ipynb) - Using Amazon Neptune Analytics +- [Neptune Analytics with Cypher](https://github.com/awslabs/graphrag-toolkit/blob/main/examples/byokg-rag/byokg_rag_neptune_analytics_demo_cypher.ipynb) - Cypher-based retrieval with Neptune Analytics +- [Neptune Database Demo](https://github.com/awslabs/graphrag-toolkit/blob/main/examples/byokg-rag/byokg_rag_neptune_db_cluster_demo.ipynb) - Using Amazon Neptune Database clusters +- [Neptune Analytics Embeddings](https://github.com/awslabs/graphrag-toolkit/blob/main/examples/byokg-rag/byokg_rag_neptune_analytics_embeddings.ipynb) - Working with embeddings in Neptune Analytics diff --git a/docs-site/src/content/docs/lexical-graph/configuration.mdx b/docs-site/src/content/docs/lexical-graph/configuration.mdx index 5784616f..7d621215 100644 --- a/docs-site/src/content/docs/lexical-graph/configuration.mdx +++ b/docs-site/src/content/docs/lexical-graph/configuration.mdx @@ -19,7 +19,7 @@ The lexical-graph also allows you to set the logging level and apply logging fil ### GraphRAGConfig -`GraphRAGConfig` is a module-level singleton (not a class to instantiate). It is created once at import time ([`config.py`](../../lexical-graph/src/graphrag_toolkit/lexical_graph/config.py#L1171)) and shared across the process. Set attributes directly on the imported object: +`GraphRAGConfig` is a module-level singleton (not a class to instantiate). It is created once at import time ([`config.py`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/config.py#L1171)) and shared across the process. Set attributes directly on the imported object: ```python from graphrag_toolkit.lexical_graph import GraphRAGConfig @@ -49,10 +49,10 @@ The configuration includes the following parameters: | `build_batch_size` | The number of input nodes to be processed in parallel across all workers in the build stage | `4` | `BUILD_BATCH_SIZE` | | `build_batch_write_size` | The number of elements to be written in a bulk operation to the graph and vector stores (see [Batch writes](#batch-writes)) | `25` | `BUILD_BATCH_WRITE_SIZE` | | `batch_writes_enabled` | Determines whether, on a per-worker basis, to write all elements (nodes and edges, or vectors) emitted by a batch of input nodes as a bulk operation, or singly, to the graph and vector stores (see [Batch writes](#batch-writes)) | `True` | `BATCH_WRITES_ENABLED` | -| `include_domain_labels` | Determines whether entities will have a domain-specific label (e.g. `Company`) as well as the [graph model's](./graph-model.md#entity-relationship-tier) `__Entity__` label | `False` | `INCLUDE_DOMAIN_LABELS` | +| `include_domain_labels` | Determines whether entities will have a domain-specific label (e.g. `Company`) as well as the [graph model's](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/graph-model.md#entity-relationship-tier) `__Entity__` label | `False` | `INCLUDE_DOMAIN_LABELS` | | `include_local_entities` | Whether to include local-context entities in the graph | `False` | `INCLUDE_LOCAL_ENTITIES` | | `include_classification_in_entity_id` | Whether to include an entity's classification in its graph node id | `True` | `INCLUDE_CLASSIFICATION_IN_ENTITY_ID` | -| `enable_versioning` | Whether to enable versioned updates (see [Versioned Updates](./versioned-updates.md)) | `False` | `ENABLE_VERSIONING` | +| `enable_versioning` | Whether to enable versioned updates (see [Versioned Updates](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/versioned-updates.md)) | `False` | `ENABLE_VERSIONING` | | `enable_cache` | Determines whether the results of LLM calls to models on Amazon Bedrock are cached to the local filesystem (see [Caching Amazon Bedrock LLM responses](#caching-amazon-bedrock-llm-responses)) | `False` | `ENABLE_CACHE` | | `aws_profile` | AWS CLI named profile used to authenticate requests to Bedrock and other services | *None* | `AWS_PROFILE` | | `aws_region` | AWS region used to scope Bedrock service calls | *Default boto3 session region* | `AWS_REGION` | @@ -295,7 +295,7 @@ export AWS_REGION=us-east-1 If no profile or region is set explicitly, the system falls back to environment variables or the default AWS CLI configuration. -See [Using AWS Profiles in `GraphRAGConfig`](./aws-profile.md) for more details on configuring and using AWS named profiles. +See [Using AWS Profiles in `GraphRAGConfig`](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/aws-profile.md) for more details on configuring and using AWS named profiles. #### Resilient clients and SSO token refresh diff --git a/docs-site/src/content/docs/lexical-graph/indexing.mdx b/docs-site/src/content/docs/lexical-graph/indexing.mdx index 83b22ee7..a4afc861 100644 --- a/docs-site/src/content/docs/lexical-graph/indexing.mdx +++ b/docs-site/src/content/docs/lexical-graph/indexing.mdx @@ -12,7 +12,7 @@ You can run the extract and build pipelines together, to provide for the continu The `LexicalGraphIndex` allows you to run the extract and build pipelines together or separately. See the [Using the LexicalGraphIndex to construct a graph](#using-the-lexicalgraphindex-to-construct-a-graph) section below. -Indexing supports [multi-tenancy](multi-tenancy.md), whereby you can store separate lexical graphs in the same backend graph and vector stores. +Indexing supports [multi-tenancy](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/multi-tenancy.md), whereby you can store separate lexical graphs in the same backend graph and vector stores. #### Extract @@ -36,9 +36,9 @@ In the build stage, the LlamaIndex chunk nodes emitted from the extract stage ar ### Using the LexicalGraphIndex to construct a graph -The `LexicalGraphIndex` provides a convenient means of constructing a graph – via either continuous ingest, or separate extract and build stages. When constructing a `LexicalGraphIndex` you must supply a graph store and a vector store (see [Storage Model](./storage-model.md) for more details). In the examples below, the graph store and vector store connection strings are fetched from environment variables. +The `LexicalGraphIndex` provides a convenient means of constructing a graph – via either continuous ingest, or separate extract and build stages. When constructing a `LexicalGraphIndex` you must supply a graph store and a vector store (see [Storage Model](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/storage-model.md) for more details). In the examples below, the graph store and vector store connection strings are fetched from environment variables. -The `LexicalGraphIndex` constructor has an `extraction_dir` named argument. This is the path to a local directory to which intermediate artefacts (such as [checkpoints](#checkpoints)) will be written. By default, the value of `extraction_dir` is set to the value of `GraphRAGConfig.local_output_dir`, which defaults to `'output'`. For containerized deployments (EKS/Kubernetes), you can configure this via the `LOCAL_OUTPUT_DIR` environment variable or by setting `GraphRAGConfig.local_output_dir` programmatically. See [Configuration](./configuration.md) for more details. +The `LexicalGraphIndex` constructor has an `extraction_dir` named argument. This is the path to a local directory to which intermediate artefacts (such as [checkpoints](#checkpoints)) will be written. By default, the value of `extraction_dir` is set to the value of `GraphRAGConfig.local_output_dir`, which defaults to `'output'`. For containerized deployments (EKS/Kubernetes), you can configure this via the `LOCAL_OUTPUT_DIR` environment variable or by setting `GraphRAGConfig.local_output_dir` programmatically. See [Configuration](/graphrag-toolkit/lexical-graph/configuration/) for more details. #### Continous ingest @@ -228,7 +228,7 @@ The `FileBasedChunks` object has the following parameters: #### Configuring the extract and build stages -You can configure the number of workers and batch sizes for the extract and build stages of the `LexicalGraphIndex` using the `GraphRAGConfig` object. See [Configuration](./configuration.md) for more details on using the configuration object. +You can configure the number of workers and batch sizes for the extract and build stages of the `LexicalGraphIndex` using the `GraphRAGConfig` object. See [Configuration](/graphrag-toolkit/lexical-graph/configuration/) for more details on using the configuration object. Besides configuring the workers and batch sizes, you can also configure the indexing process with regard to chunking, proposition extraction and entity classification, and graph and vector store contents by passing an instance of `IndexingConfig` to the `LexicalGraphIndex` constructor: @@ -257,7 +257,7 @@ The `IndexingConfig` object has the following parameters: | `chunking` | A list of node parsers (e.g. LlamaIndex `SentenceSplitter`) to be used for chunking source documents. Set `chunking` to `None` to skip chunking. | `SentenceSplitter` with `chunk_size=256` and `chunk_overlap=25` | | `extraction` | An `ExtractionConfig` object specifying extraction options | `ExtractionConfig` with default values | | `build` | A `BuildConfig` object specifying build options | `BuildConfig` with default values | -| `batch_config` | Batch configuration to be used if performing [batch extraction](./batch-extraction.md). If `batch_config` is `None`, the toolkit will perform chunk-by-chunk extraction. | `None` | +| `batch_config` | Batch configuration to be used if performing [batch extraction](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/batch-extraction.md). If `batch_config` is `None`, the toolkit will perform chunk-by-chunk extraction. | `None` | The `ExtractionConfig` object has the following parameters: @@ -269,7 +269,7 @@ The `ExtractionConfig` object has the following parameters: | `infer_entity_classifications` | Determines whether to pre-process documents to identify significant domain entity classifications. Supply either `True` or `False`, or an `InferClassificationsConfig` object. When `True`, an `InferClassifications` step runs as a **pre-processor** before the main extraction loop — one extra LLM round-trip per batch, not per document. | `False` | | `extract_propositions_prompt_template` | Prompt used to extract propositions from chunks. If `None`, the [default extract propositions template](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L29-L72) is used. See [Custom prompts](#custom-prompts) below. | `None` | | `extract_topics_prompt_template` | Prompt used to extract topics, statements and entities from chunks. If `None`, the [default extract topics template](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/prompts.py#L74-L191) is used. See [Custom prompts](#custom-prompts) below. | `None` | -| `extraction_llm` | LLM used to perform extraction and infer classifications. Accepts the model id of an Amazon Bedrock model, an Amazon Bedrock [inference profile](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles.html), a JSON string representation of a LlamaIndex `BedrockConverse` instance, or an instance of a LlamaIndex `LLM` object (see the [LLM configuration](./configuration.md#llm-configuration) section for more details). If `None`, the [`GraphRAG.extraction_llm`](./configuration.md#graphragconfig) configuration parameter is used. | `None` | +| `extraction_llm` | LLM used to perform extraction and infer classifications. Accepts the model id of an Amazon Bedrock model, an Amazon Bedrock [inference profile](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles.html), a JSON string representation of a LlamaIndex `BedrockConverse` instance, or an instance of a LlamaIndex `LLM` object (see the [LLM configuration](/graphrag-toolkit/lexical-graph/configuration/#llm-configuration) section for more details). If `None`, the [`GraphRAG.extraction_llm`](/graphrag-toolkit/lexical-graph/configuration/#graphragconfig) configuration parameter is used. | `None` | The `BuildConfig` object has the following parameters: @@ -362,7 +362,7 @@ topic: topic #### Batch extraction -You can use [Amazon Bedrock batch inference](https://docs.aws.amazon.com/bedrock/latest/userguide/batch-inference.html) with the extract stage of the indexing process. See [Batch Extraction](./batch-extraction.md) for more details. +You can use [Amazon Bedrock batch inference](https://docs.aws.amazon.com/bedrock/latest/userguide/batch-inference.html) with the extract stage of the indexing process. See [Batch Extraction](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/batch-extraction.md) for more details. `BatchConfig` ([`indexing/extract/batch_config.py`](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/src/graphrag_toolkit/lexical_graph/indexing/extract/batch_config.py)) accepts the following parameters: @@ -381,11 +381,11 @@ You can use [Amazon Bedrock batch inference](https://docs.aws.amazon.com/bedrock #### Metadata filtering -You can add metadata to source documents on ingest, and then use this metadata to filter documents during the extract and build stages. Source metadata is also used for metadata filtering when querying a lexical graph. See the [Metadata Filtering](./metadata-filtering.md) section for more details. +You can add metadata to source documents on ingest, and then use this metadata to filter documents during the extract and build stages. Source metadata is also used for metadata filtering when querying a lexical graph. See the [Metadata Filtering](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/metadata-filtering.md) section for more details. #### Versioned updates -The lexical graphs supports [versioned updates](./versioned-updates.mds). With versioned updates, if you re-ingest a document whose contents and/or metadata have changed since it was last extracted, any old documents will be archived, and the newly ingested document treated as the current version of the source document. +The lexical graphs supports [versioned updates](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/versioned-updates.md). With versioned updates, if you re-ingest a document whose contents and/or metadata have changed since it was last extracted, any old documents will be archived, and the newly ingested document treated as the current version of the source document. #### Checkpoints diff --git a/docs-site/src/content/docs/lexical-graph/overview.mdx b/docs-site/src/content/docs/lexical-graph/overview.mdx index 3c37fd71..1ae8523f 100644 --- a/docs-site/src/content/docs/lexical-graph/overview.mdx +++ b/docs-site/src/content/docs/lexical-graph/overview.mdx @@ -4,7 +4,7 @@ title: Overview import { Tabs, TabItem, Aside, Card, CardGrid } from '@astrojs/starlight/components'; -The graphrag-toolkit [lexical-graph](../../lexical-graph/) library provides a framework for automating the construction of a [hierarchical lexical graph](graph-model.md) (a graph representing textual elements at several levels of granularity extracted from source documents) from unstructured data, and composing question-answering strategies that query this graph when answering user questions. +The graphrag-toolkit [lexical-graph](https://github.com/awslabs/graphrag-toolkit/blob/main/lexical-graph/) library provides a framework for automating the construction of a [hierarchical lexical graph](https://github.com/awslabs/graphrag-toolkit/blob/main/docs/lexical-graph/graph-model.md) (a graph representing textual elements at several levels of granularity extracted from source documents) from unstructured data, and composing question-answering strategies that query this graph when answering user questions.