{ "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 validate:locales validate:styles 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", "sync:crowdin": "node ./scripts/sync-crowdin-translations.mjs", "validate:locales": "node ./scripts/validate-locales.mjs", "validate:styles": "node ./scripts/validate-styles.mjs", "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/core": "2.15.0", "@embedpdf/engines": "2.15.0", "@embedpdf/models": "2.15.0", "@embedpdf/pdfium": "2.15.0", "@embedpdf/plugin-annotation": "2.15.0", "@embedpdf/plugin-bookmark": "2.15.0", "@embedpdf/plugin-document-manager": "2.15.0", "@embedpdf/plugin-history": "2.15.0", "@embedpdf/plugin-interaction-manager": "2.15.0", "@embedpdf/plugin-pan": "2.15.0", "@embedpdf/plugin-render": "2.15.0", "@embedpdf/plugin-rotate": "2.15.0", "@embedpdf/plugin-scroll": "2.15.0", "@embedpdf/plugin-search": "2.15.0", "@embedpdf/plugin-selection": "2.15.0", "@embedpdf/plugin-spread": "2.15.0", "@embedpdf/plugin-thumbnail": "2.15.0", "@embedpdf/plugin-tiling": "2.15.0", "@embedpdf/plugin-viewport": "2.15.0", "@embedpdf/plugin-zoom": "2.15.0", "@fontsource-variable/fraunces": "^5.3.0", "@fontsource-variable/inter": "^5.3.0", "@formatjs/icu-messageformat-parser": "^3.5.16", "@lucide/vue": "1.31.0", "@tailwindcss/vite": "^4.3.3", "@tanstack/vue-virtual": "^3.13.35", "@tiptap/extension-link": "^3.30.1", "@tiptap/pm": "^3.30.1", "@tiptap/starter-kit": "^3.30.1", "@tiptap/vue-3": "^3.30.1", "@types/howler": "^2.2.13", "@vueuse/core": "^14.4.0", "canvas-confetti": "^1.9.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cronstrue": "^3.24.0", "dompurify": "^3.4.13", "driver.js": "^1.8.0", "echarts": "^6.1.0", "howler": "^2.2.4", "intl-messageformat": "^11.2.13", "pinia": "^4.0.3", "reka-ui": "^2.10.3", "socket.io-client": "^4.8.3", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.3", "vite-plugin-pwa": "^1.3.0", "vue": "^3.5.41", "vue-draggable-plus": "^0.6.1", "vue-echarts": "8.1.0", "vue-i18n": "^11.4.8", "vue-router": "^5.2.0", "vue-sonner": "^2.0.9", "vue-virtual-scroller": "^3.0.5" }, "devDependencies": { "@intlify/message-compiler": "^11.4.8", "@tsconfig/node24": "^24.0.5", "@types/canvas-confetti": "^1.9.0", "@types/jsdom": "^30.0.0", "@types/node": "^26.2.0", "@vite-pwa/assets-generator": "^1.0.2", "@vitejs/plugin-vue": "^6.0.8", "@vitest/coverage-v8": "^4.1.10", "@vitest/eslint-plugin": "^1.6.27", "@vue/eslint-config-typescript": "^14.9.0", "@vue/test-utils": "^2.4.11", "@vue/tsconfig": "^0.9.1", "eslint": "^10.8.1", "eslint-config-prettier": "^10.1.8", "eslint-plugin-oxlint": "~1.78.0", "eslint-plugin-vue": "~10.10.0", "jiti": "^2.7.0", "jsdom": "^30.0.1", "npm-run-all2": "^9.0.3", "oxlint": "~1.78.0", "prettier": "3.9.6", "tw-animate-css": "^1.4.0", "typescript": "~6.0.3", "vite": "^8.2.1", "vite-plugin-vue-devtools": "^8.2.1", "vitest": "^4.1.10", "vue-tsc": "^3.3.10" }, "engines": { "node": "^20.19.0 || >=22.12.0" } }