Brings pnpm audit to zero (was 47 going in this session). These three couldn't be cleanly bumped at the top level because they're transitive deps of dev tools we can't touch yet: - vite@8.0.0 came in via vitest@4.1.5 (which is the latest vitest); fixes Vite ".../fs.deny" bypass + arbitrary file read via dev-server WebSocket (both high). - Older esbuild dupes came via tsx, drizzle-kit, vite, etc.; fixes esbuild dev-server CORS-bypass advisory. - Older postcss dupes came via postcss-import / postcss-js / postcss-nested / postcss-load-config (all transitive of tailwindcss 3); fixes the unescaped </style> XSS in stringify output. `pnpm.overrides` syntax in package.json forces the version everywhere. Used an exact pin for vite (it's strict-pinned by vitest) and >= ranges for the other two. Also rolled esbuild dev dep back to 0.27.7 to satisfy vitest's peer dep (vitest expects ^0.27.0; we'd briefly bumped to 0.28.0). Tests: 1185/1185. pnpm audit: 0 vulnerabilities. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
140 lines
4.7 KiB
JSON
140 lines
4.7 KiB
JSON
{
|
|
"name": "port-nimara-crm",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"packageManager": "pnpm@10.33.2",
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build && pnpm build:server",
|
|
"build:server": "esbuild src/server.ts --bundle --platform=node --target=node20 --format=cjs --outdir=dist --packages=external --tsconfig=tsconfig.server.json",
|
|
"build:worker": "esbuild src/worker.ts --bundle --platform=node --target=node20 --format=cjs --outdir=dist --packages=external --tsconfig=tsconfig.server.json",
|
|
"start": "next start",
|
|
"lint": "next lint",
|
|
"format": "prettier --write \"src/**/*.{ts,tsx,json,css}\"",
|
|
"db:generate": "drizzle-kit generate",
|
|
"db:push": "drizzle-kit push",
|
|
"db:studio": "drizzle-kit studio",
|
|
"db:seed": "tsx src/lib/db/seed.ts",
|
|
"db:seed:realistic": "tsx src/lib/db/seed.ts",
|
|
"db:seed:synthetic": "tsx src/lib/db/seed-synthetic.ts",
|
|
"db:reset": "tsx scripts/db-reset.ts --confirm",
|
|
"db:reseed:realistic": "pnpm db:reset && pnpm db:seed:realistic",
|
|
"db:reseed:synthetic": "pnpm db:reset && pnpm db:seed:synthetic",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:smoke": "playwright test --project=smoke",
|
|
"test:e2e:exhaustive": "playwright test --project=exhaustive",
|
|
"test:e2e:destructive": "playwright test --project=destructive",
|
|
"prepare": "husky || true"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@hookform/resolvers": "^3.10.0",
|
|
"@pdfme/common": "^6.1.2",
|
|
"@pdfme/generator": "^6.1.2",
|
|
"@pdfme/schemas": "^6.1.2",
|
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
"@radix-ui/react-avatar": "^1.1.11",
|
|
"@radix-ui/react-checkbox": "^1.3.3",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-icons": "^1.3.2",
|
|
"@radix-ui/react-label": "^2.1.8",
|
|
"@radix-ui/react-navigation-menu": "^1.2.14",
|
|
"@radix-ui/react-popover": "^1.1.15",
|
|
"@radix-ui/react-progress": "^1.1.8",
|
|
"@radix-ui/react-radio-group": "^1.3.8",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.8",
|
|
"@radix-ui/react-slider": "^1.3.6",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@socket.io/redis-adapter": "^8.3.0",
|
|
"@tanstack/react-query": "^5.100.9",
|
|
"@tanstack/react-query-devtools": "^5.100.9",
|
|
"@tanstack/react-table": "^8.21.3",
|
|
"@types/pdfkit": "^0.17.6",
|
|
"archiver": "^8.0.0",
|
|
"better-auth": "^1.6.9",
|
|
"bullmq": "^5.76.6",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"date-fns": "^4.1.0",
|
|
"drizzle-orm": "^0.45.2",
|
|
"imapflow": "^1.3.3",
|
|
"ioredis": "^5.10.1",
|
|
"iso-3166-2": "^1.0.0",
|
|
"jose": "^6.2.3",
|
|
"libphonenumber-js": "^1.12.43",
|
|
"lucide-react": "^1.14.0",
|
|
"mailparser": "^3.9.8",
|
|
"minio": "^8.0.7",
|
|
"next": "15.5.18",
|
|
"next-themes": "^0.4.6",
|
|
"nodemailer": "^8.0.7",
|
|
"openai": "^6.37.0",
|
|
"pdf-lib": "^1.17.1",
|
|
"pdfkit": "^0.18.0",
|
|
"pino": "^10.3.1",
|
|
"pino-pretty": "^13.1.3",
|
|
"postgres": "^3.4.9",
|
|
"react": "^19.2.6",
|
|
"react-day-picker": "^9.14.0",
|
|
"react-dom": "^19.2.6",
|
|
"react-easy-crop": "^5.5.7",
|
|
"react-hook-form": "^7.75.0",
|
|
"recharts": "^3.8.1",
|
|
"sharp": "^0.34.5",
|
|
"socket.io": "^4.8.3",
|
|
"socket.io-client": "^4.8.3",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.5.0",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"tesseract.js": "^7.0.0",
|
|
"vaul": "^1.1.2",
|
|
"zod": "^3.25.76",
|
|
"zustand": "^5.0.13"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/eslintrc": "^3.3.5",
|
|
"@playwright/test": "^1.59.1",
|
|
"@types/archiver": "^7.0.0",
|
|
"@types/iso-3166-2": "^1.0.4",
|
|
"@types/mailparser": "^3.4.6",
|
|
"@types/node": "^25.6.2",
|
|
"@types/nodemailer": "^8.0.0",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@vitest/coverage-v8": "^4.1.5",
|
|
"autoprefixer": "^10.5.0",
|
|
"dotenv": "^17.4.2",
|
|
"drizzle-kit": "^0.31.10",
|
|
"esbuild": "^0.27.7",
|
|
"eslint": "^9.39.4",
|
|
"eslint-config-next": "15.5.18",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"husky": "^9.1.7",
|
|
"lint-staged": "^17.0.3",
|
|
"postcss": "^8.5.14",
|
|
"prettier": "^3.8.3",
|
|
"react-grab": "^0.1.33",
|
|
"tailwindcss": "^3.4.19",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^6.0.3",
|
|
"vitest": "^4.1.5"
|
|
},
|
|
"pnpm": {
|
|
"overrides": {
|
|
"vite": "8.0.5",
|
|
"esbuild": ">=0.25.0",
|
|
"postcss": ">=8.5.10"
|
|
}
|
|
}
|
|
}
|