{ "name": "@music-together/server", "version": "1.0.0", "private": true, "type": "module", "scripts": { "dev": "tsx watch src/index.ts", "build": "tsc", "test": "tsx --test test/audioQualityPolicy.test.ts test/audioProxyPolicy.test.ts test/bilibiliAudioQuality.test.ts test/bilibiliInput.test.ts test/kugouAudioQuality.test.ts test/kugouEncryptedAudio.test.ts test/bilibiliMembership.test.ts test/neteaseMembership.test.ts test/tencentMembership.test.ts test/tencentCredentialRefresh.test.ts test/kugouMembership.test.ts test/membershipRefresh.test.ts test/offlineRoomMembers.test.ts test/platformMembershipMigration.test.ts test/permanentRoomAudioQualityMigration.test.ts test/recommendationParsers.test.ts", "start": "node dist/index.js" }, "dependencies": { "@meting/core": "^1.6.1", "@music-together/shared": "workspace:*", "@neteasecloudmusicapienhanced/api": "^4.30.1", "@s4p/kugou-lrc": "^0.2.0", "bcryptjs": "^3.0.3", "better-sqlite3": "^12.11.1", "cors": "^2.8.5", "dotenv": "^16.4.5", "escape-html": "^1.0.3", "express": "^4.21.0", "lru-cache": "^11.2.6", "nanoid": "^5.0.9", "p-limit": "^7.3.0", "pino": "^10.3.1", "pino-pretty": "^13.1.3", "qrcode": "^1.5.4", "rate-limiter-flexible": "^9.1.1", "sharp": "^0.35.3", "ws": "^8.18.0", "zod": "^4.3.6" }, "devDependencies": { "@types/better-sqlite3": "^7.6.13", "@types/cors": "^2.8.17", "@types/escape-html": "^1.0.4", "@types/express": "^5.0.0", "@types/node": "^22.10.0", "@types/qrcode": "^1.5.6", "@types/ws": "^8.5.13", "tsx": "^4.19.0", "typescript": "~5.9.3" } }