Mechanical bump across the three packages that pull zod directly: - packages/api (8 schema files, ~300 lines) - apps/journal (persona schema in demo-bot.server.ts, 5 API route handlers that introspect parsed.error.issues) - apps/mobile (declared dep; no active imports yet) No code changes required. The legacy methods we use (.url(), .uuid(), .datetime() on strings) still parse identically in v4 via the compat shim, and z.ZodIssueCode.custom retains its runtime value. Error-issue introspection (parsed.error.issues.map(i => ...)) keeps the same shape at the fields we read (path, message, code). All 147 tests across journal + api + packages pass against zod 4.3.6. Follow-ups out of scope for this PR: - Modernise to top-level validator helpers (z.url(), z.iso.datetime()). The legacy string methods are deprecated but not removed. - Consider migrating error introspection to the richer v4 shape (.path is now branded, .input is new) if we ever want structured error surfaces. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
54 lines
1.6 KiB
JSON
54 lines
1.6 KiB
JSON
{
|
|
"name": "@trails-cool/journal",
|
|
"private": true,
|
|
"version": "0.0.1",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "react-router dev",
|
|
"build": "react-router build",
|
|
"start": "node --experimental-strip-types server.ts",
|
|
"typecheck": "react-router typegen && tsc",
|
|
"lint": "eslint .",
|
|
"test": "vitest run"
|
|
},
|
|
"dependencies": {
|
|
"@react-router/node": "catalog:",
|
|
"@react-router/serve": "catalog:",
|
|
"@sentry/node": "catalog:",
|
|
"@sentry/react": "catalog:",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@simplewebauthn/server": "^13.3.0",
|
|
"@trails-cool/api": "workspace:*",
|
|
"@trails-cool/db": "workspace:*",
|
|
"@trails-cool/jobs": "workspace:*",
|
|
"@trails-cool/gpx": "workspace:*",
|
|
"@trails-cool/i18n": "workspace:*",
|
|
"@trails-cool/map": "workspace:*",
|
|
"@trails-cool/sentry-config": "workspace:*",
|
|
"@trails-cool/types": "workspace:*",
|
|
"@trails-cool/ui": "workspace:*",
|
|
"drizzle-orm": "catalog:",
|
|
"isbot": "^5.1.37",
|
|
"jose": "^6.2.2",
|
|
"nodemailer": "^8.0.5",
|
|
"pino": "^10.3.1",
|
|
"prom-client": "^15.1.3",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"react-router": "catalog:",
|
|
"zod": "^4.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"@react-router/dev": "catalog:",
|
|
"@simplewebauthn/types": "^12.0.0",
|
|
"@tailwindcss/vite": "catalog:",
|
|
"@types/nodemailer": "^8.0.0",
|
|
"@types/react": "catalog:",
|
|
"@types/react-dom": "catalog:",
|
|
"@vitejs/plugin-basic-ssl": "^2.3.0",
|
|
"pino-pretty": "^13.1.3",
|
|
"tailwindcss": "catalog:",
|
|
"typescript": "catalog:",
|
|
"vite": "catalog:"
|
|
}
|
|
}
|