{
  "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"
    ]
  }
}
