{ "name": "Follow", "type": "module", "version": "0.0.1-alpha.13", "private": true, "packageManager": "pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c", "description": "Next generation information browser", "author": "Follow Team", "license": "GPL-3.0-only", "homepage": "https://github.com/RSSNext", "repository": { "url": "https://github.com/RSSNext/follow", "type": "git" }, "main": "./dist/main/index.js", "scripts": { "analyze:web": "rm -rf out/web && ANALYZER=1 vite build", "build": "npm run typecheck && electron-vite build --outDir=dist && electron-forge make", "build:macos": "npm run typecheck && electron-vite build --outDir=dist && electron-forge make --arch=universal --platform=darwin", "build:web": "rm -rf out/web && vite build", "bump": "vv", "dev": "electron-vite dev --outDir=dist", "dev:debug": "export DEBUG=true && vite --debug", "dev:web": "vite", "format": "prettier --write .", "generator:i18n-template": "tsx scripts/generate-i18n-locale.ts", "lint": "eslint", "lint:fix": "eslint --fix", "polyfill-optimize": "pnpx nolyfill install", "prepare": "pnpm exec simple-git-hooks && shx test -f .env || shx cp .env.example .env", "publish": "electron-vite build --outDir=dist && electron-forge publish", "start": "electron-vite preview", "test": "vitest", "typecheck": "npm run typecheck:node && npm run typecheck:web", "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false" }, "dependencies": { "@egjs/react-infinitegrid": "4.12.0", "@egoist/tipc": "0.3.2", "@electron-toolkit/preload": "^3.0.1", "@electron-toolkit/utils": "^3.0.0", "@fontsource/sn-pro": "5.1.0", "@hono/auth-js": "1.0.10", "@hookform/resolvers": "3.9.0", "@iconify/tools": "4.0.6", "@microflash/remark-callout-directives": "4.3.1", "@mozilla/readability": "^0.5.0", "@radix-ui/react-alert-dialog": "1.1.1", "@radix-ui/react-avatar": "1.1.0", "@radix-ui/react-checkbox": "1.1.1", "@radix-ui/react-context-menu": "2.2.1", "@radix-ui/react-dialog": "1.1.1", "@radix-ui/react-dropdown-menu": "2.1.1", "@radix-ui/react-hover-card": "1.1.1", "@radix-ui/react-label": "2.1.0", "@radix-ui/react-popover": "1.1.1", "@radix-ui/react-radio-group": "1.2.0", "@radix-ui/react-scroll-area": "1.1.0", "@radix-ui/react-select": "2.1.1", "@radix-ui/react-slider": "^1.2.0", "@radix-ui/react-slot": "1.1.0", "@radix-ui/react-switch": "1.1.0", "@radix-ui/react-tabs": "1.1.0", "@radix-ui/react-toast": "1.2.1", "@radix-ui/react-tooltip": "1.1.2", "@sentry/electron": "5.4.0", "@sentry/react": "8.30.0", "@sentry/vite-plugin": "2.22.4", "@shikijs/transformers": "1.17.7", "@t3-oss/env-core": "^0.11.1", "@tanstack/query-sync-storage-persister": "5.56.2", "@tanstack/react-query": "5.56.2", "@tanstack/react-query-devtools": "5.56.2", "@tanstack/react-query-persist-client": "5.56.2", "@use-gesture/react": "10.3.1", "@yornaath/batshit": "0.10.1", "bufferutil": "4.0.8", "builder-util-runtime": "9.2.5", "class-variance-authority": "0.7.0", "click-to-react-component": "1.1.0", "clsx": "2.1.1", "cmdk": "1.0.0", "dayjs": "1.11.13", "dexie": "4.0.8", "dnum": "^2.13.1", "dotenv": "16.4.5", "electron-context-menu": "4.0.4", "electron-log": "5.2.0", "electron-squirrel-startup": "1.0.1", "electron-updater": "^6.3.4", "font-list": "1.5.1", "foxact": "0.2.38", "framer-motion": "11.5.4", "franc-min": "6.2.0", "fuse.js": "7.0.0", "hast-util-to-jsx-runtime": "2.3.0", "hast-util-to-text": "4.0.2", "i18next": "^23.15.1", "i18next-browser-languagedetector": "8.0.0", "idb-keyval": "6.2.1", "immer": "10.1.1", "jotai": "2.9.3", "lethargy": "1.0.9", "linkedom": "^0.18.4", "lodash-es": "4.17.21", "lowdb": "7.0.1", "msedge-tts": "1.3.4", "nanoid": "5.0.7", "ofetch": "1.3.4", "path-to-regexp": "8.1.0", "posthog-js": "1.161.5", "posthog-node": "4.2.0", "re-resizable": "6.9.18", "react-error-boundary": "4.0.13", "react-fast-marquee": "1.6.5", "react-hook-form": "7.53.0", "react-hotkeys-hook": "4.5.1", "react-i18next": "^15.0.2", "react-intersection-observer": "9.13.1", "react-resizable-layout": "npm:@innei/react-resizable-layout@0.7.3-fork.1", "react-router-dom": "6.26.2", "react-shadow": "20.5.0", "react-virtuoso": "4.10.4", "rehype-infer-description-meta": "2.0.0", "rehype-parse": "9.0.0", "rehype-sanitize": "6.0.0", "rehype-stringify": "10.0.0", "remark-directive": "3.0.0", "remark-gfm": "4.0.0", "remark-gh-alerts": "0.0.3", "remark-parse": "11.0.0", "remark-rehype": "11.1.0", "semver": "7.6.3", "shiki": "1.17.7", "sonner": "^1.5.0", "swiper": "11.1.14", "tailwind-merge": "2.5.2", "tldts": "6.1.46", "unified": "11.0.5", "use-context-selector": "2.0.0", "usehooks-ts": "3.1.0", "utf-8-validate": "6.0.4", "vfile": "6.0.3", "vscode-languagedetection": "npm:@vscode/vscode-languagedetection@^1.0.22", "zod": "3.23.8", "zustand": "4.5.5" }, "devDependencies": { "@babel/generator": "7.25.6", "@clack/prompts": "0.7.0", "@egoist/tailwindcss-icons": "1.8.1", "@electron-forge/cli": "7.4.0", "@electron-forge/maker-dmg": "7.4.0", "@electron-forge/maker-squirrel": "7.4.0", "@electron-forge/maker-zip": "7.4.0", "@electron-forge/plugin-fuses": "7.4.0", "@electron-forge/publisher-github": "7.4.0", "@electron-toolkit/tsconfig": "^1.0.1", "@hono/node-server": "1.13.0", "@iconify-json/logos": "1.2.0", "@iconify-json/mingcute": "1.2.0", "@iconify-json/simple-icons": "^1.2.3", "@pengx17/electron-forge-maker-appimage": "1.2.1", "@tailwindcss/container-queries": "0.1.1", "@tailwindcss/typography": "0.5.15", "@types/lodash-es": "4.17.12", "@types/node": "^22.5.5", "@types/react": "^18.3.7", "@types/react-dom": "^18.3.0", "@vercel/ncc": "0.38.1", "@vitejs/plugin-legacy": "5.4.2", "@vitejs/plugin-react": "^4.3.1", "cssnano": "7.0.6", "drizzle-orm": "0.33.0", "electron": "32.1.0", "electron-devtools-installer": "3.2.0", "electron-packager-languages": "0.5.0", "electron-vite": "^2.3.0", "eslint": "^9.10.0", "eslint-config-hyoban": "^3.1.6", "fake-indexeddb": "6.0.0", "hono": "4.6.2", "lint-staged": "15.2.10", "nbump": "2.0.4", "postcss": "8.4.47", "postcss-js": "4.0.1", "prettier": "3.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", "rimraf": "6.0.1", "shx": "^0.3.4", "simple-git-hooks": "2.11.1", "tailwindcss": "3.4.11", "tailwindcss-animate": "1.0.7", "tsx": "4.19.1", "typescript": "^5.6.2", "vite": "^5.4.6", "vite-bundle-analyzer": "0.10.6", "vite-plugin-mkcert": "1.17.6", "vite-tsconfig-paths": "5.0.1", "vitest": "2.0.5" }, "pnpm": { "patchedDependencies": { "sonner@1.5.0": "patches/sonner@1.5.0.patch", "immer@10.1.1": "patches/immer@10.1.1.patch", "@mozilla/readability@0.5.0": "patches/@mozilla__readability@0.5.0.patch", "re-resizable": "patches/re-resizable@6.9.17.patch", "hono": "patches/hono.patch" }, "overrides": { "is-core-module": "npm:@nolyfill/is-core-module@^1", "isarray": "npm:@nolyfill/isarray@^1" } }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged" }, "lint-staged": { "*": "eslint --fix", "*.{js,jsx,ts,tsx,json}": [ "prettier --write " ] }, "bump": { "before": [ "git pull --rebase" ], "after": [ "gh pr create --title 'chore: Release v${NEW_VERSION}' --body 'v${NEW_VERSION}' --base main --head dev" ], "commit_message": "chore(release): release v${NEW_VERSION}", "tag": false, "changelog": true, "allowed_branches": [ "dev" ] }, "productName": "Follow" }