{
  "name": "jellyfin-web",
  "version": "10.11.11",
  "description": "Web interface for Jellyfin",
  "repository": "https://github.com/jellyfin/jellyfin-web",
  "license": "GPL-2.0-or-later",
  "devDependencies": {
    "@babel/core": "7.27.4",
    "@babel/plugin-transform-modules-umd": "7.27.1",
    "@babel/preset-env": "7.27.2",
    "@babel/preset-react": "7.27.1",
    "@eslint-community/eslint-plugin-eslint-comments": "4.5.0",
    "@eslint/js": "9.30.1",
    "@stylistic/eslint-plugin": "4.4.1",
    "@stylistic/stylelint-plugin": "3.1.3",
    "@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.23",
    "@types/react-dom": "18.3.7",
    "@types/react-lazy-load-image-component": "1.6.4",
    "@types/sortablejs": "1.15.8",
    "@typescript-eslint/parser": "8.35.1",
    "@uupaa/dynamic-import-polyfill": "1.0.2",
    "@vitest/coverage-v8": "3.2.4",
    "autoprefixer": "10.4.21",
    "babel-loader": "10.0.0",
    "clean-webpack-plugin": "4.0.0",
    "confusing-browser-globals": "1.0.11",
    "copy-webpack-plugin": "13.0.0",
    "cross-env": "7.0.3",
    "css-loader": "7.1.2",
    "cssnano": "7.0.7",
    "es-check": "9.1.4",
    "eslint": "9.30.1",
    "eslint-plugin-compat": "6.0.2",
    "eslint-plugin-import": "2.32.0",
    "eslint-plugin-jsx-a11y": "6.10.2",
    "eslint-plugin-react": "7.37.5",
    "eslint-plugin-react-hooks": "5.2.0",
    "eslint-plugin-sonarjs": "3.0.4",
    "expose-loader": "5.0.1",
    "fast-glob": "3.3.3",
    "fork-ts-checker-webpack-plugin": "9.1.0",
    "globals": "16.2.0",
    "html-loader": "5.1.0",
    "html-webpack-plugin": "5.6.3",
    "jsdom": "26.1.0",
    "mini-css-extract-plugin": "2.9.2",
    "postcss": "8.5.6",
    "postcss-loader": "8.1.1",
    "postcss-preset-env": "10.2.3",
    "postcss-scss": "4.0.9",
    "sass": "1.89.2",
    "sass-loader": "16.0.5",
    "source-map-loader": "5.0.0",
    "speed-measure-webpack-plugin": "1.5.0",
    "style-loader": "4.0.0",
    "stylelint": "16.21.0",
    "stylelint-config-rational-order": "0.1.2",
    "stylelint-no-browser-hacks": "2.0.0",
    "stylelint-order": "7.0.0",
    "stylelint-scss": "6.12.1",
    "ts-loader": "9.5.2",
    "typescript": "5.8.3",
    "typescript-eslint": "8.35.1",
    "vitest": "3.2.4",
    "webpack": "5.99.9",
    "webpack-bundle-analyzer": "4.10.2",
    "webpack-cli": "6.0.1",
    "webpack-dev-server": "5.2.2",
    "webpack-merge": "6.0.1",
    "worker-loader": "3.0.8"
  },
  "dependencies": {
    "@emotion/react": "11.14.0",
    "@emotion/styled": "11.14.0",
    "@fontsource/noto-sans": "5.2.7",
    "@fontsource/noto-sans-hk": "5.2.6",
    "@fontsource/noto-sans-jp": "5.2.6",
    "@fontsource/noto-sans-kr": "5.2.6",
    "@fontsource/noto-sans-sc": "5.2.6",
    "@fontsource/noto-sans-tc": "5.2.6",
    "@jellyfin/libass-wasm": "4.2.3",
    "@jellyfin/sdk": "0.12.0",
    "@jellyfin/ux-web": "1.0.0",
    "@mui/icons-material": "6.4.12",
    "@mui/material": "6.4.12",
    "@mui/x-date-pickers": "7.29.4",
    "@react-hook/resize-observer": "2.0.2",
    "@tanstack/react-query": "5.80.10",
    "@tanstack/react-query-devtools": "5.80.10",
    "abortcontroller-polyfill": "1.7.8",
    "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.43.0",
    "date-fns": "2.30.0",
    "dompurify": "2.5.8",
    "element-closest-polyfill": "1.0.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.6.13",
    "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": "3.2.1",
    "native-promise-only": "0.8.1",
    "pdfjs-dist": "3.11.174",
    "proxy-polyfill": "0.3.2",
    "react": "18.3.1",
    "react-blurhash": "0.3.0",
    "react-dom": "18.3.1",
    "react-lazy-load-image-component": "1.6.3",
    "react-router-dom": "6.30.1",
    "resize-observer-polyfill": "1.5.1",
    "screenfull": "6.0.2",
    "sortablejs": "1.15.6",
    "swiper": "11.2.8",
    "usehooks-ts": "3.1.1",
    "webcomponents.js": "0.7.24",
    "whatwg-fetch": "3.6.20"
  },
  "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 <11.0.0",
    "yarn": "YARN NO LONGER USED - use npm instead."
  }
}
