{ "name": "upda-ui", "version": "4.0.1", "private": true, "author": "varakh@varakh.de", "type": "module", "engines": { "node": "^20", "npm": "^10" }, "scripts": { "start": "vite", "build": "tsc && vite build", "serve": "vite preview", "test": "vitest watch", "test:no-watch": "vitest run", "test:coverage": "vitest run --coverage", "test:ci": "vitest run --coverage --passWithNoTests", "format": "prettier --write ./src/**/*.{ts,tsx,less}", "format:check": "prettier --check ./src/**/*.{ts,tsx,less}", "lint": "eslint \"./src/**/*.{tsx,ts}\"", "lintfix": "eslint --fix \"./src/**/*.{tsx,ts}\"", "lint:style": "stylelint \"./src/**/*.less\"", "lint-style-fix": "stylelint \"./src/**/*.less\" --fix", "checkstyle": "npm run checkstyle:ts && npm run checkstyle:less && npm run checkstyle:format && npm run checkstyle:i18n", "checkstyle:format": "npm run format:check", "checkstyle:ts": "eslint \"./src/**/*.{ts,tsx}\" -f checkstyle > ci/eslint.xml", "checkstyle:less": "stylelint \"./src/**/*.less\"", "checkstyle:i18n": "sync-i18n --check --files '**/translations/*.json' --primary en --languages en --space 2 --lineendings LF", "i18n-sync": "sync-i18n --files '**/translations/*.json' --primary en --languages en --space 2 --lineendings LF", "clean": "npx --quiet rimraf build && npx --quiet rimraf node_modules" }, "dependencies": { "@ant-design/icons": "^5.5.2", "@ant-design/pro-layout": "^7.21.2", "@reduxjs/toolkit": "^2.4.0", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "antd": "^5.22.2", "file-saver": "^2.0.5", "html-react-parser": "^5.1.18", "i18next": "^24.0.2", "i18next-browser-languagedetector": "^8.0.0", "linkify-html": "^4.1.4", "linkifyjs": "^4.1.4", "lodash": "^4.17.21", "moment-timezone": "^0.5.46", "react": "^18.3.1", "react-dom": "^18.3.1", "react-i18next": "^15.1.3", "react-redux": "^9.1.2", "react-router": "^7.0.1", "typescript": "^5.7.2" }, "devDependencies": { "@eslint/compat": "^1.2.3", "@eslint/js": "^9.16.0", "@types/file-saver": "^2.0.7", "@types/lodash": "^4.17.13", "@types/node": "^20.16.15", "@typescript-eslint/eslint-plugin": "^8.16.0", "@typescript-eslint/parser": "^8.16.0", "@vitejs/plugin-react": "^4.3.4", "@vitest/coverage-v8": "^2.1.6", "eslint": "^9.16.0", "eslint-config-prettier": "^9.1.0", "eslint-formatter-checkstyle": "^8.40.0", "eslint-import-resolver-typescript": "^3.6.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-sonarjs": "^3.0.1", "eslint-plugin-testing-library": "^7.0.0", "i18next-json-sync": "^3.1.2", "jsdom": "^25.0.1", "less": "^4.2.1", "postcss-less": "^6.0.0", "prettier": "^3.4.1", "rimraf": "^6.0.1", "stylelint": "^16.11.0", "stylelint-config-standard": "^36.0.1", "stylelint-declaration-block-no-ignored-properties": "^2.8.0", "stylelint-order": "^6.0.4", "stylelint-prettier": "^5.0.2", "vite": "^6.0.3", "vite-plugin-eslint2": "^5.0.3", "vite-plugin-stylelint": "^6.0.0", "vite-plugin-svgr": "^4.3.0", "vite-tsconfig-paths": "^5.1.3", "vitest": "^2.1.6" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }