{ "name": "meshtastic-web", "version": "1.0", "description": "Meshtastic web client", "license": "GPL-3.0-only", "scripts": { "dev": "NODE_ENV=development vite", "build": "tsc && vite build", "preview": "vite preview", "package": "gzipper c -i html,js,css,png,ico,svg,webmanifest,txt dist dist/output && tar -cvf dist/build.tar -C ./dist/output/ $(ls ./dist/output/)", "format": "prettier --write 'src/**/*.{ts,tsx}'", "lint": "eslint 'src/**/*.{ts,tsx}'" }, "dependencies": { "@headlessui/react": "^1.4.2", "@meshtastic/meshtasticjs": "^0.6.26", "@reduxjs/toolkit": "^1.6.2", "boring-avatars": "^1.5.8", "i18next": "^21.4.2", "i18next-browser-languagedetector": "^6.1.2", "react": "^17.0.2", "react-apexcharts": "^1.3.9", "react-dom": "^17.0.2", "react-file-icon": "^1.1.0", "react-hook-form": "^7.19.4", "react-i18next": "^11.14.1", "react-icons": "^4.3.1", "react-json-pretty": "^2.2.0", "react-redux": "^7.2.6", "react-timeago": "^6.2.1", "swr": "^1.0.1", "type-route": "^0.6.0", "use-breakpoint": "^2.0.2" }, "devDependencies": { "@types/react": "^17.0.34", "@types/react-dom": "^17.0.11", "@types/react-file-icon": "^1.0.1", "@types/react-redux": "^7.1.20", "@types/react-timeago": "^4.1.3", "@types/w3c-web-serial": "^1.0.2", "@types/web-bluetooth": "^0.0.11", "@typescript-eslint/eslint-plugin": "^5.3.1", "@typescript-eslint/parser": "^5.3.1", "@verypossible/eslint-config": "^1.6.1", "@vitejs/plugin-react": "^1.0.8", "autoprefixer": "^10.4.0", "babel-plugin-module-resolver": "^4.1.0", "eslint": "8.2.0", "eslint-config-prettier": "^8.3.0", "eslint-import-resolver-babel-module": "^5.3.1", "eslint-import-resolver-typescript": "^2.5.0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-react": "^7.27.0", "eslint-plugin-react-hooks": "^4.3.0", "gzipper": "^6.0.0", "postcss": "^8.3.11", "prettier": "^2.4.1", "tailwindcss": "^3.0.0-alpha.2", "tar": "^6.1.11", "typescript": "^4.4.4", "vite": "^2.6.14", "vite-plugin-pwa": "^0.11.3", "workbox-window": "^6.3.0" } }