Files
pwap/mobile/package.json
T
pezkuwichain 8650ea9255 feat(mobile): implement QR code scanner for wallet addresses
- Add expo-camera package for QR scanning
- Create QRScannerModal component with camera permission handling
- Integrate scanner into WalletScreen scan button
- Support substrate: and pezkuwi: URI formats with amount parameter
- Add address validation before opening send modal
- Configure camera permissions for iOS and Android in app.json
2026-01-15 10:59:39 +03:00

123 lines
4.6 KiB
JSON

{
"name": "mobile",
"version": "1.0.0",
"type": "module",
"main": "index.ts",
"scripts": {
"start": "expo start",
"dev": "cp .env.development .env && expo start --clear",
"dev:tunnel": "cp .env.development .env && expo start --tunnel --clear",
"dev:android": "cp .env.development .env && expo run:android",
"dev:ios": "cp .env.development .env && expo run:ios",
"dev:web": "cp .env.development .env && expo start --web",
"prod": "cp .env.production .env && expo start --no-dev --minify",
"build:dev": "cp .env.development .env && eas build --profile development",
"build:preview": "cp .env.production .env && eas build --profile preview",
"build:prod": "cp .env.production .env && eas build --profile production",
"build:en": "EXPO_PUBLIC_DEFAULT_LANGUAGE=en eas build --platform android --profile production",
"build:tr": "EXPO_PUBLIC_DEFAULT_LANGUAGE=tr eas build --platform android --profile production",
"build:kmr": "EXPO_PUBLIC_DEFAULT_LANGUAGE=kmr eas build --platform android --profile production",
"build:ckb": "EXPO_PUBLIC_DEFAULT_LANGUAGE=ckb eas build --platform android --profile production",
"build:ar": "EXPO_PUBLIC_DEFAULT_LANGUAGE=ar eas build --platform android --profile production",
"build:fa": "EXPO_PUBLIC_DEFAULT_LANGUAGE=fa eas build --platform android --profile production",
"build:all": "npm run build:en && npm run build:tr && npm run build:kmr && npm run build:ckb && npm run build:ar && npm run build:fa",
"android": "expo run:android",
"ios": "expo run:ios",
"web": "expo start --web",
"test": "jest",
"test:watch": "jest --watch",
"test:coverage": "jest --coverage",
"lint": "eslint .",
"lint:fix": "eslint . --fix"
},
"dependencies": {
"@babel/runtime": "^7.28.4",
"@pezkuwi/api": "16.5.9",
"@pezkuwi/keyring": "14.0.11",
"@pezkuwi/types": "16.5.9",
"@pezkuwi/util": "14.0.11",
"@pezkuwi/util-crypto": "14.0.11",
"@react-native-async-storage/async-storage": "^2.2.0",
"@react-native-picker/picker": "2.11.1",
"@react-navigation/bottom-tabs": "^7.8.5",
"@react-navigation/native": "^7.1.20",
"@react-navigation/stack": "^7.6.4",
"@supabase/supabase-js": "^2.90.1",
"buffer": "^6.0.3",
"expo": "~54.0.23",
"expo-camera": "~17.0.10",
"expo-image-picker": "~17.0.10",
"expo-linear-gradient": "^15.0.7",
"expo-local-authentication": "^17.0.7",
"expo-secure-store": "^15.0.7",
"expo-status-bar": "~3.0.8",
"i18next": "^25.6.2",
"invariant": "^2.2.4",
"metro-runtime": "^0.81.0",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-i18next": "^16.3.3",
"react-native": "0.81.5",
"react-native-gesture-handler": "~2.28.0",
"react-native-get-random-values": "~1.11.0",
"react-native-qrcode-svg": "^6.3.11",
"react-native-safe-area-context": "^5.6.2",
"react-native-screens": "~4.16.0",
"react-native-svg": "15.12.1",
"react-native-url-polyfill": "^3.0.0",
"react-native-vector-icons": "^10.3.0",
"react-native-web": "^0.21.0",
"react-native-webview": "13.15.0",
"react-refresh": "^0.14.2",
"text-encoding": "^0.7.0"
},
"overrides": {
"@pezkuwi/api-augment": "16.5.9",
"@pezkuwi/api-base": "16.5.9",
"@pezkuwi/api-derive": "16.5.9",
"@pezkuwi/rpc-augment": "16.5.9",
"@pezkuwi/rpc-core": "16.5.9",
"@pezkuwi/rpc-provider": "16.5.9",
"@pezkuwi/types": "16.5.9",
"@pezkuwi/types-augment": "16.5.9",
"@pezkuwi/types-codec": "16.5.9",
"@pezkuwi/types-create": "16.5.9",
"@pezkuwi/types-known": "16.5.9",
"@pezkuwi/networks": "14.0.11",
"@pezkuwi/keyring": "14.0.11",
"@pezkuwi/util": "14.0.11",
"@pezkuwi/util-crypto": "14.0.11"
},
"devDependencies": {
"@expo/ngrok": "^4.1.0",
"@pezkuwi/extension-dapp": "0.62.14",
"@pezkuwi/extension-inject": "0.62.14",
"@testing-library/jest-native": "^5.4.3",
"@testing-library/react-native": "^13.3.3",
"@types/invariant": "^2",
"@types/jest": "^29.5.12",
"@types/react": "~19.1.10",
"@types/text-encoding": "^0",
"@typescript-eslint/eslint-plugin": "^8.47.0",
"@typescript-eslint/parser": "^8.47.0",
"babel-preset-expo": "~54.0.9",
"eslint": "^9.39.1",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-native": "^5.0.0",
"globals": "^16.5.0",
"jest": "^29.7.0",
"jest-expo": "^54.0.13",
"typescript": "~5.9.2",
"typescript-eslint": "^8.47.0"
},
"private": true,
"expo": {
"install": {
"exclude": [
"@types/react"
]
}
}
}