{ "name": "watchparty", "version": "0.1.0", "private": true, "type": "module", "scripts": { "start": "node server/server.ts", "ui": "vite --host", "dev": "node --watch-path . server/server.ts", "build": "npm run buildReact && npm run typecheckServer", "buildReact": "vite build && npm run typecheck", "pm2": "pm2 start server/server.ts", "deploy": "git fetch && git reset --hard origin/release && pm2 flush && pm2 delete all && pm2 start server/ecosystem.config.js", "prettier": "npx prettier --write .", "typecheckServer": "tsc --project server/tsconfig.json", "typecheck": "tsc --project src/tsconfig.json --noEmit", "ncu": "ncu --semverLevel major -u", "updateSnapshot": "curl -X POST localhost:3100/updateSnapshot -H 'Content-Type: application/json' -d '{\"provider\":\"Hetzner\",\"region\":\"US\"}'", "testvBrowser": "docker run -d --rm --name=vbrowser --log-opt max-size=1g --net=host --shm-size=1g --cap-add=\"SYS_ADMIN\" -e DISPLAY=\":99.0\" -e NEKO_PASSWORD=user -e NEKO_PASSWORD_ADMIN=admin -e NEKO_BIND=\":5100\" -e NEKO_EPR=\":59000-59100\" -e NEKO_H264=\"1\" howardc93/vbrowser", "testvlc": "docker run -d --rm --name=vlc --log-opt max-size=1g --net=host -e VLC_MEDIA=\"https://github.com/ietf-wg-cellar/matroska-test-files/raw/master/test_files/test1.mkv\" -e NEKO_PASSWORD=user -e NEKO_PASSWORD_ADMIN=admin -e NEKO_BIND=\":5100\" -e NEKO_EPR=\":59000-59100\" -e NEKO_H264=\"1\" m1k1o/neko:vlc", "analyze": "npx source-map-explorer 'build/assets/*.js' --html result.html --no-border-checks" }, "dependencies": { "@googleapis/youtube": "^8.0.2", "axios": "^1.13.2", "body-parser": "^1.20.4", "compression": "^1.8.1", "cors": "^2.8.5", "discord.js": "^14.25.1", "express": "^5.2.1", "firebase-admin": "^11.11.1", "ioredis": "^5.8.2", "node-ssh": "^13.2.1", "pg": "^8.16.3", "pm2": "^6.0.14", "socket.io": "^4.8.1", "stripe": "^8.222.0" }, "devDependencies": { "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", "@mantine/core": "^8.3.10", "@stripe/stripe-js": "^1.54.2", "@tabler/icons-react": "^3.35.0", "@types/compression": "^1.8.1", "@types/cors": "^2.8.19", "@types/express": "^5.0.6", "@types/node": "^25.0.1", "@types/pg": "^8.16.0", "@types/react": "^18.3.27", "@types/react-dom": "^18.3.7", "@types/react-onclickoutside": "^6.7.10", "@types/react-router-dom": "^5.3.3", "@types/react-transition-group": "^4.4.12", "@types/webtorrent": "^0.110.1", "@types/youtube": "^0.1.2", "can-autoplay": "^3.0.2", "dashjs": "^5.1.0", "eventemitter3": "^4.0.7", "firebase": "^9.23.0", "hls.js": "^1.6.15", "mediasoup-client": "^3.18.1", "react": "^18.3.1", "react-colorful": "^5.6.1", "react-countup": "^6.5.3", "react-dom": "^18.3.1", "react-linkify": "^1.0.0-alpha", "react-onclickoutside": "^6.13.2", "react-router-dom": "^5.3.4", "react-secure-link": "^3.2.0", "react-transition-group": "^4.4.5", "recharts": "^2.15.4", "socket.io-client": "^4.8.1", "srt-webvtt": "^2.0.0", "twitch-m3u8": "^1.1.5", "typescript": "^5.9.3", "vite": "^7.2.7", "webtorrent": "^2.8.5" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }