{ "name": "questarr", "version": "1.4.2", "description": "A video game management application inspired by the -Arr apps. Track and organize your video game collection with automated discovery and download management.", "type": "module", "packageManager": "npm@11.7.0", "license": "GPL-3.0-only", "repository": { "type": "git", "url": "https://github.com/Doezer/Questarr.git" }, "scripts": { "dev": "cross-env NODE_ENV=development tsx server/index.ts", "build": "vite build && tsc -p tsconfig.build.json", "start": "NODE_ENV=production node dist/server/index.js", "check": "tsc", "lint": "eslint .", "lint:fix": "eslint . --ext .ts,.tsx,.js,.jsx --fix", "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,css}\"", "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,css}\"", "secretlint": "secretlint --maskSecrets \"**/*\"", "db:generate": "drizzle-kit generate", "db:migrate": "tsx server/run-migrations.ts", "db:push": "drizzle-kit push", "test": "vitest run", "test:watch": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", "test:coverage": "vitest run --coverage", "test:e2e": "playwright test", "reset-password": "tsx scripts/reset-password.ts", "check:overrides": "node scripts/check-overrides.mjs", "check:deprecated": "node scripts/check-deprecated-deps.mjs", "dev:test": "tsx scripts/clean-test-db.ts && cross-env SQLITE_DB_PATH=data/test.db PORT=5100 npm run dev", "prepare": "husky" }, "dependencies": { "@fontsource-variable/inter": "^5.3.0", "@fontsource-variable/open-sans": "^5.3.0", "@hookform/resolvers": "^5.4.0", "@jridgewell/trace-mapping": "^0.3.25", "@radix-ui/react-accordion": "^1.2.17", "@radix-ui/react-alert-dialog": "^1.1.20", "@radix-ui/react-aspect-ratio": "^1.1.12", "@radix-ui/react-avatar": "^1.2.3", "@radix-ui/react-checkbox": "^1.3.8", "@radix-ui/react-collapsible": "^1.1.4", "@radix-ui/react-context-menu": "^2.3.4", "@radix-ui/react-dialog": "^1.1.7", "@radix-ui/react-dropdown-menu": "^2.1.21", "@radix-ui/react-hover-card": "^1.1.20", "@radix-ui/react-label": "^2.1.12", "@radix-ui/react-menubar": "^1.1.21", "@radix-ui/react-navigation-menu": "^1.2.19", "@radix-ui/react-popover": "^1.1.20", "@radix-ui/react-progress": "^1.1.13", "@radix-ui/react-radio-group": "^1.4.4", "@radix-ui/react-scroll-area": "^1.2.15", "@radix-ui/react-select": "^2.3.4", "@radix-ui/react-separator": "^1.1.12", "@radix-ui/react-slider": "^1.4.4", "@radix-ui/react-slot": "^1.3.0", "@radix-ui/react-switch": "^1.3.4", "@radix-ui/react-tabs": "^1.1.18", "@radix-ui/react-toast": "^1.2.20", "@radix-ui/react-toggle": "^1.1.15", "@radix-ui/react-toggle-group": "^1.1.16", "@radix-ui/react-tooltip": "^1.2.13", "@tanstack/react-query": "^5.101.3", "@types/express-session": "^1.19.0", "@types/multer": "^2.2.0", "@types/pg": "^8.20.0", "7zip-bin": "^5.2.0", "archiver": "^8.0.0", "axios": "^1.18.1", "bcryptjs": "^3.0.3", "better-sqlite3": "^13.0.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "date-fns": "^4.4.0", "dotenv": "^17.4.2", "drizzle-orm": "^0.45.2", "drizzle-zod": "^0.8.3", "embla-carousel-react": "^8.6.0", "express": "^4.22.2", "express-rate-limit": "^8.6.0", "express-session": "^1.19.0", "express-validator": "^7.3.2", "fast-xml-parser": "^5.10.1", "framer-motion": "^12.42.2", "fs-extra": "^11.3.3", "helmet": "^8.3.0", "html-to-image": "^1.11.13", "husky": "^9.1.7", "input-otp": "^1.4.2", "js-yaml": "^5.2.2", "jsonwebtoken": "^9.0.3", "lucide-react": "^1.25.0", "multer": "^2.2.0", "nanoid": "^6.0.0", "next-themes": "^0.4.6", "node-7z": "^3.0.0", "node-forge": "^1.4.0", "parse-torrent": "^11.0.21", "passport": "^0.7.0", "passport-steam": "^1.0.18", "pg": "^8.22.0", "pino": "^10.3.1", "react": "^19.2.8", "react-day-picker": "^10.0.1", "react-dom": "^19.2.8", "react-hook-form": "^7.82.0", "react-icons": "^5.7.0", "react-resizable-panels": "^4.12.2", "recharts": "^3.9.1", "rss-parser": "^3.13.0", "semver": "^7.8.5", "socket.io": "^4.8.3", "socket.io-client": "^4.8.3", "tailwind-merge": "^3.6.0", "tailwindcss-animate": "^1.0.7", "three": "^0.185.1", "tsx": "^4.23.1", "tw-animate-css": "^1.2.5", "undici": "^7.29.0", "vaul": "^1.1.2", "wouter": "^3.9.0", "zod": "^4.4.3", "zod-validation-error": "^5.0.0" }, "devDependencies": { "@eslint/js": "^9.39.4", "@lizenz/checker": "0.0.1", "@playwright/test": "^1.61.1", "@secretlint/secretlint-rule-preset-recommend": "^13.0.2", "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4.3.3", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^7.0.0", "@testing-library/react": "^16.3.2", "@types/archiver": "^8.0.0", "@types/bcryptjs": "^3.0.0", "@types/better-sqlite3": "^7.6.13", "@types/express": "4.17.21", "@types/express-session": "^1.19.0", "@types/fs-extra": "^11.0.4", "@types/js-yaml": "^4.0.9", "@types/jsonwebtoken": "^9.0.10", "@types/node": "^26.1.1", "@types/node-7z": "^2.1.11", "@types/node-forge": "^1.3.14", "@types/parse-torrent": "^5.8.8", "@types/passport": "^1.0.17", "@types/passport-steam": "^1.0.6", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", "@types/semver": "^7.7.1", "@types/supertest": "^7.2.1", "@types/three": "^0.185.1", "@vitejs/plugin-react": "^6.0.3", "@vitest/coverage-v8": "4.1.10", "@vitest/ui": "4.1.10", "autoprefixer": "10.5.4", "cross-env": "^10.1.0", "drizzle-kit": "^0.31.10", "esbuild": "^0.28.1", "eslint": "^9.39.4", "eslint-config-prettier": "^10.1.8", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-sonarjs": "^4.2.0", "jsdom": "^30.0.0", "lint-staged": "^17.1.0", "pino-pretty": "^13.1.3", "postcss": "8.5.20", "prettier": "3.9.5", "secretlint": "^13.0.2", "supertest": "^7.2.2", "tailwindcss": "^4.0.0", "typescript": "^6.0.3", "typescript-eslint": "8.65.0", "vite": "8.1.5", "vitest": "4.1.10" }, "optionalDependencies": { "bufferutil": "^4.0.8" }, "lint-staged": { "*.{ts,tsx,js,jsx}": [ "eslint --fix --cache --cache-strategy content --cache-location node_modules/.cache/eslint", "prettier --cache --cache-strategy content --cache-location node_modules/.cache/prettier/.prettier-cache --write" ], "*.{json,css,md}": [ "prettier --write" ], "*": [ "secretlint --maskSecrets --no-glob" ] }, "engines": { "node": ">=20" }, "overrides": { "socket.io-parser": "4.2.6", "@esbuild-kit/core-utils": { "esbuild": "^0.25.0" }, "body-parser": "1.20.6", "brace-expansion": "^5.0.8", "minimatch": "^10.2.5", "fast-uri": "^3.1.4" }, "allowScripts": { "esbuild@0.25.12": true, "esbuild@0.28.1": true, "better-sqlite3@12.11.1": true, "bufferutil@4.1.0": true } }