chore(workspace): update dependencies and tooling versions#571
Conversation
- Updated `turbo`, `tsdown`, and `typescript` versions in `pnpm-workspace.yaml`. - Bumped versions for various packages including `tailwindcss`, `vite`, and `eslint`. - Updated `packageManager` to `pnpm@10.33.0` in multiple `package.json` files. - Added `node` types to `tsconfig/base.build.json`.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughUpdates pnpm packageManager pins across many manifests, bumps workspace/catalog package versions in pnpm-workspace.yaml, adjusts TypeScript tsconfig paths/types, toggles a hotkeys devtools plugin import, modifies some ESLint disable comments, adds a few Changes
Sequence Diagram(s)(none — changes are config/lint/packaging/limited UI plugin swap without new multi-component control flow requiring visualization.) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🌏 Preview Deployments
Built from commit: 🤖 This comment will be updated automatically when you push new commits to this PR. |
There was a problem hiding this comment.
Pull request overview
Updates the monorepo’s dependency/tooling versions (notably pnpm, TypeScript, and several build/test/lint tools) and applies the related configuration/lint adjustments needed for the upgrade.
Changes:
- Bump workspace catalog versions (Turbo/TSDown/TypeScript, Vite/Tailwind/ESLint/Vitest, etc.) and update the pnpm packageManager version across packages.
- Update TS build base config to include Node typings and refresh a patched dependency (
zod-to-openapi). - Apply ESLint suppression adjustments for the upgraded React lint rules and add
cleanscripts to select apps.
Reviewed changes
Copilot reviewed 50 out of 51 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
vscode/package.json |
Update packageManager to pnpm@10.33.0. |
tooling/tsconfig/package.json |
Update packageManager to pnpm@10.33.0. |
tooling/tsconfig/base.build.json |
Add types: ["node"] to the shared build tsconfig. |
tooling/moonbeam/package.json |
Update packageManager to pnpm@10.33.0. |
pnpm-workspace.yaml |
Bump catalog/override versions and update patched dependency mapping. |
patches/@asteasolutions__zod-to-openapi@8.5.0.patch |
Refresh patch content for @asteasolutions/zod-to-openapi@8.5.0. |
packages/worker-utils/package.json |
Update packageManager to pnpm@10.33.0. |
packages/utils/package.json |
Update packageManager to pnpm@10.33.0. |
packages/ucdjs-scripts/package.json |
Update packageManager to pnpm@10.33.0. |
packages/ucd-store/package.json |
Update packageManager to pnpm@10.33.0. |
packages/test-utils/package.json |
Update packageManager to pnpm@10.33.0. |
packages/shared/package.json |
Update packageManager to pnpm@10.33.0. |
packages/shared-ui/package.json |
Update packageManager to pnpm@10.33.0. |
packages/schemas/package.json |
Update packageManager to pnpm@10.33.0. |
packages/schema-gen/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-server/test/browser/routes/s.$sourceId.$sourceFileId.$pipelineId.executions.$executionId.graph.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/routes/pipeline-command-palette.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/route-test-utils.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/components/graph/graph-details.test.tsx |
Add targeted ESLint suppression in a mock factory. |
packages/pipelines/pipeline-server/test/browser/components/execution/span-drawer.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/components/execution/execution-table.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/components/app/source-switcher.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/components/app/pipeline-sidebar.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/test/browser/components/app/pipeline-sidebar-source-file-list.test.tsx |
Add ESLint suppression for updated React lint rule. |
packages/pipelines/pipeline-server/src/client/app-router.tsx |
Add targeted ESLint suppression for inline Wrap component. |
packages/pipelines/pipeline-server/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-presets/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-playground/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-loader/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-graph/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-executor/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-core/package.json |
Update packageManager to pnpm@10.33.0. |
packages/pipelines/pipeline-artifacts/package.json |
Update packageManager to pnpm@10.33.0. |
packages/path-utils/package.json |
Update packageManager to pnpm@10.33.0. |
packages/lockfile/package.json |
Update packageManager and bump an inlined dependency version. |
packages/fs-bridge/package.json |
Update packageManager and bump an inlined dependency version. |
packages/fs-backend/package.json |
Update packageManager and bump an inlined dependency version. |
packages/env/package.json |
Update packageManager to pnpm@10.33.0. |
packages/client/package.json |
Update packageManager to pnpm@10.33.0. |
packages/cli/package.json |
Update packageManager to pnpm@10.33.0. |
package.json |
Update root packageManager to pnpm@10.33.0. |
apps/web/src/router.tsx |
Add targeted ESLint suppression for inline Wrap component. |
apps/web/src/components/file-explorer/file-viewer.tsx |
Remove an ESLint suppression comment around setState in effect. |
apps/web/shims/use-sync-external-store-shim.ts |
Update ESLint suppression rule IDs to match new plugin naming. |
apps/web/package.json |
Update packageManager and add a clean script. |
apps/store/package.json |
Update packageManager to pnpm@10.33.0. |
apps/docs/package.json |
Update packageManager and add a clean script. |
apps/api/package.json |
Update packageManager to pnpm@10.33.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| /* eslint-disable react/component-hook-factories */ |
| "tsBuildInfoFile": "${configDir}/.cache/tsbuildinfo.json", | ||
| "types": [ | ||
| "node" | ||
| ] |
There was a problem hiding this comment.
compilerOptions.types replaces TypeScript’s default behavior of auto-including any installed @types/* packages. With this set to only ["node"], any project extending this base config will not get other global type packages (e.g. vite/client, vitest/globals, etc.) unless they explicitly add them in their own tsconfig. If the goal is just to ensure Node typings are available, consider limiting this to Node-only configs or ensuring downstream configs that set types merge in node as needed.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
Disabling react/component-hook-factories for the entire test file is very broad and can hide unrelated lint findings. Prefer scoping the suppression to the specific line/block that triggers it (or refactor the wrapper/component factory that causes the warning) so the rest of the file remains linted normally.
| /* eslint-disable react/component-hook-factories */ |
| // eslint-disable-next-line react/component-hook-factories | ||
| Wrap: (props: { children: React.ReactNode }) => { | ||
| return ( |
There was a problem hiding this comment.
This inline Wrap component is being exempted from react/component-hook-factories. Consider hoisting Wrap to a top-level component (or otherwise making it a stable component) so you can remove the eslint suppression and avoid recreating a new component definition each time the router is created.
| // eslint-disable-next-line react/component-hook-factories | ||
| Wrap(props) { | ||
| return ( | ||
| <HotkeysProvider> |
There was a problem hiding this comment.
This inline Wrap component is being exempted from react/component-hook-factories. Consider hoisting Wrap to a top-level component (or otherwise making it a stable component) so you can remove the eslint suppression and avoid recreating a new component definition each time the router is created.
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (3)
packages/pipelines/pipeline-server/test/browser/components/app/source-switcher.test.tsx (1)
1-1: Consider narrowing the ESLint disable scope or adding a justification comment.Disabling
react/component-hook-factoriesat the file level suppresses the rule for the entire test file. If this is due to specific patterns in the mock implementations (e.g., lines 30-45), consider using inlineeslint-disable-next-linecomments on the specific offending lines instead, or add a brief comment explaining why the blanket disable is necessary for this test file.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/pipelines/pipeline-server/test/browser/components/app/source-switcher.test.tsx` at line 1, The file-level disable of the react/component-hook-factories rule is too broad; either replace the top-line "/* eslint-disable react/component-hook-factories */" with targeted inline disables on the specific test lines that trigger the rule (use "eslint-disable-next-line react/component-hook-factories" immediately above the offending mocks) or keep the file-level disable but add a brief justification comment explaining why the test patterns (e.g., the mock implementations around the offending lines) require this blanket suppression so reviewers understand the intent.packages/pipelines/pipeline-server/src/client/app-router.tsx (1)
39-48: Consider refactoring to avoid ESLint suppression in production code.While the ESLint suppression here is technically safe (the
Wrapcomponent doesn't use hooks directly), defining components inside factory functions is generally discouraged because it creates a new component type on every call, which could cause unnecessary remounts if the factory is called multiple times.Consider refactoring to define
Wrapoutside the factory and passqueryClientas a prop, or confirm that the TanStack Router API requires this pattern.♻️ Potential refactor to avoid suppression
+function RouterWrap({ + queryClient, + children +}: { + queryClient: QueryClient; + children: React.ReactNode; +}) { + return ( + <HotkeysProvider> + <QueryClientProvider client={queryClient}> + {children} + </QueryClientProvider> + </HotkeysProvider> + ); +} + export function createAppRouter({ history, queryClient = createAppQueryClient(), }: { history?: RouterHistory; queryClient?: QueryClient; } = {}) { return createRouter({ history, routeTree, context: { queryClient, }, defaultPreload: "intent", defaultPreloadStaleTime: 0, - // eslint-disable-next-line react/component-hook-factories - Wrap(props) { - return ( - <HotkeysProvider> - <QueryClientProvider client={queryClient}> - {props.children} - </QueryClientProvider> - </HotkeysProvider> - ); - }, + Wrap: (props) => <RouterWrap queryClient={queryClient}>{props.children}</RouterWrap>, }); }Note: Verify that TanStack Router's
WrapAPI accepts components defined this way.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/pipelines/pipeline-server/src/client/app-router.tsx` around lines 39 - 48, The inline Wrap component inside the factory creates a new component instance on each call and uses an eslint-disable; extract Wrap into a top-level React component (e.g., function Wrap({ children, queryClient })) that renders HotkeysProvider -> QueryClientProvider with queryClient prop, remove the eslint-disable, and pass the existing queryClient into the top-level Wrap when registering it with the router (or confirm the TanStack Router API requires a factory and, if so, memoize the component or queryClient to avoid remounts). Ensure you update any references where Wrap was used inside the factory to use the top-level Wrap and keep the providers (HotkeysProvider, QueryClientProvider) intact.packages/pipelines/pipeline-server/test/browser/components/execution/span-drawer.test.tsx (1)
1-1: ESLint suppression is appropriate for test mocks.The
react/component-hook-factoriessuppression is necessary because the mocked components (lines 11-30) are intentionally created within a factory function (vi.mock). This is standard practice for testing and doesn't represent a real violation.Optional: Consider more targeted suppression
If you prefer to limit the suppression scope, you could apply it only to the mock block:
-/* eslint-disable react/component-hook-factories */ import type { ExecutionSpan } from "#lib/execution-utils"; import type { ReactNode } from "react"; import { ExecutionSpanDrawer } from "#components/execution/span-drawer"; import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { describe, expect, it, vi } from "vitest"; +/* eslint-disable react/component-hook-factories */ vi.mock("@ucdjs-internal/shared-ui/ui/sheet", () => { return { Sheet: ({ // ... }; }); +/* eslint-enable react/component-hook-factories */🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/pipelines/pipeline-server/test/browser/components/execution/span-drawer.test.tsx` at line 1, The ESLint suppression for react/component-hook-factories at the top of the test is acceptable because the mock components are created inside the vi.mock factory; to be more targeted, move the suppression so it only covers the mock block by placing an inline eslint-disable-next-line react/component-hook-factories immediately before the vi.mock(...) call (or wrap just the mocked component block with /* eslint-disable react/component-hook-factories */ ... /* eslint-enable react/component-hook-factories */), leaving the rest of span-drawer.test.tsx unaffected.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@packages/lockfile/package.json`:
- Line 61: Replace the hardcoded "hookable": "6.1.0" entry with the centralized
catalog reference inside the package.json's inlinedDependencies section: change
the hookable dependency declaration under "inlinedDependencies" to use
"catalog:runtime" so it pulls the version from the runtime catalog rather than
hardcoding it.
In
`@packages/pipelines/pipeline-server/test/browser/components/execution/execution-table.test.tsx`:
- Line 1: Extract the inline Link mock used in execution-table.test.tsx into a
shared test utility (e.g., export a mocked Link component from a new or existing
test helper similar to route-test-utils.tsx) and update
execution-table.test.tsx, pipeline-sidebar.test.tsx, and
pipeline-sidebar-source-file-list.test.tsx to import that mock instead of
redefining it; remove or narrow the file-level eslint-disable
react/component-hook-factories in those tests and keep the suppression only
where the mock is defined (the new utility), ensuring the unique symbol names
(the mocked Link component used in these tests and the route-test-utils.tsx
pattern) are reused across the test files.
---
Nitpick comments:
In `@packages/pipelines/pipeline-server/src/client/app-router.tsx`:
- Around line 39-48: The inline Wrap component inside the factory creates a new
component instance on each call and uses an eslint-disable; extract Wrap into a
top-level React component (e.g., function Wrap({ children, queryClient })) that
renders HotkeysProvider -> QueryClientProvider with queryClient prop, remove the
eslint-disable, and pass the existing queryClient into the top-level Wrap when
registering it with the router (or confirm the TanStack Router API requires a
factory and, if so, memoize the component or queryClient to avoid remounts).
Ensure you update any references where Wrap was used inside the factory to use
the top-level Wrap and keep the providers (HotkeysProvider, QueryClientProvider)
intact.
In
`@packages/pipelines/pipeline-server/test/browser/components/app/source-switcher.test.tsx`:
- Line 1: The file-level disable of the react/component-hook-factories rule is
too broad; either replace the top-line "/* eslint-disable
react/component-hook-factories */" with targeted inline disables on the specific
test lines that trigger the rule (use "eslint-disable-next-line
react/component-hook-factories" immediately above the offending mocks) or keep
the file-level disable but add a brief justification comment explaining why the
test patterns (e.g., the mock implementations around the offending lines)
require this blanket suppression so reviewers understand the intent.
In
`@packages/pipelines/pipeline-server/test/browser/components/execution/span-drawer.test.tsx`:
- Line 1: The ESLint suppression for react/component-hook-factories at the top
of the test is acceptable because the mock components are created inside the
vi.mock factory; to be more targeted, move the suppression so it only covers the
mock block by placing an inline eslint-disable-next-line
react/component-hook-factories immediately before the vi.mock(...) call (or wrap
just the mocked component block with /* eslint-disable
react/component-hook-factories */ ... /* eslint-enable
react/component-hook-factories */), leaving the rest of span-drawer.test.tsx
unaffected.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: f222f9ee-b3dc-4b34-90f5-a107abc6bac9
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (48)
apps/api/package.jsonapps/docs/package.jsonapps/store/package.jsonapps/web/package.jsonapps/web/shims/use-sync-external-store-shim.tsapps/web/src/components/file-explorer/file-viewer.tsxapps/web/src/router.tsxpackage.jsonpackages/cli/package.jsonpackages/client/package.jsonpackages/env/package.jsonpackages/fs-backend/package.jsonpackages/fs-bridge/package.jsonpackages/lockfile/package.jsonpackages/path-utils/package.jsonpackages/pipelines/pipeline-artifacts/package.jsonpackages/pipelines/pipeline-core/package.jsonpackages/pipelines/pipeline-executor/package.jsonpackages/pipelines/pipeline-graph/package.jsonpackages/pipelines/pipeline-loader/package.jsonpackages/pipelines/pipeline-playground/package.jsonpackages/pipelines/pipeline-presets/package.jsonpackages/pipelines/pipeline-server/package.jsonpackages/pipelines/pipeline-server/src/client/app-router.tsxpackages/pipelines/pipeline-server/test/browser/components/app/pipeline-sidebar-source-file-list.test.tsxpackages/pipelines/pipeline-server/test/browser/components/app/pipeline-sidebar.test.tsxpackages/pipelines/pipeline-server/test/browser/components/app/source-switcher.test.tsxpackages/pipelines/pipeline-server/test/browser/components/execution/execution-table.test.tsxpackages/pipelines/pipeline-server/test/browser/components/execution/span-drawer.test.tsxpackages/pipelines/pipeline-server/test/browser/components/graph/graph-details.test.tsxpackages/pipelines/pipeline-server/test/browser/route-test-utils.tsxpackages/pipelines/pipeline-server/test/browser/routes/pipeline-command-palette.test.tsxpackages/pipelines/pipeline-server/test/browser/routes/s.$sourceId.$sourceFileId.$pipelineId.executions.$executionId.graph.test.tsxpackages/schema-gen/package.jsonpackages/schemas/package.jsonpackages/shared-ui/package.jsonpackages/shared/package.jsonpackages/test-utils/package.jsonpackages/ucd-store/package.jsonpackages/ucdjs-scripts/package.jsonpackages/utils/package.jsonpackages/worker-utils/package.jsonpatches/@asteasolutions__zod-to-openapi@8.5.0.patchpnpm-workspace.yamltooling/moonbeam/package.jsontooling/tsconfig/base.build.jsontooling/tsconfig/package.jsonvscode/package.json
💤 Files with no reviewable changes (1)
- apps/web/src/components/file-explorer/file-viewer.tsx
| }, | ||
| "inlinedDependencies": { | ||
| "hookable": "6.0.1" | ||
| "hookable": "6.1.0" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify hookable version 6.1.0 exists and check for any breaking changes
# Check if version exists on npm
echo "=== Checking hookable@6.1.0 availability ==="
npm view hookable@6.1.0 version
# Get changelog/release notes between versions
echo -e "\n=== Checking for breaking changes ==="
npm view hookable@6.0.1 homepage
npm view hookable@6.1.0 homepage
# Search for hookable usage in the codebase to assess impact
echo -e "\n=== Finding hookable usage in lockfile package ==="
rg -n "hookable" packages/lockfile/src --type ts -C 2Repository: ucdjs/ucd
Length of output: 274
🏁 Script executed:
# Check the package.json structure around the hookable dependency
head -n 70 packages/lockfile/package.json | tail -n 20Repository: ucdjs/ucd
Length of output: 579
🏁 Script executed:
# Check if pnpm-workspace.yaml exists and uses catalogs
cat pnpm-workspace.yaml 2>/dev/null || echo "File not found"Repository: ucdjs/ucd
Length of output: 4517
🏁 Script executed:
# Look for all inlinedDependencies sections in the workspace
rg "inlinedDependencies" -A 5 -B 1Repository: ucdjs/ucd
Length of output: 742
Use catalog reference for centralized dependency versioning.
The hookable dependency should reference catalog:runtime instead of hardcoding the version directly. The version is already centralized in pnpm-workspace.yaml (runtime catalog), so the package.json should use:
"inlinedDependencies": {
"hookable": "catalog:runtime"
}This aligns with the project's dependency management guidelines.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@packages/lockfile/package.json` at line 61, Replace the hardcoded "hookable":
"6.1.0" entry with the centralized catalog reference inside the package.json's
inlinedDependencies section: change the hookable dependency declaration under
"inlinedDependencies" to use "catalog:runtime" so it pulls the version from the
runtime catalog rather than hardcoding it.
| @@ -1,3 +1,4 @@ | |||
| /* eslint-disable react/component-hook-factories */ | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check what specific violations are being suppressed and find similar patterns
# Search for other react/component-hook-factories suppressions in test files
rg -n "react/component-hook-factories" --type=tsx --type=ts -g "**test**"
# Look for the pattern that might be triggering the rule (factory functions returning components)
rg -n "vi\.mock.*react-router" -A 20 -g "**test**.tsx"Repository: ucdjs/ucd
Length of output: 12757
🏁 Script executed:
# Find the test-utils directory and see what utilities exist
find . -type d -name "test-utils" -o -name "*test-utils*" | head -20
# Search for existing mock utilities or helpers
fd -t f -e ts -e tsx "test.*utils\|mock.*helpers" | head -20
# Check if there are any existing router mock utilities
rg -l "react-router\|@tanstack/react-router" --type=ts --type=tsx | grep -i "util\|helper" | head -20Repository: ucdjs/ucd
Length of output: 352
🏁 Script executed:
# Check the route-test-utils.tsx file
cat -n "./packages/pipelines/pipeline-server/test/browser/route-test-utils.tsx"
# List contents of the root test-utils directory
ls -la "./packages/test-utils/"
# Check what's exported from root test-utils
head -50 "./packages/test-utils/index.ts" 2>/dev/null || head -50 "./packages/test-utils/index.js" 2>/dev/null || ls -la "./packages/test-utils/"Repository: ucdjs/ucd
Length of output: 3490
🏁 Script executed:
# Read the execution-table.test.tsx file to understand its structure
wc -l "./packages/pipelines/pipeline-server/test/browser/components/execution/execution-table.test.tsx"
# Get the first 100 lines to see the setup
head -100 "./packages/pipelines/pipeline-server/test/browser/components/execution/execution-table.test.tsx"Repository: ucdjs/ucd
Length of output: 3020
Extract the Link mock to a reusable test utility.
The react/component-hook-factories suppression is necessary here, as confirmed by the same pattern in route-test-utils.tsx within the same package. However, the inline Link mock can be extracted to a reusable utility and shared across multiple test files (execution-table.test.tsx, pipeline-sidebar.test.tsx, pipeline-sidebar-source-file-list.test.tsx) that currently duplicate this pattern. This aligns with the codebase's established use of test utilities and reduces suppression scope.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@packages/pipelines/pipeline-server/test/browser/components/execution/execution-table.test.tsx`
at line 1, Extract the inline Link mock used in execution-table.test.tsx into a
shared test utility (e.g., export a mocked Link component from a new or existing
test helper similar to route-test-utils.tsx) and update
execution-table.test.tsx, pipeline-sidebar.test.tsx, and
pipeline-sidebar-source-file-list.test.tsx to import that mock instead of
redefining it; remove or narrow the file-level eslint-disable
react/component-hook-factories in those tests and keep the suppression only
where the mock is defined (the new utility), ensuring the unique symbol names
(the mocked Link component used in these tests and the route-test-utils.tsx
pattern) are reused across the test files.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@pnpm-workspace.yaml`:
- Line 29: The TypeScript version pin "typescript: 6.0.2" in the workspace
causes incompatibility with the lint stack; change the workspace TypeScript
entry (the line containing "typescript: 6.0.2") to a supported version
(downgrade to the latest 5.x, e.g., 5.x.y) OR update the lint deps
(`@typescript-eslint/utils` and `@luxass/eslint-config`) to releases that explicitly
support TypeScript 6.x so their semver constraints no longer conflict; ensure
package.json/pnpm lock entries and any CI/build configs reflect the same version
to avoid mismatched installs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: f5c10130-2a69-436d-bdda-93485b88af67
📒 Files selected for processing (3)
apps/docs/tsconfig.jsonpnpm-workspace.yamltooling/tsconfig/base.json
| tsdown: 0.21.2 | ||
| typescript: 5.9.3 | ||
| tsdown: 0.21.4 | ||
| typescript: 6.0.2 |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
What TypeScript version range is officially supported by @typescript-eslint/utils8.57.2 and@luxass/eslint-config 7.4.1? Do they support TypeScript 6.0.x and ESLint 10.x?
💡 Result:
@typescript-eslint/utils 8.57.2 officially supports TypeScript >=4.8.4 <6.0.0 and ESLint ^8.57.0 || ^9.0.0 || ^10.0.0. @luxass/eslint-config 7.4.1 (based on v7.3.0 data, as exact version not found but recent) depends on @typescript-eslint/* ^8.57.0 and requires peer ESLint ^9.10.0 || ^10.0.0, thus inherits the same TypeScript support range >=4.8.4 <6.0.0. Neither supports TypeScript 6.0.x (explicitly upper bounded <6.0.0). Both support ESLint 10.x.
Citations:
- 1: https://typescript-eslint.io/users/dependency-versions
- 2: https://registry.npmjs.org/%40typescript-eslint%2Ftype-utils
- 3: https://registry.npmjs.org/%40luxass%2Feslint-config
TypeScript 6.0.2 is incompatible with the current lint stack and will cause build failures.
@typescript-eslint/utils 8.57.2 and @luxass/eslint-config 7.4.1 both require TypeScript >=4.8.4 <6.0.0. Upgrading to TypeScript 6.0.2 violates this constraint and will break the build. Either downgrade TypeScript to the latest 5.x version or upgrade the lint packages to versions that support TypeScript 6.x.
Also applies to: 67-73
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@pnpm-workspace.yaml` at line 29, The TypeScript version pin "typescript:
6.0.2" in the workspace causes incompatibility with the lint stack; change the
workspace TypeScript entry (the line containing "typescript: 6.0.2") to a
supported version (downgrade to the latest 5.x, e.g., 5.x.y) OR update the lint
deps (`@typescript-eslint/utils` and `@luxass/eslint-config`) to releases that
explicitly support TypeScript 6.x so their semver constraints no longer
conflict; ensure package.json/pnpm lock entries and any CI/build configs reflect
the same version to avoid mismatched installs.
🔗 Linked issue
📚 Description
turbo,tsdown, andtypescriptversions inpnpm-workspace.yaml.tailwindcss,vite, andeslint.packageManagertopnpm@10.33.0in multiplepackage.jsonfiles.nodetypes totsconfig/base.build.json.Summary by CodeRabbit
Chores
Tests / Lint
Refactor