{
  "name": "web",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "mocked": "vite --mode mocked",
    "build": "tsc && vite build",
    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
  },
  "dependencies": {
    "@ant-design/icons": "^5.6.1",
    "@xterm/addon-attach": "^0.11.0",
    "@xterm/addon-fit": "^0.10.0",
    "@xterm/xterm": "^5.5.0",
    "antd": "^5.29.1",
    "axios": "1.12.0",
    "clsx": "^2.1.1",
    "crypto-js": "^4.2.0",
    "i18next": "^23.16.4",
    "jotai": "^2.10.1",
    "js-cookie": "^3.0.5",
    "lucide-react": "^0.469.0",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-draggable": "^4.4.6",
    "react-error-boundary": "^4.1.2",
    "react-helmet-async": "^2.0.5",
    "react-i18next": "^14.1.3",
    "react-responsive": "^10.0.0",
    "react-router-dom": "^6.27.0",
    "react-simple-keyboard": "^3.8.19",
    "semver": "^7.6.3",
    "vaul": "^0.9.9",
    "websocket": "^1.0.35",
    "yocto-queue": "^1.2.1"
  },
  "devDependencies": {
    "@ianvs/prettier-plugin-sort-imports": "^4.7.0",
    "@types/crypto-js": "^4.2.2",
    "@types/js-cookie": "^3.0.6",
    "@types/react": "^18.3.12",
    "@types/react-dom": "^18.3.1",
    "@types/semver": "^7.5.8",
    "@types/websocket": "^1.0.10",
    "@typescript-eslint/eslint-plugin": "^8.48.0",
    "@typescript-eslint/parser": "^8.48.0",
    "@vitejs/plugin-react": "^4.7.0",
    "autoprefixer": "^10.4.20",
    "eslint": "^9.39.1",
    "eslint-config-prettier": "^9.1.0",
    "eslint-plugin-react": "^7.37.2",
    "eslint-plugin-react-hooks": "^5.1.0",
    "eslint-plugin-react-refresh": "^0.4.16",
    "msw": "^2.6.0",
    "postcss": "^8.4.47",
    "prettier": "^3.4.2",
    "prettier-plugin-tailwindcss": "^0.6.9",
    "tailwindcss": "^3.4.18",
    "typescript": "^5.6.3",
    "vite": "7.1.11",
    "vite-tsconfig-paths": "^4.3.2"
  },
  "msw": {
    "workerDirectory": [
      "public"
    ]
  }
}
