{ "name": "jeffemmett", "version": "1.0.0", "description": "Jeff Emmett's personal website", "type": "module", "scripts": { "dev": "concurrently --kill-others --names client,worker --prefix-colors blue,red yarn:dev:client yarn:dev:worker", "dev:client": "vite --host", "dev:worker": "wrangler dev", "build": "tsc && vite build", "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "watch": "tsc --noEmit --watch" }, "keywords": [], "author": "Jeff Emmett", "license": "ISC", "dependencies": { "@dimforge/rapier2d": "^0.11.2", "@react-oauth/google": "^0.12.1", "@tldraw/sync": "^2.4.6", "@tldraw/sync-core": "^2.4.6", "@tldraw/tlschema": "^2.4.6", "@types/markdown-it": "^14.1.1", "@vercel/analytics": "^1.2.2", "@whereby.com/browser-sdk": "^3.9.2", "cloudflare-workers-unfurl": "^0.0.7", "gray-matter": "^4.0.3", "itty-router": "^5.0.17", "jwt-decode": "^4.0.0", "lodash.throttle": "^4.1.1", "markdown-it": "^14.1.0", "markdown-it-latex2img": "^0.0.6", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-google-drive-picker": "^1.2.2", "react-google-picker": "^0.1.0", "react-router-dom": "^6.22.3", "socket.io-client": "^4.8.1", "tldraw": "^2.4.6", "use-local-storage-state": "^19.5.0" }, "devDependencies": { "@biomejs/biome": "1.4.1", "@cloudflare/types": "^6.29.1", "@cloudflare/workers-types": "^4.20240821.1", "@types/lodash.throttle": "^4", "@types/react": "^18.2.15", "@types/react-dom": "^18.2.7", "@types/react-google-picker": "^0.1.4", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "@vitejs/plugin-react": "^4.0.3", "@vitejs/plugin-react-swc": "^3.6.0", "concurrently": "^8.2.2", "eslint": "^8.38.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.3.4", "typescript": "^5.6.3", "vite": "^5.3.3", "vite-plugin-static-copy": "^1.0.6", "vite-plugin-top-level-await": "^1.3.1", "vite-plugin-wasm": "^3.2.2", "wrangler": "^3.88.0" } }