{ "name": "meshtastic-web", "version": "2.6.0-0", "type": "module", "description": "Meshtastic web client", "license": "GPL-3.0-only", "scripts": { "build": "vite build", "build:analyze": "BUNDLE_ANALYZE=true deno task build", "lint": "deno lint src/", "lint:fix": "deno lint --fix src/", "format": "deno fmt src/", "dev": "deno task dev:ui", "dev:ui": "VITE_APP_VERSION=development deno run -A npm:vite dev", "test": "deno run -A npm:vitest", "check": "deno check", "preview": "deno run -A npm: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/ ." }, "repository": { "type": "git", "url": "git+https://github.com/meshtastic/web.git" }, "bugs": { "url": "https://github.com/meshtastic/web/issues" }, "simple-git-hooks": { "pre-commit": "deno task lint:fix && deno task format" }, "lint-staged": { "*.{ts,tsx}": [ "deno task lint:fix", "deno task format" ] }, "homepage": "https://meshtastic.org", "dependencies": { "@bufbuild/protobuf": "^2.2.5", "@meshtastic/core": "npm:@jsr/meshtastic__core@2.6.4", "@meshtastic/js": "npm:@jsr/meshtastic__js@2.6.0-0", "@meshtastic/transport-http": "npm:@jsr/meshtastic__transport-http", "@meshtastic/transport-web-bluetooth": "npm:@jsr/meshtastic__transport-web-bluetooth", "@meshtastic/transport-web-serial": "npm:@jsr/meshtastic__transport-web-serial", "@noble/curves": "^1.9.0", "@radix-ui/react-accordion": "^1.2.8", "@radix-ui/react-checkbox": "^1.2.3", "@radix-ui/react-dialog": "^1.1.11", "@radix-ui/react-dropdown-menu": "^2.1.12", "@radix-ui/react-label": "^2.1.4", "@radix-ui/react-menubar": "^1.1.12", "@radix-ui/react-popover": "^1.1.11", "@radix-ui/react-scroll-area": "^1.2.6", "@radix-ui/react-select": "^2.2.2", "@radix-ui/react-separator": "^1.1.4", "@radix-ui/react-slider": "^1.3.2", "@radix-ui/react-switch": "^1.2.2", "@radix-ui/react-tabs": "^1.1.9", "@radix-ui/react-toast": "^1.2.11", "@radix-ui/react-toggle-group": "^1.1.9", "@radix-ui/react-tooltip": "^1.2.4", "@tanstack/react-router": "^1.120.15", "@tanstack/react-router-devtools": "^1.120.16", "@tanstack/router-devtools": "^1.120.15", "@turf/turf": "^7.2.0", "@types/web-bluetooth": "^0.0.21", "base64-js": "^1.5.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "crypto-random-string": "^5.0.0", "i18next": "^25.2.0", "i18next-browser-languagedetector": "^8.1.0", "i18next-http-backend": "^3.0.2", "idb-keyval": "^6.2.1", "immer": "^10.1.1", "js-cookie": "^3.0.5", "lucide-react": "^0.507.0", "maplibre-gl": "5.4.0", "react": "^19.1.0", "react-dom": "^19.1.0", "react-error-boundary": "^6.0.0", "react-hook-form": "^7.56.2", "react-i18next": "^15.5.1", "react-map-gl": "8.0.4", "react-qrcode-logo": "^3.0.0", "rfc4648": "^1.5.4", "zod": "^3.25.62", "zustand": "5.0.5" }, "devDependencies": { "@tailwindcss/postcss": "^4.1.5", "@tanstack/router-plugin": "^1.120.15", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/chrome": "^0.0.318", "@types/node": "^22.15.3", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.3", "@types/serviceworker": "^0.0.133", "@types/js-cookie": "^3.0.6", "@types/w3c-web-serial": "^1.0.8", "@vitejs/plugin-react": "^4.4.1", "autoprefixer": "^10.4.21", "gzipper": "^8.2.1", "happy-dom": "^17.4.6", "postcss": "^8.5.3", "simple-git-hooks": "^2.13.0", "tailwind-merge": "^3.2.0", "tailwindcss": "^4.1.5", "tailwindcss-animate": "^1.0.7", "tar": "^7.4.3", "testing-library": "^0.0.2", "typescript": "^5.8.3", "vite": "^6.3.4", "vite-plugin-pwa": "^1.0.0", "vite-plugin-static-copy": "^3.0.0", "vitest": "^3.1.2" } }