{ "name": "feishin", "version": "0.22.0", "description": "A modern self-hosted music player.", "keywords": [ "subsonic", "navidrome", "jellyfin", "react", "electron" ], "homepage": "https://github.com/jeffvli/feishin", "bugs": { "url": "https://github.com/jeffvli/feishin/issues" }, "license": "GPL-3.0", "author": { "name": "jeffvli", "url": "https://github.com/jeffvli/" }, "main": "./out/main/index.js", "scripts": { "build": "pnpm run typecheck && pnpm run build:electron && pnpm run build:remote", "build:electron": "electron-vite build", "build:remote": "vite build --config remote.vite.config.ts", "build:web": "vite build --config web.vite.config.ts", "dev": "electron-vite dev", "dev:remote": "vite dev --config remote.vite.config.ts", "dev:watch": "electron-vite dev --watch", "i18next": "i18next -c src/i18n/i18next-parser.config.js", "postinstall": "electron-builder install-app-deps", "lint": "pnpm run lint-code && pnpm run lint-styles", "lint-code": "eslint --max-warnings=0 --cache .", "lint-code:fix": "eslint --cache --fix .", "lint-styles": "stylelint --max-warnings=0 'src/**/*.{css,scss}'", "lint-styles:fix": "stylelint 'src/**/*.{css,scss}' --fix", "lint:fix": "pnpm run lint-code:fix && pnpm run lint-styles:fix", "package": "pnpm run build && electron-builder", "package:dev": "pnpm run build && electron-builder --dir", "package:linux": "pnpm run build && electron-builder --linux", "package:linux-arm64:pr": "pnpm run build && electron-builder --linux --arm64 --publish never", "package:linux:pr": "pnpm run build && electron-builder --linux --publish never", "package:mac": "pnpm run build && electron-builder --mac", "package:mac:pr": "pnpm run build && electron-builder --mac --publish never", "package:win": "pnpm run build && electron-builder --win", "package:win:pr": "pnpm run build && electron-builder --win --publish never", "publish:linux": "pnpm run build && electron-builder --publish always --linux", "publish:linux-arm64": "pnpm run build && electron-builder --publish always --linux --arm64", "publish:linux-arm64:beta": "pnpm run build && electron-builder --config electron-builder-beta.yml --publish always --linux --arm64", "publish:linux:beta": "pnpm run build && electron-builder --config electron-builder-beta.yml --publish always --linux", "publish:mac": "pnpm run build && electron-builder --publish always --mac", "publish:mac:beta": "pnpm run build && electron-builder --config electron-builder-beta.yml --publish always --mac", "publish:win": "pnpm run build && electron-builder --publish always --win", "publish:win:beta": "pnpm run build && electron-builder --config electron-builder-beta.yml --publish always --win", "start": "electron-vite preview", "typecheck": "pnpm run typecheck:node && pnpm run typecheck:web", "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false", "version": "pnpm version --no-git-tag-version", "postversion": "node ./scripts/update-app-stream.mjs" }, "dependencies": { "@ag-grid-community/client-side-row-model": "^28.2.1", "@ag-grid-community/core": "^28.2.1", "@ag-grid-community/infinite-row-model": "^28.2.1", "@ag-grid-community/react": "^28.2.1", "@ag-grid-community/styles": "^28.2.1", "@atlaskit/pragmatic-drag-and-drop": "1.4.0", "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.0", "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3", "@electron-toolkit/preload": "^3.0.1", "@electron-toolkit/utils": "^4.0.0", "@mantine/colors-generator": "^8.2.8", "@mantine/core": "^8.2.8", "@mantine/dates": "^8.2.8", "@mantine/form": "^8.2.8", "@mantine/hooks": "^8.2.8", "@mantine/modals": "^8.2.8", "@mantine/notifications": "^8.2.8", "@tanstack/react-query": "^5.89.0", "@tanstack/react-query-devtools": "^5.89.0", "@tanstack/react-query-persist-client": "^5.89.0", "@ts-rest/core": "^3.23.0", "@xhayper/discord-rpc": "^1.3.0", "audiomotion-analyzer": "^4.5.0", "auto-text-size": "^0.2.3", "axios": "^1.12.0", "cheerio": "^1.0.0", "clsx": "^2.0.0", "cmdk": "^0.2.0", "dayjs": "^1.11.6", "dompurify": "^3.1.6", "electron-debug": "^3.2.0", "electron-localshortcut": "^3.2.1", "electron-log": "^5.1.1", "electron-store": "^8.1.0", "electron-updater": "^6.3.9", "fast-average-color": "^9.3.0", "fast-xml-parser": "^5.3.0", "format-duration": "^2.0.0", "fuse.js": "^6.6.2", "i18next": "^21.10.0", "idb-keyval": "^6.2.1", "immer": "^9.0.21", "is-electron": "^2.2.2", "lodash": "^4.17.21", "md5": "^2.3.0", "memoize-one": "^6.0.0", "motion": "^12.18.1", "mpris-service": "^2.1.2", "nanoid": "^3.3.3", "node-mpv": "github:jeffvli/Node-MPV#32b4d64395289ad710c41d481d2707a7acfc228f", "overlayscrollbars": "^2.11.1", "overlayscrollbars-react": "^0.5.6", "qs": "^6.14.0", "react": "^19.1.0", "react-dom": "^19.1.0", "react-error-boundary": "^3.1.4", "react-i18next": "^11.18.6", "react-icons": "^5.5.0", "react-image": "^4.1.0", "react-loading-skeleton": "^3.5.0", "react-player": "^2.11.0", "react-router": "^6.16.0", "react-router-dom": "^6.16.0", "react-virtualized-auto-sizer": "^1.0.17", "react-window": "^1.8.9", "react-window-infinite-loader": "^1.0.9", "semver": "^7.5.4", "swiper": "^9.3.1", "use-sync-external-store": "^1.5.0", "ws": "^8.18.2", "zod": "^3.22.3", "zustand": "^5.0.5" }, "devDependencies": { "@electron-toolkit/eslint-config-prettier": "^3.0.0", "@electron-toolkit/eslint-config-ts": "^3.0.0", "@electron-toolkit/tsconfig": "^1.0.1", "@types/electron-localshortcut": "^3.1.0", "@types/lodash": "^4.17.18", "@types/md5": "^2.3.5", "@types/node": "^22.15.32", "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", "@types/react-window": "^1.8.5", "@types/react-window-infinite-loader": "^1.0.6", "@types/source-map-support": "^0.5.10", "@types/ws": "^8.18.1", "@vitejs/plugin-react": "^4.3.4", "concurrently": "^7.1.0", "cross-env": "^7.0.3", "electron": "^38.5.0", "electron-builder": "^26.0.12", "electron-devtools-installer": "^3.2.0", "electron-vite": "^3.1.0", "eslint": "^9.24.0", "eslint-plugin-perfectionist": "^4.13.0", "eslint-plugin-prettier": "^5.4.0", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.19", "i18next-parser": "^9.0.2", "postcss-preset-mantine": "^1.17.0", "prettier": "^3.5.3", "prettier-plugin-packagejson": "^2.5.14", "sass-embedded": "^1.89.0", "stylelint": "^16.14.1", "stylelint-config-css-modules": "^4.4.0", "stylelint-config-recess-order": "^7.1.0", "stylelint-config-standard": "^38.0.0", "typescript": "^5.8.3", "vite": "^6.4.1", "vite-plugin-conditional-import": "^0.1.7", "vite-plugin-dynamic-import": "^1.6.0", "vite-plugin-ejs": "^1.7.0", "vite-plugin-pwa": "^1.0.3" }, "pnpm": { "onlyBuiltDependencies": [ "electron", "esbuild" ] }, "productName": "feishin" }