{ "name": "5chan", "version": "0.5.3", "description": "A serverless, adminless, decentralized 4chan alternative", "type": "module", "author": "Plebbit Labs", "license": "GPL-2.0-only", "private": true, "dependencies": { "@capacitor/app": "7.0.1", "@capacitor/status-bar": "7.0.1", "@capawesome/capacitor-android-edge-to-edge-support": "7.2.2", "@floating-ui/react": "0.26.1", "@plebbit/plebbit-react-hooks": "https://github.com/plebbit/plebbit-react-hooks.git#d17fa5d9b50f6e489f11d67f7e652c69be33cc6d", "@react-spring/web": "9.7.5", "@testing-library/jest-dom": "5.14.1", "@testing-library/react": "13.0.0", "@testing-library/user-event": "13.2.1", "@types/jest": "29.5.5", "@types/node": "20.8.2", "@types/react": "18.2.25", "@types/react-dom": "18.2.10", "@use-gesture/react": "10.3.1", "cross-env": "7.0.3", "electron-context-menu": "3.3.0", "electron-is-dev": "2.0.0", "env-paths": "3.0.0", "fs-extra": "11.3.0", "http-proxy": "1.18.1", "i18next": "23.5.1", "i18next-browser-languagedetector": "7.1.0", "i18next-http-backend": "2.2.2", "json-stringify-pretty-compact": "4.0.0", "lodash": "4.17.21", "memoizee": "0.4.15", "prettier": "3.0.3", "react": "19.1.2", "react-dom": "19.1.2", "react-i18next": "13.2.2", "react-markdown": "8.0.6", "react-router-dom": "6.16.0", "react-router-hash-link": "2.4.3", "react-virtuoso": "4.17.0", "rehype-raw": "7.0.0", "rehype-sanitize": "5.0.1", "remark-gfm": "3.0.1", "remark-supersub": "1.0.0", "tcp-port-used": "1.0.2", "typescript": "5.1.6", "uuid": "13.0.0", "zustand": "4.4.3" }, "scripts": { "generate:assets": "node scripts/generate-asset-manifest.js", "prebuild": "yarn generate:assets", "prestart": "yarn generate:assets", "start": "vite", "build": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=false vite build", "build:preload": "vite build --config electron/vite.preload.config.js", "build-vercel": "cross-env NODE_OPTIONS=\"--max_old_space_size=4096\" PUBLIC_URL=./ GENERATE_SOURCEMAP=true VITE_COMMIT_REF=$COMMIT_REF CI='' vite build", "test": "vitest", "preview": "vite preview", "analyze-bundle": "cross-env PUBLIC_URL=./ GENERATE_SOURCEMAP=true vite build && npx source-map-explorer 'dist/assets/*.js'", "electron": "yarn build:preload && cross-env ELECTRON_IS_DEV=1 yarn electron:before && cross-env ELECTRON_IS_DEV=1 electron .", "electron:no-delete-data": "yarn electron:before:download-ipfs && electron .", "electron:start": "concurrently \"cross-env BROWSER=none yarn start\" \"wait-on http://localhost:3000 && yarn electron\"", "electron:start:no-delete-data": "concurrently \"cross-env BROWSER=none yarn start\" \"wait-on http://localhost:3000 && yarn electron:no-delete-data\"", "electron:build:linux": "yarn build && yarn build:preload && electron-rebuild && electron-builder build --publish never -l", "electron:build:windows": "yarn build && yarn build:preload && yarn electron-rebuild && electron-builder build --publish never -w", "electron:build:mac": "yarn build && yarn build:preload && yarn electron-rebuild && electron-builder build --publish never -m", "electron:before": "yarn electron-rebuild && yarn electron:before:download-ipfs && yarn electron:before:delete-data", "electron:before:download-ipfs": "node electron/download-ipfs", "electron:before:delete-data": "rimraf .plebbit", "android:build:icons": "cordova-res android --skip-config --copy --resources /tmp/plebbit-react-android-icons --icon-source ./android/icons/icon.png --splash-source ./android/icons/splash.png --icon-foreground-source ./android/icons/icon-foreground.png --icon-background-source '#ffffee'", "prettier": "prettier {src,electron}/**/*.{js,ts,tsx} --write", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0", "android:build": "yarn build && npx cap sync android && npx cap run android", "i18n:update": "node scripts/update-translations.js", "i18n:update:dry": "node scripts/update-translations.js --dry" }, "browserslist": { "production": [ "chrome >= 67", "edge >= 79", "firefox >= 68", "opera >= 54", "safari >= 14" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@capacitor/android": "7.4.4", "@capacitor/cli": "7.4.4", "@capacitor/core": "7.4.4", "@electron/rebuild": "4.0.0", "@react-scan/vite-plugin-react-scan": "0.1.8", "@types/memoizee": "0.4.9", "@typescript-eslint/eslint-plugin": "8.29.0", "@typescript-eslint/parser": "8.29.0", "@vitejs/plugin-react": "4.3.4", "assert": "2.1.0", "babel-plugin-react-compiler": "1.0.0", "buffer": "6.0.3", "concurrently": "8.0.1", "conventional-changelog-cli": "4.1.0", "cordova-res": "0.15.4", "cross-env": "7.0.3", "crypto-browserify": "3.12.1", "cz-conventional-changelog": "3.3.0", "decompress": "4.2.1", "electron": "36.9.5", "electron-builder": "24.13.2", "eslint": "8.57.1", "eslint-config-react-app": "7.0.1", "eslint-plugin-react": "7.37.4", "eslint-plugin-react-compiler": "19.1.0-rc.2", "eslint-plugin-react-hooks": "5.2.0", "husky": "4.3.8", "isomorphic-fetch": "3.0.0", "jsdom": "27.3.0", "lint-staged": "12.3.8", "progress": "2.0.3", "react-scan": "0.4.3", "stream-browserify": "3.0.0", "vite": "6.4.1", "vite-plugin-eslint": "1.8.1", "vite-plugin-node-polyfills": "0.23.0", "vite-plugin-pwa": "0.21.1", "vitest": "4.0.15", "wait-on": "9.0.3" }, "resolutions": { "js-yaml": "4.1.1", "baseline-browser-mapping": "^2.9.11" }, "main": "electron/main.js", "build": { "appId": "5chan.desktop", "productName": "5chan", "beforePack": "electron/before-pack.js", "afterAllArtifactBuild": "electron/after-all-artifact-build.cjs", "extraResources": [ { "from": "bin/${os}", "to": "bin", "filter": [ "**/*" ] } ], "files": [ "dist/**/*", "electron/**/*", "package.json", "node_modules/**/*" ], "extends": null, "mac": { "target": "dmg", "category": "public.app-category.social-networking", "type": "distribution" }, "win": { "target": [ "portable", "nsis" ] }, "linux": { "target": "AppImage", "category": "Network" } }, "lint-staged": { "{src,electron}/**/*.{js,ts,tsx}": [ "prettier --write" ] }, "husky": { "hooks": { "prepare-commit-msg": "exec < /dev/tty && cz --hook || true", "pre-commit": "lint-staged" } }, "config": { "commitizen": { "path": "./node_modules/cz-conventional-changelog" } } }