{
  "name": "project",
  "version": "0.1.0",
  "private": true,
  "type": "module",
  "scripts": {
    "ci": "yarn install --frozen-lockfile",
    "setup-env-files": "tsx tools/scripts/setupEnvFiles.ts",
    "setup": "yarn ci && yarn setup-env-files",
    "dev": "yarn setup && vite",
    "preview": "yarn setup && vite preview",
    "build": "yarn setup && vite build",
    "test": "node -e \"console.log('imagine')\"",
    "build-md5": "find build -type f | sort | xargs md5sum | awk '{ print $1 }' | tr -d '\n' | md5sum| awk '{ print $1 }' > buildZip/md5sum ",
    "build-zip": "cd build && rev=$(git rev-list HEAD --count) && echo r$rev > revision && zip -9 -r ../buildZip/Suwayomi-WebUI-r$rev *",
    "lint": "eslint src --ext .ts,.tsx,.js,.jsx --max-warnings=0 --cache",
    "createCommitChangelog": "tsx tools/scripts/release/createCommitChangelog.ts",
    "createTranslationChangelog": "tsx tools/scripts/release/createTranslationChangelog.ts",
    "createReleaseChangelog": "tsx tools/scripts/release/createReleaseChangelog.ts",
    "updateDeps": "tsx tools/scripts/updateDependencies.ts",
    "gql:codegen-base": "graphql-codegen --config gql_codegen.ts",
    "gql:codegen-formatter": "tsx tools/scripts/codegenFormatter.ts",
    "gql:codegen": "yarn gql:codegen-base && yarn gql:codegen-formatter",
    "i18n:gen-resources": "tsx tools/scripts/weblate/generatei18nResources.ts",
    "dayjs:gen-locales-array": "tsx tools/scripts/dayjs/generateDayJsLocales.ts",
    "dayjs:gen-locales-import": "tsx tools/scripts/dayjs/generateDayJsLocalesImport.ts",
    "dayjs:gen-locales": "yarn dayjs:gen-locales-array && yarn dayjs:gen-locales-import",
    "prepare": "husky"
  },
  "engines": {
    "node": "22.12.0"
  },
  "lint-staged": {
    "*.{ts,tsx,js,jsx}": "eslint --fix"
  },
  "dependencies": {
    "@apollo/client": "3.13.9",
    "@dnd-kit/core": "6.3.1",
    "@dnd-kit/sortable": "10.0.0",
    "@dnd-kit/utilities": "3.2.2",
    "@emotion/cache": "11.14.0",
    "@emotion/react": "11.14.0",
    "@emotion/styled": "11.14.1",
    "@fontsource/roboto": "5.2.6",
    "@juggle/resize-observer": "3.4.0",
    "@loadable/component": "5.16.7",
    "@mantine/hooks": "8.2.5",
    "@mui/icons-material": "7.3.1",
    "@mui/material": "7.3.1",
    "@mui/system": "7.3.1",
    "@mui/utils": "7.3.1",
    "@mui/x-date-pickers": "8.10.0",
    "@vibrant/color": "4.0.0",
    "apollo-upload-client": "18.0.1",
    "csstype": "3.1.3",
    "dayjs": "1.11.13",
    "fast-average-color": "9.5.0",
    "file-selector": "2.1.2",
    "graphql": "16.11.0",
    "graphql-sock": "1.0.1",
    "graphql-tag": "2.12.6",
    "graphql-ws": "6.0.6",
    "i18next": "25.3.6",
    "i18next-browser-languagedetector": "8.2.0",
    "i18next-http-backend": "3.0.2",
    "jsonrepair": "3.13.0",
    "material-ui-popup-state": "5.3.6",
    "mui-nested-menu": "4.0.1",
    "node-vibrant": "4.0.3",
    "notistack": "3.0.2",
    "p-limit": "7.0.0",
    "react": "19.1.1",
    "react-dom": "19.1.1",
    "react-hotkeys-hook": "5.1.0",
    "react-i18next": "15.6.1",
    "react-lazily": "0.9.2",
    "react-router-dom": "6.26.1",
    "react-virtuoso": "4.14.0",
    "stylis": "4.3.6",
    "stylis-plugin-rtl": "2.1.1",
    "use-long-press": "3.3.0",
    "use-query-params": "2.2.1",
    "webfontloader": "1.6.28"
  },
  "devDependencies": {
    "@graphql-codegen/cli": "5.0.7",
    "@graphql-codegen/client-preset": "4.8.3",
    "@graphql-codegen/typescript-apollo-client-helpers": "3.0.1",
    "@graphql-codegen/typescript-operations": "4.6.1",
    "@types/apollo-upload-client": "18.0.0",
    "@types/node": "24.3.0",
    "@types/react": "19.1.10",
    "@types/react-beautiful-dnd": "13.1.8",
    "@types/react-dom": "19.1.7",
    "@types/sanitize-html": "2.16.0",
    "@types/stylis": "4.2.7",
    "@types/webfontloader": "1.6.38",
    "@types/yargs": "17.0.33",
    "@typescript-eslint/eslint-plugin": "7.16.1",
    "@typescript-eslint/parser": "7.16.1",
    "@vitejs/plugin-legacy": "7.2.1",
    "@vitejs/plugin-react-swc": "3.10.2",
    "dotenv": "17.2.1",
    "eslint": "8.57.0",
    "eslint-config-airbnb": "19.0.4",
    "eslint-config-airbnb-typescript": "18.0.0",
    "eslint-config-prettier": "9.1.0",
    "eslint-plugin-header": "3.1.1",
    "eslint-plugin-import": "2.32.0",
    "eslint-plugin-jsx-a11y": "6.10.2",
    "eslint-plugin-no-relative-import-paths": "1.6.1",
    "eslint-plugin-prettier": "5.5.4",
    "eslint-plugin-react": "7.37.5",
    "eslint-plugin-react-hooks": "4.6.2",
    "eslint-plugin-unused-imports": "3.2.0",
    "husky": "9.1.7",
    "lint-staged": "16.1.5",
    "prettier": "3.6.2",
    "syncyarnlock": "1.0.19",
    "terser": "5.43.1",
    "tsx": "4.20.4",
    "typescript": "5.9.2",
    "vite": "7.1.2",
    "vite-plugin-node-polyfills": "0.24.0",
    "vite-tsconfig-paths": "5.1.4",
    "yargs": "18.0.0"
  }
}
