{ "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": "oxlint src tools", "format": "oxfmt --write .", "format:check": "oxfmt --check .", "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:extract": "lingui extract --locale en --clean", "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", "manga:gen-type-tags": "tsx tools/scripts/manga/generateMangaTypeTags.ts", "tsc": "tsgo", "tsc:legacy": "tsc", "prepare": "husky" }, "dependencies": { "@apollo/client": "4.1.6", "@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", "@juggle/resize-observer": "3.4.0", "@lingui/core": "5.9.2", "@lingui/react": "5.9.2", "@loadable/component": "5.16.7", "@mantine/hooks": "8.3.16", "@mui/icons-material": "7.3.9", "@mui/material": "7.3.9", "@mui/system": "7.3.9", "@mui/utils": "7.3.9", "@mui/x-date-pickers": "8.27.2", "@redux-devtools/extension": "3.3.0", "@vibrant/color": "4.0.4", "apollo-upload-client": "19.0.0", "awaitable-component": "1.0.0", "csstype": "3.2.3", "dayjs": "1.11.19", "fast-average-color": "9.5.0", "file-selector": "2.1.2", "graphql": "16.13.1", "graphql-sock": "1.0.1", "graphql-tag": "2.12.6", "graphql-ws": "6.0.7", "immer": "11.1.4", "jsonrepair": "3.13.2", "koration": "1.0.0", "material-ui-popup-state": "5.3.6", "mui-nested-menu": "4.0.3", "node-vibrant": "4.0.4", "notistack": "3.0.2", "p-limit": "7.3.0", "polished": "4.3.1", "react": "19.2.4", "react-dom": "19.2.4", "react-hotkeys-hook": "5.2.4", "react-lazily": "0.9.2", "react-router-dom": "6.26.1", "react-virtuoso": "4.18.3", "rxjs": "7.8.2", "stylis": "4.3.6", "stylis-plugin-rtl": "2.1.1", "use-long-press": "3.3.0", "use-query-params": "2.2.2", "webfontloader": "1.6.28", "zustand": "5.0.11" }, "devDependencies": { "@graphql-codegen/cli": "6.1.3", "@graphql-codegen/client-preset": "5.2.4", "@graphql-codegen/typescript-apollo-client-helpers": "4.0.0", "@graphql-codegen/typescript-operations": "5.0.9", "@lingui/cli": "5.9.2", "@lingui/format-po": "5.9.2", "@lingui/swc-plugin": "5.11.0", "@lingui/vite-plugin": "5.9.2", "@tony.ganchev/eslint-plugin-header": "3.3.4", "@types/node": "24.10.1", "@types/react": "19.2.14", "@types/react-beautiful-dnd": "13.1.8", "@types/react-dom": "19.2.3", "@types/sanitize-html": "2.16.1", "@types/stylis": "4.2.7", "@types/webfontloader": "1.6.38", "@types/yargs": "17.0.35", "@typescript/native-preview": "7.0.0-dev.20260309.1", "@vitejs/plugin-legacy": "7.2.1", "@vitejs/plugin-react-swc": "4.2.3", "dotenv": "17.3.1", "eslint": "9.39.4", "eslint-plugin-lingui": "0.11.0", "eslint-plugin-no-only-tests": "3.3.0", "eslint-plugin-no-relative-import-paths": "1.6.1", "eslint-plugin-unused-imports": "4.4.1", "husky": "9.1.7", "lint-staged": "16.3.2", "oxfmt": "0.37.0", "oxlint": "1.52.0", "syncyarnlock": "1.0.19", "terser": "5.46.0", "tsx": "4.21.0", "typescript": "5.9.3", "vite": "7.3.1", "vite-plugin-node-polyfills": "0.25.0", "vite-plugin-pwa": "1.2.0", "vite-tsconfig-paths": "6.1.1", "workbox-build": "7.4.0", "workbox-window": "7.4.0", "yargs": "18.0.0" }, "resolutions": { "@swc/core": "1.15.11" }, "lint-staged": { "*.{ts,tsx,js,jsx}": [ "oxfmt --write", "oxlint --fix" ], "*.{json,md,yml,yaml,css,scss,html,graphql}": "oxfmt --write" }, "engines": { "node": ">=24" } }