{ "name": "@musicshare/api", "version": "0.0.0", "license": "AGPL-3.0-or-later", "private": true, "type": "module", "scripts": { "dev": "concurrently -n api,worker -c blue,magenta \"tsx watch src/server.ts\" \"tsx watch src/worker.ts\"", "build": "tsup", "start": "node dist/server.js", "start:worker": "node dist/worker.js", "typecheck": "tsc -p .", "db:generate": "drizzle-kit generate", "db:migrate": "tsx src/db/migrate.ts", "test": "vitest run", "test:unit": "vitest run --project unit", "test:watch": "vitest", "start:migrate": "node dist/db/migrate.js", "admin:promote": "tsx src/scripts/set-role.ts admin", "admin:demote": "tsx src/scripts/set-role.ts user" }, "dependencies": { "@fastify/cookie": "^11.1.2", "@fastify/cors": "^11.3.0", "@fastify/multipart": "^10.1.2", "@fastify/rate-limit": "^11.2.0", "@fastify/websocket": "^11.3.2", "@musicshare/shared": "*", "@node-rs/argon2": "^2.2.1", "bullmq": "^6.3.11", "dotenv": "^18.0.5", "drizzle-orm": "^0.45.3", "fastify": "^5.12.5", "ioredis": "^6.0.0", "nodemailer": "^10.0.15", "postgres": "^3.4.9", "sharp": "^0.35.5", "undici": "^6.29.0", "web-push": "^3.6.7", "zod": "^4.6.5" }, "devDependencies": { "@types/node": "^26.6.4", "@types/nodemailer": "^8.0.2", "@types/web-push": "^3.6.4", "@types/ws": "^8.18.2", "concurrently": "^10.0.5", "drizzle-kit": "^0.31.11", "tsup": "^8.5.1", "tsx": "^4.23.15", "typescript": "~6.0.3", "vitest": "^5.0.3" } }