{ "name": "cliparr", "private": true, "description": "Personal media clipper for Plex, Jellyfin, and local video files, featuring a React frontend and Express server.", "license": "MIT", "type": "module", "imports": { "#ci/*.mjs": "./tools/ci/*.mjs", "#plex/*.mjs": "./tools/plex/*.mjs", "#release/*.mjs": "./tools/release/*.mjs" }, "packageManager": "pnpm@12.17.0", "engines": { "node": "^26.13.0" }, "repository": { "type": "git", "url": "https://github.com/techsquidtv/cliparr.git" }, "bugs": { "url": "https://github.com/techsquidtv/cliparr/issues" }, "homepage": "https://github.com/techsquidtv/cliparr#readme", "scripts": { "dev": "concurrently -k -s first --handle-input -c \"cyan,magenta\" -n \"frontend,server\" \"pnpm --filter @cliparr/frontend dev\" \"pnpm --filter @cliparr/server dev\"", "dev:web": "pnpm --filter @cliparr/www dev --host 127.0.0.1 --port 4321", "dev:docker": "concurrently -k -s first --handle-input -c \"cyan,magenta\" -n \"frontend,server\" \"pnpm --filter @cliparr/frontend dev --host 0.0.0.0\" \"pnpm --filter @cliparr/server dev\"", "docker:dev:build": "docker compose -f docker/compose.dev.yml build cliparr", "docker:dev:up": "docker compose -f docker/compose.dev.yml up", "build": "pnpm -r build", "build:web": "pnpm docs:check && pnpm --filter @cliparr/www build", "lint": "pnpm node:check && pnpm plex:architecture:check && pnpm lint:eslint && pnpm lint:types", "lint:eslint": "pnpm lint:eslint:root && pnpm -r --if-present lint:eslint", "lint:eslint:root": "pnpm exec eslint --config config/eslint.config.js \"config/eslint.config.js\" \"tools/**/*.mjs\"", "lint:types": "pnpm -r --if-present lint:types", "format": "prettier --config config/prettier.config.js --ignore-path config/.prettierignore --write .", "format:check": "prettier --config config/prettier.config.js --ignore-path config/.prettierignore --check .", "plex:sdk:update": "node tools/plex/update-sdk.mjs", "plex:sdk:check": "node tools/plex/check-sdk.mjs", "preflight": "pnpm privacy:check && pnpm format:check && pnpm lint && pnpm knip && pnpm test", "test": "pnpm test:node && pnpm plex:sdk:check && pnpm test:privacy && pnpm test:docker && pnpm test:release && pnpm test:plex-sdk && pnpm -r --if-present test", "test:release": "node --test tools/release/*.test.mjs", "test:plex-sdk": "node --test tools/plex/*.test.mjs", "release:plan": "node tools/release/plan-release.mjs", "knip": "knip --config config/knip.json", "docs:sync": "pnpm --filter @cliparr/www docs:sync", "docs:check": "pnpm --filter @cliparr/www docs:check", "cf:deploy": "wrangler deploy", "cf:upload-version": "wrangler versions upload", "deploy:web": "pnpm build:web && pnpm cf:deploy", "preview": "pnpm --filter @cliparr/server preview", "start": "pnpm --filter @cliparr/server start", "clean": "pnpm -r clean", "assets:capture": "pnpm --filter @cliparr/www-assets capture", "test:assets": "pnpm --filter @cliparr/www-assets test", "plex:architecture:check": "node tools/plex/check-architecture.mjs", "privacy:check": "node tools/ci/privacy-check.mjs", "test:privacy": "node --test tools/ci/privacy-check.test.mjs", "test:docker": "node --test tools/ci/docker-*.test.mjs", "test:node": "node --test tools/ci/node-*.test.mjs", "node:check": "node tools/ci/check-node-version.mjs" }, "devDependencies": { "@eslint/js": "^10.0.1", "@hey-api/openapi-ts": "~0.99.0", "@types/node": "catalog:", "concurrently": "^10.0.5", "eslint": "^10.11.0", "eslint-plugin-astro": "^3.2.1", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-simple-import-sort": "^14.0.0", "eslint-plugin-unicorn": "^76.0.0", "globals": "^17.13.0", "knip": "6.44.1", "prettier": "^3.9.9", "prettier-plugin-astro": "^1.1.0", "typescript": "~6.0.3", "typescript-eslint": "^8.71.0", "wrangler": "^4.147.0", "yaml": "^2.9.1" } }