{
  "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.19.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"
  }
}
