{ "name": "frontend", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "concurrently \"npm run dev:vite\" \"npm run dev:worker\"", "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", "prepare": "husky install", "dev:worker": "wrangler dev", "dev:vite": "vite --host", "test": "jest" }, "dependencies": { "@headlessui/react": "^2.2.0", "@heroicons/react": "^2.2.0", "@tailwindui/react": "^0.1.1", "@types/flexsearch": "^0.7.6", "@types/react-helmet": "^6.1.11", "crypto-js": "^4.2.0", "esptool-js": "^0.4.7", "flexsearch": "^0.7.43", "jszip": "^3.10.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-facebook-pixel": "^1.0.4", "react-helmet": "^6.1.0", "react-helmet-async": "^2.0.5", "react-markdown": "^10.1.0", "react-router-dom": "^7.0.2" }, "devDependencies": { "@eslint/js": "^9.15.0", "@types/crypto-js": "^4.2.2", "@types/jest": "^29.5.14", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/w3c-web-serial": "^1.0.7", "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", "concurrently": "^9.1.0", "eslint": "^9.15.0", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-react-refresh": "^0.4.14", "globals": "^15.12.0", "husky": "^8.0.3", "jest": "^29.7.0", "postcss": "^8.4.49", "tailwindcss": "^3.4.16", "ts-jest": "^29.3.1", "typescript": "~5.6.2", "typescript-eslint": "^8.15.0", "vite": "^6.0.1", "wrangler": "^4.12.0" } }