fix(deps,types): resolve vitest/eslint version drift, fix JSX type error
Some checks failed
build-and-release / build (push) Has been cancelled

Steps 7/8 of the live-server runbook (npm run lint / tsc --noEmit)
surfaced two unrelated pre-existing issues:

- node_modules/eslint was 10.1.0 despite package.json declaring
  ^8.57.1 and package-lock.json correctly recording 8.57.1 - a
  legacy .eslintrc.cjs config can't run under ESLint v9+, which
  dropped the old config format by default. Root cause: @vitest/browser
  and @vitest/coverage-v8 were still pinned to ^3.2.4 while vitest
  itself had been bumped to ^4.1.1, an internal peer-dependency
  conflict that forced node_modules into an inconsistent state
  whenever anyone ran npm install without --legacy-peer-deps. Bumped
  both to ^4.1.4 to resolve the conflict at its source, then a clean
  npm install correctly restored eslint@8.57.1.

- ExploreServicesPage.tsx's RoleCard.Icon field was typed as
  , which TypeScript correctly refuses to accept
  as a JSX component ('card.Icon' cannot be used as a JSX component).
  lucide-solid's actual icon components return solid-js's JSX.Element
  (confirmed via node_modules/lucide-solid's own .d.ts) - fixed the
  annotation to match reality instead of loosening it.

lint: 0 errors (293 pre-existing warnings elsewhere in src/, untouched
by this session, left as tracked debt per the runbook's own bar).
tsc --noEmit --skipLibCheck: exits 0.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Ashwin Kumar Sivakumar 2026-08-14 00:57:00 +05:30
parent 8801440459
commit 837c42f9c5
3 changed files with 270 additions and 308 deletions

570
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -37,8 +37,8 @@
"@testing-library/jest-dom": "^6.6.3", "@testing-library/jest-dom": "^6.6.3",
"@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/eslint-plugin": "^7.0.0",
"@typescript-eslint/parser": "^7.0.0", "@typescript-eslint/parser": "^7.0.0",
"@vitest/browser": "^3.2.4", "@vitest/browser": "^4.1.4",
"@vitest/coverage-v8": "^3.2.4", "@vitest/coverage-v8": "^4.1.4",
"eslint": "^8.57.1", "eslint": "^8.57.1",
"eslint-plugin-solid": "^0.14.5", "eslint-plugin-solid": "^0.14.5",
"jsdom": "^25.0.1", "jsdom": "^25.0.1",

View file

@ -1,4 +1,4 @@
import { For, Show, createMemo, createSignal, onMount } from "solid-js"; import { For, Show, createMemo, createSignal, onMount, type JSX } from "solid-js";
import { ArrowLeft, Camera, Scissors, GraduationCap, Code2, Clapperboard, PenTool, Megaphone, Dumbbell, UtensilsCrossed, Globe, Users, UserCircle, FileText, TrendingUp, Award, BarChart3, ShieldCheck } from "lucide-solid"; import { ArrowLeft, Camera, Scissors, GraduationCap, Code2, Clapperboard, PenTool, Megaphone, Dumbbell, UtensilsCrossed, Globe, Users, UserCircle, FileText, TrendingUp, Award, BarChart3, ShieldCheck } from "lucide-solid";
import { BTN_GHOST, CARD } from "~/components/DashboardShell"; import { BTN_GHOST, CARD } from "~/components/DashboardShell";
import RoleWizard from "~/components/dashboard/RoleWizard"; import RoleWizard from "~/components/dashboard/RoleWizard";
@ -34,7 +34,7 @@ type RoleCard = {
subtitle: string; subtitle: string;
/** "Register" | "Switch" | "Current Role" | "Under Review" */ /** "Register" | "Switch" | "Current Role" | "Under Review" */
action: string; action: string;
Icon: (props: { size: number; color: string; strokeWidth: number }) => unknown; Icon: (props: { size: number; color: string; strokeWidth: number }) => JSX.Element;
status: "Active" | "Pending" | "Registered" | "Available"; status: "Active" | "Pending" | "Registered" | "Available";
}; };