{ "name": "@follow/server", "private": true, "scripts": { "build": "cross-env NODE_ENV=production vite build && tsx scripts/prepare-vercel-build.ts && tsup && tsx scripts/cleanup-vercel-build.ts", "dev": "cross-env NODE_ENV=development tsx watch --include \"src/**/*.ts\" --exclude \"./*.ts\" --exclude \"./*.mjs\" index.ts", "meta": "tsx helper/meta-map.ts --watch", "start": "tsx index.ts" }, "dependencies": { "@fastify/middie": "9.0.2", "@fastify/request-context": "6.0.1", "@fontsource/sn-pro": "5.1.0", "@openpanel/web": "1.0.1", "@resvg/resvg-js": "2.6.2", "@sentry/react": "8.42.0", "@tanstack/react-query": "5.62.3", "blurhash": "2.0.5", "click-to-react-component": "1.1.2", "dayjs": "1.11.13", "fastify": "5.1.0", "framer-motion": "11.13.1", "i18next": "^24.0.5", "jotai": "2.10.3", "kose-font": "1.0.0", "linkedom": "^0.18.6", "ofetch": "1.4.1", "rc-modal-sheet": "0.3.2", "react": "^18.3.1", "react-blurhash": "^0.3.0", "react-hook-form": "7.54.0", "react-hotkeys-hook": "4.6.1", "react-i18next": "^15.1.3", "react-photo-view": "1.2.6", "react-router": "7.0.2", "satori": "0.12.0", "sonner": "1.7.1", "use-context-selector": "2.0.0", "xss": "1.0.15", "zod": "3.24.1" }, "devDependencies": { "@follow/components": "workspace:*", "@follow/constants": "workspace:*", "@follow/hooks": "workspace:*", "@follow/models": "workspace:*", "@follow/shared": "workspace:*", "@follow/types": "workspace:*", "@follow/utils": "workspace:*", "@radix-ui/react-avatar": "1.1.1", "@types/html-minifier-terser": "7.0.2", "chokidar": "4.0.1", "daisyui": "4.12.20", "dotenv-flow": "4.1.0", "es-toolkit": "1.29.0", "fast-glob": "^3.3.2", "foxact": "0.2.43", "html-minifier-terser": "7.2.0", "lightningcss": "1.28.2", "masonic": "4.0.1", "nanoid": "5.0.9", "path-to-regexp": "8.2.0", "react-dom": "^18.3.1", "tailwindcss": "3.4.16", "tsup": "8.3.5", "tsx": "4.19.2", "vite": "6.0.3" } }