{ "name": "webclient", "version": "1.0.0", "private": true, "scripts": { "prebuild": "npm run proto:generate && node prebuild.js", "prestart": "npm run proto:generate && node prebuild.js", "build": "vite build", "start": "vite", "preview": "vite preview", "test": "vitest run", "test:coverage": "npm run test -- --coverage", "test:watch": "vitest", "test:integration": "vitest run --config vitest.integration.config.ts", "test:integration:coverage": "npm run test:integration -- --coverage", "lint": "eslint src", "lint:fix": "eslint src --fix", "golden": "npm run lint && npm run test && npm run test:integration", "golden:coverage": "npm run lint && npm run test:coverage && npm run test:integration:coverage", "prepare": "cd .. && husky", "translate": "node prebuild.js -i18nOnly", "proto:generate": "npx buf generate", "diagram": "npm run diagram:simple && npm run diagram:detailed && npm run diagram:flow", "diagram:simple": "npx -y -p @mermaid-js/mermaid-cli -p puppeteer mmdc -i architecture/simple.mmd -o architecture/simple.png -b white -s 2", "diagram:detailed": "npx -y -p @mermaid-js/mermaid-cli -p puppeteer mmdc -i architecture/detailed.mmd -o architecture/detailed.png -b white -s 2", "diagram:flow": "npx -y -p @mermaid-js/mermaid-cli -p puppeteer mmdc -i architecture/flow.mmd -o architecture/flow.png -b white -s 2" }, "dependencies": { "@bufbuild/protobuf": "^2.11.0", "@dnd-kit/core": "^6.3.1", "@dnd-kit/utilities": "^3.2.2", "@emotion/react": "^11.8.2", "@emotion/styled": "^11.8.1", "@mui/icons-material": "^9.0.0", "@mui/material": "^9.0.0", "@reduxjs/toolkit": "^2.11.2", "crypto-js": "^4.2.0", "dexie": "^4.4.2", "dompurify": "^3.4.0", "final-form": "^5.0.0", "final-form-set-field-touched": "^1.0.1", "i18next": "^26.0.5", "i18next-browser-languagedetector": "^8.2.1", "i18next-icu": "^2.0.3", "intl-messageformat": "^11.2.1", "prop-types": "^15.8.1", "react": "^19.0.0", "react-dom": "^19.0.0", "react-final-form": "^7.0.0", "react-final-form-listeners": "^3.0.0", "react-i18next": "^17.0.3", "react-redux": "^9.2.0", "react-router-dom": "^7.14.1", "react-virtualized-auto-sizer": "^2.0.3", "react-window": "^2.2.7", "rxjs": "^7.5.4" }, "devDependencies": { "@bufbuild/buf": "^1.68.1", "@bufbuild/protoc-gen-es": "^2.11.0", "@eslint/js": "^10.0.1", "@mui/types": "^9.0.0", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.4.0", "@testing-library/react": "^16.3.2", "@types/dompurify": "^3.0.5", "@types/node": "^22.19.17", "@types/prop-types": "^15.7.4", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@types/react-virtualized-auto-sizer": "^1.0.1", "@types/react-window": "^1.8.5", "@typescript-eslint/eslint-plugin": "^8.58.2", "@typescript-eslint/parser": "^8.58.2", "@vitejs/plugin-react": "^6.0.1", "@vitejs/plugin-react-swc": "^4.3.0", "@vitest/coverage-v8": "^4.1.4", "eslint": "^10.2.0", "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-boundaries": "^6.0.2", "fake-indexeddb": "^6.2.5", "fs-extra": "^11.3.4", "globals": "^17.5.0", "husky": "^9.1.7", "jsdom": "^29.0.2", "typescript": "~6.0", "typescript-eslint": "^8.58.2", "vite": "^8.0.8", "vitest": "^4.1.4" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }