From e138bdae330006bad60905bd0666755c7a88f9ec Mon Sep 17 00:00:00 2001 From: Zac Rosenbauer Date: Mon, 23 Mar 2026 12:47:06 -0400 Subject: [PATCH 1/6] fix(packages/ui,packages/cli): fix FileTree build failure and add --ref to diff Bug 1: Pin rspress-plugin-file-tree to 1.0.3 (1.0.4 shipped without dist/) and copy its component files into @zpress/ui dist so Rspress webpack can resolve them at build time. Bug 2: Add --ref option to zpress diff that uses git diff instead of git status, enabling use as a Vercel ignoreCommand. When --ref is set and changes are detected, exits 1 to signal "proceed with build". Also upgrades all dependencies to latest (except mermaid, pinned to v10). Co-Authored-By: Claude --- .changeset/fix-cli-diff-ref.md | 5 + .changeset/fix-ui-filetree.md | 5 + package.json | 2 +- packages/cli/package.json | 2 +- packages/cli/src/commands/diff.ts | 52 +++- packages/core/package.json | 2 +- packages/ui/package.json | 4 +- packages/ui/rslib.config.ts | 4 + pnpm-lock.yaml | 440 +++++++++++++++--------------- pnpm-workspace.yaml | 6 +- 10 files changed, 290 insertions(+), 232 deletions(-) create mode 100644 .changeset/fix-cli-diff-ref.md create mode 100644 .changeset/fix-ui-filetree.md diff --git a/.changeset/fix-cli-diff-ref.md b/.changeset/fix-cli-diff-ref.md new file mode 100644 index 0000000..2fd9ed3 --- /dev/null +++ b/.changeset/fix-cli-diff-ref.md @@ -0,0 +1,5 @@ +--- +'@zpress/cli': minor +--- + +Add `--ref` option to `zpress diff` for comparing between commits, enabling use as a Vercel `ignoreCommand` diff --git a/.changeset/fix-ui-filetree.md b/.changeset/fix-ui-filetree.md new file mode 100644 index 0000000..3963be8 --- /dev/null +++ b/.changeset/fix-ui-filetree.md @@ -0,0 +1,5 @@ +--- +'@zpress/ui': patch +--- + +Fix missing FileTree component by pinning rspress-plugin-file-tree to 1.0.3 and copying its component files into the published dist diff --git a/package.json b/package.json index a45c73a..3119912 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@iconify-json/material-icon-theme": "^1.2.56", "@iconify-json/mdi": "^1.2.3", "@iconify-json/pixelarticons": "^1.2.4", - "@iconify-json/simple-icons": "^1.2.74", + "@iconify-json/simple-icons": "^1.2.75", "@iconify-json/skill-icons": "^1.2.4", "@iconify-json/vscode-icons": "^1.2.45", "@microsoft/api-extractor": "^7.57.7", diff --git a/packages/cli/package.json b/packages/cli/package.json index 64665cb..e22c50b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -46,7 +46,7 @@ "@zpress/templates": "workspace:*", "@zpress/ui": "workspace:*", "es-toolkit": "catalog:", - "get-port": "^7.1.0", + "get-port": "^7.2.0", "ts-pattern": "catalog:", "zod": "catalog:" }, diff --git a/packages/cli/src/commands/diff.ts b/packages/cli/src/commands/diff.ts index 2b9cdbf..66b106f 100644 --- a/packages/cli/src/commands/diff.ts +++ b/packages/cli/src/commands/diff.ts @@ -26,9 +26,10 @@ export const diffCommand = command({ description: 'Show changed files in configured source directories', options: z.object({ pretty: z.boolean().optional().default(false), + ref: z.string().optional(), }), handler: async (ctx) => { - const { pretty } = ctx.args + const { pretty, ref } = ctx.args const paths = createPaths(process.cwd()) const [configErr, config] = await loadConfig(paths.repoRoot) @@ -58,7 +59,9 @@ export const diffCommand = command({ return } - const [gitErr, changed] = gitChangedFiles({ repoRoot: paths.repoRoot, dirs }) + const [gitErr, changed] = ref + ? gitDiffFiles({ repoRoot: paths.repoRoot, dirs, ref }) + : gitChangedFiles({ repoRoot: paths.repoRoot, dirs }) if (gitErr) { if (pretty) { @@ -83,10 +86,15 @@ export const diffCommand = command({ ctx.logger.step(`Watching ${dirs.length} path(s)`) ctx.logger.note(changed.join('\n'), `${changed.length} changed file(s)`) ctx.logger.outro('Done') - return + } else { + process.stdout.write(`${changed.join(' ')}\n`) } - process.stdout.write(`${changed.join(' ')}\n`) + // When --ref is used (e.g. as a Vercel ignoreCommand), exit 1 signals + // "changes detected, proceed with build". Exit 0 (no changes) means skip. + if (ref) { + process.exit(1) + } }, }) @@ -251,6 +259,42 @@ function stripQuotes(value: string): string { return trimmed } +/** + * Run `git diff --name-only HEAD` scoped to the given directories and return changed file paths. + * + * Use this instead of `gitChangedFiles` when comparing between commits (e.g. for + * CI ignore commands like Vercel's `ignoreCommand`), since `git status` only + * detects uncommitted changes and always returns empty on clean checkouts. + * + * @private + * @param params - Parameters for the git diff query + * @param params.repoRoot - Absolute path to the repo root + * @param params.dirs - Directories to scope the git diff to + * @param params.ref - Git ref to compare against HEAD (e.g. `HEAD^`, `main`) + * @returns Result tuple with changed file paths (repo-relative) or an error + */ +function gitDiffFiles(params: { + readonly repoRoot: string + readonly dirs: readonly string[] + readonly ref: string +}): Result { + const [err, output] = execSilent({ + file: 'git', + args: ['diff', '--name-only', params.ref, 'HEAD', '--', ...params.dirs], + cwd: params.repoRoot, + }) + if (err) { + return [err, null] + } + if (!output) { + return [null, []] + } + const files = output + .split('\n') + .filter((line) => line.length > 0) + return [null, files] +} + /** * Run a command silently with an explicit argument array, returning a Result * tuple with trimmed stdout on success or an Error on failure. diff --git a/packages/core/package.json b/packages/core/package.json index a5462f7..5c73423 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -48,7 +48,7 @@ "gray-matter": "^4.0.3", "jiti": "^2.6.1", "js-yaml": "^4.1.1", - "liquidjs": "^10.25.0", + "liquidjs": "^10.25.1", "ts-pattern": "catalog:" }, "devDependencies": { diff --git a/packages/ui/package.json b/packages/ui/package.json index 34c861e..250d1f5 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -54,7 +54,7 @@ "@iconify-json/material-icon-theme": "^1.2.56", "@iconify-json/mdi": "^1.2.3", "@iconify-json/pixelarticons": "^1.2.4", - "@iconify-json/simple-icons": "^1.2.74", + "@iconify-json/simple-icons": "^1.2.75", "@iconify-json/skill-icons": "^1.2.4", "@iconify-json/vscode-icons": "^1.2.45", "@iconify/react": "^6.0.2", @@ -78,7 +78,7 @@ "react": "^19.2.4", "react-dom": "^19.2.4", "rspress-plugin-devkit": "^1.0.0", - "rspress-plugin-file-tree": "^1.0.4", + "rspress-plugin-file-tree": "1.0.3", "rspress-plugin-katex": "^1.0.0", "rspress-plugin-supersub": "^1.0.0", "typescript": "catalog:", diff --git a/packages/ui/rslib.config.ts b/packages/ui/rslib.config.ts index 56bdf7f..400306e 100644 --- a/packages/ui/rslib.config.ts +++ b/packages/ui/rslib.config.ts @@ -38,6 +38,10 @@ export default defineConfig({ from: './src/plugins/mermaid/mermaid.css', to: 'plugins/mermaid/mermaid.css', }, + { + from: './node_modules/rspress-plugin-file-tree/dist/components', + to: 'components', + }, ], }, }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1bf2d6..914c9ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,8 +13,8 @@ catalogs: specifier: ^2.0.6 version: 2.0.6 '@typescript/native-preview': - specifier: ^7.0.0-dev.20260320.1 - version: 7.0.0-dev.20260320.1 + specifier: 7.0.0-dev.20260323.1 + version: 7.0.0-dev.20260323.1 es-toolkit: specifier: ^1.45.1 version: 1.45.1 @@ -25,11 +25,11 @@ catalogs: specifier: ^5.5.0 version: 5.5.0 typescript: - specifier: ^5.9.3 - version: 5.9.3 + specifier: ^6.0.2 + version: 6.0.2 vitest: - specifier: ^4.1.0 - version: 4.1.0 + specifier: ^4.1.1 + version: 4.1.1 zod: specifier: ^4.3.6 version: 4.3.6 @@ -67,8 +67,8 @@ importers: specifier: ^1.2.4 version: 1.2.4 '@iconify-json/simple-icons': - specifier: ^1.2.74 - version: 1.2.74 + specifier: ^1.2.75 + version: 1.2.75 '@iconify-json/skill-icons': specifier: ^1.2.4 version: 1.2.4 @@ -83,10 +83,10 @@ importers: version: 25.5.0 '@typescript/native-preview': specifier: 'catalog:' - version: 7.0.0-dev.20260320.1 + version: 7.0.0-dev.20260323.1 eslint-plugin-functional: specifier: ^9.0.4 - version: 9.0.4(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + version: 9.0.4(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2) eslint-plugin-jsdoc: specifier: ^62.8.0 version: 62.8.0(eslint@10.0.2(jiti@2.6.1)) @@ -110,10 +110,10 @@ importers: version: 2.8.20 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) examples/kitchen-sink: dependencies: @@ -140,13 +140,13 @@ importers: version: 0.27.4 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 packages/cli: dependencies: '@kidd-cli/core': specifier: ^0.10.0 - version: 0.10.0(chokidar@5.0.0)(jiti@2.6.1)(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 0.10.0(chokidar@5.0.0)(jiti@2.6.1)(vitest@4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))) '@rspress/core': specifier: 'catalog:' version: 2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2) @@ -163,8 +163,8 @@ importers: specifier: 'catalog:' version: 1.45.1 get-port: - specifier: ^7.1.0 - version: 7.1.0 + specifier: ^7.2.0 + version: 7.2.0 ts-pattern: specifier: 'catalog:' version: 5.9.0 @@ -174,13 +174,13 @@ importers: devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) packages/config: dependencies: @@ -205,7 +205,7 @@ importers: devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) '@types/node': specifier: ^25.5.0 version: 25.5.0 @@ -214,10 +214,10 @@ importers: version: 4.21.0 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) zod-to-json-schema: specifier: ^3.25.1 version: 3.25.1(zod@4.3.6) @@ -252,24 +252,24 @@ importers: specifier: ^4.1.1 version: 4.1.1 liquidjs: - specifier: ^10.25.0 - version: 10.25.0 + specifier: ^10.25.1 + version: 10.25.1 ts-pattern: specifier: 'catalog:' version: 5.9.0 devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) '@types/js-yaml': specifier: ^4.0.9 version: 4.0.9 typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) packages/templates: dependencies: @@ -279,13 +279,13 @@ importers: devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) packages/theme: dependencies: @@ -301,13 +301,13 @@ importers: devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) packages/ui: dependencies: @@ -330,8 +330,8 @@ importers: specifier: ^1.2.4 version: 1.2.4 '@iconify-json/simple-icons': - specifier: ^1.2.74 - version: 1.2.74 + specifier: ^1.2.75 + version: 1.2.75 '@iconify-json/skill-icons': specifier: ^1.2.4 version: 1.2.4 @@ -371,7 +371,7 @@ importers: devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) '@rspress/core': specifier: 'catalog:' version: 2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2) @@ -397,8 +397,8 @@ importers: specifier: ^1.0.0 version: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) rspress-plugin-file-tree: - specifier: ^1.0.4 - version: 1.0.4(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) + specifier: 1.0.3 + version: 1.0.3(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) rspress-plugin-katex: specifier: ^1.0.0 version: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) @@ -407,10 +407,10 @@ importers: version: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 vitest: specifier: 'catalog:' - version: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) packages/zpress: dependencies: @@ -435,10 +435,10 @@ importers: devDependencies: '@rslib/core': specifier: 'catalog:' - version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3) + version: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2) typescript: specifier: 'catalog:' - version: 5.9.3 + version: 6.0.2 packages: @@ -942,8 +942,8 @@ packages: '@iconify-json/pixelarticons@1.2.4': resolution: {integrity: sha512-nADJKEI3mlxDSmJMLqGvNuvNl1TGa+VbFJIwrtj/8vUA4m15qPNiwxMyw8YxW3gVokuO9MNU462B8uK1hb4rqw==} - '@iconify-json/simple-icons@1.2.74': - resolution: {integrity: sha512-yqaohfY6jnYjTVpuTkaBQHrWbdUrQyWXhau0r/0EZiNWYXPX/P8WWwl1DoLH5CbvDjjcWQw5J0zADhgCUklOqA==} + '@iconify-json/simple-icons@1.2.75': + resolution: {integrity: sha512-KvcCUbvcBWb0sbqLIxHoY8z5/piXY08wcY9gfMhF+ph3AfzGMaSmZFkUY71HSXAljQngXkgs4bdKdekO0HQWvg==} '@iconify-json/skill-icons@1.2.4': resolution: {integrity: sha512-S6iRKHGlGCb/zfx3Isv1TBe5PunbDE5FEwJcaXji60+yRZMrcFFtYEI1xivKqaGKXyVZ508yjGDItsehQdJmSg==} @@ -2634,43 +2634,43 @@ packages: resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-9zadqk/wJ+4bCheapoP/wZZxIGbHotKj+QDvwlCeB93LFrcuIYDt8q91xW1tzrc12YrUTgWXqJuYHTNZ9fzyHw==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-C3tQdgMaYn57xzRUWek+zNKMiP0z9j7fqbCjr0wlyiLNIh5jMwDArjBDKHlqSu58FKvZg7baqbqB5Mcepb3s6w==} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-uw3sflQVaIIJhfu6xtFFogE8aC0MQ4xt9yRx2CDngp8/PQ0Qp8xp0LrUigQHbwtt7Y8AKR3YCRaX53rbovj4dg==} + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-YE6pD4wdMqNgaBkXicQBLFwABOEmLxDclSM7grl0fw4cQSbfVwFCbSlwFDkmISKdmsgtWdYeMohrsTU710ufpg==} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-fmi8apETnFd6KhLzcGFLUcPRTZO+6vHnFw0Yz08IT68aX2Vft91LnxlJuuaiKVfzE8w9fxQlU1lAZyTVWARGIg==} + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-Jzr2gBY0ifA3XejAl7kPeHLT72JFBfzLSafOAQbANh5Iag02uPl99k8ORMfKREbYgEMMOzqPpe+r6eaKy+VEfw==} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-tCKwcnikt4uvSfHc14A6FJwEQox1yTsKcssTsAhxycH2bYuUr05AQNUdud3W41tr0MySHrcQG4CstzFxE9C86w==} + '@typescript/native-preview-linux-arm@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-6zFO/SF9Gu8rtRyEt1b10TNapQGq5b/wUjCLG14675n155r4EO3JFMgnltBViV2Eatnq7G+bXD65BUBk7Ixyhw==} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-ouNWS+eUHna/mxP0tLQRzBfR5CwldCrG9mi+pTZY1pKnjvvu7b0i6OOFh9em36wIsDCjPGu6dQiv2sfBCCyRwA==} + '@typescript/native-preview-linux-x64@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-UvsQdVI/LayXTowltMgtg2GHU/a/lcuOYbaAYm9+/nvgIs01VqVo0s1/lTSNBzepEk0y1EOYQ6SIsRM9lLGHxA==} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-fG32mrKJOW8U9pq3VdHNXCfxCN3T7Uh5zkf3beH3mFIRtIv65BUONwW6rh63DCtyGZTeBkF6GTJO2nIIfx3dbA==} + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-3208Xoe+3Xblf6WLVTkIdyh6401zB2eXAhu1UaDpZY0rf8SMHCxKW3TSJDytpri5UivCotZ0CNC2wgJ1TlymUA==} cpu: [arm64] os: [win32] - '@typescript/native-preview-win32-x64@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-iklQlFdDWkV62GbxqVltm7y148vL6TC18BYZRzRaJjf2r+Gd2UGW3FPydNwKViTRfvWWwNx0aU8fnqTaoMBGqw==} + '@typescript/native-preview-win32-x64@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-DAiRqrcs58eXwjFOtbklbIHq70IpW7uYz1Bx3kNAzqoWlA7R4mC29N6G0kGEZDalGmj7f0HVuckq9AzaC1r6oQ==} cpu: [x64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20260320.1': - resolution: {integrity: sha512-uLkkdYwvJQ/atPqMW9RUt1j71lcbL53e7a+G/I3AXb5QioMdWkG6nbNfKPM+06RgXwPDyDV9+bI0FT/13BEVgg==} + '@typescript/native-preview@7.0.0-dev.20260323.1': + resolution: {integrity: sha512-e8rnqL5I4DUSjiy6jiWqYFKcgKq8tC4S+uEmJwWiyTgSIGDhaRUujJ2pb6EXmi+NPeXoES6vIG7e9BsEV0WSow==} hasBin: true '@typespec/ts-http-runtime@0.3.4': @@ -2688,34 +2688,34 @@ packages: '@uttr/tint@0.1.3': resolution: {integrity: sha512-nQlAxBriuQ7NPxvMlxCXdw0n4alhEAIzsjFNNyU4CR7AitUwMFp1A5e/47JYQ7NMcooaI06OEQKylYhNhbpuIA==} - '@vitest/expect@4.1.0': - resolution: {integrity: sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==} + '@vitest/expect@4.1.1': + resolution: {integrity: sha512-xAV0fqBTk44Rn6SjJReEQkHP3RrqbJo6JQ4zZ7/uVOiJZRarBtblzrOfFIZeYUrukp2YD6snZG6IBqhOoHTm+A==} - '@vitest/mocker@4.1.0': - resolution: {integrity: sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==} + '@vitest/mocker@4.1.1': + resolution: {integrity: sha512-h3BOylsfsCLPeceuCPAAJ+BvNwSENgJa4hXoXu4im0bs9Lyp4URc4JYK4pWLZ4pG/UQn7AT92K6IByi6rE6g3A==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@4.1.0': - resolution: {integrity: sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==} + '@vitest/pretty-format@4.1.1': + resolution: {integrity: sha512-GM+TEQN5WhOygr1lp7skeVjdLPqqWMHsfzXrcHAqZJi/lIVh63H0kaRCY8MDhNWikx19zBUK8ceaLB7X5AH9NQ==} - '@vitest/runner@4.1.0': - resolution: {integrity: sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==} + '@vitest/runner@4.1.1': + resolution: {integrity: sha512-f7+FPy75vN91QGWsITueq0gedwUZy1fLtHOCMeQpjs8jTekAHeKP80zfDEnhrleviLHzVSDXIWuCIOFn3D3f8A==} - '@vitest/snapshot@4.1.0': - resolution: {integrity: sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==} + '@vitest/snapshot@4.1.1': + resolution: {integrity: sha512-kMVSgcegWV2FibXEx9p9WIKgje58lcTbXgnJixfcg15iK8nzCXhmalL0ZLtTWLW9PH1+1NEDShiFFedB3tEgWg==} - '@vitest/spy@4.1.0': - resolution: {integrity: sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==} + '@vitest/spy@4.1.1': + resolution: {integrity: sha512-6Ti/KT5OVaiupdIZEuZN7l3CZcR0cxnxt70Z0//3CtwgObwA6jZhmVBA3yrXSVN3gmwjgd7oDNLlsXz526gpRA==} - '@vitest/utils@4.1.0': - resolution: {integrity: sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==} + '@vitest/utils@4.1.1': + resolution: {integrity: sha512-cNxAlaB3sHoCdL6pj6yyUXv9Gry1NHNg0kFTXdvSIZXLHsqKH7chiWOkwJ5s5+d/oMwcoG9T0bKU38JZWKusrQ==} '@vscode/vsce-sign-alpine-arm64@2.0.6': resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==} @@ -2879,8 +2879,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.9: - resolution: {integrity: sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==} + baseline-browser-mapping@2.10.10: + resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2967,8 +2967,8 @@ packages: call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} - caniuse-lite@1.0.30001780: - resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==} + caniuse-lite@1.0.30001781: + resolution: {integrity: sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3314,8 +3314,8 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delaunator@5.0.1: - resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -3343,8 +3343,8 @@ packages: resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} - diff@8.0.3: - resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: @@ -3703,16 +3703,16 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - get-port@7.1.0: - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + get-port@7.2.0: + resolution: {integrity: sha512-afP4W205ONCuMoPBqcR6PSXnzX35KTcJygfJfcp+QY+uwm3p20p1YczWXhlICIzGMCxYBQcySEcOgsJcrkyobg==} engines: {node: '>=16'} get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.6: - resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + get-tsconfig@4.13.7: + resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -4165,8 +4165,8 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - liquidjs@10.25.0: - resolution: {integrity: sha512-XpO7AiGULTG4xcTlwkcTI5JreFG7b6esLCLp+aUSh7YuQErJZEoUXre9u9rbdb0057pfWG4l0VursvLd5Q/eAw==} + liquidjs@10.25.1: + resolution: {integrity: sha512-D+jsJvkGigFn8qNUgh8U6XNHhGFBp+p8Dk26ea/Hl+XrjFVSg9OXlN31hGAfS3MYQ3Kr8Xi9sEVBVQa/VTVSmg==} engines: {node: '>=16'} hasBin: true @@ -4895,15 +4895,15 @@ packages: peerDependencies: react: '>=19' - react-router-dom@7.13.1: - resolution: {integrity: sha512-UJnV3Rxc5TgUPJt2KJpo1Jpy0OKQr0AjgbZzBFjaPJcFOb2Y8jA5H3LT8HUJAiRLlWrEXWHbF1Z4SCZaQjWDHw==} + react-router-dom@7.13.2: + resolution: {integrity: sha512-aR7SUORwTqAW0JDeiWF07e9SBE9qGpByR9I8kJT5h/FrBKxPMS6TiC7rmVO+gC0q52Bx7JnjWe8Z1sR9faN4YA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' - react-router@7.13.1: - resolution: {integrity: sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==} + react-router@7.13.2: + resolution: {integrity: sha512-tX1Aee+ArlKQP+NIUd7SE6Li+CiGKwQtbS+FfRxPX6Pe4vHOo6nr9d++u5cwg+Z8K/x8tP+7qLmujDtfrAoUJA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -5054,8 +5054,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} rolldown@1.0.0-rc.9: resolution: {integrity: sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==} @@ -5083,8 +5083,8 @@ packages: peerDependencies: '@rspress/core': ^2.0.0-rc.4 || ^2.0.0 - rspress-plugin-file-tree@1.0.4: - resolution: {integrity: sha512-VItnE51w/EDOdvliEnLKBNz2VVmOFx1zdZr8HfjII7Tu8/GQg+BtShjZR0Z8oYtP6zyxheY2H81pe2J4Wdwh0g==} + rspress-plugin-file-tree@1.0.3: + resolution: {integrity: sha512-+z07cGbtxRELATSdDiM/TzsTfgxnycPgTNBjrzhljz9c4boaXCXX7X8slMBLY/QrZMRzIvV74sijoJT2V4iUhw==} peerDependencies: '@rspress/core': ^2.0.0-rc.4 || ^2.0.0 @@ -5311,8 +5311,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@2.2.1: - resolution: {integrity: sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==} + strnum@2.2.2: + resolution: {integrity: sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==} structured-source@4.0.0: resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==} @@ -5497,8 +5497,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true @@ -5668,21 +5668,21 @@ packages: yaml: optional: true - vitest@4.1.0: - resolution: {integrity: sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==} + vitest@4.1.1: + resolution: {integrity: sha512-yF+o4POL41rpAzj5KVILUxm1GCjKnELvaqmU9TLLUbMfDzuN0UpUR9uaDs+mCtjPe+uYPksXDRLQGGPvj1cTmA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.0 - '@vitest/browser-preview': 4.1.0 - '@vitest/browser-webdriverio': 4.1.0 - '@vitest/ui': 4.1.0 + '@vitest/browser-playwright': 4.1.1 + '@vitest/browser-preview': 4.1.1 + '@vitest/browser-webdriverio': 4.1.1 + '@vitest/ui': 4.1.1 happy-dom: '*' jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true @@ -5758,8 +5758,8 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true @@ -6347,7 +6347,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.74': + '@iconify-json/simple-icons@1.2.75': dependencies: '@iconify/types': 2.0.0 @@ -6504,7 +6504,7 @@ snapshots: - jiti - magicast - '@kidd-cli/core@0.10.0(chokidar@5.0.0)(jiti@2.6.1)(vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@kidd-cli/core@0.10.0(chokidar@5.0.0)(jiti@2.6.1)(vitest@4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)))': dependencies: '@clack/prompts': 1.1.0 '@kidd-cli/config': 0.1.6(chokidar@5.0.0)(dotenv@17.3.1)(jiti@2.6.1) @@ -6514,15 +6514,15 @@ snapshots: dotenv: 17.3.1 es-toolkit: 1.45.1 jsonc-parser: 3.3.1 - liquidjs: 10.25.0 + liquidjs: 10.25.1 picocolors: 1.1.1 ts-pattern: 5.9.0 - yaml: 2.8.2 + yaml: 2.8.3 yargs: 18.0.0 zod: 4.3.6 optionalDependencies: jiti: 2.6.1 - vitest: 4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - chokidar - giget @@ -6613,7 +6613,7 @@ snapshots: '@rushstack/rig-package': 0.7.2 '@rushstack/terminal': 0.22.3(@types/node@25.5.0) '@rushstack/ts-command-line': 5.3.3(@types/node@25.5.0) - diff: 8.0.3 + diff: 8.0.4 lodash: 4.17.23 minimatch: 10.2.3 resolve: 1.22.11 @@ -7919,13 +7919,13 @@ snapshots: transitivePeerDependencies: - webpack-hot-middleware - '@rslib/core@0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(core-js@3.47.0)(typescript@5.9.3)': + '@rslib/core@0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(core-js@3.47.0)(typescript@6.0.2)': dependencies: '@rsbuild/core': 2.0.0-beta.9(core-js@3.47.0) - rsbuild-plugin-dts: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@rsbuild/core@2.0.0-beta.9(core-js@3.47.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(typescript@5.9.3) + rsbuild-plugin-dts: 0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@rsbuild/core@2.0.0-beta.9(core-js@3.47.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(typescript@6.0.2) optionalDependencies: '@microsoft/api-extractor': 7.57.7(@types/node@25.5.0) - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - '@module-federation/runtime-tools' - '@typescript/native-preview' @@ -8018,7 +8018,7 @@ snapshots: react-lazy-with-preload: 2.2.1 react-reconciler: 0.33.0(react@19.2.4) react-render-to-markdown: 19.0.1(react@19.2.4) - react-router-dom: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router-dom: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) rehype-external-links: 3.0.0 rehype-raw: 7.0.0 remark-cjk-friendly: 2.0.1(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5) @@ -8370,12 +8370,12 @@ snapshots: '@types/vscode@1.110.0': {} - '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.1(typescript@6.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@6.0.2) '@typescript-eslint/types': 8.57.1 debug: 4.4.3 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -8384,47 +8384,47 @@ snapshots: '@typescript-eslint/types': 8.57.1 '@typescript-eslint/visitor-keys': 8.57.1 - '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@6.0.2)': dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@typescript-eslint/type-utils@8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@6.0.2) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2) debug: 4.4.3 eslint: 10.0.2(jiti@2.6.1) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.57.1': {} - '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.1(typescript@6.0.2)': dependencies: - '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/project-service': 8.57.1(typescript@6.0.2) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@6.0.2) '@typescript-eslint/types': 8.57.1 '@typescript-eslint/visitor-keys': 8.57.1 debug: 4.4.3 minimatch: 10.2.4 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.57.1 '@typescript-eslint/types': 8.57.1 - '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@6.0.2) eslint: 10.0.2(jiti@2.6.1) - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -8433,36 +8433,36 @@ snapshots: '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.1 - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260320.1': + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260320.1': + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260320.1': + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20260320.1': + '@typescript/native-preview-linux-arm@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20260320.1': + '@typescript/native-preview-linux-x64@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260320.1': + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20260320.1': + '@typescript/native-preview-win32-x64@7.0.0-dev.20260323.1': optional: true - '@typescript/native-preview@7.0.0-dev.20260320.1': + '@typescript/native-preview@7.0.0-dev.20260323.1': optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260320.1 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260320.1 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20260320.1 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260320.1 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20260320.1 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260320.1 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20260320.1 + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260323.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260323.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20260323.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260323.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20260323.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260323.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20260323.1 '@typespec/ts-http-runtime@0.3.4': dependencies: @@ -8481,44 +8481,44 @@ snapshots: '@uttr/tint@0.1.3': {} - '@vitest/expect@4.1.0': + '@vitest/expect@4.1.1': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/spy': 4.1.1 + '@vitest/utils': 4.1.1 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.1(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - '@vitest/spy': 4.1.0 + '@vitest/spy': 4.1.1 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/pretty-format@4.1.0': + '@vitest/pretty-format@4.1.1': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.0': + '@vitest/runner@4.1.1': dependencies: - '@vitest/utils': 4.1.0 + '@vitest/utils': 4.1.1 pathe: 2.0.3 - '@vitest/snapshot@4.1.0': + '@vitest/snapshot@4.1.1': dependencies: - '@vitest/pretty-format': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/pretty-format': 4.1.1 + '@vitest/utils': 4.1.1 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.0': {} + '@vitest/spy@4.1.1': {} - '@vitest/utils@4.1.0': + '@vitest/utils@4.1.1': dependencies: - '@vitest/pretty-format': 4.1.0 + '@vitest/pretty-format': 4.1.1 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -8680,7 +8680,7 @@ snapshots: base64-js@1.5.1: optional: true - baseline-browser-mapping@2.10.9: {} + baseline-browser-mapping@2.10.10: {} better-path-resolve@1.0.0: dependencies: @@ -8759,7 +8759,7 @@ snapshots: call-me-maybe@1.0.2: {} - caniuse-lite@1.0.30001780: {} + caniuse-lite@1.0.30001781: {} ccount@2.0.1: {} @@ -8949,7 +8949,7 @@ snapshots: d3-delaunay@6.0.4: dependencies: - delaunator: 5.0.1 + delaunator: 5.1.0 d3-dispatch@3.0.1: {} @@ -9126,9 +9126,9 @@ snapshots: defu@6.1.4: {} - delaunator@5.0.1: + delaunator@5.1.0: dependencies: - robust-predicates: 3.0.2 + robust-predicates: 3.0.3 delayed-stream@1.0.0: {} @@ -9146,7 +9146,7 @@ snapshots: diff@5.2.2: {} - diff@8.0.3: {} + diff@8.0.4: {} dir-glob@3.0.1: dependencies: @@ -9293,17 +9293,17 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-plugin-functional@9.0.4(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3): + eslint-plugin-functional@9.0.4(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2): dependencies: - '@typescript-eslint/utils': 8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2) deepmerge-ts: 7.1.5 escape-string-regexp: 5.0.0 eslint: 10.0.2(jiti@2.6.1) - is-immutable-type: 5.0.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) - ts-api-utils: 2.5.0(typescript@5.9.3) - ts-declaration-location: 1.0.7(typescript@5.9.3) + is-immutable-type: 5.0.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2) + ts-api-utils: 2.5.0(typescript@6.0.2) + ts-declaration-location: 1.0.7(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -9477,7 +9477,7 @@ snapshots: dependencies: fast-xml-builder: 1.1.4 path-expression-matcher: 1.2.0 - strnum: 2.2.1 + strnum: 2.2.2 fastq@1.20.1: dependencies: @@ -9582,14 +9582,14 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-port@7.1.0: {} + get-port@7.2.0: {} get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-tsconfig@4.13.6: + get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 @@ -9921,13 +9921,13 @@ snapshots: is-hexadecimal@2.0.1: {} - is-immutable-type@5.0.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3): + is-immutable-type@5.0.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2): dependencies: - '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.57.1(eslint@10.0.2(jiti@2.6.1))(typescript@6.0.2) eslint: 10.0.2(jiti@2.6.1) - ts-api-utils: 2.5.0(typescript@5.9.3) - ts-declaration-location: 1.0.7(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.5.0(typescript@6.0.2) + ts-declaration-location: 1.0.7(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -10061,7 +10061,7 @@ snapshots: jiti: 2.6.1 picocolors: 1.1.1 picomatch: 4.0.3 - yaml: 2.8.2 + yaml: 2.8.3 zod: 4.3.6 transitivePeerDependencies: - giget @@ -10129,7 +10129,7 @@ snapshots: dependencies: uc.micro: 2.1.0 - liquidjs@10.25.0: + liquidjs@10.25.1: dependencies: commander: 10.0.1 @@ -10913,8 +10913,8 @@ snapshots: dependencies: '@next/env': 16.1.6 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.9 - caniuse-lite: 1.0.30001780 + baseline-browser-mapping: 2.10.10 + caniuse-lite: 1.0.30001781 postcss: 8.4.31 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -11340,13 +11340,13 @@ snapshots: react: 19.2.4 react-reconciler: 0.33.0(react@19.2.4) - react-router-dom@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router-dom@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router@7.13.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: cookie: 1.1.1 react: 19.2.4 @@ -11551,7 +11551,7 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.1.0 unist-util-visit-parents: 6.0.2 - yaml: 2.8.2 + yaml: 2.8.3 transitivePeerDependencies: - supports-color @@ -11606,7 +11606,7 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - robust-predicates@3.0.2: {} + robust-predicates@3.0.3: {} rolldown@1.0.0-rc.9: dependencies: @@ -11629,14 +11629,14 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.9 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.9 - rsbuild-plugin-dts@0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@rsbuild/core@2.0.0-beta.9(core-js@3.47.0))(@typescript/native-preview@7.0.0-dev.20260320.1)(typescript@5.9.3): + rsbuild-plugin-dts@0.20.0(@microsoft/api-extractor@7.57.7(@types/node@25.5.0))(@rsbuild/core@2.0.0-beta.9(core-js@3.47.0))(@typescript/native-preview@7.0.0-dev.20260323.1)(typescript@6.0.2): dependencies: '@ast-grep/napi': 0.37.0 '@rsbuild/core': 2.0.0-beta.9(core-js@3.47.0) optionalDependencies: '@microsoft/api-extractor': 7.57.7(@types/node@25.5.0) - '@typescript/native-preview': 7.0.0-dev.20260320.1 - typescript: 5.9.3 + '@typescript/native-preview': 7.0.0-dev.20260323.1 + typescript: 6.0.2 rspress-plugin-devkit@1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)): dependencies: @@ -11663,7 +11663,7 @@ snapshots: transitivePeerDependencies: - supports-color - rspress-plugin-file-tree@1.0.4(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)): + rspress-plugin-file-tree@1.0.3(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)): dependencies: '@rspress/core': 2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2) rspress-plugin-devkit: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) @@ -11936,7 +11936,7 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.2.1: {} + strnum@2.2.2: {} structured-source@4.0.0: dependencies: @@ -12048,14 +12048,14 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.5.0(typescript@5.9.3): + ts-api-utils@2.5.0(typescript@6.0.2): dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - ts-declaration-location@1.0.7(typescript@5.9.3): + ts-declaration-location@1.0.7(typescript@6.0.2): dependencies: picomatch: 4.0.3 - typescript: 5.9.3 + typescript: 6.0.2 ts-dedent@2.2.0: {} @@ -12071,7 +12071,7 @@ snapshots: tsx@4.21.0: dependencies: esbuild: 0.27.4 - get-tsconfig: 4.13.6 + get-tsconfig: 4.13.7 optionalDependencies: fsevents: 2.3.3 @@ -12109,7 +12109,7 @@ snapshots: typescript@5.8.2: {} - typescript@5.9.3: {} + typescript@6.0.2: {} uc.micro@2.1.0: {} @@ -12261,7 +12261,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 @@ -12275,17 +12275,17 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 tsx: 4.21.0 - yaml: 2.8.2 + yaml: 2.8.3 - vitest@4.1.0(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.1(@opentelemetry/api@1.9.0)(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 4.1.0 - '@vitest/runner': 4.1.0 - '@vitest/snapshot': 4.1.0 - '@vitest/spy': 4.1.0 - '@vitest/utils': 4.1.0 + '@vitest/expect': 4.1.1 + '@vitest/mocker': 4.1.1(vite@8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.1 + '@vitest/runner': 4.1.1 + '@vitest/snapshot': 4.1.1 + '@vitest/spy': 4.1.1 + '@vitest/utils': 4.1.1 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -12297,7 +12297,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.0(@types/node@25.5.0)(esbuild@0.27.4)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -12350,7 +12350,7 @@ snapshots: yallist@4.0.0: {} - yaml@2.8.2: {} + yaml@2.8.3: {} yargs-parser@22.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c4f4524..419ad76 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,10 +6,10 @@ packages: catalog: '@rslib/core': ^0.20.0 '@rspress/core': ^2.0.6 + '@typescript/native-preview': 7.0.0-dev.20260323.1 es-toolkit: ^1.45.1 ts-pattern: ^5.9.0 type-fest: ^5.5.0 - '@typescript/native-preview': ^7.0.0-dev.20260320.1 - typescript: ^5.9.3 - vitest: ^4.1.0 + typescript: ^6.0.2 + vitest: ^4.1.1 zod: ^4.3.6 From e455efd56adfac130e605966a143b6f03b54b3a0 Mon Sep 17 00:00:00 2001 From: Zac Rosenbauer Date: Mon, 23 Mar 2026 13:00:39 -0400 Subject: [PATCH 2/6] docs(packages/cli): improve diff --ref JSDoc with usage examples Co-Authored-By: Claude --- packages/cli/src/commands/diff.ts | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/diff.ts b/packages/cli/src/commands/diff.ts index 66b106f..d09b806 100644 --- a/packages/cli/src/commands/diff.ts +++ b/packages/cli/src/commands/diff.ts @@ -19,14 +19,37 @@ const CONFIG_GLOBS = [ /** * Registers the `diff` CLI command to show changed files in watched directories. * - * By default outputs a space-separated file list to stdout (suitable for - * lefthook, scripts, and piping). Use `--pretty` for human-readable output. + * By default uses `git status` to detect uncommitted changes and outputs a + * space-separated file list to stdout (suitable for lefthook, scripts, and piping). + * + * Use `--ref ` to compare between commits instead of checking working tree + * status. This uses `git diff --name-only HEAD` under the hood and exits + * with code 1 when changes are detected — matching the Vercel `ignoreCommand` + * convention (exit 1 = proceed with build, exit 0 = skip). + * + * @example + * ```bash + * # Detect uncommitted changes (default, uses git status) + * zpress diff + * + * # Compare against parent commit (CI / Vercel ignoreCommand) + * zpress diff --ref HEAD^ + * + * # Compare against main branch (PR context) + * zpress diff --ref main + * + * # Human-readable output + * zpress diff --ref main --pretty + * ``` */ export const diffCommand = command({ description: 'Show changed files in configured source directories', options: z.object({ pretty: z.boolean().optional().default(false), - ref: z.string().optional(), + ref: z + .string() + .optional() + .describe('Git ref to compare against HEAD (e.g. HEAD^, main). Exits 1 when changes are detected.'), }), handler: async (ctx) => { const { pretty, ref } = ctx.args From e56f85c728cc5387cb69746b288c7b2fb85a5831 Mon Sep 17 00:00:00 2001 From: Zac Rosenbauer Date: Mon, 23 Mar 2026 13:07:04 -0400 Subject: [PATCH 3/6] fix(packages/cli): replace ternary with ts-pattern match in diff command Replace forbidden ternary expression with ts-pattern match() to select between gitDiffFiles and gitChangedFiles. Also disable prefer-destructuring lint rule for raw-copied MermaidRenderer component. Co-Authored-By: Claude --- .oxlintrc.json | 3 ++- packages/cli/src/commands/diff.ts | 18 +++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index 43fe87b..0661483 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -113,7 +113,8 @@ { "files": ["**/MermaidRenderer.tsx"], "rules": { - "unicorn/filename-case": "off" + "unicorn/filename-case": "off", + "prefer-destructuring": "off" } } ], diff --git a/packages/cli/src/commands/diff.ts b/packages/cli/src/commands/diff.ts index d09b806..9f54d50 100644 --- a/packages/cli/src/commands/diff.ts +++ b/packages/cli/src/commands/diff.ts @@ -4,6 +4,7 @@ import { command } from '@kidd-cli/core' import type { Section, ZpressConfig, Result } from '@zpress/core' import { createPaths, hasGlobChars, loadConfig, normalizeInclude } from '@zpress/core' import { uniq } from 'es-toolkit' +import { match } from 'ts-pattern' import { z } from 'zod' const CONFIG_GLOBS = [ @@ -49,7 +50,9 @@ export const diffCommand = command({ ref: z .string() .optional() - .describe('Git ref to compare against HEAD (e.g. HEAD^, main). Exits 1 when changes are detected.'), + .describe( + 'Git ref to compare against HEAD (e.g. HEAD^, main). Exits 1 when changes are detected.' + ), }), handler: async (ctx) => { const { pretty, ref } = ctx.args @@ -82,9 +85,12 @@ export const diffCommand = command({ return } - const [gitErr, changed] = ref - ? gitDiffFiles({ repoRoot: paths.repoRoot, dirs, ref }) - : gitChangedFiles({ repoRoot: paths.repoRoot, dirs }) + const [gitErr, changed] = match(ref) + .when( + (r): r is string => r !== undefined, + (r) => gitDiffFiles({ repoRoot: paths.repoRoot, dirs, ref: r }) + ) + .otherwise(() => gitChangedFiles({ repoRoot: paths.repoRoot, dirs })) if (gitErr) { if (pretty) { @@ -312,9 +318,7 @@ function gitDiffFiles(params: { if (!output) { return [null, []] } - const files = output - .split('\n') - .filter((line) => line.length > 0) + const files = output.split('\n').filter((line) => line.length > 0) return [null, files] } From 1cb5d62e027d57ec37364a422f194de6a7369054 Mon Sep 17 00:00:00 2001 From: Zac Rosenbauer Date: Mon, 23 Mar 2026 13:42:52 -0400 Subject: [PATCH 4/6] feat(packages/cli): add --verbose flag to build command When --verbose is passed, the build check skips output capture so Rspress/Rspack errors are printed directly to stdout/stderr. This makes it easier to diagnose build failures on CI. Co-Authored-By: Claude --- packages/cli/src/commands/build.ts | 5 +++-- packages/cli/src/lib/check.ts | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/build.ts b/packages/cli/src/commands/build.ts index ddbf6ec..744e735 100644 --- a/packages/cli/src/commands/build.ts +++ b/packages/cli/src/commands/build.ts @@ -19,9 +19,10 @@ export const buildCommand = command({ quiet: z.boolean().optional().default(false), clean: z.boolean().optional().default(false), check: z.boolean().optional().default(true), + verbose: z.boolean().optional().default(false), }), handler: async (ctx) => { - const { quiet, check } = ctx.args + const { quiet, check, verbose } = ctx.args const paths = createPaths(process.cwd()) ctx.logger.intro('zpress build') @@ -53,7 +54,7 @@ export const buildCommand = command({ await sync(config, { paths, quiet: true }) ctx.logger.step('Building & checking for broken links...') - const buildResult = await runBuildCheck({ config, paths }) + const buildResult = await runBuildCheck({ config, paths, verbose }) const passed = presentResults({ configResult, buildResult, logger: ctx.logger }) if (!passed) { diff --git a/packages/cli/src/lib/check.ts b/packages/cli/src/lib/check.ts index 2674b43..61a2fdf 100644 --- a/packages/cli/src/lib/check.ts +++ b/packages/cli/src/lib/check.ts @@ -54,6 +54,7 @@ interface PresentResultsParams { interface RunBuildCheckParams { readonly config: ZpressConfig readonly paths: Paths + readonly verbose?: boolean } interface RunConfigCheckParams { @@ -94,6 +95,10 @@ export function runConfigCheck(params: RunConfigCheckParams): ConfigCheckResult * @returns A `BuildCheckResult` with pass/fail status and any deadlinks found */ export async function runBuildCheck(params: RunBuildCheckParams): Promise { + if (params.verbose) { + return runBuildCheckVerbose(params) + } + const { error, captured } = await captureOutput(() => buildSiteForCheck({ config: params.config, paths: params.paths }) ) @@ -157,6 +162,23 @@ export function presentResults(params: PresentResultsParams): boolean { // Private // --------------------------------------------------------------------------- +/** + * Run the build check without capturing output, letting Rspress/Rspack + * write directly to stdout/stderr so the full error details are visible. + * + * @private + * @param params - Config and paths for the build + * @returns A `BuildCheckResult` with pass/fail status + */ +async function runBuildCheckVerbose(params: RunBuildCheckParams): Promise { + try { + await buildSiteForCheck({ config: params.config, paths: params.paths }) + return { status: 'passed' } + } catch (error) { + return { status: 'error', message: toError(error).message } + } +} + /** * Strip ANSI escape codes from a string. * From 504246d8483b4a77493af67259126c5f7f014931 Mon Sep 17 00:00:00 2001 From: Zac Rosenbauer Date: Mon, 23 Mar 2026 13:47:05 -0400 Subject: [PATCH 5/6] fix(packages/ui): unpin rspress-plugin-file-tree back to ^1.0.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 1.0.4 package does ship dist/ — the earlier missing files were from a stale pnpm store. The copy rule in rslib.config.ts is the actual fix. Co-Authored-By: Claude --- packages/ui/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/ui/package.json b/packages/ui/package.json index 250d1f5..0b2f3aa 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -78,7 +78,7 @@ "react": "^19.2.4", "react-dom": "^19.2.4", "rspress-plugin-devkit": "^1.0.0", - "rspress-plugin-file-tree": "1.0.3", + "rspress-plugin-file-tree": "^1.0.4", "rspress-plugin-katex": "^1.0.0", "rspress-plugin-supersub": "^1.0.0", "typescript": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 914c9ab..f584538 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -397,8 +397,8 @@ importers: specifier: ^1.0.0 version: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) rspress-plugin-file-tree: - specifier: 1.0.3 - version: 1.0.3(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) + specifier: ^1.0.4 + version: 1.0.4(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) rspress-plugin-katex: specifier: ^1.0.0 version: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) @@ -5083,8 +5083,8 @@ packages: peerDependencies: '@rspress/core': ^2.0.0-rc.4 || ^2.0.0 - rspress-plugin-file-tree@1.0.3: - resolution: {integrity: sha512-+z07cGbtxRELATSdDiM/TzsTfgxnycPgTNBjrzhljz9c4boaXCXX7X8slMBLY/QrZMRzIvV74sijoJT2V4iUhw==} + rspress-plugin-file-tree@1.0.4: + resolution: {integrity: sha512-VItnE51w/EDOdvliEnLKBNz2VVmOFx1zdZr8HfjII7Tu8/GQg+BtShjZR0Z8oYtP6zyxheY2H81pe2J4Wdwh0g==} peerDependencies: '@rspress/core': ^2.0.0-rc.4 || ^2.0.0 @@ -11663,7 +11663,7 @@ snapshots: transitivePeerDependencies: - supports-color - rspress-plugin-file-tree@1.0.3(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)): + rspress-plugin-file-tree@1.0.4(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)): dependencies: '@rspress/core': 2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2) rspress-plugin-devkit: 1.0.0(@rspress/core@2.0.6(@types/mdast@4.0.4)(@types/react@19.2.14)(core-js@3.47.0)(micromark-util-types@2.0.2)(micromark@4.0.2)) From feb37bebb8143582c0369dd2f867b7b3c2dbd6d9 Mon Sep 17 00:00:00 2001 From: Zac Rosenbauer Date: Mon, 23 Mar 2026 14:01:10 -0400 Subject: [PATCH 6/6] fix(packages/ui): copy FileTree chunks without clobbering dist root Copy rspress-plugin-file-tree chunk files (0~*.js) to dist root so FileTree.js relative imports resolve correctly. Exclude index.* and components/** to avoid overwriting our own build output. Co-Authored-By: Claude --- packages/ui/rslib.config.ts | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/ui/rslib.config.ts b/packages/ui/rslib.config.ts index 400306e..fe4fbc5 100644 --- a/packages/ui/rslib.config.ts +++ b/packages/ui/rslib.config.ts @@ -25,11 +25,19 @@ export default defineConfig({ output: { target: 'node', cleanDistPath: true, + // Raw-copied files that Rspress's webpack compiles at runtime as global + // components. These are NOT bundled by Rslib — they must exist as standalone + // files on disk because Rspress injects absolute-path `import` statements + // into compiled MDX and webpack resolves them at build time. + // See: packages/ui/CLAUDE.md for constraints on raw-copied components. copy: [ + // Theme directory: copied as-is so Rspress can resolve it via themeDir config { from: './src/theme', to: 'theme', }, + // MermaidRenderer: raw .tsx global component compiled by Rspress's webpack. + // Must only import packages available in Rspress's webpack context (see CLAUDE.md). { from: './src/plugins/mermaid/MermaidRenderer.tsx', to: 'plugins/mermaid/MermaidRenderer.tsx', @@ -38,10 +46,31 @@ export default defineConfig({ from: './src/plugins/mermaid/mermaid.css', to: 'plugins/mermaid/mermaid.css', }, + // rspress-plugin-file-tree: the plugin registers its FileTree component via + // an absolute path (PACKAGE_ROOT/dist/components/FileTree/FileTree). When + // bundled into our index.mjs, __dirname shifts so the resolved path points + // to packages/ui/dist/components/FileTree/FileTree — so the component files + // must exist here. { from: './node_modules/rspress-plugin-file-tree/dist/components', to: 'components', }, + // 🚨 DANGER: This copies files into the dist root and could clobber our own + // output if the plugin adds new non-chunk files. We exclude index.* and + // components/** to avoid known collisions, but this is brittle — if the + // plugin's dist layout changes, verify nothing gets overwritten. + // + // FileTree's Rslib build code-splits icon/language definitions into chunk + // files (0~*.js) at the dist root. FileTree.js imports them via relative + // paths (../../0~311.js), which resolve from dist/components/FileTree/ to + // dist/. We cannot nest these elsewhere — the relative paths are hardcoded. + { + from: './node_modules/rspress-plugin-file-tree/dist', + to: '', + globOptions: { + ignore: ['**/components/**', '**/index.*'], + }, + }, ], }, })