From a1b812480fca7a3659dc0ae3384349f4e794938c Mon Sep 17 00:00:00 2001 From: Wouf Date: Fri, 13 Mar 2026 07:24:01 +0100 Subject: [PATCH 01/15] temporary patches for astro 6 --- bun.lock | 244 +++--- package.json | 16 +- patches/@astrojs%2Fstarlight@0.38.1.patch | 915 ++++++++++++++++++++++ patches/astro@6.0.4.patch | 31 + 4 files changed, 1089 insertions(+), 117 deletions(-) create mode 100644 patches/@astrojs%2Fstarlight@0.38.1.patch create mode 100644 patches/astro@6.0.4.patch diff --git a/bun.lock b/bun.lock index 42ff62d..527b218 100644 --- a/bun.lock +++ b/bun.lock @@ -3,11 +3,11 @@ "workspaces": { "": { "dependencies": { - "@astrojs/check": "^0.9.6", - "@astrojs/node": "^9.1.4", - "@astrojs/react": "^4.4.2", - "@astrojs/starlight": "^0.37.3", - "@astrojs/starlight-tailwind": "^4.0.2", + "@astrojs/check": "0.9.7", + "@astrojs/node": "10.0.1", + "@astrojs/react": "5.0.0", + "@astrojs/starlight": "0.38.1", + "@astrojs/starlight-tailwind": "5.0.0", "@casl/ability": "^6.8.0", "@convex-dev/better-auth": "^0.10.10", "@convex-dev/react-query": "^0.1.0", @@ -20,7 +20,7 @@ "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "accessible-astro-components": "^5.1.1", - "astro": "^5.6.1", + "astro": "6.0.4", "better-auth": "1.4.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -49,32 +49,36 @@ }, }, }, + "patchedDependencies": { + "@astrojs/starlight@0.38.1": "patches/@astrojs%2Fstarlight@0.38.1.patch", + "astro@6.0.4": "patches/astro@6.0.4.patch", + }, "packages": { "@antfu/ni": ["@antfu/ni@25.0.0", "", { "dependencies": { "ansis": "^4.0.0", "fzf": "^0.5.2", "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" }, "bin": { "na": "bin/na.mjs", "ni": "bin/ni.mjs", "nr": "bin/nr.mjs", "nci": "bin/nci.mjs", "nlx": "bin/nlx.mjs", "nun": "bin/nun.mjs", "nup": "bin/nup.mjs" } }, "sha512-9q/yCljni37pkMr4sPrI3G4jqdIk074+iukc5aFJl7kmDCCsiJrbZ6zKxnES1Gwg+i9RcDZwvktl23puGslmvA=="], - "@astrojs/check": ["@astrojs/check@0.9.6", "", { "dependencies": { "@astrojs/language-server": "^2.16.1", "chokidar": "^4.0.1", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "astro-check": "bin/astro-check.js" } }, "sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA=="], + "@astrojs/check": ["@astrojs/check@0.9.7", "", { "dependencies": { "@astrojs/language-server": "^2.16.1", "chokidar": "^4.0.3", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "astro-check": "bin/astro-check.js" } }, "sha512-dA7U5/OFg8/xaMUb2vUOOJuuJXnMpHy6F0BM8ZhL7WT5OkTBwJ0GoW38n4fC4CXt+lT9mLWL0y8Pa74tFByBpQ=="], - "@astrojs/compiler": ["@astrojs/compiler@2.13.0", "", {}, "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw=="], + "@astrojs/compiler": ["@astrojs/compiler@3.0.0", "", {}, "sha512-MwAbDE5mawZ1SS+D8qWiHdprdME5Tlj2e0YjxnEICvcOpbSukNS7Sa7hA5PK+6RrmUr/t6Gi5YgrdZKjbO/WPQ=="], - "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.5", "", {}, "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA=="], + "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.8.0", "", { "dependencies": { "picomatch": "^4.0.3" } }, "sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w=="], "@astrojs/language-server": ["@astrojs/language-server@2.16.3", "", { "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/yaml2ts": "^0.2.2", "@jridgewell/sourcemap-codec": "^1.5.5", "@volar/kit": "~2.4.27", "@volar/language-core": "~2.4.27", "@volar/language-server": "~2.4.27", "@volar/language-service": "~2.4.27", "muggle-string": "^0.4.1", "tinyglobby": "^0.2.15", "volar-service-css": "0.0.68", "volar-service-emmet": "0.0.68", "volar-service-html": "0.0.68", "volar-service-prettier": "0.0.68", "volar-service-typescript": "0.0.68", "volar-service-typescript-twoslash-queries": "0.0.68", "volar-service-yaml": "0.0.68", "vscode-html-languageservice": "^5.6.1", "vscode-uri": "^3.1.0" }, "peerDependencies": { "prettier": "^3.0.0", "prettier-plugin-astro": ">=0.11.0" }, "optionalPeers": ["prettier", "prettier-plugin-astro"], "bin": { "astro-ls": "bin/nodeServer.js" } }, "sha512-yO5K7RYCMXUfeDlnU6UnmtnoXzpuQc0yhlaCNZ67k1C/MiwwwvMZz+LGa+H35c49w5QBfvtr4w4Zcf5PcH8uYA=="], - "@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.10", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.5", "@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.19.0", "smol-toml": "^1.5.2", "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" } }, "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A=="], + "@astrojs/markdown-remark": ["@astrojs/markdown-remark@7.0.0", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "@astrojs/prism": "4.0.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "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": "^4.0.0", "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-jTAXHPy45L7o1ljH4jYV+ShtOHtyQUa1mGp3a5fJp1soX8lInuTJQ6ihmldHzVM4Q7QptU4SzIDIcKbBJO7sXQ=="], - "@astrojs/mdx": ["@astrojs/mdx@4.3.13", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.10", "@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" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q=="], + "@astrojs/mdx": ["@astrojs/mdx@5.0.0", "", { "dependencies": { "@astrojs/markdown-remark": "7.0.0", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.16.0", "es-module-lexer": "^2.0.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.1.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^6.0.0-alpha.0" } }, "sha512-J4rW6eT+qgVw7+RXdBYO4vYyWGeXXQp8wop9dXsOlLzIsVSxyttMCgkGCWvIR2ogBqKqeYgI6YDW93PaDHkCaA=="], - "@astrojs/node": ["@astrojs/node@9.5.4", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.5", "send": "^1.2.1", "server-destroy": "^1.0.1" }, "peerDependencies": { "astro": "^5.17.3" } }, "sha512-AbPSZsMGu8hXPR2XxV79RaKy8h6wijhtoqZGeUf4OXg2w1mxXlx4VnIc1D+QvtsgauSz7P5PLhmvf6w/J41GJg=="], + "@astrojs/node": ["@astrojs/node@10.0.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "send": "^1.2.1", "server-destroy": "^1.0.1" }, "peerDependencies": { "astro": "^6.0.0-alpha.0" } }, "sha512-bAswRYA9vyge2HVO2zIGdtKJ7ksRRxAK3xYO5hX0zB2/n++IlUVah1NAAdfHuy+a8eWf1iX32sLrjyfpVpcyVQ=="], - "@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], + "@astrojs/prism": ["@astrojs/prism@4.0.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-NndtNPpxaGinRpRytljGBvYHpTOwHycSZ/c+lQi5cHvkqqrHKWdkPEhImlODBNmbuB+vyQUNUDXyjzt66CihJg=="], - "@astrojs/react": ["@astrojs/react@4.4.2", "", { "dependencies": { "@vitejs/plugin-react": "^4.7.0", "ultrahtml": "^1.6.0", "vite": "^6.4.1" }, "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" } }, "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ=="], + "@astrojs/react": ["@astrojs/react@5.0.0", "", { "dependencies": { "@astrojs/internal-helpers": "0.8.0", "@vitejs/plugin-react": "^5.1.4", "devalue": "^5.6.3", "ultrahtml": "^1.6.0", "vite": "^7.3.1" }, "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" } }, "sha512-OuM+0QFsoPkvv8ZB57kVLxKOqvR+84GR/Em9lh/tAL4fV4CnpBPDxc++0vd1CipH4o99Is7GribuTHFy3doF6g=="], - "@astrojs/sitemap": ["@astrojs/sitemap@3.7.0", "", { "dependencies": { "sitemap": "^8.0.2", "stream-replace-string": "^2.0.0", "zod": "^3.25.76" } }, "sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA=="], + "@astrojs/sitemap": ["@astrojs/sitemap@3.7.1", "", { "dependencies": { "sitemap": "^9.0.0", "stream-replace-string": "^2.0.0", "zod": "^4.3.6" } }, "sha512-IzQqdTeskaMX+QDZCzMuJIp8A8C1vgzMBp/NmHNnadepHYNHcxQdGLQZYfkbd2EbRXUfOS+UDIKx8sKg0oWVdw=="], - "@astrojs/starlight": ["@astrojs/starlight@0.37.3", "", { "dependencies": { "@astrojs/markdown-remark": "^6.3.1", "@astrojs/mdx": "^4.2.3", "@astrojs/sitemap": "^3.3.0", "@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.41.1", "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", "magic-string": "^0.30.17", "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", "ultrahtml": "^1.6.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2" }, "peerDependencies": { "astro": "^5.5.0" } }, "sha512-p7cqbAkBYkBTiK1NIomxAEoF9Wko+mTV503qDm5Wgh+0MGGJnSsIzCSSJ+rWm8toFk9mnzNwNbxcnjwzIBEU3w=="], + "@astrojs/starlight": ["@astrojs/starlight@0.38.1", "", { "dependencies": { "@astrojs/markdown-remark": "^7.0.0", "@astrojs/mdx": "^5.0.0", "@astrojs/sitemap": "^3.7.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.41.6", "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", "magic-string": "^0.30.17", "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", "ultrahtml": "^1.6.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", "vfile": "^6.0.2" }, "peerDependencies": { "astro": "^6.0.0" } }, "sha512-CATPH4Dy44OYAJhoyUHh6NqpColWEVufanGVwnM0l/bcaNMo5V/rypwL0Vu0Edp+ZIXE7/1DA9CrNj5jmCVSLQ=="], - "@astrojs/starlight-tailwind": ["@astrojs/starlight-tailwind@4.0.2", "", { "peerDependencies": { "@astrojs/starlight": ">=0.34.0", "tailwindcss": "^4.0.0" } }, "sha512-SYN/6zq6hJO5tWqbQ2tWT9/jd8ubUkzkBCcF94vByC/ZJ20Mi5GPjFvAh89Yky/aIM+jXxT6W5q4p6l58GKHiQ=="], + "@astrojs/starlight-tailwind": ["@astrojs/starlight-tailwind@5.0.0", "", { "peerDependencies": { "@astrojs/starlight": ">=0.38.0", "tailwindcss": "^4.0.0" } }, "sha512-VivF+bWg++4ma/ffr5sgHsd/ONtGdVJIKAaRZ6jmL4yqxy7bviu59MGNi5aW3nd8psP9i/aivBTrpwGxRM1XyA=="], "@astrojs/telemetry": ["@astrojs/telemetry@3.3.0", "", { "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ=="], @@ -156,6 +160,10 @@ "@casl/ability": ["@casl/ability@6.8.0", "", { "dependencies": { "@ucast/mongo2js": "^1.3.0" } }, "sha512-Ipt4mzI4gSgnomFdaPjaLgY2MWuXqAEZLrU6qqWBB7khGiBBuuEp6ytYDnq09bRXqcjaeeHiaCvCGFbBA2SpvA=="], + "@clack/core": ["@clack/core@1.1.0", "", { "dependencies": { "sisteransi": "^1.0.5" } }, "sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA=="], + + "@clack/prompts": ["@clack/prompts@1.1.0", "", { "dependencies": { "@clack/core": "1.1.0", "sisteransi": "^1.0.5" } }, "sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g=="], + "@convex-dev/better-auth": ["@convex-dev/better-auth@0.10.11", "", { "dependencies": { "@better-auth/passkey": "1.4.9", "@better-fetch/fetch": "^1.1.18", "common-tags": "^1.8.2", "convex-helpers": "^0.1.95", "jose": "^6.1.0", "remeda": "^2.32.0", "semver": "^7.7.3", "type-fest": "^4.39.1", "zod": "^4.0.0" }, "peerDependencies": { "better-auth": ">=1.4.9 <1.5.0", "convex": "^1.25.0", "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0" } }, "sha512-/MiwwX7GyhddjeV3GtwWU8BOVnazkPjt/CcckcLtIn/zpj7CWV66cPiYfOzlpwF8/dRa52Emf9xw1Px+q5baTA=="], "@convex-dev/react-query": ["@convex-dev/react-query@0.1.0", "", { "peerDependencies": { "@tanstack/react-query": "^5.0.0", "convex": "^1.29.3" } }, "sha512-ULmBZCtAQDUePdBhUv7hj1Yy4QiCelhi6uEIOtMpjW8db6W9CFKvQwLt9heLngccFyMFfAZdOfSrT+cP4AH0Jw=="], @@ -184,57 +192,57 @@ "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.27.4", "", { "os": "android", "cpu": "arm" }, "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.4", "", { "os": "android", "cpu": "arm64" }, "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.27.4", "", { "os": "android", "cpu": "x64" }, "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.4", "", { "os": "linux", "cpu": "arm" }, "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.4", "", { "os": "linux", "cpu": "ia32" }, "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.4", "", { "os": "linux", "cpu": "none" }, "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.4", "", { "os": "linux", "cpu": "x64" }, "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.4", "", { "os": "none", "cpu": "arm64" }, "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.4", "", { "os": "none", "cpu": "x64" }, "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.4", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.4", "", { "os": "none", "cpu": "arm64" }, "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.4", "", { "os": "sunos", "cpu": "x64" }, "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.4", "", { "os": "win32", "cpu": "x64" }, "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg=="], "@expressive-code/core": ["@expressive-code/core@0.41.6", "", { "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" } }, "sha512-FvJQP+hG0jWi/FLBSmvHInDqWR7jNANp9PUDjdMqSshHb0y7sxx3vHuoOr6SgXjWw+MGLqorZyPQ0aAlHEok6g=="], @@ -522,7 +530,7 @@ "@react-three/fiber": ["@react-three/fiber@9.5.0", "", { "dependencies": { "@babel/runtime": "^7.17.8", "@types/webxr": "*", "base64-js": "^1.5.1", "buffer": "^6.0.3", "its-fine": "^2.0.0", "react-use-measure": "^2.1.7", "scheduler": "^0.27.0", "suspend-react": "^0.1.3", "use-sync-external-store": "^1.4.0", "zustand": "^5.0.3" }, "peerDependencies": { "expo": ">=43.0", "expo-asset": ">=8.4", "expo-file-system": ">=11.0", "expo-gl": ">=11.0", "react": ">=19 <19.3", "react-dom": ">=19 <19.3", "react-native": ">=0.78", "three": ">=0.156" }, "optionalPeers": ["expo", "expo-asset", "expo-file-system", "expo-gl", "react-dom", "react-native"] }, "sha512-FiUzfYW4wB1+PpmsE47UM+mCads7j2+giRBltfwH7SNhah95rqJs3ltEs9V3pP8rYdS0QlNne+9Aj8dS/SiaIA=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], @@ -578,17 +586,19 @@ "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], - "@shikijs/core": ["@shikijs/core@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA=="], + "@shikijs/core": ["@shikijs/core@4.0.2", "", { "dependencies": { "@shikijs/primitive": "4.0.2", "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw=="], - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ=="], + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag=="], - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg=="], - "@shikijs/langs": ["@shikijs/langs@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA=="], + "@shikijs/langs": ["@shikijs/langs@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2" } }, "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg=="], - "@shikijs/themes": ["@shikijs/themes@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw=="], + "@shikijs/primitive": ["@shikijs/primitive@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw=="], - "@shikijs/types": ["@shikijs/types@3.21.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA=="], + "@shikijs/themes": ["@shikijs/themes@4.0.2", "", { "dependencies": { "@shikijs/types": "4.0.2" } }, "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA=="], + + "@shikijs/types": ["@shikijs/types@4.0.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg=="], "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], @@ -726,7 +736,7 @@ "@use-gesture/react": ["@use-gesture/react@10.3.1", "", { "dependencies": { "@use-gesture/core": "10.3.1" }, "peerDependencies": { "react": ">= 16.8.0" } }, "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "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" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.2.0", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw=="], "@volar/kit": ["@volar/kit@2.4.28", "", { "dependencies": { "@volar/language-service": "2.4.28", "@volar/typescript": "2.4.28", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "typescript": "*" } }, "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg=="], @@ -750,7 +760,7 @@ "accessible-astro-components": ["accessible-astro-components@5.1.1", "", {}, "sha512-m6aUrGzo3az9lAH/AnJKIHNHhhM51JYUIL89NpXNozET4LlGEotO1h5RQjQuNeXDJosAAdrv7TdvOA753wInsQ=="], - "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], @@ -762,11 +772,9 @@ "ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="], - "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], - "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], @@ -788,7 +796,7 @@ "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - "astro": ["astro@5.16.14", "", { "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/internal-helpers": "0.7.5", "@astrojs/markdown-remark": "6.3.10", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "acorn": "^8.15.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.3.1", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.1.1", "cssesc": "^3.0.0", "debug": "^4.4.3", "deterministic-object-hash": "^2.0.2", "devalue": "^5.6.2", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.4.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.1", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.1", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.3", "shiki": "^3.21.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.3", "unist-util-visit": "^5.0.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^6.4.1", "vitefu": "^1.1.1", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.3", "zod": "^3.25.76", "zod-to-json-schema": "^3.25.1", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "astro.js" } }, "sha512-+XtShBCwsL5IezGvSeJTIHoZl3RGDOiB2u54t5phS+3haa0A5kGWXbZAmh5O/xFIv19/1cxHbDFa2i0Ot16SMw=="], + "astro": ["astro@6.0.4", "", { "dependencies": { "@astrojs/compiler": "^3.0.0", "@astrojs/internal-helpers": "0.8.0", "@astrojs/markdown-remark": "7.0.0", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.0.1", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", "devalue": "^5.6.3", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", "flattie": "^1.1.1", "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "rehype": "^13.0.2", "semver": "^7.7.4", "shiki": "^4.0.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyclip": "^0.1.6", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^7.3.1", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "bin/astro.mjs" } }, "sha512-1piLJCPTL/x7AMO2cjVFSTFyRqKuC3W8sSEySCt1aJio+p/wGs5H3K+Xr/rE9ftKtknLUtjxCqCE7/0NsXfGpQ=="], "astro-expressive-code": ["astro-expressive-code@0.41.6", "", { "dependencies": { "rehype-expressive-code": "^0.41.6" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta" } }, "sha512-l47tb1uhmVIebHUkw+HEPtU/av0G4O8Q34g2cbkPvC7/e9ZhANcjUUciKt9Hp6gSVDdIuXBBLwJQn2LkeGMOAw=="], @@ -798,8 +806,6 @@ "balanced-match": ["balanced-match@4.0.3", "", {}, "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g=="], - "base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="], - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], "baseline-browser-mapping": ["baseline-browser-mapping@2.9.19", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg=="], @@ -818,8 +824,6 @@ "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], - "boxen": ["boxen@8.0.1", "", { "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" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], - "brace-expansion": ["brace-expansion@5.0.2", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -838,8 +842,6 @@ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], - "camera-controls": ["camera-controls@3.1.2", "", { "peerDependencies": { "three": ">=0.126.1" } }, "sha512-xkxfpG2ECZ6Ww5/9+kf4mfg1VEYAoe9aDSY+IwF0UEs7qEzwy0aVRfs2grImIECs/PoBtWFrh7RXsQkwG922JA=="], "caniuse-lite": ["caniuse-lite@1.0.30001770", "", {}, "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw=="], @@ -858,12 +860,10 @@ "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - "ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], + "ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="], "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], - "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], - "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], "cli-spinners": ["cli-spinners@2.9.2", "", {}, "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg=="], @@ -886,7 +886,7 @@ "commander": ["commander@14.0.3", "", {}, "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw=="], - "common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], + "common-ancestor-path": ["common-ancestor-path@2.0.0", "", {}, "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng=="], "common-tags": ["common-tags@1.8.2", "", {}, "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA=="], @@ -984,9 +984,7 @@ "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], - "deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="], - - "devalue": ["devalue@5.6.2", "", {}, "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg=="], + "devalue": ["devalue@5.6.4", "", {}, "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA=="], "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], @@ -1038,7 +1036,7 @@ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], + "es-module-lexer": ["es-module-lexer@2.0.0", "", {}, "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="], "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], @@ -1046,7 +1044,7 @@ "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.25.12", "", { "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" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], + "esbuild": ["esbuild@0.27.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.4", "@esbuild/android-arm": "0.27.4", "@esbuild/android-arm64": "0.27.4", "@esbuild/android-x64": "0.27.4", "@esbuild/darwin-arm64": "0.27.4", "@esbuild/darwin-x64": "0.27.4", "@esbuild/freebsd-arm64": "0.27.4", "@esbuild/freebsd-x64": "0.27.4", "@esbuild/linux-arm": "0.27.4", "@esbuild/linux-arm64": "0.27.4", "@esbuild/linux-ia32": "0.27.4", "@esbuild/linux-loong64": "0.27.4", "@esbuild/linux-mips64el": "0.27.4", "@esbuild/linux-ppc64": "0.27.4", "@esbuild/linux-riscv64": "0.27.4", "@esbuild/linux-s390x": "0.27.4", "@esbuild/linux-x64": "0.27.4", "@esbuild/netbsd-arm64": "0.27.4", "@esbuild/netbsd-x64": "0.27.4", "@esbuild/openbsd-arm64": "0.27.4", "@esbuild/openbsd-x64": "0.27.4", "@esbuild/openharmony-arm64": "0.27.4", "@esbuild/sunos-x64": "0.27.4", "@esbuild/win32-arm64": "0.27.4", "@esbuild/win32-ia32": "0.27.4", "@esbuild/win32-x64": "0.27.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], @@ -1068,7 +1066,7 @@ "estree-util-visit": ["estree-util-visit@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" } }, "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww=="], - "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], @@ -1112,7 +1110,7 @@ "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="], - "fontace": ["fontace@0.4.0", "", { "dependencies": { "fontkitten": "^1.0.0" } }, "sha512-moThBCItUe2bjZip5PF/iZClpKHGLwMvR79Kp8XpGRBrvoRSnySN4VcILdv3/MJzbhvUA5WeiUXF5o538m5fvg=="], + "fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="], "fontkitten": ["fontkitten@1.0.2", "", { "dependencies": { "tiny-inflate": "^1.0.3" } }, "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q=="], @@ -1242,8 +1240,6 @@ "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], - "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], @@ -1374,7 +1370,7 @@ "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "magicast": ["magicast@0.5.1", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "source-map-js": "^1.2.1" } }, "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw=="], + "magicast": ["magicast@0.5.2", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ=="], "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], @@ -1570,6 +1566,8 @@ "object-treeify": ["object-treeify@1.1.33", "", {}, "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A=="], + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], @@ -1590,11 +1588,11 @@ "outvariant": ["outvariant@1.4.3", "", {}, "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA=="], - "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], + "p-limit": ["p-limit@7.3.0", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw=="], - "p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="], + "p-queue": ["p-queue@9.1.0", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^7.0.0" } }, "sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw=="], - "p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="], + "p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], @@ -1678,7 +1676,7 @@ "react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], - "react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], @@ -1804,7 +1802,7 @@ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "shiki": ["shiki@3.21.0", "", { "dependencies": { "@shikijs/core": "3.21.0", "@shikijs/engine-javascript": "3.21.0", "@shikijs/engine-oniguruma": "3.21.0", "@shikijs/langs": "3.21.0", "@shikijs/themes": "3.21.0", "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w=="], + "shiki": ["shiki@4.0.2", "", { "dependencies": { "@shikijs/core": "4.0.2", "@shikijs/engine-javascript": "4.0.2", "@shikijs/engine-oniguruma": "4.0.2", "@shikijs/langs": "4.0.2", "@shikijs/themes": "4.0.2", "@shikijs/types": "4.0.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ=="], "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], @@ -1818,7 +1816,7 @@ "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "sitemap": ["sitemap@8.0.2", "", { "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.4.1" }, "bin": { "sitemap": "dist/cli.js" } }, "sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ=="], + "sitemap": ["sitemap@9.0.1", "", { "dependencies": { "@types/node": "^24.9.2", "@types/sax": "^1.2.1", "arg": "^5.0.0", "sax": "^1.4.1" }, "bin": { "sitemap": "dist/esm/cli.js" } }, "sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ=="], "smol-toml": ["smol-toml@1.6.0", "", {}, "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="], @@ -1880,6 +1878,8 @@ "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + "tinyclip": ["tinyclip@0.1.12", "", {}, "sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA=="], + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], @@ -1934,11 +1934,13 @@ "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], "unified": ["unified@11.0.5", "", { "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" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - "unifont": ["unifont@0.7.3", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA=="], + "unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], @@ -1994,9 +1996,9 @@ "victory-vendor": ["victory-vendor@36.9.2", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ=="], - "vite": ["vite@6.4.1", "", { "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" }, "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" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g=="], + "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], - "vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="], + "vitefu": ["vitefu@1.1.2", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw=="], "volar-service-css": ["volar-service-css@0.0.68", "", { "dependencies": { "vscode-css-languageservice": "^6.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-lJSMh6f3QzZ1tdLOZOzovLX0xzAadPhx8EKwraDLPxBndLCYfoTvnNuiFFV8FARrpAlW5C0WkH+TstPaCxr00Q=="], @@ -2044,9 +2046,7 @@ "which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="], - "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], - - "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], + "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], @@ -2066,12 +2066,10 @@ "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], - "yocto-spinner": ["yocto-spinner@0.2.3", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ=="], - "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], @@ -2080,14 +2078,18 @@ "zod-to-json-schema": ["zod-to-json-schema@3.25.1", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="], - "zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="], - "zustand": ["zustand@5.0.11", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "@astrojs/language-server/@astrojs/compiler": ["@astrojs/compiler@2.13.0", "", {}, "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw=="], + "@astrojs/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + "@astrojs/sitemap/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + + "@astrojs/telemetry/ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -2110,14 +2112,18 @@ "@ecies/ciphers/@noble/ciphers": ["@noble/ciphers@1.3.0", "", {}, "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw=="], + "@expressive-code/plugin-shiki/shiki": ["shiki@3.21.0", "", { "dependencies": { "@shikijs/core": "3.21.0", "@shikijs/engine-javascript": "3.21.0", "@shikijs/engine-oniguruma": "3.21.0", "@shikijs/langs": "3.21.0", "@shikijs/themes": "3.21.0", "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w=="], + "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], + "@mdx-js/mdx/acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "@mdx-js/mdx/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + "@mdx-js/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "@noble/curves/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], - "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], @@ -2136,18 +2142,18 @@ "@types/three/fflate": ["fflate@0.8.2", "", {}, "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="], - "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "astro/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "astro/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "better-auth/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "convex/esbuild": ["esbuild@0.27.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.0", "@esbuild/android-arm": "0.27.0", "@esbuild/android-arm64": "0.27.0", "@esbuild/android-x64": "0.27.0", "@esbuild/darwin-arm64": "0.27.0", "@esbuild/darwin-x64": "0.27.0", "@esbuild/freebsd-arm64": "0.27.0", "@esbuild/freebsd-x64": "0.27.0", "@esbuild/linux-arm": "0.27.0", "@esbuild/linux-arm64": "0.27.0", "@esbuild/linux-ia32": "0.27.0", "@esbuild/linux-loong64": "0.27.0", "@esbuild/linux-mips64el": "0.27.0", "@esbuild/linux-ppc64": "0.27.0", "@esbuild/linux-riscv64": "0.27.0", "@esbuild/linux-s390x": "0.27.0", "@esbuild/linux-x64": "0.27.0", "@esbuild/netbsd-arm64": "0.27.0", "@esbuild/netbsd-x64": "0.27.0", "@esbuild/openbsd-arm64": "0.27.0", "@esbuild/openbsd-x64": "0.27.0", "@esbuild/openharmony-arm64": "0.27.0", "@esbuild/sunos-x64": "0.27.0", "@esbuild/win32-arm64": "0.27.0", "@esbuild/win32-ia32": "0.27.0", "@esbuild/win32-x64": "0.27.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA=="], "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -2160,15 +2166,17 @@ "eciesjs/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + "esast-util-from-js/acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + + "estree-util-build-jsx/estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + "estree-util-to-js/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], "log-symbols/is-unicode-supported": ["is-unicode-supported@1.3.0", "", {}, "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ=="], - "magicast/@babel/parser": ["@babel/parser@7.28.6", "", { "dependencies": { "@babel/types": "^7.28.6" }, "bin": "./bin/babel-parser.js" }, "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ=="], - - "magicast/@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="], + "micromark-extension-mdxjs/acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], @@ -2192,6 +2200,8 @@ "router/path-to-regexp": ["path-to-regexp@8.3.0", "", {}, "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA=="], + "sitemap/@types/node": ["@types/node@24.12.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ=="], + "stats-gl/three": ["three@0.170.0", "", {}, "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ=="], "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], @@ -2204,10 +2214,16 @@ "vscode-json-languageservice/jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], + "wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "yaml-language-server/request-light": ["request-light@0.5.8", "", {}, "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg=="], "yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], + "@dotenvx/dotenvx/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], "@dotenvx/dotenvx/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], @@ -2220,22 +2236,26 @@ "@dotenvx/dotenvx/execa/strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "@inquirer/core/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@expressive-code/plugin-shiki/shiki/@shikijs/core": ["@shikijs/core@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA=="], - "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "@expressive-code/plugin-shiki/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ=="], - "@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@expressive-code/plugin-shiki/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ=="], + + "@expressive-code/plugin-shiki/shiki/@shikijs/langs": ["@shikijs/langs@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA=="], - "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@expressive-code/plugin-shiki/shiki/@shikijs/themes": ["@shikijs/themes@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw=="], - "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@expressive-code/plugin-shiki/shiki/@shikijs/types": ["@shikijs/types@3.21.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA=="], + + "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + + "@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "convex/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A=="], "convex/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.0", "", { "os": "android", "cpu": "arm" }, "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ=="], @@ -2294,6 +2314,10 @@ "unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -2302,8 +2326,6 @@ "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], } } diff --git a/package.json b/package.json index be260fe..553bdc5 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ "astro": "astro" }, "dependencies": { - "@astrojs/check": "^0.9.6", - "@astrojs/node": "^9.1.4", - "@astrojs/react": "^4.4.2", - "@astrojs/starlight": "^0.37.3", - "@astrojs/starlight-tailwind": "^4.0.2", + "@astrojs/check": "0.9.7", + "@astrojs/node": "10.0.1", + "@astrojs/react": "5.0.0", + "@astrojs/starlight": "0.38.1", + "@astrojs/starlight-tailwind": "5.0.0", "@casl/ability": "^6.8.0", "@convex-dev/better-auth": "^0.10.10", "@convex-dev/react-query": "^0.1.0", @@ -27,7 +27,7 @@ "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "accessible-astro-components": "^5.1.1", - "astro": "^5.6.1", + "astro": "6.0.4", "better-auth": "1.4.9", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -53,5 +53,9 @@ "devDependencies": { "shadcn": "^3.8.5", "tw-animate-css": "^1.4.0" + }, + "patchedDependencies": { + "astro@6.0.4": "patches/astro@6.0.4.patch", + "@astrojs/starlight@0.38.1": "patches/@astrojs%2Fstarlight@0.38.1.patch" } } \ No newline at end of file diff --git a/patches/@astrojs%2Fstarlight@0.38.1.patch b/patches/@astrojs%2Fstarlight@0.38.1.patch new file mode 100644 index 0000000..159a050 --- /dev/null +++ b/patches/@astrojs%2Fstarlight@0.38.1.patch @@ -0,0 +1,915 @@ +diff --git a/utils/plugins.ts b/utils/plugins.ts +index 9ccd19c6de57cbfe4bbee2136eb872e31fa879fe..41a3d5e4644d4434728ff06be2049579c9294824 100644 +--- a/utils/plugins.ts ++++ b/utils/plugins.ts +@@ -3,9 +3,9 @@ import { AstroError } from 'astro/errors'; + import { z } from 'astro/zod'; + import { parseWithFriendlyErrors } from '../utils/error-map'; + import { +- StarlightConfigSchema, +- type StarlightConfig, +- type StarlightUserConfig, ++ StarlightConfigSchema, ++ type StarlightConfig, ++ type StarlightUserConfig, + } from '../utils/user-config'; + import type { UserI18nSchema } from './translations'; + import { createTranslationSystemFromFs } from './translations-fs'; +@@ -18,367 +18,367 @@ import { getCollectionPosixPath } from './collection-fs'; + * plugins and a list of any integrations added by the plugins. + */ + export async function runPlugins( +- starlightUserConfig: StarlightUserConfig, +- pluginsUserConfig: StarlightPluginsUserConfig, +- context: StarlightPluginContext ++ starlightUserConfig: StarlightUserConfig, ++ pluginsUserConfig: StarlightPluginsUserConfig, ++ context: StarlightPluginContext + ) { +- // Validate the user-provided configuration. +- let userConfig = starlightUserConfig; +- +- let starlightConfig = parseWithFriendlyErrors( +- StarlightConfigSchema, +- userConfig, +- 'Invalid config passed to starlight integration' +- ); +- +- // Validate the user-provided plugins configuration. +- const pluginsConfig = parseWithFriendlyErrors( +- starlightPluginsConfigSchema, +- pluginsUserConfig, +- 'Invalid plugins config passed to starlight integration' +- ); +- +- // A list of translations injected by the various plugins keyed by locale. +- const pluginTranslations: PluginTranslations = {}; +- // A list of route middleware added by the various plugins. +- const routeMiddlewareConfigs: Array> = []; +- +- for (const { +- hooks: { 'i18n:setup': i18nSetup }, +- } of pluginsConfig) { +- if (i18nSetup) { +- await i18nSetup({ +- injectTranslations(translations) { +- // Merge the translations injected by the plugin. +- for (const [locale, localeTranslations] of Object.entries(translations)) { +- pluginTranslations[locale] ??= {}; +- Object.assign(pluginTranslations[locale], localeTranslations); +- } +- }, +- }); +- } +- } +- +- const useTranslations = await createTranslationSystemFromFs( +- starlightConfig, +- context.config, +- pluginTranslations +- ); +- +- function absolutePathToLang(path: string) { +- return getAbsolutePathFromLang(path, { +- docsPath: getCollectionPosixPath('docs', context.config.srcDir), +- starlightConfig, +- }); +- } +- +- // A list of Astro integrations added by the various plugins. +- const integrations: AstroIntegration[] = []; +- +- for (const { +- name, +- hooks: { 'config:setup': configSetup, setup: deprecatedSetup }, +- } of pluginsConfig) { +- // A refinement in the schema ensures that at least one of the two hooks is defined. +- const setup = (configSetup ?? deprecatedSetup)!; +- +- await setup({ +- config: pluginsUserConfig ? { ...userConfig, plugins: pluginsUserConfig } : userConfig, +- updateConfig(newConfig) { +- // Ensure that plugins do not update the `plugins` config key. +- if ('plugins' in newConfig) { +- throw new AstroError( +- `The \`${name}\` plugin tried to update the \`plugins\` config key which is not supported.` +- ); +- } +- if ('routeMiddleware' in newConfig) { +- throw new AstroError( +- `The \`${name}\` plugin tried to update the \`routeMiddleware\` config key which is not supported.`, +- 'Use the `addRouteMiddleware()` utility instead.\n' + +- 'See https://starlight.astro.build/reference/plugins/#addroutemiddleware for more details.' +- ); +- } +- +- // If the plugin is updating the user config, re-validate it. +- const mergedUserConfig = { ...userConfig, ...newConfig }; +- const mergedConfig = parseWithFriendlyErrors( +- StarlightConfigSchema, +- mergedUserConfig, +- `Invalid config update provided by the '${name}' plugin` +- ); +- +- // If the updated config is valid, keep track of both the user config and parsed config. +- userConfig = mergedUserConfig; +- starlightConfig = mergedConfig; +- }, +- addIntegration(integration) { +- // Collect any Astro integrations added by the plugin. +- integrations.push(integration); +- }, +- addRouteMiddleware(middlewareConfig) { +- routeMiddlewareConfigs.push(middlewareConfig); +- }, +- astroConfig: { +- ...context.config, +- integrations: [...context.config.integrations, ...integrations], +- }, +- command: context.command, +- isRestart: context.isRestart, +- logger: context.logger.fork(name), +- useTranslations, +- absolutePathToLang, +- }); +- } +- +- applyPluginMiddleware(routeMiddlewareConfigs, starlightConfig); +- +- return { integrations, starlightConfig, pluginTranslations, useTranslations, absolutePathToLang }; ++ // Validate the user-provided configuration. ++ let userConfig = starlightUserConfig; ++ ++ let starlightConfig = parseWithFriendlyErrors( ++ StarlightConfigSchema, ++ userConfig, ++ 'Invalid config passed to starlight integration' ++ ); ++ ++ // Validate the user-provided plugins configuration. ++ const pluginsConfig = parseWithFriendlyErrors( ++ starlightPluginsConfigSchema, ++ pluginsUserConfig, ++ 'Invalid plugins config passed to starlight integration' ++ ); ++ ++ // A list of translations injected by the various plugins keyed by locale. ++ const pluginTranslations: PluginTranslations = {}; ++ // A list of route middleware added by the various plugins. ++ const routeMiddlewareConfigs: Array> = []; ++ ++ for (const { ++ hooks: { 'i18n:setup': i18nSetup }, ++ } of pluginsConfig) { ++ if (i18nSetup) { ++ await i18nSetup({ ++ injectTranslations(translations) { ++ // Merge the translations injected by the plugin. ++ for (const [locale, localeTranslations] of Object.entries(translations)) { ++ pluginTranslations[locale] ??= {}; ++ Object.assign(pluginTranslations[locale], localeTranslations); ++ } ++ }, ++ }); ++ } ++ } ++ ++ const useTranslations = await createTranslationSystemFromFs( ++ starlightConfig, ++ context.config, ++ pluginTranslations ++ ); ++ ++ function absolutePathToLang(path: string) { ++ return getAbsolutePathFromLang(path, { ++ docsPath: getCollectionPosixPath('docs', context.config.srcDir), ++ starlightConfig, ++ }); ++ } ++ ++ // A list of Astro integrations added by the various plugins. ++ const integrations: AstroIntegration[] = []; ++ ++ for (const { ++ name, ++ hooks: { 'config:setup': configSetup, setup: deprecatedSetup }, ++ } of pluginsConfig) { ++ // A refinement in the schema ensures that at least one of the two hooks is defined. ++ const setup = (configSetup ?? deprecatedSetup)!; ++ ++ await setup({ ++ config: pluginsUserConfig ? { ...userConfig, plugins: pluginsUserConfig } : userConfig, ++ updateConfig(newConfig) { ++ // Ensure that plugins do not update the `plugins` config key. ++ if ('plugins' in newConfig) { ++ throw new AstroError( ++ `The \`${name}\` plugin tried to update the \`plugins\` config key which is not supported.` ++ ); ++ } ++ if ('routeMiddleware' in newConfig) { ++ throw new AstroError( ++ `The \`${name}\` plugin tried to update the \`routeMiddleware\` config key which is not supported.`, ++ 'Use the `addRouteMiddleware()` utility instead.\n' + ++ 'See https://starlight.astro.build/reference/plugins/#addroutemiddleware for more details.' ++ ); ++ } ++ ++ // If the plugin is updating the user config, re-validate it. ++ const mergedUserConfig = { ...userConfig, ...newConfig }; ++ const mergedConfig = parseWithFriendlyErrors( ++ StarlightConfigSchema, ++ mergedUserConfig, ++ `Invalid config update provided by the '${name}' plugin` ++ ); ++ ++ // If the updated config is valid, keep track of both the user config and parsed config. ++ userConfig = mergedUserConfig; ++ starlightConfig = mergedConfig; ++ }, ++ addIntegration(integration) { ++ // Collect any Astro integrations added by the plugin. ++ integrations.push(integration); ++ }, ++ addRouteMiddleware(middlewareConfig) { ++ routeMiddlewareConfigs.push(middlewareConfig); ++ }, ++ astroConfig: { ++ ...context.config, ++ integrations: [...context.config.integrations, ...integrations], ++ }, ++ command: context.command, ++ isRestart: context.isRestart, ++ logger: context.logger.fork(name), ++ useTranslations, ++ absolutePathToLang, ++ }); ++ } ++ ++ applyPluginMiddleware(routeMiddlewareConfigs, starlightConfig); ++ ++ return { integrations, starlightConfig, pluginTranslations, useTranslations, absolutePathToLang }; + } + + /** Updates `routeMiddleware` in the Starlight config to add plugin middlewares in the correct order. */ + function applyPluginMiddleware( +- routeMiddlewareConfigs: { entrypoint: string; order: 'default' | 'pre' | 'post' }[], +- starlightConfig: StarlightConfig ++ routeMiddlewareConfigs: { entrypoint: string; order: 'default' | 'pre' | 'post' }[], ++ starlightConfig: StarlightConfig + ) { +- const middlewareBuckets = routeMiddlewareConfigs.reduce< +- Record<'pre' | 'default' | 'post', string[]> +- >( +- (buckets, { entrypoint, order = 'default' }) => { +- buckets[order].push(entrypoint); +- return buckets; +- }, +- { pre: [], default: [], post: [] } +- ); +- starlightConfig.routeMiddleware.unshift(...middlewareBuckets.pre); +- starlightConfig.routeMiddleware.push(...middlewareBuckets.default, ...middlewareBuckets.post); ++ const middlewareBuckets = routeMiddlewareConfigs.reduce< ++ Record<'pre' | 'default' | 'post', string[]> ++ >( ++ (buckets, { entrypoint, order = 'default' }) => { ++ buckets[order].push(entrypoint); ++ return buckets; ++ }, ++ { pre: [], default: [], post: [] } ++ ); ++ starlightConfig.routeMiddleware.unshift(...middlewareBuckets.pre); ++ starlightConfig.routeMiddleware.push(...middlewareBuckets.default, ...middlewareBuckets.post); + } + + export function injectPluginTranslationsTypes( +- translations: PluginTranslations, +- injectTypes: AstroHookParameters<'astro:config:done'>['injectTypes'] ++ translations: PluginTranslations, ++ injectTypes: AstroHookParameters<'astro:config:done'>['injectTypes'] + ) { +- const allKeys = new Set(); ++ const allKeys = new Set(); + +- for (const localeTranslations of Object.values(translations)) { +- for (const key of Object.keys(localeTranslations)) { +- allKeys.add(key); +- } +- } ++ for (const localeTranslations of Object.values(translations)) { ++ for (const key of Object.keys(localeTranslations)) { ++ allKeys.add(key); ++ } ++ } + +- // If there are no translations to inject, we don't need to generate any types or cleanup +- // previous ones as they will not be referenced anymore. +- if (allKeys.size === 0) return; ++ // If there are no translations to inject, we don't need to generate any types or cleanup ++ // previous ones as they will not be referenced anymore. ++ if (allKeys.size === 0) return; + +- injectTypes({ +- filename: 'i18n-plugins.d.ts', +- content: `declare namespace StarlightApp { ++ injectTypes({ ++ filename: 'i18n-plugins.d.ts', ++ content: `declare namespace StarlightApp { + type PluginUIStringKeys = { + ${[...allKeys].map((key) => `'${key}': string;`).join('\n\t\t')} + }; + interface I18n extends PluginUIStringKeys {} + }`, +- }); ++ }); + } + + // https://github.com/withastro/astro/blob/910eb00fe0b70ca80bd09520ae100e8c78b675b5/packages/astro/src/core/config/schema.ts#L113 + const astroIntegrationSchema = z.object({ +- name: z.string(), +- hooks: z.looseObject({}).default({}), ++ name: z.string(), ++ hooks: z.looseObject({}).default({}), + }) as z.ZodType; + + const routeMiddlewareConfigSchema = z.object({ +- entrypoint: z.string(), +- order: z.enum(['pre', 'post', 'default']).default('default'), ++ entrypoint: z.string(), ++ order: z.enum(['pre', 'post', 'default']).default('default'), + }); + + const baseStarlightPluginSchema = z.object({ +- /** Name of the Starlight plugin. */ +- name: z.string(), ++ /** Name of the Starlight plugin. */ ++ name: z.string(), + }); + + type StarlightConfigUpdate = Partial>; + type StarlightI18nTFactory = Awaited>; + +-const configSetupHookSchema = z +- .function({ +- input: [ +- z.object({ +- /** +- * A read-only copy of the user-supplied Starlight configuration. +- * +- * Note that this configuration may have been updated by other plugins configured +- * before this one. +- */ +- config: z.any() as z.ZodType< +- // The configuration passed to plugins should contains the list of plugins. +- StarlightUserConfigWithPlugins, +- StarlightUserConfigWithPlugins +- >, +- /** +- * A callback function to update the user-supplied Starlight configuration. +- * +- * You only need to provide the configuration values that you want to update but no deep +- * merge is performed. +- * +- * @example +- * { +- * name: 'My Starlight Plugin', +- * hooks: { +- * 'config:setup'({ updateConfig }) { +- * updateConfig({ +- * description: 'Custom description', +- * }); +- * } +- * } +- * } +- */ +- updateConfig: z.function({ +- input: [ +- z.record(z.string(), z.any()) as z.ZodType< +- StarlightConfigUpdate, +- StarlightConfigUpdate +- >, +- ], +- output: z.void(), +- }), +- /** +- * A callback function to add an Astro integration required by this plugin. +- * +- * @see https://docs.astro.build/en/reference/integrations-reference/ +- * +- * @example +- * { +- * name: 'My Starlight Plugin', +- * hooks: { +- * 'config:setup'({ addIntegration }) { +- * addIntegration({ +- * name: 'My Plugin Astro Integration', +- * hooks: { +- * 'astro:config:setup': () => { +- * // … +- * }, +- * }, +- * }); +- * } +- * } +- * } +- */ +- addIntegration: z.function({ +- input: [astroIntegrationSchema], +- output: z.void(), +- }), +- /** +- * A callback function to register additional route middleware handlers. +- * +- * If the order of execution is important, a plugin can use the `order` option to enforce +- * running first or last. +- * +- * @example +- * { +- * name: 'My Starlight Plugin', +- * hooks: { +- * setup({ addRouteMiddleware }) { +- * addRouteMiddleware({ entrypoint: '@me/my-plugin/route-middleware' }); +- * }, +- * }, +- * } +- */ +- addRouteMiddleware: z.function({ +- input: [routeMiddlewareConfigSchema], +- output: z.void(), +- }), +- /** +- * A read-only copy of the user-supplied Astro configuration. +- * +- * Note that this configuration is resolved before any other integrations have run. +- * +- * @see https://docs.astro.build/en/reference/integrations-reference/#config-option +- */ +- astroConfig: z.any() as z.ZodType< +- StarlightPluginContext['config'], +- StarlightPluginContext['config'] +- >, +- /** +- * The command used to run Starlight. +- * +- * @see https://docs.astro.build/en/reference/integrations-reference/#command-option +- */ +- command: z.any() as z.ZodType< +- StarlightPluginContext['command'], +- StarlightPluginContext['command'] +- >, +- /** +- * `false` when the dev server starts, `true` when a reload is triggered. +- * +- * @see https://docs.astro.build/en/reference/integrations-reference/#isrestart-option +- */ +- isRestart: z.any() as z.ZodType< +- StarlightPluginContext['isRestart'], +- StarlightPluginContext['isRestart'] +- >, +- /** +- * An instance of the Astro integration logger with all logged messages prefixed with the +- * plugin name. +- * +- * @see https://docs.astro.build/en/reference/integrations-reference/#astrointegrationlogger +- */ +- logger: z.any() as z.ZodType< +- StarlightPluginContext['logger'], +- StarlightPluginContext['logger'] +- >, +- /** +- * A callback function to generate a utility function to access UI strings for a given +- * language. +- * +- * @see https://starlight.astro.build/guides/i18n/#using-ui-translations +- * +- * @example +- * { +- * name: 'My Starlight Plugin', +- * hooks: { +- * 'config:setup'({ useTranslations, logger }) { +- * const t = useTranslations('en'); +- * logger.info(t('builtWithStarlight.label')); +- * // ^ Logs 'Built with Starlight' to the console. +- * } +- * } +- * } +- */ +- useTranslations: z.any() as z.ZodType, +- /** +- * A callback function to get the language for a given absolute file path. The returned +- * language can be used with the `useTranslations` helper to get UI strings for that +- * language. +- * +- * This can be particularly useful in remark or rehype plugins to get the language for +- * the current file being processed and use it to get the appropriate UI strings for that +- * language. +- * +- * @example +- * { +- * name: 'My Starlight Plugin', +- * hooks: { +- * 'config:setup'({ absolutePathToLang, useTranslations, logger }) { +- * const lang = absolutePathToLang('/absolute/path/to/project/src/content/docs/fr/index.mdx'); +- * const t = useTranslations(lang); +- * logger.info(t('aside.tip')); +- * // ^ Logs 'Astuce' to the console. +- * } +- * } +- * } +- */ +- absolutePathToLang: z.function({ +- input: [z.string()], +- output: z.string(), +- }), +- }), +- ], +- // We still rely on the deprecated `z.promise()` to define the function output as the only +- // non-deprecated way to define an async function is to use `.implementAsync()` but we don't +- // want to implement the function using Zod. +- output: z.promise(z.void()), +- }) +- .optional(); ++const configSetupHookSchema = z.optional( ++ z.function({ ++ input: [ ++ z.object({ ++ /** ++ * A read-only copy of the user-supplied Starlight configuration. ++ * ++ * Note that this configuration may have been updated by other plugins configured ++ * before this one. ++ */ ++ config: z.any() as z.ZodType< ++ // The configuration passed to plugins should contains the list of plugins. ++ StarlightUserConfigWithPlugins, ++ StarlightUserConfigWithPlugins ++ >, ++ /** ++ * A callback function to update the user-supplied Starlight configuration. ++ * ++ * You only need to provide the configuration values that you want to update but no deep ++ * merge is performed. ++ * ++ * @example ++ * { ++ * name: 'My Starlight Plugin', ++ * hooks: { ++ * 'config:setup'({ updateConfig }) { ++ * updateConfig({ ++ * description: 'Custom description', ++ * }); ++ * } ++ * } ++ * } ++ */ ++ updateConfig: z.function({ ++ input: [ ++ z.record(z.string(), z.any()) as z.ZodType< ++ StarlightConfigUpdate, ++ StarlightConfigUpdate ++ >, ++ ], ++ output: z.void(), ++ }), ++ /** ++ * A callback function to add an Astro integration required by this plugin. ++ * ++ * @see https://docs.astro.build/en/reference/integrations-reference/ ++ * ++ * @example ++ * { ++ * name: 'My Starlight Plugin', ++ * hooks: { ++ * 'config:setup'({ addIntegration }) { ++ * addIntegration({ ++ * name: 'My Plugin Astro Integration', ++ * hooks: { ++ * 'astro:config:setup': () => { ++ * // … ++ * }, ++ * }, ++ * }); ++ * } ++ * } ++ * } ++ */ ++ addIntegration: z.function({ ++ input: [astroIntegrationSchema], ++ output: z.void(), ++ }), ++ /** ++ * A callback function to register additional route middleware handlers. ++ * ++ * If the order of execution is important, a plugin can use the `order` option to enforce ++ * running first or last. ++ * ++ * @example ++ * { ++ * name: 'My Starlight Plugin', ++ * hooks: { ++ * setup({ addRouteMiddleware }) { ++ * addRouteMiddleware({ entrypoint: '@me/my-plugin/route-middleware' }); ++ * }, ++ * }, ++ * } ++ */ ++ addRouteMiddleware: z.function({ ++ input: [routeMiddlewareConfigSchema], ++ output: z.void(), ++ }), ++ /** ++ * A read-only copy of the user-supplied Astro configuration. ++ * ++ * Note that this configuration is resolved before any other integrations have run. ++ * ++ * @see https://docs.astro.build/en/reference/integrations-reference/#config-option ++ */ ++ astroConfig: z.any() as z.ZodType< ++ StarlightPluginContext['config'], ++ StarlightPluginContext['config'] ++ >, ++ /** ++ * The command used to run Starlight. ++ * ++ * @see https://docs.astro.build/en/reference/integrations-reference/#command-option ++ */ ++ command: z.any() as z.ZodType< ++ StarlightPluginContext['command'], ++ StarlightPluginContext['command'] ++ >, ++ /** ++ * `false` when the dev server starts, `true` when a reload is triggered. ++ * ++ * @see https://docs.astro.build/en/reference/integrations-reference/#isrestart-option ++ */ ++ isRestart: z.any() as z.ZodType< ++ StarlightPluginContext['isRestart'], ++ StarlightPluginContext['isRestart'] ++ >, ++ /** ++ * An instance of the Astro integration logger with all logged messages prefixed with the ++ * plugin name. ++ * ++ * @see https://docs.astro.build/en/reference/integrations-reference/#astrointegrationlogger ++ */ ++ logger: z.any() as z.ZodType< ++ StarlightPluginContext['logger'], ++ StarlightPluginContext['logger'] ++ >, ++ /** ++ * A callback function to generate a utility function to access UI strings for a given ++ * language. ++ * ++ * @see https://starlight.astro.build/guides/i18n/#using-ui-translations ++ * ++ * @example ++ * { ++ * name: 'My Starlight Plugin', ++ * hooks: { ++ * 'config:setup'({ useTranslations, logger }) { ++ * const t = useTranslations('en'); ++ * logger.info(t('builtWithStarlight.label')); ++ * // ^ Logs 'Built with Starlight' to the console. ++ * } ++ * } ++ * } ++ */ ++ useTranslations: z.any() as z.ZodType, ++ /** ++ * A callback function to get the language for a given absolute file path. The returned ++ * language can be used with the `useTranslations` helper to get UI strings for that ++ * language. ++ * ++ * This can be particularly useful in remark or rehype plugins to get the language for ++ * the current file being processed and use it to get the appropriate UI strings for that ++ * language. ++ * ++ * @example ++ * { ++ * name: 'My Starlight Plugin', ++ * hooks: { ++ * 'config:setup'({ absolutePathToLang, useTranslations, logger }) { ++ * const lang = absolutePathToLang('/absolute/path/to/project/src/content/docs/fr/index.mdx'); ++ * const t = useTranslations(lang); ++ * logger.info(t('aside.tip')); ++ * // ^ Logs 'Astuce' to the console. ++ * } ++ * } ++ * } ++ */ ++ absolutePathToLang: z.function({ ++ input: [z.string()], ++ output: z.string(), ++ }), ++ }), ++ ], ++ // We still rely on the deprecated `z.promise()` to define the function output as the only ++ // non-deprecated way to define an async function is to use `.implementAsync()` but we don't ++ // want to implement the function using Zod. ++ output: z.promise(z.void()), ++ }) ++); + + /** + * A plugin `config` and `updateConfig` argument are purposely not validated using the Starlight +@@ -386,83 +386,83 @@ const configSetupHookSchema = z + * the Zod `transform`s used in the user config schema when running plugins. + */ + const starlightPluginSchema = z +- .object({ +- ...baseStarlightPluginSchema.shape, +- /** The different hooks available to the plugin. */ +- hooks: z.object({ +- /** +- * Plugin internationalization setup function allowing to inject translations strings for the +- * plugin in various locales. These translations will be available in the `config:setup` hook +- * and plugin UI. +- */ +- 'i18n:setup': z +- .function({ +- input: [ +- z.object({ +- /** +- * A callback function to add or update translations strings. +- * +- * @see https://starlight.astro.build/guides/i18n/#extend-translation-schema +- * +- * @example +- * { +- * name: 'My Starlight Plugin', +- * hooks: { +- * 'i18n:setup'({ injectTranslations }) { +- * injectTranslations({ +- * en: { +- * 'myPlugin.doThing': 'Do the thing', +- * }, +- * fr: { +- * 'myPlugin.doThing': 'Faire le truc', +- * }, +- * }); +- * } +- * } +- * } +- */ +- injectTranslations: z.function({ +- input: [z.record(z.string(), z.record(z.string(), z.string()))], +- output: z.void(), +- }), +- }), +- ], +- // We still rely on the deprecated `z.promise()` to define the function output as the +- // only non-deprecated way to define an async function is to use `.implementAsync()` but +- // we don't want to implement the function using Zod. +- output: z.promise(z.void()), +- }) +- .optional(), +- /** +- * Plugin configuration setup function called with an object containing various values that +- * can be used by the plugin to interact with Starlight. +- */ +- 'config:setup': configSetupHookSchema, +- /** +- * @deprecated Use the `config:setup` hook instead as `setup` will be removed in a future +- * version. +- */ +- setup: configSetupHookSchema, +- }), +- }) +- .superRefine((plugin, ctx) => { +- if (!plugin.hooks['config:setup'] && !plugin.hooks.setup) { +- ctx.issues.push({ +- code: 'custom', +- message: 'A plugin must define at least a `config:setup` hook.', +- input: plugin, +- }); +- } else if (plugin.hooks['config:setup'] && plugin.hooks.setup) { +- ctx.issues.push({ +- code: 'custom', +- message: +- 'A plugin cannot define both a `config:setup` and `setup` hook. ' + +- 'As `setup` is deprecated and will be removed in a future version, ' + +- 'consider using `config:setup` instead.', +- input: plugin, +- }); +- } +- }); ++ .object({ ++ ...baseStarlightPluginSchema.shape, ++ /** The different hooks available to the plugin. */ ++ hooks: z.object({ ++ /** ++ * Plugin internationalization setup function allowing to inject translations strings for the ++ * plugin in various locales. These translations will be available in the `config:setup` hook ++ * and plugin UI. ++ */ ++ 'i18n:setup': z ++ .function({ ++ input: [ ++ z.object({ ++ /** ++ * A callback function to add or update translations strings. ++ * ++ * @see https://starlight.astro.build/guides/i18n/#extend-translation-schema ++ * ++ * @example ++ * { ++ * name: 'My Starlight Plugin', ++ * hooks: { ++ * 'i18n:setup'({ injectTranslations }) { ++ * injectTranslations({ ++ * en: { ++ * 'myPlugin.doThing': 'Do the thing', ++ * }, ++ * fr: { ++ * 'myPlugin.doThing': 'Faire le truc', ++ * }, ++ * }); ++ * } ++ * } ++ * } ++ */ ++ injectTranslations: z.function({ ++ input: [z.record(z.string(), z.record(z.string(), z.string()))], ++ output: z.void(), ++ }), ++ }), ++ ], ++ // We still rely on the deprecated `z.promise()` to define the function output as the ++ // only non-deprecated way to define an async function is to use `.implementAsync()` but ++ // we don't want to implement the function using Zod. ++ output: z.promise(z.void()), ++ }) ++ .optional(), ++ /** ++ * Plugin configuration setup function called with an object containing various values that ++ * can be used by the plugin to interact with Starlight. ++ */ ++ 'config:setup': configSetupHookSchema, ++ /** ++ * @deprecated Use the `config:setup` hook instead as `setup` will be removed in a future ++ * version. ++ */ ++ setup: configSetupHookSchema, ++ }), ++ }) ++ .superRefine((plugin, ctx) => { ++ if (!plugin.hooks['config:setup'] && !plugin.hooks.setup) { ++ ctx.issues.push({ ++ code: 'custom', ++ message: 'A plugin must define at least a `config:setup` hook.', ++ input: plugin, ++ }); ++ } else if (plugin.hooks['config:setup'] && plugin.hooks.setup) { ++ ctx.issues.push({ ++ code: 'custom', ++ message: ++ 'A plugin cannot define both a `config:setup` and `setup` hook. ' + ++ 'As `setup` is deprecated and will be removed in a future version, ' + ++ 'consider using `config:setup` instead.', ++ input: plugin, ++ }); ++ } ++ }); + + const starlightPluginsConfigSchema = z.array(starlightPluginSchema).default([]); + +@@ -471,26 +471,26 @@ type StarlightPluginsUserConfig = z.input; + export type StarlightPlugin = z.input; + + export type HookParameters< +- Hook extends keyof StarlightPlugin['hooks'], +- HookFn = StarlightPlugin['hooks'][Hook], ++ Hook extends keyof StarlightPlugin['hooks'], ++ HookFn = StarlightPlugin['hooks'][Hook], + > = HookFn extends (...args: any[]) => unknown ? Parameters[0] : never; + + export type StarlightUserConfigWithPlugins = StarlightUserConfig & { +- /** +- * A list of plugins to extend Starlight with. +- * +- * @example +- * // Add Starlight Algolia plugin. +- * starlight({ +- * plugins: [starlightAlgolia({ … })], +- * }) +- */ +- plugins?: StarlightPluginsUserConfig; ++ /** ++ * A list of plugins to extend Starlight with. ++ * ++ * @example ++ * // Add Starlight Algolia plugin. ++ * starlight({ ++ * plugins: [starlightAlgolia({ … })], ++ * }) ++ */ ++ plugins?: StarlightPluginsUserConfig; + }; + + export type StarlightPluginContext = Pick< +- AstroHookParameters<'astro:config:setup'>, +- 'command' | 'config' | 'isRestart' | 'logger' ++ AstroHookParameters<'astro:config:setup'>, ++ 'command' | 'config' | 'isRestart' | 'logger' + >; + + export type PluginTranslations = Record>; diff --git a/patches/astro@6.0.4.patch b/patches/astro@6.0.4.patch new file mode 100644 index 0000000..a488a6a --- /dev/null +++ b/patches/astro@6.0.4.patch @@ -0,0 +1,31 @@ +diff --git a/dist/content/utils.js b/dist/content/utils.js +index a3ed65a87d9f3c15d550ad03752e615446b6fe7a..61dd3ad18c1d308cebc47ba3d2e0c31008ffa9ef 100644 +--- a/dist/content/utils.js ++++ b/dist/content/utils.js +@@ -76,7 +76,7 @@ const collectionConfigParser = z.union([ + return z.NEVER; + } + }).optional(), +- createSchema: z.function({ ++ createSchema: z.optional(z.function({ + input: [], + output: z.promise( + z.object({ +@@ -84,7 +84,7 @@ const collectionConfigParser = z.union([ + types: z.string() + }) + ) +- }).optional() ++ })) + }) + ]) + }), +@@ -640,7 +640,7 @@ function contentModuleToId(fileName) { + return `${DEFERRED_MODULE}?${params.toString()}`; + } + function safeStringifyReplacer(seen) { +- return function(_key, value) { ++ return function (_key, value) { + if (!(value !== null && typeof value === "object")) { + return value; + } From fbb8abc8a6cb5a3864aab5f9d17cfd978b711ad4 Mon Sep 17 00:00:00 2001 From: Wouf Date: Fri, 13 Mar 2026 10:56:30 +0100 Subject: [PATCH 02/15] removed patches, the bug was due to a dependency conflict --- bun.lock | 20 +- package.json | 7 +- patches/@astrojs%2Fstarlight@0.38.1.patch | 915 ------------------ patches/astro@6.0.4.patch | 31 - .../guides/getting-started/installation.mdx | 2 +- 5 files changed, 7 insertions(+), 968 deletions(-) delete mode 100644 patches/@astrojs%2Fstarlight@0.38.1.patch delete mode 100644 patches/astro@6.0.4.patch diff --git a/bun.lock b/bun.lock index 527b218..e2f7321 100644 --- a/bun.lock +++ b/bun.lock @@ -42,6 +42,7 @@ "three": "^0.167.1", "typescript": "^5.9.3", "vaul": "^1.1.2", + "zod": "^4.3.6", }, "devDependencies": { "shadcn": "^3.8.5", @@ -49,9 +50,8 @@ }, }, }, - "patchedDependencies": { - "@astrojs/starlight@0.38.1": "patches/@astrojs%2Fstarlight@0.38.1.patch", - "astro@6.0.4": "patches/astro@6.0.4.patch", + "overrides": { + "zod": "4.3.6", }, "packages": { "@antfu/ni": ["@antfu/ni@25.0.0", "", { "dependencies": { "ansis": "^4.0.0", "fzf": "^0.5.2", "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" }, "bin": { "na": "bin/na.mjs", "ni": "bin/ni.mjs", "nr": "bin/nr.mjs", "nci": "bin/nci.mjs", "nlx": "bin/nlx.mjs", "nun": "bin/nun.mjs", "nup": "bin/nup.mjs" } }, "sha512-9q/yCljni37pkMr4sPrI3G4jqdIk074+iukc5aFJl7kmDCCsiJrbZ6zKxnES1Gwg+i9RcDZwvktl23puGslmvA=="], @@ -2074,7 +2074,7 @@ "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], - "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "zod-to-json-schema": ["zod-to-json-schema@3.25.1", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="], @@ -2086,8 +2086,6 @@ "@astrojs/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - "@astrojs/sitemap/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - "@astrojs/telemetry/ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2098,14 +2096,8 @@ "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@better-auth/core/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - - "@better-auth/passkey/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - "@convex-dev/better-auth/convex-helpers": ["convex-helpers@0.1.113", "", { "peerDependencies": { "@standard-schema/spec": "^1.0.0", "convex": "^1.25.4", "hono": "^4.0.5", "react": "^17.0.2 || ^18.0.0 || ^19.0.0", "typescript": "^5.5", "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["@standard-schema/spec", "hono", "react", "typescript", "zod"], "bin": { "convex-helpers": "bin.cjs" } }, "sha512-IFLmgEbN2skC0w+M0MfXTYAITq/FeGxEe602Fij2/GI/WJ75G8/9aSDO0GddbwPDfvzUgQTbx5SbDtiegfwZBA=="], - "@convex-dev/better-auth/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - "@dotenvx/dotenvx/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], "@dotenvx/dotenvx/execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], @@ -2146,10 +2138,6 @@ "astro/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "astro/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - - "better-auth/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], diff --git a/package.json b/package.json index 553bdc5..5d2ab4c 100644 --- a/package.json +++ b/package.json @@ -48,14 +48,11 @@ "tailwindcss": "^4.1.18", "three": "^0.167.1", "typescript": "^5.9.3", - "vaul": "^1.1.2" + "vaul": "^1.1.2", + "zod": "^4.3.6" }, "devDependencies": { "shadcn": "^3.8.5", "tw-animate-css": "^1.4.0" - }, - "patchedDependencies": { - "astro@6.0.4": "patches/astro@6.0.4.patch", - "@astrojs/starlight@0.38.1": "patches/@astrojs%2Fstarlight@0.38.1.patch" } } \ No newline at end of file diff --git a/patches/@astrojs%2Fstarlight@0.38.1.patch b/patches/@astrojs%2Fstarlight@0.38.1.patch deleted file mode 100644 index 159a050..0000000 --- a/patches/@astrojs%2Fstarlight@0.38.1.patch +++ /dev/null @@ -1,915 +0,0 @@ -diff --git a/utils/plugins.ts b/utils/plugins.ts -index 9ccd19c6de57cbfe4bbee2136eb872e31fa879fe..41a3d5e4644d4434728ff06be2049579c9294824 100644 ---- a/utils/plugins.ts -+++ b/utils/plugins.ts -@@ -3,9 +3,9 @@ import { AstroError } from 'astro/errors'; - import { z } from 'astro/zod'; - import { parseWithFriendlyErrors } from '../utils/error-map'; - import { -- StarlightConfigSchema, -- type StarlightConfig, -- type StarlightUserConfig, -+ StarlightConfigSchema, -+ type StarlightConfig, -+ type StarlightUserConfig, - } from '../utils/user-config'; - import type { UserI18nSchema } from './translations'; - import { createTranslationSystemFromFs } from './translations-fs'; -@@ -18,367 +18,367 @@ import { getCollectionPosixPath } from './collection-fs'; - * plugins and a list of any integrations added by the plugins. - */ - export async function runPlugins( -- starlightUserConfig: StarlightUserConfig, -- pluginsUserConfig: StarlightPluginsUserConfig, -- context: StarlightPluginContext -+ starlightUserConfig: StarlightUserConfig, -+ pluginsUserConfig: StarlightPluginsUserConfig, -+ context: StarlightPluginContext - ) { -- // Validate the user-provided configuration. -- let userConfig = starlightUserConfig; -- -- let starlightConfig = parseWithFriendlyErrors( -- StarlightConfigSchema, -- userConfig, -- 'Invalid config passed to starlight integration' -- ); -- -- // Validate the user-provided plugins configuration. -- const pluginsConfig = parseWithFriendlyErrors( -- starlightPluginsConfigSchema, -- pluginsUserConfig, -- 'Invalid plugins config passed to starlight integration' -- ); -- -- // A list of translations injected by the various plugins keyed by locale. -- const pluginTranslations: PluginTranslations = {}; -- // A list of route middleware added by the various plugins. -- const routeMiddlewareConfigs: Array> = []; -- -- for (const { -- hooks: { 'i18n:setup': i18nSetup }, -- } of pluginsConfig) { -- if (i18nSetup) { -- await i18nSetup({ -- injectTranslations(translations) { -- // Merge the translations injected by the plugin. -- for (const [locale, localeTranslations] of Object.entries(translations)) { -- pluginTranslations[locale] ??= {}; -- Object.assign(pluginTranslations[locale], localeTranslations); -- } -- }, -- }); -- } -- } -- -- const useTranslations = await createTranslationSystemFromFs( -- starlightConfig, -- context.config, -- pluginTranslations -- ); -- -- function absolutePathToLang(path: string) { -- return getAbsolutePathFromLang(path, { -- docsPath: getCollectionPosixPath('docs', context.config.srcDir), -- starlightConfig, -- }); -- } -- -- // A list of Astro integrations added by the various plugins. -- const integrations: AstroIntegration[] = []; -- -- for (const { -- name, -- hooks: { 'config:setup': configSetup, setup: deprecatedSetup }, -- } of pluginsConfig) { -- // A refinement in the schema ensures that at least one of the two hooks is defined. -- const setup = (configSetup ?? deprecatedSetup)!; -- -- await setup({ -- config: pluginsUserConfig ? { ...userConfig, plugins: pluginsUserConfig } : userConfig, -- updateConfig(newConfig) { -- // Ensure that plugins do not update the `plugins` config key. -- if ('plugins' in newConfig) { -- throw new AstroError( -- `The \`${name}\` plugin tried to update the \`plugins\` config key which is not supported.` -- ); -- } -- if ('routeMiddleware' in newConfig) { -- throw new AstroError( -- `The \`${name}\` plugin tried to update the \`routeMiddleware\` config key which is not supported.`, -- 'Use the `addRouteMiddleware()` utility instead.\n' + -- 'See https://starlight.astro.build/reference/plugins/#addroutemiddleware for more details.' -- ); -- } -- -- // If the plugin is updating the user config, re-validate it. -- const mergedUserConfig = { ...userConfig, ...newConfig }; -- const mergedConfig = parseWithFriendlyErrors( -- StarlightConfigSchema, -- mergedUserConfig, -- `Invalid config update provided by the '${name}' plugin` -- ); -- -- // If the updated config is valid, keep track of both the user config and parsed config. -- userConfig = mergedUserConfig; -- starlightConfig = mergedConfig; -- }, -- addIntegration(integration) { -- // Collect any Astro integrations added by the plugin. -- integrations.push(integration); -- }, -- addRouteMiddleware(middlewareConfig) { -- routeMiddlewareConfigs.push(middlewareConfig); -- }, -- astroConfig: { -- ...context.config, -- integrations: [...context.config.integrations, ...integrations], -- }, -- command: context.command, -- isRestart: context.isRestart, -- logger: context.logger.fork(name), -- useTranslations, -- absolutePathToLang, -- }); -- } -- -- applyPluginMiddleware(routeMiddlewareConfigs, starlightConfig); -- -- return { integrations, starlightConfig, pluginTranslations, useTranslations, absolutePathToLang }; -+ // Validate the user-provided configuration. -+ let userConfig = starlightUserConfig; -+ -+ let starlightConfig = parseWithFriendlyErrors( -+ StarlightConfigSchema, -+ userConfig, -+ 'Invalid config passed to starlight integration' -+ ); -+ -+ // Validate the user-provided plugins configuration. -+ const pluginsConfig = parseWithFriendlyErrors( -+ starlightPluginsConfigSchema, -+ pluginsUserConfig, -+ 'Invalid plugins config passed to starlight integration' -+ ); -+ -+ // A list of translations injected by the various plugins keyed by locale. -+ const pluginTranslations: PluginTranslations = {}; -+ // A list of route middleware added by the various plugins. -+ const routeMiddlewareConfigs: Array> = []; -+ -+ for (const { -+ hooks: { 'i18n:setup': i18nSetup }, -+ } of pluginsConfig) { -+ if (i18nSetup) { -+ await i18nSetup({ -+ injectTranslations(translations) { -+ // Merge the translations injected by the plugin. -+ for (const [locale, localeTranslations] of Object.entries(translations)) { -+ pluginTranslations[locale] ??= {}; -+ Object.assign(pluginTranslations[locale], localeTranslations); -+ } -+ }, -+ }); -+ } -+ } -+ -+ const useTranslations = await createTranslationSystemFromFs( -+ starlightConfig, -+ context.config, -+ pluginTranslations -+ ); -+ -+ function absolutePathToLang(path: string) { -+ return getAbsolutePathFromLang(path, { -+ docsPath: getCollectionPosixPath('docs', context.config.srcDir), -+ starlightConfig, -+ }); -+ } -+ -+ // A list of Astro integrations added by the various plugins. -+ const integrations: AstroIntegration[] = []; -+ -+ for (const { -+ name, -+ hooks: { 'config:setup': configSetup, setup: deprecatedSetup }, -+ } of pluginsConfig) { -+ // A refinement in the schema ensures that at least one of the two hooks is defined. -+ const setup = (configSetup ?? deprecatedSetup)!; -+ -+ await setup({ -+ config: pluginsUserConfig ? { ...userConfig, plugins: pluginsUserConfig } : userConfig, -+ updateConfig(newConfig) { -+ // Ensure that plugins do not update the `plugins` config key. -+ if ('plugins' in newConfig) { -+ throw new AstroError( -+ `The \`${name}\` plugin tried to update the \`plugins\` config key which is not supported.` -+ ); -+ } -+ if ('routeMiddleware' in newConfig) { -+ throw new AstroError( -+ `The \`${name}\` plugin tried to update the \`routeMiddleware\` config key which is not supported.`, -+ 'Use the `addRouteMiddleware()` utility instead.\n' + -+ 'See https://starlight.astro.build/reference/plugins/#addroutemiddleware for more details.' -+ ); -+ } -+ -+ // If the plugin is updating the user config, re-validate it. -+ const mergedUserConfig = { ...userConfig, ...newConfig }; -+ const mergedConfig = parseWithFriendlyErrors( -+ StarlightConfigSchema, -+ mergedUserConfig, -+ `Invalid config update provided by the '${name}' plugin` -+ ); -+ -+ // If the updated config is valid, keep track of both the user config and parsed config. -+ userConfig = mergedUserConfig; -+ starlightConfig = mergedConfig; -+ }, -+ addIntegration(integration) { -+ // Collect any Astro integrations added by the plugin. -+ integrations.push(integration); -+ }, -+ addRouteMiddleware(middlewareConfig) { -+ routeMiddlewareConfigs.push(middlewareConfig); -+ }, -+ astroConfig: { -+ ...context.config, -+ integrations: [...context.config.integrations, ...integrations], -+ }, -+ command: context.command, -+ isRestart: context.isRestart, -+ logger: context.logger.fork(name), -+ useTranslations, -+ absolutePathToLang, -+ }); -+ } -+ -+ applyPluginMiddleware(routeMiddlewareConfigs, starlightConfig); -+ -+ return { integrations, starlightConfig, pluginTranslations, useTranslations, absolutePathToLang }; - } - - /** Updates `routeMiddleware` in the Starlight config to add plugin middlewares in the correct order. */ - function applyPluginMiddleware( -- routeMiddlewareConfigs: { entrypoint: string; order: 'default' | 'pre' | 'post' }[], -- starlightConfig: StarlightConfig -+ routeMiddlewareConfigs: { entrypoint: string; order: 'default' | 'pre' | 'post' }[], -+ starlightConfig: StarlightConfig - ) { -- const middlewareBuckets = routeMiddlewareConfigs.reduce< -- Record<'pre' | 'default' | 'post', string[]> -- >( -- (buckets, { entrypoint, order = 'default' }) => { -- buckets[order].push(entrypoint); -- return buckets; -- }, -- { pre: [], default: [], post: [] } -- ); -- starlightConfig.routeMiddleware.unshift(...middlewareBuckets.pre); -- starlightConfig.routeMiddleware.push(...middlewareBuckets.default, ...middlewareBuckets.post); -+ const middlewareBuckets = routeMiddlewareConfigs.reduce< -+ Record<'pre' | 'default' | 'post', string[]> -+ >( -+ (buckets, { entrypoint, order = 'default' }) => { -+ buckets[order].push(entrypoint); -+ return buckets; -+ }, -+ { pre: [], default: [], post: [] } -+ ); -+ starlightConfig.routeMiddleware.unshift(...middlewareBuckets.pre); -+ starlightConfig.routeMiddleware.push(...middlewareBuckets.default, ...middlewareBuckets.post); - } - - export function injectPluginTranslationsTypes( -- translations: PluginTranslations, -- injectTypes: AstroHookParameters<'astro:config:done'>['injectTypes'] -+ translations: PluginTranslations, -+ injectTypes: AstroHookParameters<'astro:config:done'>['injectTypes'] - ) { -- const allKeys = new Set(); -+ const allKeys = new Set(); - -- for (const localeTranslations of Object.values(translations)) { -- for (const key of Object.keys(localeTranslations)) { -- allKeys.add(key); -- } -- } -+ for (const localeTranslations of Object.values(translations)) { -+ for (const key of Object.keys(localeTranslations)) { -+ allKeys.add(key); -+ } -+ } - -- // If there are no translations to inject, we don't need to generate any types or cleanup -- // previous ones as they will not be referenced anymore. -- if (allKeys.size === 0) return; -+ // If there are no translations to inject, we don't need to generate any types or cleanup -+ // previous ones as they will not be referenced anymore. -+ if (allKeys.size === 0) return; - -- injectTypes({ -- filename: 'i18n-plugins.d.ts', -- content: `declare namespace StarlightApp { -+ injectTypes({ -+ filename: 'i18n-plugins.d.ts', -+ content: `declare namespace StarlightApp { - type PluginUIStringKeys = { - ${[...allKeys].map((key) => `'${key}': string;`).join('\n\t\t')} - }; - interface I18n extends PluginUIStringKeys {} - }`, -- }); -+ }); - } - - // https://github.com/withastro/astro/blob/910eb00fe0b70ca80bd09520ae100e8c78b675b5/packages/astro/src/core/config/schema.ts#L113 - const astroIntegrationSchema = z.object({ -- name: z.string(), -- hooks: z.looseObject({}).default({}), -+ name: z.string(), -+ hooks: z.looseObject({}).default({}), - }) as z.ZodType; - - const routeMiddlewareConfigSchema = z.object({ -- entrypoint: z.string(), -- order: z.enum(['pre', 'post', 'default']).default('default'), -+ entrypoint: z.string(), -+ order: z.enum(['pre', 'post', 'default']).default('default'), - }); - - const baseStarlightPluginSchema = z.object({ -- /** Name of the Starlight plugin. */ -- name: z.string(), -+ /** Name of the Starlight plugin. */ -+ name: z.string(), - }); - - type StarlightConfigUpdate = Partial>; - type StarlightI18nTFactory = Awaited>; - --const configSetupHookSchema = z -- .function({ -- input: [ -- z.object({ -- /** -- * A read-only copy of the user-supplied Starlight configuration. -- * -- * Note that this configuration may have been updated by other plugins configured -- * before this one. -- */ -- config: z.any() as z.ZodType< -- // The configuration passed to plugins should contains the list of plugins. -- StarlightUserConfigWithPlugins, -- StarlightUserConfigWithPlugins -- >, -- /** -- * A callback function to update the user-supplied Starlight configuration. -- * -- * You only need to provide the configuration values that you want to update but no deep -- * merge is performed. -- * -- * @example -- * { -- * name: 'My Starlight Plugin', -- * hooks: { -- * 'config:setup'({ updateConfig }) { -- * updateConfig({ -- * description: 'Custom description', -- * }); -- * } -- * } -- * } -- */ -- updateConfig: z.function({ -- input: [ -- z.record(z.string(), z.any()) as z.ZodType< -- StarlightConfigUpdate, -- StarlightConfigUpdate -- >, -- ], -- output: z.void(), -- }), -- /** -- * A callback function to add an Astro integration required by this plugin. -- * -- * @see https://docs.astro.build/en/reference/integrations-reference/ -- * -- * @example -- * { -- * name: 'My Starlight Plugin', -- * hooks: { -- * 'config:setup'({ addIntegration }) { -- * addIntegration({ -- * name: 'My Plugin Astro Integration', -- * hooks: { -- * 'astro:config:setup': () => { -- * // … -- * }, -- * }, -- * }); -- * } -- * } -- * } -- */ -- addIntegration: z.function({ -- input: [astroIntegrationSchema], -- output: z.void(), -- }), -- /** -- * A callback function to register additional route middleware handlers. -- * -- * If the order of execution is important, a plugin can use the `order` option to enforce -- * running first or last. -- * -- * @example -- * { -- * name: 'My Starlight Plugin', -- * hooks: { -- * setup({ addRouteMiddleware }) { -- * addRouteMiddleware({ entrypoint: '@me/my-plugin/route-middleware' }); -- * }, -- * }, -- * } -- */ -- addRouteMiddleware: z.function({ -- input: [routeMiddlewareConfigSchema], -- output: z.void(), -- }), -- /** -- * A read-only copy of the user-supplied Astro configuration. -- * -- * Note that this configuration is resolved before any other integrations have run. -- * -- * @see https://docs.astro.build/en/reference/integrations-reference/#config-option -- */ -- astroConfig: z.any() as z.ZodType< -- StarlightPluginContext['config'], -- StarlightPluginContext['config'] -- >, -- /** -- * The command used to run Starlight. -- * -- * @see https://docs.astro.build/en/reference/integrations-reference/#command-option -- */ -- command: z.any() as z.ZodType< -- StarlightPluginContext['command'], -- StarlightPluginContext['command'] -- >, -- /** -- * `false` when the dev server starts, `true` when a reload is triggered. -- * -- * @see https://docs.astro.build/en/reference/integrations-reference/#isrestart-option -- */ -- isRestart: z.any() as z.ZodType< -- StarlightPluginContext['isRestart'], -- StarlightPluginContext['isRestart'] -- >, -- /** -- * An instance of the Astro integration logger with all logged messages prefixed with the -- * plugin name. -- * -- * @see https://docs.astro.build/en/reference/integrations-reference/#astrointegrationlogger -- */ -- logger: z.any() as z.ZodType< -- StarlightPluginContext['logger'], -- StarlightPluginContext['logger'] -- >, -- /** -- * A callback function to generate a utility function to access UI strings for a given -- * language. -- * -- * @see https://starlight.astro.build/guides/i18n/#using-ui-translations -- * -- * @example -- * { -- * name: 'My Starlight Plugin', -- * hooks: { -- * 'config:setup'({ useTranslations, logger }) { -- * const t = useTranslations('en'); -- * logger.info(t('builtWithStarlight.label')); -- * // ^ Logs 'Built with Starlight' to the console. -- * } -- * } -- * } -- */ -- useTranslations: z.any() as z.ZodType, -- /** -- * A callback function to get the language for a given absolute file path. The returned -- * language can be used with the `useTranslations` helper to get UI strings for that -- * language. -- * -- * This can be particularly useful in remark or rehype plugins to get the language for -- * the current file being processed and use it to get the appropriate UI strings for that -- * language. -- * -- * @example -- * { -- * name: 'My Starlight Plugin', -- * hooks: { -- * 'config:setup'({ absolutePathToLang, useTranslations, logger }) { -- * const lang = absolutePathToLang('/absolute/path/to/project/src/content/docs/fr/index.mdx'); -- * const t = useTranslations(lang); -- * logger.info(t('aside.tip')); -- * // ^ Logs 'Astuce' to the console. -- * } -- * } -- * } -- */ -- absolutePathToLang: z.function({ -- input: [z.string()], -- output: z.string(), -- }), -- }), -- ], -- // We still rely on the deprecated `z.promise()` to define the function output as the only -- // non-deprecated way to define an async function is to use `.implementAsync()` but we don't -- // want to implement the function using Zod. -- output: z.promise(z.void()), -- }) -- .optional(); -+const configSetupHookSchema = z.optional( -+ z.function({ -+ input: [ -+ z.object({ -+ /** -+ * A read-only copy of the user-supplied Starlight configuration. -+ * -+ * Note that this configuration may have been updated by other plugins configured -+ * before this one. -+ */ -+ config: z.any() as z.ZodType< -+ // The configuration passed to plugins should contains the list of plugins. -+ StarlightUserConfigWithPlugins, -+ StarlightUserConfigWithPlugins -+ >, -+ /** -+ * A callback function to update the user-supplied Starlight configuration. -+ * -+ * You only need to provide the configuration values that you want to update but no deep -+ * merge is performed. -+ * -+ * @example -+ * { -+ * name: 'My Starlight Plugin', -+ * hooks: { -+ * 'config:setup'({ updateConfig }) { -+ * updateConfig({ -+ * description: 'Custom description', -+ * }); -+ * } -+ * } -+ * } -+ */ -+ updateConfig: z.function({ -+ input: [ -+ z.record(z.string(), z.any()) as z.ZodType< -+ StarlightConfigUpdate, -+ StarlightConfigUpdate -+ >, -+ ], -+ output: z.void(), -+ }), -+ /** -+ * A callback function to add an Astro integration required by this plugin. -+ * -+ * @see https://docs.astro.build/en/reference/integrations-reference/ -+ * -+ * @example -+ * { -+ * name: 'My Starlight Plugin', -+ * hooks: { -+ * 'config:setup'({ addIntegration }) { -+ * addIntegration({ -+ * name: 'My Plugin Astro Integration', -+ * hooks: { -+ * 'astro:config:setup': () => { -+ * // … -+ * }, -+ * }, -+ * }); -+ * } -+ * } -+ * } -+ */ -+ addIntegration: z.function({ -+ input: [astroIntegrationSchema], -+ output: z.void(), -+ }), -+ /** -+ * A callback function to register additional route middleware handlers. -+ * -+ * If the order of execution is important, a plugin can use the `order` option to enforce -+ * running first or last. -+ * -+ * @example -+ * { -+ * name: 'My Starlight Plugin', -+ * hooks: { -+ * setup({ addRouteMiddleware }) { -+ * addRouteMiddleware({ entrypoint: '@me/my-plugin/route-middleware' }); -+ * }, -+ * }, -+ * } -+ */ -+ addRouteMiddleware: z.function({ -+ input: [routeMiddlewareConfigSchema], -+ output: z.void(), -+ }), -+ /** -+ * A read-only copy of the user-supplied Astro configuration. -+ * -+ * Note that this configuration is resolved before any other integrations have run. -+ * -+ * @see https://docs.astro.build/en/reference/integrations-reference/#config-option -+ */ -+ astroConfig: z.any() as z.ZodType< -+ StarlightPluginContext['config'], -+ StarlightPluginContext['config'] -+ >, -+ /** -+ * The command used to run Starlight. -+ * -+ * @see https://docs.astro.build/en/reference/integrations-reference/#command-option -+ */ -+ command: z.any() as z.ZodType< -+ StarlightPluginContext['command'], -+ StarlightPluginContext['command'] -+ >, -+ /** -+ * `false` when the dev server starts, `true` when a reload is triggered. -+ * -+ * @see https://docs.astro.build/en/reference/integrations-reference/#isrestart-option -+ */ -+ isRestart: z.any() as z.ZodType< -+ StarlightPluginContext['isRestart'], -+ StarlightPluginContext['isRestart'] -+ >, -+ /** -+ * An instance of the Astro integration logger with all logged messages prefixed with the -+ * plugin name. -+ * -+ * @see https://docs.astro.build/en/reference/integrations-reference/#astrointegrationlogger -+ */ -+ logger: z.any() as z.ZodType< -+ StarlightPluginContext['logger'], -+ StarlightPluginContext['logger'] -+ >, -+ /** -+ * A callback function to generate a utility function to access UI strings for a given -+ * language. -+ * -+ * @see https://starlight.astro.build/guides/i18n/#using-ui-translations -+ * -+ * @example -+ * { -+ * name: 'My Starlight Plugin', -+ * hooks: { -+ * 'config:setup'({ useTranslations, logger }) { -+ * const t = useTranslations('en'); -+ * logger.info(t('builtWithStarlight.label')); -+ * // ^ Logs 'Built with Starlight' to the console. -+ * } -+ * } -+ * } -+ */ -+ useTranslations: z.any() as z.ZodType, -+ /** -+ * A callback function to get the language for a given absolute file path. The returned -+ * language can be used with the `useTranslations` helper to get UI strings for that -+ * language. -+ * -+ * This can be particularly useful in remark or rehype plugins to get the language for -+ * the current file being processed and use it to get the appropriate UI strings for that -+ * language. -+ * -+ * @example -+ * { -+ * name: 'My Starlight Plugin', -+ * hooks: { -+ * 'config:setup'({ absolutePathToLang, useTranslations, logger }) { -+ * const lang = absolutePathToLang('/absolute/path/to/project/src/content/docs/fr/index.mdx'); -+ * const t = useTranslations(lang); -+ * logger.info(t('aside.tip')); -+ * // ^ Logs 'Astuce' to the console. -+ * } -+ * } -+ * } -+ */ -+ absolutePathToLang: z.function({ -+ input: [z.string()], -+ output: z.string(), -+ }), -+ }), -+ ], -+ // We still rely on the deprecated `z.promise()` to define the function output as the only -+ // non-deprecated way to define an async function is to use `.implementAsync()` but we don't -+ // want to implement the function using Zod. -+ output: z.promise(z.void()), -+ }) -+); - - /** - * A plugin `config` and `updateConfig` argument are purposely not validated using the Starlight -@@ -386,83 +386,83 @@ const configSetupHookSchema = z - * the Zod `transform`s used in the user config schema when running plugins. - */ - const starlightPluginSchema = z -- .object({ -- ...baseStarlightPluginSchema.shape, -- /** The different hooks available to the plugin. */ -- hooks: z.object({ -- /** -- * Plugin internationalization setup function allowing to inject translations strings for the -- * plugin in various locales. These translations will be available in the `config:setup` hook -- * and plugin UI. -- */ -- 'i18n:setup': z -- .function({ -- input: [ -- z.object({ -- /** -- * A callback function to add or update translations strings. -- * -- * @see https://starlight.astro.build/guides/i18n/#extend-translation-schema -- * -- * @example -- * { -- * name: 'My Starlight Plugin', -- * hooks: { -- * 'i18n:setup'({ injectTranslations }) { -- * injectTranslations({ -- * en: { -- * 'myPlugin.doThing': 'Do the thing', -- * }, -- * fr: { -- * 'myPlugin.doThing': 'Faire le truc', -- * }, -- * }); -- * } -- * } -- * } -- */ -- injectTranslations: z.function({ -- input: [z.record(z.string(), z.record(z.string(), z.string()))], -- output: z.void(), -- }), -- }), -- ], -- // We still rely on the deprecated `z.promise()` to define the function output as the -- // only non-deprecated way to define an async function is to use `.implementAsync()` but -- // we don't want to implement the function using Zod. -- output: z.promise(z.void()), -- }) -- .optional(), -- /** -- * Plugin configuration setup function called with an object containing various values that -- * can be used by the plugin to interact with Starlight. -- */ -- 'config:setup': configSetupHookSchema, -- /** -- * @deprecated Use the `config:setup` hook instead as `setup` will be removed in a future -- * version. -- */ -- setup: configSetupHookSchema, -- }), -- }) -- .superRefine((plugin, ctx) => { -- if (!plugin.hooks['config:setup'] && !plugin.hooks.setup) { -- ctx.issues.push({ -- code: 'custom', -- message: 'A plugin must define at least a `config:setup` hook.', -- input: plugin, -- }); -- } else if (plugin.hooks['config:setup'] && plugin.hooks.setup) { -- ctx.issues.push({ -- code: 'custom', -- message: -- 'A plugin cannot define both a `config:setup` and `setup` hook. ' + -- 'As `setup` is deprecated and will be removed in a future version, ' + -- 'consider using `config:setup` instead.', -- input: plugin, -- }); -- } -- }); -+ .object({ -+ ...baseStarlightPluginSchema.shape, -+ /** The different hooks available to the plugin. */ -+ hooks: z.object({ -+ /** -+ * Plugin internationalization setup function allowing to inject translations strings for the -+ * plugin in various locales. These translations will be available in the `config:setup` hook -+ * and plugin UI. -+ */ -+ 'i18n:setup': z -+ .function({ -+ input: [ -+ z.object({ -+ /** -+ * A callback function to add or update translations strings. -+ * -+ * @see https://starlight.astro.build/guides/i18n/#extend-translation-schema -+ * -+ * @example -+ * { -+ * name: 'My Starlight Plugin', -+ * hooks: { -+ * 'i18n:setup'({ injectTranslations }) { -+ * injectTranslations({ -+ * en: { -+ * 'myPlugin.doThing': 'Do the thing', -+ * }, -+ * fr: { -+ * 'myPlugin.doThing': 'Faire le truc', -+ * }, -+ * }); -+ * } -+ * } -+ * } -+ */ -+ injectTranslations: z.function({ -+ input: [z.record(z.string(), z.record(z.string(), z.string()))], -+ output: z.void(), -+ }), -+ }), -+ ], -+ // We still rely on the deprecated `z.promise()` to define the function output as the -+ // only non-deprecated way to define an async function is to use `.implementAsync()` but -+ // we don't want to implement the function using Zod. -+ output: z.promise(z.void()), -+ }) -+ .optional(), -+ /** -+ * Plugin configuration setup function called with an object containing various values that -+ * can be used by the plugin to interact with Starlight. -+ */ -+ 'config:setup': configSetupHookSchema, -+ /** -+ * @deprecated Use the `config:setup` hook instead as `setup` will be removed in a future -+ * version. -+ */ -+ setup: configSetupHookSchema, -+ }), -+ }) -+ .superRefine((plugin, ctx) => { -+ if (!plugin.hooks['config:setup'] && !plugin.hooks.setup) { -+ ctx.issues.push({ -+ code: 'custom', -+ message: 'A plugin must define at least a `config:setup` hook.', -+ input: plugin, -+ }); -+ } else if (plugin.hooks['config:setup'] && plugin.hooks.setup) { -+ ctx.issues.push({ -+ code: 'custom', -+ message: -+ 'A plugin cannot define both a `config:setup` and `setup` hook. ' + -+ 'As `setup` is deprecated and will be removed in a future version, ' + -+ 'consider using `config:setup` instead.', -+ input: plugin, -+ }); -+ } -+ }); - - const starlightPluginsConfigSchema = z.array(starlightPluginSchema).default([]); - -@@ -471,26 +471,26 @@ type StarlightPluginsUserConfig = z.input; - export type StarlightPlugin = z.input; - - export type HookParameters< -- Hook extends keyof StarlightPlugin['hooks'], -- HookFn = StarlightPlugin['hooks'][Hook], -+ Hook extends keyof StarlightPlugin['hooks'], -+ HookFn = StarlightPlugin['hooks'][Hook], - > = HookFn extends (...args: any[]) => unknown ? Parameters[0] : never; - - export type StarlightUserConfigWithPlugins = StarlightUserConfig & { -- /** -- * A list of plugins to extend Starlight with. -- * -- * @example -- * // Add Starlight Algolia plugin. -- * starlight({ -- * plugins: [starlightAlgolia({ … })], -- * }) -- */ -- plugins?: StarlightPluginsUserConfig; -+ /** -+ * A list of plugins to extend Starlight with. -+ * -+ * @example -+ * // Add Starlight Algolia plugin. -+ * starlight({ -+ * plugins: [starlightAlgolia({ … })], -+ * }) -+ */ -+ plugins?: StarlightPluginsUserConfig; - }; - - export type StarlightPluginContext = Pick< -- AstroHookParameters<'astro:config:setup'>, -- 'command' | 'config' | 'isRestart' | 'logger' -+ AstroHookParameters<'astro:config:setup'>, -+ 'command' | 'config' | 'isRestart' | 'logger' - >; - - export type PluginTranslations = Record>; diff --git a/patches/astro@6.0.4.patch b/patches/astro@6.0.4.patch deleted file mode 100644 index a488a6a..0000000 --- a/patches/astro@6.0.4.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/dist/content/utils.js b/dist/content/utils.js -index a3ed65a87d9f3c15d550ad03752e615446b6fe7a..61dd3ad18c1d308cebc47ba3d2e0c31008ffa9ef 100644 ---- a/dist/content/utils.js -+++ b/dist/content/utils.js -@@ -76,7 +76,7 @@ const collectionConfigParser = z.union([ - return z.NEVER; - } - }).optional(), -- createSchema: z.function({ -+ createSchema: z.optional(z.function({ - input: [], - output: z.promise( - z.object({ -@@ -84,7 +84,7 @@ const collectionConfigParser = z.union([ - types: z.string() - }) - ) -- }).optional() -+ })) - }) - ]) - }), -@@ -640,7 +640,7 @@ function contentModuleToId(fileName) { - return `${DEFERRED_MODULE}?${params.toString()}`; - } - function safeStringifyReplacer(seen) { -- return function(_key, value) { -+ return function (_key, value) { - if (!(value !== null && typeof value === "object")) { - return value; - } diff --git a/src/content/docs/de/guides/getting-started/installation.mdx b/src/content/docs/de/guides/getting-started/installation.mdx index f0a05dc..94de1ae 100644 --- a/src/content/docs/de/guides/getting-started/installation.mdx +++ b/src/content/docs/de/guides/getting-started/installation.mdx @@ -100,4 +100,4 @@ Vorgebaute Binaries sind auf der Seite [GitHub Releases](https://github.com/Stee ## Nächste Schritte -Nachdem Steel läuft, gehe weiter zu [Configuration](/SteelDocs/getting-started/configuration/), um deinen Server anzupassen. +Nachdem Steel läuft, gehe weiter zu [Configuration](/SteelDocs/getting-started/configuration/), um deinen Server anzupassen. \ No newline at end of file From 519f7947784aa79a57d5d68f9b530396e964dc80 Mon Sep 17 00:00:00 2001 From: Wouf Date: Thu, 12 Mar 2026 22:53:11 +0100 Subject: [PATCH 03/15] page load optimizations --- src/layouts/Layout.astro | 14 ++++++++++++++ src/pages/tracker/index.astro | 19 ++++++++++++++++++- src/styles/global.css | 4 ++++ src/styles/tracker.css | 4 ++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index e936d99..1c0c2b2 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -19,6 +19,20 @@ const { title, description = "SteelDocs - The Steel documentation" } = + +