mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-13 01:14:59 +03:00
da6872a3b8
lint-staged hands every staged src/**/*.ts file to oxfmt and oxlint, but both ignore src/generated, so a commit whose only TypeScript change is a regenerated schema (a validator tag edit plus make gen) aborts with "Expected at least one target file". Tell both tools an empty selection is not an error.
125 lines
3.4 KiB
JSON
125 lines
3.4 KiB
JSON
{
|
|
"name": "3x-ui-frontend",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"description": "3x-ui panel frontend (React 19 + Ant Design 6 + Vite 8).",
|
|
"engines": {
|
|
"node": ">=26.0.0",
|
|
"npm": ">=11.0.0"
|
|
},
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "npm run gen:api && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "oxlint src tools",
|
|
"lint:fix": "oxlint --fix src tools",
|
|
"lint:deprecated": "oxlint --type-aware -A all -D typescript/no-deprecated src",
|
|
"format": "oxfmt src tools",
|
|
"format:check": "oxfmt --check src tools",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"storybook": "storybook dev -p 6006",
|
|
"build-storybook": "storybook build",
|
|
"gen": "npm run gen:zod && npm run gen:api",
|
|
"gen:api": "node scripts/build-openapi.mjs",
|
|
"gen:zod": "cd .. && go run ./tools/openapigen",
|
|
"prepare": "cd .. && husky frontend/.husky || true"
|
|
},
|
|
"lint-staged": {
|
|
"src/**/*.{ts,tsx}": [
|
|
"oxfmt --no-error-on-unmatched-pattern",
|
|
"oxlint --fix --no-error-on-unmatched-pattern"
|
|
]
|
|
},
|
|
"dependencies": {
|
|
"@ant-design/icons": "^6.3.4",
|
|
"@codemirror/lang-json": "^6.0.2",
|
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
"@hookform/resolvers": "^5.9.1",
|
|
"@noble/hashes": "^2.4.0",
|
|
"@tanstack/react-query": "^5.104.1",
|
|
"@tanstack/react-query-devtools": "^5.104.1",
|
|
"antd": "^6.6.5",
|
|
"codemirror": "^6.0.2",
|
|
"dayjs": "^1.11.23",
|
|
"i18next": "^26.4.2",
|
|
"otpauth": "^9.5.2",
|
|
"persian-calendar-suite": "^1.5.6",
|
|
"react": "^19.3.0",
|
|
"react-dom": "^19.3.0",
|
|
"react-hook-form": "^7.89.0",
|
|
"react-i18next": "^17.0.15",
|
|
"react-router": "^8.4.0",
|
|
"swagger-ui-react": "^5.33.1",
|
|
"uplot": "^1.6.32",
|
|
"zod": "^4.6.5"
|
|
},
|
|
"devDependencies": {
|
|
"@storybook/addon-a11y": "^10.6.1",
|
|
"@storybook/addon-docs": "^10.6.1",
|
|
"@storybook/addon-vitest": "^10.6.1",
|
|
"@storybook/react-vite": "^10.6.1",
|
|
"@testing-library/dom": "^10.4.2",
|
|
"@testing-library/react": "^16.3.3",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@types/swagger-ui-react": "^5.18.0",
|
|
"@vitejs/plugin-react": "^6.1.2",
|
|
"@vitest/browser-playwright": "5.0.3",
|
|
"@vitest/coverage-v8": "^5.0.3",
|
|
"husky": "^9.1.7",
|
|
"jsdom": "^30.1.2",
|
|
"lint-staged": "^17.6.0",
|
|
"msw": "^3.0.2",
|
|
"oxfmt": "0.72.0",
|
|
"oxlint": "1.87.0",
|
|
"oxlint-tsgolint": "^7.0.2003",
|
|
"playwright": "^1.63.0",
|
|
"storybook": "^10.6.1",
|
|
"typescript": "7.0.2",
|
|
"vite": "8.3.3",
|
|
"vitest": "^5.0.3"
|
|
},
|
|
"overrides": {
|
|
"dompurify": "^3.4.15",
|
|
"react-copy-to-clipboard": "^5.1.1",
|
|
"react-inspector": "^9.0.0",
|
|
"seroval": "^1.6.8",
|
|
"seroval-plugins": "^1.6.8",
|
|
"react-debounce-input": {
|
|
"react": "^19.0.0"
|
|
},
|
|
"swagger-ui-react": {
|
|
"js-yaml": "^4.3.2",
|
|
"brace-expansion": "^5.0.9"
|
|
},
|
|
"@typeschema/valibot": {
|
|
"valibot": "^1.1.0"
|
|
},
|
|
"@storybook/addon-vitest": {
|
|
"vitest": "^5.0.0",
|
|
"@vitest/browser-playwright": "^5.0.0",
|
|
"@vitest/browser": "^5.0.0"
|
|
},
|
|
"remarkable": {
|
|
"argparse": "^2.0.1"
|
|
}
|
|
},
|
|
"allowScripts": {
|
|
"@scarf/scarf": false,
|
|
"@tree-sitter-grammars/tree-sitter-yaml": false,
|
|
"tree-sitter": false,
|
|
"core-js-pure": false,
|
|
"tree-sitter-json": false,
|
|
"msw": false,
|
|
"esbuild": false
|
|
},
|
|
"msw": {
|
|
"workerDirectory": [
|
|
"public"
|
|
]
|
|
}
|
|
}
|