{"_id":"jellyfin-web","name":"jellyfin-web","dist-tags":{"latest":"10.11.0"},"versions":{"10.11.0":{"name":"jellyfin-web","version":"10.11.0","description":"Web interface for Jellyfin","repository":{"type":"git","url":"git+https://github.com/jellyfin/jellyfin-web.git"},"license":"GPL-2.0-or-later","devDependencies":{"@babel/core":"7.25.8","@babel/plugin-transform-modules-umd":"7.25.7","@babel/preset-env":"7.25.8","@babel/preset-react":"7.25.7","@eslint-community/eslint-plugin-eslint-comments":"4.4.0","@stylistic/eslint-plugin":"2.9.0","@types/dompurify":"3.0.5","@types/escape-html":"1.0.4","@types/loadable__component":"5.13.9","@types/lodash-es":"4.17.12","@types/markdown-it":"14.1.2","@types/react":"18.3.11","@types/react-dom":"18.3.1","@types/sortablejs":"1.15.8","@typescript-eslint/eslint-plugin":"5.62.0","@typescript-eslint/parser":"5.62.0","@uupaa/dynamic-import-polyfill":"1.0.2","@vitest/coverage-v8":"2.1.8","autoprefixer":"10.4.20","babel-loader":"9.2.1","clean-webpack-plugin":"4.0.0","confusing-browser-globals":"1.0.11","copy-webpack-plugin":"12.0.2","cross-env":"7.0.3","css-loader":"7.1.2","cssnano":"7.0.6","es-check":"7.2.1","eslint":"8.57.1","eslint-plugin-compat":"4.2.0","eslint-plugin-import":"2.31.0","eslint-plugin-jsx-a11y":"6.10.0","eslint-plugin-react":"7.37.1","eslint-plugin-react-hooks":"4.6.2","eslint-plugin-sonarjs":"0.25.1","expose-loader":"5.0.0","fork-ts-checker-webpack-plugin":"9.0.2","html-loader":"5.1.0","html-webpack-plugin":"5.6.0","jsdom":"25.0.1","mini-css-extract-plugin":"2.9.1","postcss":"8.4.47","postcss-loader":"8.1.1","postcss-preset-env":"10.0.7","postcss-scss":"4.0.9","sass":"1.79.5","sass-loader":"16.0.2","source-map-loader":"5.0.0","speed-measure-webpack-plugin":"1.5.0","style-loader":"4.0.0","stylelint":"15.11.0","stylelint-config-rational-order":"0.1.2","stylelint-no-browser-hacks":"1.3.0","stylelint-order":"6.0.4","stylelint-scss":"5.3.2","ts-loader":"9.5.1","typescript":"5.6.3","vitest":"2.1.8","webpack":"5.95.0","webpack-bundle-analyzer":"4.10.2","webpack-cli":"5.1.4","webpack-dev-server":"5.1.0","webpack-merge":"6.0.1","worker-loader":"3.0.8"},"dependencies":{"@emotion/react":"11.13.3","@emotion/styled":"11.13.0","@fontsource/noto-sans":"5.1.0","@fontsource/noto-sans-hk":"5.1.0","@fontsource/noto-sans-jp":"5.1.0","@fontsource/noto-sans-kr":"5.1.0","@fontsource/noto-sans-sc":"5.1.0","@fontsource/noto-sans-tc":"5.1.0","@jellyfin/libass-wasm":"4.2.3","@jellyfin/sdk":"0.0.0-unstable.202410250501","@mui/icons-material":"5.16.7","@mui/material":"5.16.7","@mui/x-date-pickers":"7.20.0","@react-hook/resize-observer":"2.0.2","@tanstack/react-query":"5.59.13","@tanstack/react-query-devtools":"5.59.13","@types/react-lazy-load-image-component":"1.6.4","abortcontroller-polyfill":"1.7.5","blurhash":"2.0.5","classlist.js":"https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz","classnames":"2.5.1","core-js":"3.38.1","date-fns":"2.30.0","dompurify":"2.5.7","epubjs":"0.3.93","escape-html":"1.0.3","fast-text-encoding":"1.0.6","flv.js":"1.6.2","headroom.js":"0.12.0","history":"5.3.0","hls.js":"1.5.16","intersection-observer":"0.12.2","jellyfin-apiclient":"1.11.0","jquery":"3.7.1","jstree":"3.3.17","libarchive.js":"2.0.2","libpgs":"0.8.1","lodash-es":"4.17.21","markdown-it":"14.1.0","material-design-icons-iconfont":"6.7.0","material-react-table":"2.13.3","native-promise-only":"0.8.1","pdfjs-dist":"3.11.174","react":"18.3.1","react-blurhash":"0.3.0","react-dom":"18.3.1","react-lazy-load-image-component":"1.6.2","react-router-dom":"6.27.0","resize-observer-polyfill":"1.5.1","screenfull":"6.0.2","sortablejs":"1.15.3","swiper":"11.1.14","usehooks-ts":"3.1.0","webcomponents.js":"0.7.24","whatwg-fetch":"3.6.20"},"optionalDependencies":{"sass-embedded":"1.79.5"},"browserslist":["last 2 Firefox versions","last 2 Chrome versions","last 2 ChromeAndroid versions","last 2 Safari versions","iOS > 10","last 2 Edge versions","Chrome 27","Chrome 38","Chrome 47","Chrome 53","Chrome 56","Chrome 63","Edge 18","Firefox ESR"],"scripts":{"start":"npm run serve","serve":"webpack serve --config webpack.dev.js","build:analyze":"cross-env NODE_ENV=\"production\" webpack --config webpack.analyze.js","build:development":"webpack --config webpack.dev.js","build:production":"cross-env NODE_ENV=\"production\" webpack --config webpack.prod.js","build:check":"tsc --noEmit","build:es-check":"npm run build:production && npm run escheck","escheck":"es-check","lint":"eslint \"./\"","test":"vitest --watch=false --config vite.config.ts","test:watch":"vitest --config vite.config.ts","stylelint":"stylelint \"src/**/*.{css,scss}\""},"engines":{"node":">=20.0.0","npm":">=9.6.4","yarn":"YARN NO LONGER USED - use npm instead."},"_id":"jellyfin-web@10.11.0","gitHead":"6e3fdbb1227580dfbb7cb1b276b642b814eac0d7","bugs":{"url":"https://github.com/jellyfin/jellyfin-web/issues"},"homepage":"https://github.com/jellyfin/jellyfin-web#readme","_nodeVersion":"18.20.2","_npmVersion":"10.5.0","dist":{"integrity":"sha512-xp7ffkPcS9Yby2X6DkhG+xqp4ESPA9S6qzbyJiis3Sgw+TsesncBHa9PxhB1AkZIbxF6gLWZUAmAP5qc1zMfGw==","shasum":"387edeaf230bdd297e58a8db8c9af190a64d0c9f","tarball":"https://registry.npmjs.org/jellyfin-web/-/jellyfin-web-10.11.0.tgz","fileCount":27,"unpackedSize":78783,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2GkuIfaVFFKh7Y6aXiaclEpJYzBqbr3mlhHurdbv2YAiBEZfBbH2RAb2thO/LlIySFsxshKDqEbNJl70nNv3hEKA=="}]},"_npmUser":{"name":"moeinyavari","email":"moeinyavari00@gmail.com"},"directories":{},"maintainers":[{"name":"moeinyavari","email":"moeinyavari00@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jellyfin-web_10.11.0_1735110010799_0.03677717832431138"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-25T07:00:10.798Z","10.11.0":"2024-12-25T07:00:11.001Z","modified":"2024-12-25T07:00:11.309Z"},"maintainers":[{"name":"moeinyavari","email":"moeinyavari00@gmail.com"}],"description":"Web interface for Jellyfin","homepage":"https://github.com/jellyfin/jellyfin-web#readme","repository":{"type":"git","url":"git+https://github.com/jellyfin/jellyfin-web.git"},"bugs":{"url":"https://github.com/jellyfin/jellyfin-web/issues"},"license":"GPL-2.0-or-later","readme":"<h1 align=\"center\">Jellyfin Web</h1>\r\n<h3 align=\"center\">Part of the <a href=\"https://jellyfin.org\">Jellyfin Project</a></h3>\r\n\r\n---\r\n\r\n<p align=\"center\">\r\n<img alt=\"Logo Banner\" src=\"https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/branding/SVG/banner-logo-solid.svg?sanitize=true\"/>\r\n<br/>\r\n<br/>\r\n<a href=\"https://github.com/jellyfin/jellyfin-web\">\r\n<img alt=\"GPL 2.0 License\" src=\"https://img.shields.io/github/license/jellyfin/jellyfin-web.svg\"/>\r\n</a>\r\n<a href=\"https://github.com/jellyfin/jellyfin-web/releases\">\r\n<img alt=\"Current Release\" src=\"https://img.shields.io/github/release/jellyfin/jellyfin-web.svg\"/>\r\n</a>\r\n<a href=\"https://translate.jellyfin.org/projects/jellyfin/jellyfin-web/?utm_source=widget\">\r\n<img src=\"https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/svg-badge.svg\" alt=\"Translation Status\"/>\r\n</a>\r\n<br/>\r\n<a href=\"https://opencollective.com/jellyfin\">\r\n<img alt=\"Donate\" src=\"https://img.shields.io/opencollective/all/jellyfin.svg?label=backers\"/>\r\n</a>\r\n<a href=\"https://features.jellyfin.org\">\r\n<img alt=\"Feature Requests\" src=\"https://img.shields.io/badge/fider-vote%20on%20features-success.svg\"/>\r\n</a>\r\n<a href=\"https://matrix.to/#/+jellyfin:matrix.org\">\r\n<img alt=\"Chat on Matrix\" src=\"https://img.shields.io/matrix/jellyfin:matrix.org.svg?logo=matrix\"/>\r\n</a>\r\n<a href=\"https://www.reddit.com/r/jellyfin\">\r\n<img alt=\"Join our Subreddit\" src=\"https://img.shields.io/badge/reddit-r%2Fjellyfin-%23FF5700.svg\"/>\r\n</a>\r\n</p>\r\n\r\nJellyfin Web is the frontend used for most of the clients available for end users, such as desktop browsers, Android, and iOS. We welcome all contributions and pull requests! If you have a larger feature in mind please open an issue so we can discuss the implementation before you start. Translations can be improved very easily from our <a href=\"https://translate.jellyfin.org/projects/jellyfin/jellyfin-web\">Weblate</a> instance. Look through the following graphic to see if your native language could use some work!\r\n\r\n<a href=\"https://translate.jellyfin.org/engage/jellyfin/?utm_source=widget\">\r\n<img src=\"https://translate.jellyfin.org/widgets/jellyfin/-/jellyfin-web/multi-auto.svg\" alt=\"Detailed Translation Status\"/>\r\n</a>\r\n\r\n## Build Process\r\n\r\n### Dependencies\r\n\r\n- [Node.js](https://nodejs.org/en/download)\r\n- npm (included in Node.js)\r\n\r\n### Getting Started\r\n\r\n1. Clone or download this repository.\r\n\r\n   ```sh\r\n   git clone https://github.com/jellyfin/jellyfin-web.git\r\n   cd jellyfin-web\r\n   ```\r\n\r\n2. Install build dependencies in the project directory.\r\n\r\n   ```sh\r\n   npm install\r\n   ```\r\n\r\n3. Run the web client with webpack for local development.\r\n\r\n   ```sh\r\n   npm start\r\n   ```\r\n\r\n4. Build the client with sourcemaps available.\r\n\r\n   ```sh\r\n   npm run build:development\r\n   ```\r\n\r\n## Directory Structure\r\n\r\n```\r\n.\r\n└── src\r\n    ├── apps\r\n    │   ├── dashboard     # Admin dashboard app layout and routes\r\n    │   ├── experimental  # New experimental app layout and routes\r\n    │   └── stable        # Classic (stable) app layout and routes\r\n    ├── assets            # Static assets\r\n    ├── components        # Higher order visual components and React components\r\n    ├── controllers       # Legacy page views and controllers 🧹\r\n    ├── elements          # Basic webcomponents and React wrappers 🧹\r\n    ├── hooks             # Custom React hooks\r\n    ├── lib               # Reusable libraries\r\n    │   ├── globalize     # Custom localization library\r\n    │   ├── legacy        # Polyfills for legacy browsers\r\n    │   ├── navdrawer     # Navigation drawer library for classic layout\r\n    │   └── scroller      # Content scrolling library\r\n    ├── plugins           # Client plugins\r\n    ├── scripts           # Random assortment of visual components and utilities 🐉\r\n    ├── strings           # Translation files\r\n    ├── styles            # Common app Sass stylesheets\r\n    ├── themes            # CSS themes\r\n    ├── types             # Common TypeScript interfaces/types\r\n    └── utils             # Utility functions\r\n```\r\n\r\n- 🧹 &mdash; Needs cleanup\r\n- 🐉 &mdash; Serious mess (Here be dragons)\r\n","readmeFilename":"README.md"}