{
  "name": "airhop",
  "version": "1.0.0",
  "description": "Private, offline-first messenger",
  "keywords": [
    "airhop",
    "messenger",
    "bluetooth",
    "p2p",
    "mesh-network",
    "offline-communication",
    "encrypted",
    "nostr",
    "cashu"
  ],
  "author": "Areeb Ahmed <hi@areeb.dev>",
  "license": "MIT",
  "homepage": "https://airhop.1mindlabs.org",
  "repository": {
    "type": "git",
    "url": "https://github.com/areebahmeddd/airhop"
  },
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo run:android",
    "android:release": "expo run:android --variant release",
    "ios": "expo run:ios",
    "ios:release": "expo run:ios --configuration Release",
    "prebuild": "expo prebuild",
    "test": "jest",
    "test:watch": "jest --watchAll",
    "coverage": "jest --passWithNoTests --coverage",
    "i18n:audit": "node scripts/i18n-audit.js",
    "verify:vendored": "node scripts/verify-vendored.js",
    "verify:invisibles": "node scripts/check-invisibles.js",
    "deadcode": "npx --yes knip@6 --no-progress",
    "benchmark": "jest --runInBand --testMatch \"**/__benchmarks__/**/*.bench.ts\"",
    "format": "prettier --write \"**/*.{ts,tsx,js,json,md}\"",
    "format:check": "prettier --check \"**/*.{ts,tsx,js,json,md}\"",
    "lint": "eslint .",
    "typecheck": "tsc --noEmit"
  },
  "dependencies": {
    "@cashu/cashu-ts": "^4.8.0",
    "@expo-google-fonts/jetbrains-mono": "^0.4.1",
    "@expo/vector-icons": "^15.1.1",
    "@noble/ciphers": "^2.3.0",
    "@noble/curves": "^2.3.0",
    "@noble/hashes": "^2.3.0",
    "@scure/bip39": "^2.3.0",
    "expo": "~57.0.13",
    "expo-asset": "~57.0.11",
    "expo-audio": "~57.0.3",
    "expo-build-properties": "~57.0.11",
    "expo-camera": "~57.0.3",
    "expo-clipboard": "~57.0.1",
    "expo-document-picker": "~57.0.1",
    "expo-file-system": "~57.0.4",
    "expo-font": "~57.0.1",
    "expo-haptics": "~57.0.1",
    "expo-image-manipulator": "~57.0.10",
    "expo-image-picker": "~57.0.10",
    "expo-location": "~57.0.10",
    "expo-media-library": "~57.0.4",
    "expo-navigation-bar": "~57.0.2",
    "expo-notifications": "~57.0.11",
    "expo-screen-capture": "~57.0.2",
    "expo-secure-store": "~57.0.1",
    "expo-sharing": "~57.0.12",
    "expo-status-bar": "~57.0.1",
    "expo-system-ui": "~57.0.2",
    "expo-video": "~57.0.2",
    "nostr-tools": "^2.24.1",
    "pako": "^3.0.1",
    "react": "19.2.3",
    "react-native": "0.86.2",
    "react-native-gesture-handler": "^2.32.0",
    "react-native-get-random-values": "~1.11.0",
    "react-native-mmkv": "^4.3.2",
    "react-native-nitro-modules": "^0.36.5",
    "react-native-qrcode-svg": "^6.3.21",
    "react-native-reanimated": "4.5.1",
    "react-native-safe-area-context": "~5.7.0",
    "react-native-svg": "15.15.4",
    "react-native-worklets": "0.10.1",
    "zustand": "^5.0.15"
  },
  "devDependencies": {
    "@babel/core": "^7.29.7",
    "@types/jest": "29.5.14",
    "@types/react": "~19.2.18",
    "babel-preset-expo": "~57.0.7",
    "eslint": "^9.39.5",
    "eslint-config-expo": "~57.0.1",
    "globals": "^17.11.0",
    "jest": "^29.7.0",
    "jest-expo": "~57.0.4",
    "prettier": "^3.9.6",
    "prettier-plugin-organize-imports": "^4.3.0",
    "typescript": "~6.0.3"
  },
  "jest": {
    "preset": "jest-expo",
    "testEnvironment": "node",
    "testMatch": [
      "**/*.test.[jt]s?(x)"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!(@noble|@scure|nostr-tools|@cashu|react-native|@react-native|expo|@expo|@unimodules|unimodules|react-native-reanimated))"
    ],
    "moduleNameMapper": {
      "^@noble/curves/(.+?)(\\.js)?$": "<rootDir>/node_modules/@noble/curves/$1.js",
      "^@noble/hashes/(.+?)(\\.js)?$": "<rootDir>/node_modules/@noble/hashes/$1.js",
      "^@noble/ciphers/(.+?)(\\.js)?$": "<rootDir>/node_modules/@noble/ciphers/$1.js",
      "^expo-secure-store$": "<rootDir>/src/__mocks__/expo-secure-store.js",
      "^expo-audio$": "<rootDir>/src/__mocks__/expo-audio.js",
      "^@app/(.*)$": "<rootDir>/src/app/$1",
      "^@bridge/(.*)$": "<rootDir>/src/bridge/$1",
      "^@core/(.*)$": "<rootDir>/src/core/$1",
      "^@data/(.*)$": "<rootDir>/src/data/$1",
      "^@features/(.*)$": "<rootDir>/src/features/$1",
      "^@i18n$": "<rootDir>/src/i18n",
      "^@i18n/(.*)$": "<rootDir>/src/i18n/$1",
      "^@platform/(.*)$": "<rootDir>/src/platform/$1",
      "^@services/(.*)$": "<rootDir>/src/services/$1",
      "^@store/(.*)$": "<rootDir>/src/store/$1",
      "^@ui/(.*)$": "<rootDir>/src/ui/$1",
      "^@utils/(.*)$": "<rootDir>/src/utils/$1"
    }
  }
}
