{
  "name": "@bitfun/web-ui",
  "version": "0.2.19",
  "private": true,
  "description": "BitFun Web UI - 支持 Desktop 和 Server 两种部署方式",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "dev:force": "vite --force",
    "gen:types": "node scripts/gen-api-barrel.mjs --clean && cargo test --locked --package bitfun-app-server-protocol --no-default-features --features ts --lib export -- --nocapture && node scripts/gen-api-barrel.mjs",
    "build": "vite build",
    "build:desktop": "vite build --mode desktop",
    "build:web": "vite build --mode web",
    "build:with-types": "npm run gen:types && npm run build",
    "preview": "vite preview",
    "lint": "eslint .",
    "lint:fix": "eslint . --fix",
    "type-check": "tsc --noEmit",
    "test": "vitest",
    "test:run": "vitest run"
  },
  "dependencies": {
    "@monaco-editor/react": "^4.6.0",
    "@tanstack/react-virtual": "^3.13.23",
    "@tauri-apps/api": "^2.10.1",
    "@tauri-apps/plugin-dialog": "^2.6.0",
    "@tauri-apps/plugin-fs": "^2.0.0",
    "@tauri-apps/plugin-log": "^2.8.0",
    "@tauri-apps/plugin-notification": "^2.3.3",
    "@tauri-apps/plugin-opener": "^2.5.2",
    "@tiptap/core": "^3.20.4",
    "@tiptap/extension-details": "^3.20.4",
    "@tiptap/extension-link": "^3.20.4",
    "@tiptap/extension-placeholder": "^3.20.4",
    "@tiptap/extension-task-item": "^3.20.4",
    "@tiptap/extension-task-list": "^3.20.4",
    "@tiptap/pm": "^3.20.4",
    "@tiptap/react": "^3.20.4",
    "@tiptap/starter-kit": "^3.20.4",
    "@xterm/addon-fit": "^0.12.0-beta.103",
    "@xterm/addon-web-links": "^0.13.0-beta.103",
    "@xterm/addon-webgl": "^0.20.0-beta.100",
    "@xterm/xterm": "^6.1.0-beta.101",
    "diff": "^8.0.3",
    "highlight.js": "^11.11.1",
    "i18next": "^25.8.0",
    "immer": "^11.1.3",
    "jszip": "^3.10.1",
    "katex": "^0.16.25",
    "lucide-react": "^0.541.0",
    "mermaid": "^11.10.1",
    "modern-screenshot": "^4.7.0",
    "monaco-editor": "^0.52.2",
    "morphdom": "^2.7.8",
    "partial-json": "^0.1.7",
    "path-browserify": "^1.0.1",
    "prismjs": "^1.30.0",
    "qrcode.react": "^4.2.0",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-i18next": "^16.5.3",
    "react-markdown": "^10.1.0",
    "react-syntax-highlighter": "^15.6.6",
    "react-virtuoso": "^4.18.11",
    "rehype-katex": "^7.0.1",
    "rehype-raw": "^7.0.0",
    "rehype-sanitize": "^6.0.0",
    "remark-gfm": "^4.0.1",
    "remark-math": "^6.0.0",
    "remark-parse": "^11.0.0",
    "remark-rehype": "^11.1.2",
    "unified": "^11.0.5",
    "unist-util-visit": "^5.0.0",
    "utif": "^3.1.0",
    "yaml": "^2.8.2",
    "zustand": "^5.0.10"
  },
  "devDependencies": {
    "@eslint/js": "^9.24.0",
    "@types/node": "^20.10.0",
    "@types/path-browserify": "^1.0.3",
    "@types/prismjs": "^1.26.5",
    "@types/react": "^18.3.29",
    "@types/react-dom": "^18.3.0",
    "@types/react-syntax-highlighter": "^15.5.13",
    "@types/utif": "^3.0.6",
    "@vitejs/plugin-react": "^4.6.0",
    "eslint": "^9.24.0",
    "eslint-plugin-react-hooks": "^5.2.0",
    "eslint-plugin-react-refresh": "^0.4.20",
    "globals": "^16.0.0",
    "jsdom": "^29.0.1",
    "sass": "^1.93.2",
    "typescript": "~5.8.3",
    "typescript-eslint": "^8.29.0",
    "vite": "^7.0.4",
    "vitest": "^4.1.0"
  }
}