{ "name": "email-forecast", "version": "1.0.0", "private": true, "scripts": { "dev": "node scripts/dev-stack.mjs", "dev:web": "next dev -p 3100", "dev:turbo": "next dev --turbopack -p 3100", "build": "next build && tsc -p tsconfig.worker.json", "start": "next start -p 3100", "worker": "tsx src/worker/index.ts", "dev:stack": "node scripts/dev-stack.mjs", "fix:ui-zh": "tsx scripts/rewrite-mail-business-summary.ts", "compose:up": "docker compose up --build -d", "compose:up:core": "docker compose up -d mysql worker", "compose:logs": "docker compose logs -f --tail=100", "compose:ps": "docker compose ps", "lint": "next lint", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", "db:generate": "prisma generate", "db:migrate": "prisma migrate deploy", "db:migrate:dev": "prisma migrate dev", "db:seed": "tsx prisma/seed.ts", "db:push": "prisma db push", "cc:smoke": "tsx scripts/cc-smoke.ts", "imap:smoke": "tsx scripts/imap-smoke.ts", "imap:poll": "tsx scripts/imap-poll.ts", "sample:mail3": "tsx scripts/ingest-mail3.ts", "sample:mails": "tsx scripts/ingest-sample-mails.ts", "sample:do": "tsx scripts/ingest-do-upload-ui.ts", "sample:recognize": "tsx scripts/ingest-recognize-gold.ts", "sample:flatten": "tsx scripts/flatten-mail-attachments.ts", "sample:scan": "tsx scripts/scan-mail-samples.ts", "retention:cleanup": "tsx scripts/retention-cleanup.ts", "postinstall": "prisma generate" }, "dependencies": { "@ant-design/cssinjs": "^1.22.0", "@ant-design/icons": "^5.5.2", "@ant-design/v5-patch-for-react-19": "^1.0.3", "@prisma/client": "^5.22.0", "@tanstack/react-virtual": "^3.11.2", "adm-zip": "^0.5.16", "antd": "^5.22.6", "exceljs": "^4.4.0", "imapflow": "^1.0.181", "iron-session": "^8.0.4", "mailparser": "^3.7.2", "mysql2": "^3.23.1", "next": "^15.1.3", "pino": "^9.6.0", "react": "^18.3.1", "react-dom": "^18.3.1", "undici": "^6.21.0", "uuid": "^11.0.3", "zod": "^3.24.1" }, "devDependencies": { "@playwright/test": "^1.49.1", "@types/adm-zip": "^0.5.7", "@types/mailparser": "^3.4.5", "@types/mysql": "^2.15.27", "@types/node": "^20.17.10", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@types/uuid": "^10.0.0", "prisma": "^5.22.0", "tsx": "^4.19.2", "typescript": "^5.7.2", "vitest": "^2.1.8" }, "prisma": { "seed": "tsx prisma/seed.ts" } }