{ "name": "OrangeTV", "version": "0.1.0", "private": true, "scripts": { "dev": "pnpm gen:manifest && tsx watch src/server/index.ts", "dev:redis": "node scripts/dev-with-redis.js", "dev:complex": "pnpm dev", "debug:api": "node debug-api.js", "build": "pnpm gen:manifest && vite build && node scripts/build-server.js", "start": "NODE_ENV=production node dist/server/index.js", "lint": "eslint src --ext .ts,.tsx", "lint:fix": "eslint src --fix && pnpm format", "lint:strict": "eslint --max-warnings=0 src", "typecheck": "tsc --noEmit --incremental false", "test:watch": "jest --watch", "test": "jest", "format": "prettier -w .", "format:check": "prettier -c .", "gen:manifest": "node scripts/generate-manifest.js", "postbuild": "echo 'Build completed - sitemap generation disabled'", "prepare": "husky install" }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/modifiers": "^9.0.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", "@fastify/cookie": "^11.0.2", "@fastify/middie": "^9.3.2", "@fastify/static": "^9.1.3", "@heroui/react": "3.0.5", "@heroui/styles": "3.0.5", "@types/crypto-js": "^4.2.2", "@types/ws": "^8.18.1", "@upstash/redis": "^1.25.0", "@vidstack/react": "^1.12.13", "artplayer": "^5.2.5", "artplayer-plugin-danmuku": "^5.2.0", "bs58": "^6.0.0", "clsx": "^2.0.0", "crypto-js": "^4.2.0", "fastify": "^5.8.5", "framer-motion": "^12.18.1", "he": "^1.2.0", "hls.js": "^1.6.10", "lucide-react": "^0.438.0", "media-icons": "^1.1.5", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.4.0", "react-image-crop": "^11.0.10", "react-router-dom": "^7.15.1", "redis": "^4.6.7", "swiper": "^11.2.8", "tailwind-merge": "^3.4.0", "tailwind-variants": "3.2.2", "vidstack": "^0.6.15", "vite-plugin-pwa": "^1.3.0", "ws": "^8.18.3", "zod": "^3.24.1" }, "devDependencies": { "@babel/core": "^7.29.7", "@babel/preset-env": "^7.29.7", "@babel/preset-react": "^7.29.7", "@babel/preset-typescript": "^7.29.7", "@commitlint/cli": "^16.3.0", "@commitlint/config-conventional": "^16.2.4", "@rolldown/plugin-babel": "^0.2.3", "@tailwindcss/forms": "^0.5.10", "@tailwindcss/postcss": "^4.3.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^16.3.2", "@types/bs58": "^5.0.0", "@types/he": "^1.2.3", "@types/jest": "27.5.2", "@types/node": "24.0.3", "@types/react": "^19.2.15", "@types/react-dom": "^19.2.3", "@types/testing-library__jest-dom": "^5.14.9", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "@vitejs/plugin-react": "^6.0.2", "autoprefixer": "^10.4.20", "babel-jest": "27.5.1", "babel-plugin-react-compiler": "^1.0.0", "esbuild": "^0.28.0", "eslint": "^8.57.1", "eslint-config-prettier": "^8.10.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-simple-import-sort": "^7.0.0", "eslint-plugin-unused-imports": "^2.0.0", "husky": "^7.0.4", "jest": "^27.5.1", "lint-staged": "^12.5.0", "playwright": "^1.60.0", "postcss": "^8.5.1", "prettier": "^2.8.8", "prettier-plugin-tailwindcss": "^0.5.0", "tailwindcss": "^4.3.0", "tsx": "^4.22.3", "typescript": "^5.9.3", "undici": "^8.3.0", "vite": "^8.0.14", "webpack-obfuscator": "^3.5.1" }, "lint-staged": { "**/*.{js,jsx,ts,tsx}": [ "eslint --max-warnings=0", "prettier -w" ], "**/*.{json,css,scss,md,webmanifest}": [ "prettier -w" ] }, "packageManager": "pnpm@10.14.0", "engines": { "node": ">=24 <25", "pnpm": "10.14.0" } }