{ "name": "jellyfin-web", "version": "10.9.0", "description": "Web interface for Jellyfin", "repository": "https://github.com/jellyfin/jellyfin-web", "license": "GPL-2.0-or-later", "devDependencies": { "@babel/core": "7.23.2", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-proposal-private-methods": "7.18.6", "@babel/plugin-transform-modules-umd": "7.22.5", "@babel/preset-env": "7.23.2", "@babel/preset-react": "7.22.15", "@types/escape-html": "1.0.3", "@types/loadable__component": "5.13.6", "@types/lodash-es": "4.17.10", "@types/react": "17.0.69", "@types/react-dom": "17.0.22", "@types/sortablejs": "1.15.4", "@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/parser": "5.62.0", "@uupaa/dynamic-import-polyfill": "1.0.2", "autoprefixer": "10.4.16", "babel-loader": "9.1.3", "babel-plugin-dynamic-import-polyfill": "1.0.0", "clean-webpack-plugin": "4.0.0", "confusing-browser-globals": "1.0.11", "copy-webpack-plugin": "11.0.0", "cross-env": "7.0.3", "css-loader": "6.8.1", "cssnano": "6.0.1", "es-check": "7.1.1", "eslint": "8.52.0", "eslint-plugin-compat": "4.2.0", "eslint-plugin-eslint-comments": "3.2.0", "eslint-plugin-import": "2.29.0", "eslint-plugin-jsx-a11y": "6.8.0", "eslint-plugin-react": "7.33.2", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-sonarjs": "0.22.0", "expose-loader": "4.1.0", "fork-ts-checker-webpack-plugin": "9.0.2", "html-loader": "4.2.0", "html-webpack-plugin": "5.5.3", "jsdom": "22.1.0", "mini-css-extract-plugin": "2.7.6", "postcss": "8.4.31", "postcss-loader": "7.3.3", "postcss-preset-env": "9.3.0", "postcss-scss": "4.0.9", "sass": "1.69.5", "sass-loader": "13.3.2", "source-map-loader": "4.0.1", "speed-measure-webpack-plugin": "1.5.0", "style-loader": "3.3.3", "stylelint": "15.11.0", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.2.1", "stylelint-order": "6.0.3", "stylelint-scss": "5.3.0", "ts-loader": "9.5.0", "typescript": "5.2.2", "vitest": "0.34.6", "webpack": "5.89.0", "webpack-bundle-analyzer": "4.9.1", "webpack-cli": "5.1.4", "webpack-dev-server": "4.15.1", "webpack-merge": "5.10.0", "worker-loader": "3.0.8" }, "dependencies": { "@emotion/react": "11.11.1", "@emotion/styled": "11.11.0", "@fontsource/noto-sans": "5.0.17", "@fontsource/noto-sans-hk": "5.0.16", "@fontsource/noto-sans-jp": "5.0.16", "@fontsource/noto-sans-kr": "5.0.16", "@fontsource/noto-sans-sc": "5.0.16", "@fontsource/noto-sans-tc": "5.0.16", "@jellyfin/sdk": "unstable", "@loadable/component": "5.15.3", "@mui/icons-material": "5.14.16", "@mui/material": "5.14.16", "@mui/x-data-grid": "6.17.0", "@react-hook/resize-observer": "1.2.6", "@tanstack/react-query": "4.36.1", "@tanstack/react-query-devtools": "4.36.1", "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.3.2", "core-js": "3.33.2", "date-fns": "2.30.0", "dompurify": "3.0.1", "epubjs": "0.3.93", "escape-html": "1.0.3", "event-target-polyfill": "github:ThaUnknown/event-target-polyfill", "fast-text-encoding": "1.0.6", "flv.js": "1.6.2", "headroom.js": "0.12.0", "history": "5.3.0", "hls.js": "github:nyanmisaka/hls.js#v1.5.0-fix-firefox-av1", "intersection-observer": "0.12.2", "jassub": "1.7.1", "jellyfin-apiclient": "1.11.0", "jquery": "3.7.1", "jstree": "3.3.16", "libarchive.js": "1.3.0", "lodash-es": "4.17.21", "marked": "4.3.0", "material-design-icons-iconfont": "6.7.0", "native-promise-only": "0.8.1", "pdfjs-dist": "3.11.174", "react": "17.0.2", "react-dom": "17.0.2", "react-router-dom": "6.18.0", "resize-observer-polyfill": "1.5.1", "screenfull": "6.0.2", "sortablejs": "1.15.0", "swiper": "9.4.1", "webcomponents.js": "0.7.24", "whatwg-fetch": "3.6.19" }, "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": "cross-env NODE_OPTIONS=\"--max_old_space_size=6144\" webpack --config webpack.dev.js", "build:production": "cross-env NODE_ENV=\"production\" NODE_OPTIONS=\"--max_old_space_size=6144\" webpack --config webpack.prod.js", "build:check": "tsc --noEmit", "escheck": "es-check", "lint": "eslint \"./\"", "test": "vitest --watch=false --config vite.config.ts", "test:watch": "vitest --config vite.config.ts", "stylelint": "npm run stylelint:css && npm run stylelint:scss", "stylelint:css": "stylelint \"src/**/*.css\"", "stylelint:scss": "stylelint --config=\".stylelintrc.scss.json\" \"src/**/*.scss\"" }, "engines": { "node": ">=20.0.0", "npm": ">=9.6.4", "yarn": "YARN NO LONGER USED - use npm instead." } }