Files
nextcraft/apps/web/package.json
T
CIAgent dc00a4f8f5 chore(P05): type & dependency hardening — mypy + recharts 3 (REQ-7-005)
Wave 5-1 mypy adoption (D-058 relaxed-first): mypy 2.3.1, [tool.mypy]
check_untyped_defs + no_implicit_optional + warn_unused_ignores +
warn_redundant_casts + warn_unreachable, no overrides (every dep ships
py.typed), files = ai_service + scripts/sandbox-agent.py + tests (not
excluded). 215 errors → 0: ~140 fixed at source incl. genuine bugs found
by the gate (LLMProvider protocol async-generator shape, SessionStore
protocol sync/async mismatch, structured_reply genericity, get_args
migrations, sandbox-agent Optional guard honesty, proctor test arg-order,
dead ExecResult kwarg, 16 sqlmodel col() sites); 34 live suppressions
scoped-coded + reasoned. Original 27 type:ignore dispositioned: 12 dead
removed, 15 scoped (warn_unused_ignores self-eliminates the rest).
Wired: scripts/typecheck.sh + package.json + turbo task + root
ai:typecheck — pnpm typecheck now 5 tsc + mypy.

Wave 5-2 recharts 2.15.4 → 3.10.1 (D-049/D-059): one breaking class
(Tooltip formatter ValueType typing); 2 one-line inference fixes on the
2 chart files; no rollback needed (well inside the G-106 timebox).
Deprecated direct dep resolved; uuid@9 gone from the tree. Build 248/248
with chart SSR markers verified in exported employer + dashboard pages.

Wave 5-3 deprecated-transitive audit (G-109): 4 lockfile entries remain,
all dev-only, none actionable within NFR budget — glob@7.2.3 + inflight +
rimraf@3 via Storybook docgen chain (flat-cache@3); glob@10.5.0 via
c8→test-exclude (D-052-binding coverage tool — swapping it is out of
budget). Python: no EOL packages; zero-warning regime under
filterwarnings=error is the machine-checked proof.

Counts: 670 py / 44 web / 64 cli, zero warnings, G-104 allowlist still
exactly 2.

---ci---
phase: 5
milestone: v0.7
status: execute
---/ci---
2026-09-27 10:08:07 +00:00

46 lines
1.2 KiB
JSON

{
"name": "web",
"version": "0.1.0",
"private": true,
"type": "module",
"engines": {
"node": ">=20.0.0"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"typecheck": "tsc --noEmit",
"lint": "eslint .",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"test": "tsx --test tests/*.test.ts",
"test:cov": "c8 --include=lib/** --include=hooks/** --include=components/marketplace/** --reporter=text --reporter=text-summary tsx --test tests/*.test.ts"
},
"dependencies": {
"@nextcraft/mock-data": "workspace:*",
"@nextcraft/types": "workspace:*",
"@nextcraft/ui": "workspace:*",
"@xyflow/react": "^12.3.5",
"lucide-react": "^0.468.0",
"next": "^15.1.3",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"recharts": "^3"
},
"devDependencies": {
"@storybook/nextjs": "^10.6.0",
"@storybook/react": "^10.6.0",
"@storybook/test": "^8.6.15",
"@tailwindcss/postcss": "^4.0.0",
"@types/node": "20.17.6",
"@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0",
"c8": "^10.1.3",
"storybook": "^10.6.0",
"tailwindcss": "^4.0.0",
"typescript": "^5.7.2",
"tsx": "^4.23.0"
}
}