{ "name": "Follow", "type": "module", "version": "0.3.2-beta.0", "private": true, "packageManager": "pnpm@9.12.3", "description": "Follow your favorites in one inbox", "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": "analyzer=1 vite build", "build": "electron-vite build && electron-forge make", "build:macos": "electron-vite build && electron-forge make --arch=x64 --platform=darwin && electron-forge make --arch=arm64 --platform=darwin && tsx scripts/merge-yml.ts", "build:render": "vite build -c vite.config.electron-render.ts", "build:rn-web": "rm -rf out/rn-web && cross-env RN_BUILD=1 vite build", "build:web": "rm -rf out/web && cross-env WEB_BUILD=1 vite build", "bump": "vv", "dedupe:locales": "eslint --fix locales/**/*.json", "depcheck": "npx depcheck --quiet", "dev": "turbo run @follow/web#dev @follow/server#dev", "dev:debug": "export DEBUG=true && vite --debug", "dev:electron": "electron-vite dev", "dev:expo": "pnpm --filter=mobile start", "dev:server": "pnpm run --filter=server dev", "dev:web": " WEB_BUILD=1 vite", "format": "prettier --write .", "format:check": "prettier --check .", "generator:i18n-template": "tsx scripts/generate-i18n-locale.ts", "hotfix": "vv -c bump.hotfix.config.js", "lint": "pnpm run lint:tsl && eslint", "lint:fix": "eslint --fix", "lint:tsl": "tsslint --project apps/*/tsconfig.json", "mitproxy": "bash scripts/run-proxy.sh", "polyfill-optimize": "pnpx nolyfill install", "prepare": "simple-git-hooks", "publish": "electron-vite build && electron-forge publish", "start": "electron-vite preview", "sync:ab": "tsx scripts/pull-ab-flags.ts", "sync:icons": "tsx scripts/svg-to-rn.ts && prettier --write apps/mobile/src/icons/**/*.tsx", "test": "CI=1 pnpm --recursive run test", "typecheck": "turbo typecheck", "update:main-hash": "tsx plugins/vite/generate-main-hash.ts" }, "devDependencies": { "@clack/prompts": "0.8.2", "@egoist/tailwindcss-icons": "1.8.1", "@electron-forge/cli": "7.6.0", "@electron-forge/maker-dmg": "7.6.0", "@electron-forge/maker-squirrel": "7.6.0", "@electron-forge/maker-zip": "7.6.0", "@electron-forge/plugin-fuses": "7.6.0", "@electron-forge/publisher-github": "7.6.0", "@electron-toolkit/tsconfig": "^1.0.1", "@eslint/compat": "^1.2.4", "@hookform/resolvers": "3.9.1", "@iconify-json/logos": "1.2.3", "@iconify-json/mingcute": "1.2.1", "@iconify-json/simple-icons": "^1.2.15", "@iconify/tools": "4.0.7", "@mozilla/readability": "^0.5.0", "@pengx17/electron-forge-maker-appimage": "1.2.1", "@sentry/vite-plugin": "2.22.7", "@t3-oss/env-core": "^0.11.1", "@tailwindcss/container-queries": "0.1.1", "@tailwindcss/typography": "0.5.15", "@tsslint/cli": "^1.5.8", "@tsslint/config": "^1.5.8", "@tsslint/eslint": "^1.5.8", "@types/html-minifier-terser": "7.0.2", "@types/js-yaml": "4.0.9", "@types/node": "^22.10.1", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vercel/node": "3.2.28", "@vitejs/plugin-legacy": "6.0.0", "@vitejs/plugin-react": "^4.3.4", "async-es": "^3.2.6", "autoprefixer": "10.4.20", "cross-env": "7.0.3", "cssnano": "7.0.6", "dnum": "^2.14.0", "dotenv": "16.4.7", "drizzle-orm": "0.37.0", "electron": "33.2.0", "electron-devtools-installer": "3.2.0", "electron-packager-languages": "0.5.0", "electron-vite": "^2.3.0", "eslint": "^9.18.0", "eslint-config-hyoban": "^3.2.0", "eslint-plugin-react-native": "^5.0.0", "fake-indexeddb": "6.0.0", "fast-glob": "^3.3.2", "happy-dom": "15.11.7", "hono": "4.6.13", "html-minifier-terser": "7.2.0", "js-yaml": "4.1.0", "lint-staged": "15.2.10", "nbump": "2.0.7", "postcss": "8.4.49", "postcss-js": "4.0.1", "prettier": "3.4.2", "prettier-plugin-tailwindcss": "^0.6.9", "raw-body": "3.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", "rimraf": "6.0.1", "shx": "^0.3.4", "simple-git-hooks": "2.11.1", "svg-parser": "2.0.4", "tailwindcss": "3.4.16", "tailwindcss-animate": "1.0.7", "tailwindcss-motion": "0.4.3-beta", "tailwindcss-safe-area": "0.6.0", "tar": "7.4.3", "tsup": "8.3.5", "tsx": "4.19.2", "turbo": "2.3.3", "typescript": "5.7.2", "unplugin-ast": "^0.12.0", "vite": "6.0.3", "vite-bundle-analyzer": "0.15.2", "vite-plugin-mkcert": "1.17.6", "vite-plugin-pwa": "0.21.1", "vite-tsconfig-paths": "5.1.4", "vitest": "2.1.8" }, "pnpm": { "patchedDependencies": { "immer@10.1.1": "patches/immer@10.1.1.patch", "re-resizable": "patches/re-resizable@6.9.17.patch", "hono": "patches/hono.patch", "electron-context-menu": "patches/electron-context-menu.patch", "@mozilla/readability": "patches/@mozilla__readability.patch", "daisyui": "patches/daisyui.patch", "jsonpointer": "patches/jsonpointer.patch", "workbox-precaching": "patches/workbox-precaching.patch", "@tanstack/react-virtual": "patches/@tanstack__react-virtual.patch", "@pengx17/electron-forge-maker-appimage": "patches/@pengx17__electron-forge-maker-appimage.patch", "devlop": "patches/devlop.patch", "@microflash/remark-callout-directives": "patches/@microflash__remark-callout-directives.patch" }, "overrides": { "@types/react": "npm:@types/react@^18.3.12", "@types/react-dom": "npm:@types/react-dom@^18.3.1", "is-core-module": "npm:@nolyfill/is-core-module@^1", "isarray": "npm:@nolyfill/isarray@^1", "unist-util-visit-parents": "5.1.3", "vfile": "5.3.7" } }, "simple-git-hooks": { "pre-commit": "pnpm exec lint-staged" }, "lint-staged": { "*": [ "eslint --fix", "prettier --ignore-unknown --write" ], "locales/**/*.json": [ "npm run dedupe:locales", "git add locales" ] }, "bump": { "before": [ "git pull --rebase", "tsx scripts/apply-changelog.ts ${NEW_VERSION}", "git add changelog", "tsx plugins/vite/generate-main-hash.ts", "eslint --fix package.json", "prettier --ignore-unknown --write package.json", "git add package.json" ], "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", "mainHash": "1e87ac6080cfcc38786acfb9daba3c55e5f1ffa77df833c7182910971bae5ae9" }