{
  "name": "jellyfin-web",
  "version": "10.9.2",
  "description": "Web interface for Jellyfin",
  "repository": "https://github.com/jellyfin/jellyfin-web",
  "license": "GPL-2.0-or-later",
  "devDependencies": {
    "@babel/core": "7.24.3",
    "@babel/plugin-proposal-class-properties": "7.18.6",
    "@babel/plugin-proposal-private-methods": "7.18.6",
    "@babel/plugin-transform-modules-umd": "7.24.1",
    "@babel/preset-env": "7.24.3",
    "@babel/preset-react": "7.24.1",
    "@types/escape-html": "1.0.4",
    "@types/loadable__component": "5.13.9",
    "@types/lodash-es": "4.17.12",
    "@types/markdown-it": "13.0.7",
    "@types/react": "17.0.79",
    "@types/react-dom": "17.0.25",
    "@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",
    "autoprefixer": "10.4.19",
    "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": "12.0.2",
    "cross-env": "7.0.3",
    "css-loader": "6.10.0",
    "cssnano": "6.1.2",
    "es-check": "7.1.1",
    "eslint": "8.57.0",
    "eslint-plugin-compat": "4.2.0",
    "eslint-plugin-eslint-comments": "3.2.0",
    "eslint-plugin-import": "2.29.1",
    "eslint-plugin-jsx-a11y": "6.8.0",
    "eslint-plugin-react": "7.34.1",
    "eslint-plugin-react-hooks": "4.6.0",
    "eslint-plugin-sonarjs": "0.24.0",
    "expose-loader": "4.1.0",
    "fork-ts-checker-webpack-plugin": "9.0.2",
    "html-loader": "4.2.0",
    "html-webpack-plugin": "5.6.0",
    "jsdom": "23.2.0",
    "mini-css-extract-plugin": "2.8.1",
    "postcss": "8.4.38",
    "postcss-loader": "7.3.4",
    "postcss-preset-env": "9.5.2",
    "postcss-scss": "4.0.9",
    "sass": "1.72.0",
    "sass-loader": "13.3.3",
    "source-map-loader": "4.0.2",
    "speed-measure-webpack-plugin": "1.5.0",
    "style-loader": "3.3.4",
    "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.4.3",
    "vitest": "1.4.0",
    "webpack": "5.91.0",
    "webpack-bundle-analyzer": "4.10.1",
    "webpack-cli": "5.1.4",
    "webpack-dev-server": "4.15.2",
    "webpack-merge": "5.10.0",
    "worker-loader": "3.0.8"
  },
  "dependencies": {
    "@emotion/react": "11.11.4",
    "@emotion/styled": "11.11.0",
    "@fontsource/noto-sans": "5.0.21",
    "@fontsource/noto-sans-hk": "5.0.18",
    "@fontsource/noto-sans-jp": "5.0.18",
    "@fontsource/noto-sans-kr": "5.0.18",
    "@fontsource/noto-sans-sc": "5.0.18",
    "@fontsource/noto-sans-tc": "5.0.18",
    "@jellyfin/libass-wasm": "4.2.1",
    "@jellyfin/sdk": "0.9.0",
    "@loadable/component": "5.16.3",
    "@mui/icons-material": "5.15.11",
    "@mui/material": "5.15.11",
    "@mui/x-data-grid": "6.19.5",
    "@react-hook/resize-observer": "1.2.6",
    "@tanstack/react-query": "4.36.1",
    "@tanstack/react-query-devtools": "4.36.1",
    "@types/react-lazy-load-image-component": "1.6.3",
    "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.36.1",
    "date-fns": "2.30.0",
    "dompurify": "3.0.1",
    "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.7",
    "intersection-observer": "0.12.2",
    "jellyfin-apiclient": "1.11.0",
    "jquery": "3.7.1",
    "jstree": "3.3.16",
    "libarchive.js": "1.3.0",
    "lodash-es": "4.17.21",
    "markdown-it": "14.1.0",
    "material-design-icons-iconfont": "6.7.0",
    "native-promise-only": "0.8.1",
    "pdfjs-dist": "3.11.174",
    "react": "17.0.2",
    "react-blurhash": "0.3.0",
    "react-dom": "17.0.2",
    "react-lazy-load-image-component": "1.6.0",
    "react-router-dom": "6.22.3",
    "resize-observer-polyfill": "1.5.1",
    "screenfull": "6.0.2",
    "sortablejs": "1.15.2",
    "swiper": "11.0.7",
    "usehooks-ts": "2.16.0",
    "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",
    "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."
  }
}
