{ "name": "client", "version": "0.0.0", "description": "BookOrbit client - self-hosted library management and reading platform", "author": "neonsolstice", "private": true, "license": "AGPL-3.0", "homepage": "https://bookorbit.app", "repository": { "type": "git", "url": "https://github.com/bookorbit/bookorbit" }, "bugs": { "url": "https://github.com/bookorbit/bookorbit/issues" }, "type": "module", "scripts": { "dev": "vite", "build": "run-p type-check \"build-only {@}\" --", "preview": "vite preview", "test:unit": "vitest", "test:cov": "vitest --coverage", "build-only": "vite build", "pretype-check": "pnpm --filter @bookorbit/types build", "type-check": "vue-tsc --build", "lint": "pnpm run lint:check", "lint:check": "run-s lint:oxlint:check lint:eslint:check", "lint:fix": "run-s lint:oxlint:fix lint:eslint:fix", "lint:oxlint:check": "oxlint src", "lint:oxlint:fix": "oxlint src --fix", "lint:eslint:check": "eslint src --cache", "lint:eslint:fix": "eslint src --fix --cache", "format": "prettier --write --experimental-cli src/", "format:check": "prettier --check src/", "generate-pwa-icons": "pwa-assets-generator --config pwa-assets.config.ts" }, "dependencies": { "@bookorbit/types": "workspace:*", "@embedpdf/vue-pdf-viewer": "^2.14.4", "@fontsource-variable/fraunces": "^5.2.9", "@fontsource-variable/inter": "^5.2.8", "@lucide/vue": "1.21.0", "@tailwindcss/vite": "^4.3.1", "@tanstack/vue-table": "^8.21.3", "@tanstack/vue-virtual": "^3.13.29", "@types/howler": "^2.2.13", "@vueuse/core": "^14.3.0", "canvas-confetti": "^1.9.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cronstrue": "^3.20.0", "dompurify": "^3.4.11", "driver.js": "^1.4.0", "echarts": "^6.1.0", "howler": "^2.2.4", "pinia": "^3.0.4", "reka-ui": "^2.10.0", "socket.io-client": "^4.8.3", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.1", "vite-plugin-pwa": "^1.3.0", "vue": "^3.5.38", "vue-draggable-plus": "^0.6.1", "vue-echarts": "8.1.0-beta.2", "vue-router": "^5.1.0", "vue-sonner": "^2.0.9", "vue-virtual-scroller": "^3.0.4" }, "devDependencies": { "@tsconfig/node24": "^24.0.4", "@types/canvas-confetti": "^1.9.0", "@types/jsdom": "^28.0.3", "@types/node": "^26.0.0", "@vite-pwa/assets-generator": "^1.0.2", "@vitejs/plugin-vue": "^6.0.7", "@vitest/coverage-v8": "^4.1.9", "@vitest/eslint-plugin": "^1.6.20", "@vue/eslint-config-typescript": "^14.8.0", "@vue/test-utils": "^2.4.11", "@vue/tsconfig": "^0.9.1", "eslint": "^10.5.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-oxlint": "~1.70.0", "eslint-plugin-vue": "~10.9.2", "jiti": "^2.7.0", "jsdom": "^29.1.1", "npm-run-all2": "^9.0.2", "oxlint": "~1.70.0", "prettier": "3.8.4", "tw-animate-css": "^1.4.0", "typescript": "~6.0.3", "vite": "^8.0.16", "vite-plugin-vue-devtools": "^8.1.3", "vitest": "^4.1.9", "vue-tsc": "^3.3.5" }, "engines": { "node": "^20.19.0 || >=22.12.0" } }