Live video on the AT Protocol
1{
2 "name": "@streamplace/app",
3 "main": "./src/entrypoint.tsx",
4 "version": "0.9.9",
5 "runtimeVersion": "0.7.2",
6 "scripts": {
7 "start": "npx expo start -c --port 38081",
8 "android": "expo run:android --no-bundler",
9 "ios": "expo run:ios --no-bundler",
10 "web": "npx expo start --web --port 38081",
11 "test": "jest --watchAll",
12 "build": "pnpm run build:web && pnpm run prebuild",
13 "build:web": "node scripts/generate-build-info.js && pnpm run export && node exportClientExpoConfig.js > dist/expoConfig.json",
14 "export": "expo export --dump-sourcemap || expo export --dump-sourcemap",
15 "check": "bash -c 'set -euo pipefail;export OUT=$(mktemp -d); npx tsc -p . --outDir $OUT; rm -rf $OUT'",
16 "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",
17 "prepare": "which pod && pnpm run prepare-ios || echo 'not a mac, not installing pods' && mkdir -p ./public && cp -r ../components/public/locales ./public/",
18 "prepare-ios": "cd ios && pod install && pnpm run find-node",
19 "find-node": "node -p '`NODE_BINARY=${process.argv[0]}`' > ios/.xcode.env.local",
20 "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'",
21 "i18n:compile": "node scripts/compile-translations.js",
22 "i18n:copy": "mkdir -p public/locales && cp -r src/i18n/locales/data/* public/locales/",
23 "i18n:build": "npm run i18n:compile && npm run i18n:copy",
24 "i18n:watch": "nodemon --exec \"npm run i18n:build\" --watch src/i18n/locales/data/**/*.ftl",
25 "i18n:extract": "node scripts/extract-i18n.js && node scripts/migrate-keys-to-ftl.js"
26 },
27 "jest": {
28 "preset": "jest-expo"
29 },
30 "dependencies": {
31 "@atproto-labs/pipe": "^0.1.1",
32 "@atproto/api": "^0.16.7",
33 "@atproto/crypto": "^0.4.4",
34 "@atproto/jwk-jose": "^0.1.10",
35 "@atproto/jwk-webcrypto": "^0.1.10",
36 "@atproto/oauth-client": "^0.5.5",
37 "@atproto/oauth-client-browser": "^0.3.31",
38 "@bacons/text-decoder": "^0.0.0",
39 "@emoji-mart/react": "^1.1.1",
40 "@fluent/bundle": "^0.19.1",
41 "@fluent/langneg": "^0.7.0",
42 "@fluent/react": "^0.15.2",
43 "@react-native-firebase/app": "^22.2.1",
44 "@react-native-firebase/messaging": "^22.2.1",
45 "@react-navigation/bottom-tabs": "^6.6.1",
46 "@react-navigation/drawer": "^6.7.2",
47 "@react-navigation/native": "^6.1.18",
48 "@react-navigation/native-stack": "^6.11.0",
49 "@sentry/react-native": "^6.14.0",
50 "@streamplace/atproto-oauth-client-react-native": "workspace:*",
51 "@streamplace/components": "workspace:*",
52 "@tanstack/react-query": "^5.59.19",
53 "@zxing/browser": "^0.1.5",
54 "@zxing/library": "^0.21.3",
55 "abortcontroller-polyfill": "^1.7.6",
56 "babel-preset-expo": "~13.0.0",
57 "buffer": "^6.0.3",
58 "burnt": "^0.12.2",
59 "chrono-node": "2.7.7",
60 "color-contrast-checker": "^2.1.0",
61 "emoji-mart": "^5.6.0",
62 "event-target-shim": "^6.0.2",
63 "expo": "~53.0.11",
64 "expo-build-properties": "~0.14.6",
65 "expo-dev-client": "~5.2.0",
66 "expo-file-system": "~18.1.10",
67 "expo-font": "~13.3.1",
68 "expo-keep-awake": "~14.1.4",
69 "expo-linking": "~7.1.5",
70 "expo-localization": "^17.0.7",
71 "expo-notifications": "~0.31.3",
72 "expo-screen-orientation": "^9.0.7",
73 "expo-splash-screen": "~0.30.9",
74 "expo-sqlite": "~15.2.12",
75 "expo-system-ui": "~5.0.8",
76 "expo-updates": "~0.28.14",
77 "expo-video": "~2.2.1",
78 "expo-web-browser": "^14.1.6",
79 "hls.js": "^1.5.17",
80 "i18next": "^25.4.2",
81 "i18next-browser-languagedetector": "^8.2.0",
82 "i18next-fluent": "^2.0.0",
83 "i18next-http-backend": "^3.0.2",
84 "i18next-resources-to-backend": "^1.2.1",
85 "intl-pluralrules": "^2.0.1",
86 "jose": "^5.9.6",
87 "lucide-react-native": "^0.514.0",
88 "multiformats": "^13.3.1",
89 "qrcode": "^1.5.4",
90 "quietjs-bundle": "^0.1.3",
91 "react": "19.0.0",
92 "react-dom": "19.0.0",
93 "react-i18next": "^15.7.3",
94 "react-native": "0.79.3",
95 "react-native-draggable-flatlist": "^4.0.3",
96 "react-native-edge-to-edge": "^1.6.2",
97 "react-native-gesture-handler": "~2.26.0",
98 "react-native-localize": "^3.5.2",
99 "react-native-markdown-display": "^7.0.2",
100 "react-native-quick-crypto": "^0.7.14",
101 "react-native-reanimated": "~3.18.0",
102 "react-native-safe-area-context": "5.4.1",
103 "react-native-screens": "~4.11.1",
104 "react-native-sortables": "^1.9.4",
105 "react-native-svg": "15.12.0",
106 "react-native-web": "^0.20.0",
107 "react-native-webrtc": "git+https://github.com/streamplace/react-native-webrtc.git#6b8472a771ac47f89217d327058a8a4124a6ae56",
108 "react-native-webview": "13.15.0",
109 "react-use-websocket": "^4.13.0",
110 "reanimated-color-picker": "^4.0.0",
111 "rtcaudiodevice": "git+https://github.com/streamplace/RTCAudioDevice.git#918e08a0f6f0818fb495a0db0b696b44d11d1336",
112 "sdp-transform": "^2.15.0",
113 "stream-http": "^3.2.0",
114 "streamplace": "workspace:*",
115 "ua-parser-js": "^2.0.0-rc.1",
116 "uuid": "^11.0.2",
117 "viem": "^2.21.44",
118 "zustand": "^5.0.5"
119 },
120 "devDependencies": {
121 "@babel/core": "^7.26.0",
122 "@babel/plugin-proposal-export-default-from": "^7.25.9",
123 "@babel/plugin-syntax-export-default-from": "^7.25.9",
124 "@babel/plugin-transform-flow-strip-types": "^7.25.9",
125 "@babel/plugin-transform-private-methods": "^7.25.9",
126 "@babel/plugin-transform-private-property-in-object": "^7.25.9",
127 "@babel/plugin-transform-runtime": "^7.25.9",
128 "@config-plugins/react-native-webrtc": "^10.0.0",
129 "@expo/metro-config": "~0.19.0",
130 "@expo/metro-runtime": "~5.0.4",
131 "@types/babel__plugin-transform-runtime": "^7",
132 "@types/qrcode": "^1",
133 "@types/react": "~18.3.12",
134 "@types/sdp-transform": "^2.15.0",
135 "@types/uuid": "^10.0.0",
136 "i18next-parser": "^9.0.1",
137 "typescript": "~5.3.3"
138 },
139 "private": true
140}