{ "name": "@streamplace/app", "main": "./src/entrypoint.tsx", "version": "0.9.9", "runtimeVersion": "0.7.2", "scripts": { "start": "npx expo start -c --port 38081", "android": "expo run:android --no-bundler", "ios": "expo run:ios --no-bundler", "web": "npx expo start --web --port 38081", "test": "jest --watchAll", "build": "pnpm run build:web && pnpm run prebuild", "build:web": "node scripts/generate-build-info.js && pnpm run export && node exportClientExpoConfig.js > dist/expoConfig.json", "export": "expo export --dump-sourcemap || expo export --dump-sourcemap", "check": "bash -c 'set -euo pipefail;export OUT=$(mktemp -d); npx tsc -p . --outDir $OUT; rm -rf $OUT'", "prebuild": "EXPO_NO_GIT_STATUS=1 expo prebuild --clean && sed -i.bak 's/org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m/org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m/' android/gradle.properties && pnpm run find-node", "prepare": "which pod && pnpm run prepare-ios || echo 'not a mac, not installing pods' && mkdir -p ./public && cp -r ../components/public/locales ./public/", "prepare-ios": "cd ios && pod install && pnpm run find-node", "find-node": "node -p '`NODE_BINARY=${process.argv[0]}`' > ios/.xcode.env.local", "code-signing-dev": "mkdir -p code-signing-dev/keys code-signing-dev/certs && expo-updates codesigning:generate --key-output-directory code-signing-dev/keys --certificate-output-directory code-signing-dev/certs --certificate-validity-duration-years 10 --certificate-common-name 'Streamplace'", "i18n:compile": "node scripts/compile-translations.js", "i18n:copy": "mkdir -p public/locales && cp -r src/i18n/locales/data/* public/locales/", "i18n:build": "npm run i18n:compile && npm run i18n:copy", "i18n:watch": "nodemon --exec \"npm run i18n:build\" --watch src/i18n/locales/data/**/*.ftl", "i18n:extract": "node scripts/extract-i18n.js && node scripts/migrate-keys-to-ftl.js" }, "jest": { "preset": "jest-expo" }, "dependencies": { "@atproto-labs/pipe": "^0.1.1", "@atproto/api": "^0.16.7", "@atproto/crypto": "^0.4.4", "@atproto/jwk-jose": "^0.1.10", "@atproto/jwk-webcrypto": "^0.1.10", "@atproto/oauth-client": "^0.5.5", "@atproto/oauth-client-browser": "^0.3.31", "@bacons/text-decoder": "^0.0.0", "@emoji-mart/react": "^1.1.1", "@fluent/bundle": "^0.19.1", "@fluent/langneg": "^0.7.0", "@fluent/react": "^0.15.2", "@react-native-firebase/app": "^22.2.1", "@react-native-firebase/messaging": "^22.2.1", "@react-navigation/bottom-tabs": "^6.6.1", "@react-navigation/drawer": "^6.7.2", "@react-navigation/native": "^6.1.18", "@react-navigation/native-stack": "^6.11.0", "@sentry/react-native": "^6.14.0", "@streamplace/atproto-oauth-client-react-native": "workspace:*", "@streamplace/components": "workspace:*", "@tanstack/react-query": "^5.59.19", "@zxing/browser": "^0.1.5", "@zxing/library": "^0.21.3", "abortcontroller-polyfill": "^1.7.6", "babel-preset-expo": "~13.0.0", "buffer": "^6.0.3", "burnt": "^0.12.2", "chrono-node": "2.7.7", "color-contrast-checker": "^2.1.0", "emoji-mart": "^5.6.0", "event-target-shim": "^6.0.2", "expo": "~53.0.11", "expo-build-properties": "~0.14.6", "expo-dev-client": "~5.2.0", "expo-file-system": "~18.1.10", "expo-font": "~13.3.1", "expo-keep-awake": "~14.1.4", "expo-linking": "~7.1.5", "expo-localization": "^17.0.7", "expo-notifications": "~0.31.3", "expo-screen-orientation": "^9.0.7", "expo-splash-screen": "~0.30.9", "expo-sqlite": "~15.2.12", "expo-system-ui": "~5.0.8", "expo-updates": "~0.28.14", "expo-video": "~2.2.1", "expo-web-browser": "^14.1.6", "hls.js": "^1.5.17", "i18next": "^25.4.2", "i18next-browser-languagedetector": "^8.2.0", "i18next-fluent": "^2.0.0", "i18next-http-backend": "^3.0.2", "i18next-resources-to-backend": "^1.2.1", "intl-pluralrules": "^2.0.1", "jose": "^5.9.6", "lucide-react-native": "^0.514.0", "multiformats": "^13.3.1", "qrcode": "^1.5.4", "quietjs-bundle": "^0.1.3", "react": "19.0.0", "react-dom": "19.0.0", "react-i18next": "^15.7.3", "react-native": "0.79.3", "react-native-draggable-flatlist": "^4.0.3", "react-native-edge-to-edge": "^1.6.2", "react-native-gesture-handler": "~2.26.0", "react-native-localize": "^3.5.2", "react-native-markdown-display": "^7.0.2", "react-native-quick-crypto": "^0.7.14", "react-native-reanimated": "~3.18.0", "react-native-safe-area-context": "5.4.1", "react-native-screens": "~4.11.1", "react-native-sortables": "^1.9.4", "react-native-svg": "15.12.0", "react-native-web": "^0.20.0", "react-native-webrtc": "git+https://github.com/streamplace/react-native-webrtc.git#6b8472a771ac47f89217d327058a8a4124a6ae56", "react-native-webview": "13.15.0", "react-use-websocket": "^4.13.0", "reanimated-color-picker": "^4.0.0", "rtcaudiodevice": "git+https://github.com/streamplace/RTCAudioDevice.git#918e08a0f6f0818fb495a0db0b696b44d11d1336", "sdp-transform": "^2.15.0", "stream-http": "^3.2.0", "streamplace": "workspace:*", "ua-parser-js": "^2.0.0-rc.1", "uuid": "^11.0.2", "viem": "^2.21.44", "zustand": "^5.0.5" }, "devDependencies": { "@babel/core": "^7.26.0", "@babel/plugin-proposal-export-default-from": "^7.25.9", "@babel/plugin-syntax-export-default-from": "^7.25.9", "@babel/plugin-transform-flow-strip-types": "^7.25.9", "@babel/plugin-transform-private-methods": "^7.25.9", "@babel/plugin-transform-private-property-in-object": "^7.25.9", "@babel/plugin-transform-runtime": "^7.25.9", "@config-plugins/react-native-webrtc": "^10.0.0", "@expo/metro-config": "~0.19.0", "@expo/metro-runtime": "~5.0.4", "@types/babel__plugin-transform-runtime": "^7", "@types/qrcode": "^1", "@types/react": "~18.3.12", "@types/sdp-transform": "^2.15.0", "@types/uuid": "^10.0.0", "i18next-parser": "^9.0.1", "typescript": "~5.3.3" }, "private": true }