package.json 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. {
  2. "name": "3x-ui-frontend",
  3. "private": true,
  4. "version": "0.6.0",
  5. "type": "module",
  6. "description": "3x-ui panel frontend (React 19 + Ant Design 6 + Vite 8).",
  7. "engines": {
  8. "node": ">=24.0.0",
  9. "npm": ">=10.0.0"
  10. },
  11. "scripts": {
  12. "dev": "vite",
  13. "build": "npm run gen:api && vite build",
  14. "preview": "vite preview",
  15. "lint": "oxlint src tools",
  16. "lint:fix": "oxlint --fix src tools",
  17. "lint:deprecated": "oxlint --type-aware -A all -D typescript/no-deprecated src",
  18. "format": "oxfmt src tools",
  19. "format:check": "oxfmt --check src tools",
  20. "typecheck": "tsc --noEmit",
  21. "test": "vitest run",
  22. "test:watch": "vitest",
  23. "storybook": "storybook dev -p 6006",
  24. "build-storybook": "storybook build",
  25. "gen": "npm run gen:zod && npm run gen:api",
  26. "gen:api": "node scripts/build-openapi.mjs",
  27. "gen:zod": "cd .. && go run ./tools/openapigen",
  28. "prepare": "cd .. && husky frontend/.husky || true"
  29. },
  30. "lint-staged": {
  31. "src/**/*.{ts,tsx}": [
  32. "oxfmt",
  33. "oxlint --fix"
  34. ]
  35. },
  36. "dependencies": {
  37. "@ant-design/icons": "^6.3.2",
  38. "@codemirror/lang-json": "^6.0.2",
  39. "@codemirror/theme-one-dark": "^6.1.3",
  40. "@hookform/resolvers": "^5.9.1",
  41. "@noble/hashes": "^2.3.0",
  42. "@tanstack/react-query": "^5.101.4",
  43. "@tanstack/react-query-devtools": "^5.101.4",
  44. "antd": "^6.6.1",
  45. "codemirror": "^6.0.2",
  46. "dayjs": "^1.11.23",
  47. "i18next": "^26.3.6",
  48. "otpauth": "^9.5.1",
  49. "persian-calendar-suite": "^1.5.6",
  50. "react": "^19.2.8",
  51. "react-dom": "^19.2.8",
  52. "react-hook-form": "^7.85.0",
  53. "react-i18next": "^17.0.11",
  54. "react-router": "^8.3.0",
  55. "swagger-ui-react": "^5.32.14",
  56. "uplot": "^1.6.32",
  57. "zod": "^4.4.3"
  58. },
  59. "devDependencies": {
  60. "@storybook/addon-a11y": "^10.5.9",
  61. "@storybook/addon-docs": "^10.5.9",
  62. "@storybook/addon-vitest": "^10.5.9",
  63. "@storybook/react-vite": "^10.5.9",
  64. "@testing-library/dom": "^10.4.1",
  65. "@testing-library/react": "^16.3.2",
  66. "@types/react": "^19.2.18",
  67. "@types/react-dom": "^19.2.4",
  68. "@types/swagger-ui-react": "^5.18.0",
  69. "@vitejs/plugin-react": "^6.0.5",
  70. "@vitest/browser-playwright": "4.1.11",
  71. "@vitest/coverage-v8": "^4.1.11",
  72. "husky": "^9.1.7",
  73. "jsdom": "^30.0.1",
  74. "lint-staged": "^17.3.0",
  75. "msw": "^2.15.0",
  76. "oxfmt": "0.64.0",
  77. "oxlint": "1.79.0",
  78. "oxlint-tsgolint": "^7.0.2001",
  79. "playwright": "^1.62.1",
  80. "storybook": "^10.5.9",
  81. "typescript": "7.0.2",
  82. "vite": "8.2.1",
  83. "vitest": "^4.1.11"
  84. },
  85. "overrides": {
  86. "dompurify": "^3.4.11",
  87. "react-copy-to-clipboard": "^5.1.1",
  88. "react-inspector": "^9.0.0",
  89. "react-debounce-input": {
  90. "react": "^19.0.0"
  91. },
  92. "swagger-ui-react": {
  93. "js-yaml": "^4.2.0",
  94. "brace-expansion": "^5.0.9"
  95. },
  96. "@typeschema/valibot": {
  97. "valibot": "^1.1.0"
  98. }
  99. },
  100. "allowScripts": {
  101. "@scarf/scarf": false,
  102. "@tree-sitter-grammars/tree-sitter-yaml": false,
  103. "tree-sitter": false,
  104. "core-js-pure": false,
  105. "tree-sitter-json": false,
  106. "msw": false,
  107. "esbuild": false
  108. },
  109. "msw": {
  110. "workerDirectory": [
  111. "public"
  112. ]
  113. }
  114. }