{ "name": "soapbox", "displayName": "Soapbox", "version": "3.2.0", "type": "module", "description": "Soapbox frontend for the Fediverse.", "homepage": "https://soapbox.pub/", "repository": { "type": "git", "url": "https://gitlab.com/soapbox-pub/soapbox" }, "keywords": [ "fediverse", "pleroma" ], "bugs": { "url": "https://gitlab.com/soapbox-pub/soapbox/-/issues" }, "funding": { "type": "lightning", "url": "lightning:alex@alexgleason.me" }, "scripts": { "start": "vite serve", "dev": "vite serve", "build": "vite build --emptyOutDir", "preview": "vite preview", "i18n": "formatjs extract 'src/**/*.{ts,tsx}' --ignore '**/*.d.ts' --out-file build/messages.json && formatjs compile build/messages.json --out-file src/locales/en.json", "test": "vitest", "lint": "npm run lint:js", "lint:js": "eslint --ext .js,.jsx,.cjs,.mjs,.ts,.tsx . --cache", "prepare": "husky install" }, "license": "AGPL-3.0-or-later", "browserslist": [ "> 1%", "last 2 versions", "not dead" ], "dependencies": { "@akryum/flexsearch-es": "^0.7.32", "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.26.0", "@fontsource/amiri": "^5.1.0", "@fontsource/cairo": "^5.1.0", "@fontsource/inter": "^5.0.0", "@fontsource/noto-sans-javanese": "^5.1.0", "@fontsource/roboto-mono": "^5.0.0", "@fontsource/tajawal": "^5.1.0", "@fontsource/vazirmatn": "^5.1.0", "@lexical/clipboard": "^0.18.0", "@lexical/hashtag": "^0.18.0", "@lexical/link": "^0.18.0", "@lexical/react": "^0.18.0", "@lexical/selection": "^0.18.0", "@lexical/utils": "^0.18.0", "@mkljczk/react-hotkeys": "^1.2.2", "@nostrify/nostrify": "npm:@jsr/nostrify__nostrify", "@reach/combobox": "^0.18.0", "@reach/menu-button": "^0.18.0", "@reach/popover": "^0.18.0", "@reach/rect": "^0.18.0", "@reach/tabs": "^0.18.0", "@reduxjs/toolkit": "^2.0.1", "@sentry/browser": "^8.34.0", "@sentry/react": "^8.34.0", "@sentry/types": "^8.34.0", "@soapbox/weblock": "npm:@jsr/soapbox__weblock", "@std/semver": "npm:@jsr/std__semver", "@tabler/icons": "^3.29.0", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", "@tanstack/react-query": "^5.59.13", "@types/escape-html": "^1.0.1", "@types/http-link-header": "^1.0.3", "@types/leaflet": "^1.8.0", "@types/lodash": "^4.14.180", "@types/object-assign": "^4.0.30", "@types/path-browserify": "^1.0.0", "@types/react": "^18.3.9", "@types/react-color": "^3.0.6", "@types/react-dom": "^18.3.0", "@types/react-helmet": "^6.1.5", "@types/react-motion": "^0.0.40", "@types/react-router-dom": "^5.3.3", "@types/react-sparklines": "^1.7.2", "@types/react-swipeable-views": "^0.13.1", "@types/redux-mock-store": "^1.0.6", "@types/semver": "^7.3.9", "@webbtc/webln-types": "^3.0.0", "autoprefixer": "^10.4.15", "blurhash": "^2.0.0", "bowser": "^2.11.0", "browserslist": "^4.16.6", "clsx": "^2.0.0", "comlink": "^4.4.1", "cssnano": "^6.0.0", "detect-passive-events": "^2.0.0", "emoji-mart": "^5.6.0", "es-toolkit": "^1.27.0", "eslint-plugin-formatjs": "^5.2.2", "exifr": "^7.1.3", "graphemesplit": "^2.4.4", "html-react-parser": "^5.0.0", "http-link-header": "^1.0.2", "immer": "^10.0.0", "immutable": "^4.2.1", "intl-messageformat": "10.5.11", "intl-pluralrules": "^2.0.0", "isomorphic-dompurify": "^2.3.0", "leaflet": "^1.8.0", "lexical": "^0.18.0", "line-awesome": "^1.3.0", "mini-css-extract-plugin": "^2.6.0", "nostr-tools": "^2.3.0", "path-browserify": "^1.0.1", "postcss": "^8.4.29", "punycode": "^2.1.1", "qrcode.react": "^3.1.0", "react": "^18.3.1", "react-color": "^2.19.3", "react-dom": "^18.3.1", "react-error-boundary": "^4.0.11", "react-helmet": "^6.1.0", "react-hot-toast": "^2.4.0", "react-inlinesvg": "^4.0.0", "react-intl": "^7.0.1", "react-motion": "^0.5.2", "react-overlays": "^0.9.0", "react-redux": "^9.0.4", "react-router-dom": "^5.3.0", "react-router-dom-v5-compat": "^6.6.2", "react-simple-pull-to-refresh": "^1.3.3", "react-sparklines": "^1.7.0", "react-sticky-box": "^2.0.0", "react-swipeable-views": "^0.14.0", "react-virtuoso": "^4.10.4", "redux": "^5.0.0", "redux-thunk": "^3.1.0", "reselect": "^5.0.0", "sass": "^1.79.5", "stringz": "^2.0.0", "type-fest": "^4.0.0", "typescript": "^5.6.2", "vite": "^6.0.2", "vite-plugin-compile-time": "^0.3.2", "vite-plugin-html": "^3.2.2", "vite-plugin-static-copy": "^2.2.0", "websocket-ts": "^2.1.5", "zod": "^3.23.5", "zustand": "^5.0.0" }, "devDependencies": { "@formatjs/cli": "^6.3.11", "@gitbeaker/node": "^35.8.0", "@jedmao/redux-mock-store": "^3.0.5", "@testing-library/jest-dom": "^6.1.3", "@testing-library/react": "^14.0.0", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.5.1", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "@vitejs/plugin-react-swc": "^3.7.2", "eslint": "^8.49.0", "eslint-import-resolver-typescript": "^3.6.0", "eslint-plugin-compat": "^4.2.0", "eslint-plugin-import": "^2.28.1", "eslint-plugin-jsdoc": "^48.0.0", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-promise": "^6.0.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-tailwindcss": "^3.17.5", "fake-indexeddb": "^5.0.0", "husky": "^9.0.0", "jsdom": "^24.0.0", "lint-staged": ">=10", "rollup-plugin-visualizer": "^5.12.0", "stylelint": "^16.10.0", "stylelint-config-standard-scss": "^13.1.0", "tailwindcss": "^3.4.13", "vite-plugin-checker": "^0.8.0", "vite-plugin-pwa": "^0.21.1", "vitest": "^2.1.8" } }