package.json 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. {
  2. "name": "frontend",
  3. "private": true,
  4. "version": "0.0.0",
  5. "type": "module",
  6. "scripts": {
  7. "dev": "vite",
  8. "build": "vite build && npm run check:baseline",
  9. "typecheck": "tsc -b",
  10. "lint": "eslint .",
  11. "preview": "vite preview",
  12. "test": "vitest",
  13. "test:run": "vitest run && npm run check:i18n",
  14. "test:coverage": "vitest run --coverage",
  15. "test:ui": "vitest --ui",
  16. "check:i18n": "node scripts/check-i18n-parity.mjs",
  17. "check:baseline": "node scripts/check-browser-baseline.mjs"
  18. },
  19. "dependencies": {
  20. "@dnd-kit/core": "^6.3.1",
  21. "@dnd-kit/sortable": "^10.0.0",
  22. "@dnd-kit/utilities": "^3.2.2",
  23. "@floating-ui/dom": "^1.7.5",
  24. "@tanstack/react-query": "^5.90.11",
  25. "@tiptap/extension-color": "^3.11.1",
  26. "@tiptap/extension-image": "^3.11.1",
  27. "@tiptap/extension-link": "^3.11.1",
  28. "@tiptap/extension-text-align": "^3.11.1",
  29. "@tiptap/extension-text-style": "^3.11.1",
  30. "@tiptap/extension-underline": "^3.11.1",
  31. "@tiptap/react": "^3.11.1",
  32. "@tiptap/starter-kit": "^3.11.1",
  33. "@types/three": "^0.181.0",
  34. "dompurify": "^3.4.10",
  35. "i18next": "25.6.3",
  36. "i18next-browser-languagedetector": "^8.2.0",
  37. "jszip": "^3.10.1",
  38. "lucide-react": "^0.555.0",
  39. "mdast-util-gfm-footnote": "^2.1.0",
  40. "mdast-util-gfm-strikethrough": "^2.0.0",
  41. "mdast-util-gfm-table": "^2.0.0",
  42. "mdast-util-gfm-task-list-item": "^2.0.0",
  43. "micromark-extension-gfm-footnote": "^2.1.0",
  44. "micromark-extension-gfm-strikethrough": "^2.1.0",
  45. "micromark-extension-gfm-table": "^2.1.1",
  46. "micromark-extension-gfm-task-list-item": "^2.1.0",
  47. "occt-import-js": "^0.0.23",
  48. "papaparse": "^5.7.0",
  49. "pdfjs-dist": "^6.2.108",
  50. "qrcode.react": "^4.2.0",
  51. "react": "^19.2.0",
  52. "react-dom": "^19.2.0",
  53. "react-i18next": "^16.3.5",
  54. "react-markdown": "^9.1.0",
  55. "react-router-dom": "7.18.2",
  56. "react-simple-keyboard": "^3.8.164",
  57. "recharts": "^3.5.1",
  58. "three": "^0.181.2",
  59. "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz"
  60. },
  61. "overrides": {
  62. "minimatch": "^10.2.1",
  63. "brace-expansion": "^5.0.9",
  64. "js-yaml": "^5.2.3",
  65. "nanoid": "^3.3.18",
  66. "react-router": "7.18.2"
  67. },
  68. "devDependencies": {
  69. "@eslint/js": "^9.39.1",
  70. "@tailwindcss/postcss": "^4.1.17",
  71. "@testing-library/jest-dom": "^6.6.0",
  72. "@testing-library/react": "^16.0.0",
  73. "@testing-library/user-event": "^14.5.0",
  74. "@types/node": "^24.10.1",
  75. "@types/papaparse": "^5.5.2",
  76. "@types/react": "^19.2.5",
  77. "@types/react-dom": "^19.2.3",
  78. "@vitejs/plugin-react": "^5.2.0",
  79. "@vitest/coverage-v8": "^4.1.11",
  80. "autoprefixer": "^10.4.22",
  81. "baseline-browser-mapping": "^2.9.19",
  82. "eslint": "^9.39.1",
  83. "eslint-plugin-react-hooks": "^7.0.1",
  84. "eslint-plugin-react-refresh": "^0.4.24",
  85. "globals": "^16.5.0",
  86. "jsdom": "^25.0.0",
  87. "msw": "^2.6.0",
  88. "postcss": "^8.5.6",
  89. "remark-parse": "^11.0.0",
  90. "tailwindcss": "^4.1.17",
  91. "typescript": "~5.9.3",
  92. "typescript-eslint": "^8.46.4",
  93. "unified": "^11.0.5",
  94. "vite": "^8.0.16",
  95. "vitest": "^4.1.11"
  96. }
  97. }