{ "name": "bluewallet", "version": "5.3.8", "license": "MIT", "devDependencies": { "@babel/core": "^7.6.2", "@babel/runtime": "^7.6.2", "@react-native-community/eslint-config": "^0.0.5", "babel-cli": "^6.26.0", "babel-eslint": "^10.0.2", "babel-jest": "^24.9.0", "babel-preset-flow": "^6.23.0", "detox": "^16.4.0", "eslint": "^6.5.1", "eslint-plugin-babel": "^5.3.0", "eslint-plugin-import": "^2.18.0", "eslint-plugin-node": "^9.1.0", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-react": "^7.14.2", "flow-bin": "^0.102.0", "jest": "^24.9.0", "jetifier": "^1.6.3", "metro-react-native-babel-preset": "^0.56.0", "prettier-eslint-cli": "^5.0.0", "react-test-renderer": "16.9.0", "rn-nodeify": "github:tradle/rn-nodeify" }, "engines": { "node": ">=10.16.0", "npm": ">=6.9.0" }, "scripts": { "prepare": "./patches/fix_mangle.sh; git apply patches/minifier.js.patch; git apply patches/minify.js.patch", "clean": "cd android/; ./gradlew clean; cd ..; rm -r -f /tmp/metro-cache/; rm -r -f node_modules/; npm cache clean --force; npm i; npm start -- --reset-cache", "releasenotes2json": "./scripts/release-notes.sh > release-notes.txt; node -e 'console.log(JSON.stringify(require(\"fs\").readFileSync(\"release-notes.txt\", \"utf8\")));' > release-notes.json", "podinstall": "./scripts/podinstall.sh", "start": "node node_modules/react-native/local-cli/cli.js start", "android": "react-native run-android", "android:clean": "cd android; ./gradlew clean ; cd .. ; npm run android", "ios": "react-native run-ios", "postinstall": "./node_modules/.bin/rn-nodeify --install buffer,events,process,stream,util,inherits,fs,path --hack; npm run releasenotes2json; npm run podinstall; npx jetify", "test": "npm run unit && npm run jest && npm run lint", "jest": "node node_modules/jest/bin/jest.js -b -w 1 tests/integration/*", "e2e:release": "detox build -c android.emu.release; npm run e2e:release-no-build", "e2e:release-no-build": "detox test -c android.emu.release --record-videos all --take-screenshots all --headless", "e2e:debug": "(test -f android/app/build/outputs/apk/debug/app-debug.apk && test -f android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk) || detox build -c android.emu.debug; detox test -c android.emu.debug", "lint": "./node_modules/.bin/eslint *.js screen/**/*.js screen/ class/ models/ loc/ tests/integration/ tests/e2e/ tests/unit/", "lint:fix": "./node_modules/.bin/eslint *.js screen/**/*.js screen/ class/ models/ loc/ tests/integration/ tests/e2e/ tests/unit/ --fix", "lint:quickfix": "git status --porcelain | grep -v '\\.json' | grep '\\.js' --color=never | awk '{print $2}' | xargs ./node_modules/.bin/eslint --fix; exit 0", "unit": "node node_modules/jest/bin/jest.js tests/unit/*" }, "jest": { "preset": "react-native", "transform": { "^.+\\.js$": "/node_modules/react-native/jest/preprocessor.js" }, "setupFiles": [ "./tests/setup.js" ], "setupFilesAfterEnv": [ "./tests/setupAfterEnv.js" ] }, "dependencies": { "@babel/preset-env": "7.9.5", "@react-native-community/async-storage": "1.8.1", "@react-native-community/blur": "3.6.0", "@react-native-community/slider": "2.0.8", "@remobile/react-native-qrcode-local-image": "git+https://github.com/BlueWallet/react-native-qrcode-local-image.git", "@sentry/react-native": "1.3.7", "amplitude-js": "5.9.0", "bech32": "1.1.3", "bignumber.js": "9.0.0", "bip21": "2.0.2", "bip32": "2.0.5", "bip39": "2.5.0", "bitcoinjs-lib": "5.1.6", "bolt11": "1.2.7", "buffer": "5.5.0", "buffer-reverse": "1.0.1", "coinselect": "3.1.11", "crypto-js": "3.1.9-1", "dayjs": "1.8.25", "ecurve": "1.0.6", "electrum-client": "git+https://github.com/BlueWallet/rn-electrum-client.git#2a5bb11dd9a8d89f328049d9ed59bce49d88a15d", "electrum-mnemonic": "2.0.0", "eslint-config-prettier": "6.11.0", "eslint-config-standard": "12.0.0", "eslint-config-standard-react": "7.0.2", "eslint-plugin-prettier": "3.1.2", "eslint-plugin-standard": "4.0.0", "events": "1.1.1", "frisbee": "3.1.2", "intl": "1.2.5", "lottie-react-native": "3.1.1", "node-libs-react-native": "1.0.3", "path-browserify": "1.0.0", "pbkdf2": "3.0.17", "prettier": "1.19.1", "process": "0.11.10", "prop-types": "15.7.2", "react": "16.9.0", "react-localization": "1.0.15", "react-native": "0.61.5", "react-native-biometrics": "git+https://github.com/BlueWallet/react-native-biometrics.git#2.0.0", "react-native-blue-crypto": "git+https://github.com/Overtorment/react-native-blue-crypto.git", "react-native-camera": "3.23.1", "react-native-default-preference": "1.4.1", "react-native-device-info": "4.0.1", "react-native-document-picker": "git+https://github.com/BlueWallet/react-native-document-picker.git#9ce83792db340d01b1361d24b19613658abef4aa", "react-native-elements": "2.0.0", "react-native-fs": "2.16.6", "react-native-gesture-handler": "1.6.1", "react-native-handoff": "git+https://github.com/marcosrdz/react-native-handoff.git", "react-native-haptic-feedback": "1.9.0", "react-native-image-picker": "1.1.0", "react-native-level-fs": "3.0.1", "react-native-linear-gradient": "2.5.6", "react-native-modal": "11.5.6", "react-native-obscure": "1.2.1", "react-native-popup-menu-android": "1.0.3", "react-native-privacy-snapshot": "git+https://github.com/BlueWallet/react-native-privacy-snapshot.git", "react-native-prompt-android": "git+https://github.com/marcosrdz/react-native-prompt-android.git", "react-native-qrcode-svg": "6.0.6", "react-native-quick-actions": "0.3.13", "react-native-randombytes": "3.5.3", "react-native-rate": "1.1.10", "react-native-secure-key-store": "git+https://github.com/BlueWallet/react-native-secure-key-store.git#4ba25dedb3d5ae15c22fd0ea0555116055630966", "react-native-share": "2.0.0", "react-native-snap-carousel": "3.9.0", "react-native-sortable-list": "0.0.23", "react-native-svg": "9.13.6", "react-native-tcp": "git+https://github.com/BlueWallet/react-native-tcp.git", "react-native-tooltip": "git+https://github.com/marcosrdz/react-native-tooltip.git", "react-native-vector-icons": "6.6.0", "react-native-watch-connectivity": "0.4.2", "react-native-webview": "6.11.1", "react-navigation": "3.11.0", "react-navigation-hooks": "1.1.0", "react-test-render": "1.1.2", "readable-stream": "3.6.0", "secure-random": "1.1.2", "stream-browserify": "2.0.2", "url": "0.11.0", "util": "0.12.3", "wif": "2.0.6" }, "react-native": { "crypto": "bluewallet/blue_modules/crypto", "path": "path-browserify", "fs": "react-native-level-fs", "_stream_transform": "readable-stream/transform", "_stream_readable": "readable-stream/readable", "_stream_writable": "readable-stream/writable", "_stream_duplex": "readable-stream/duplex", "_stream_passthrough": "readable-stream/passthrough", "stream": "stream-browserify" }, "detox": { "configurations": { "ios.sim.release": { "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/BlueWallet.app", "build": "xcodebuild clean build -workspace ios/BlueWallet.xcworkspace -scheme BlueWallet -configuration Release -derivedDataPath ios/build -sdk iphonesimulator13.2", "type": "ios.simulator", "device": { "type": "iPhone 11" } }, "android.emu.debug": { "binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk", "build": "cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..", "type": "android.emulator", "device": { "avdName": "Pixel_API_29_AOSP" } }, "android.emu.release": { "binaryPath": "android/app/build/outputs/apk/release/app-release.apk", "build": "# deleting old artifacts\nfind | grep '\\.apk' --color=never | grep -v node_modules | xargs -l rm\n\n# creating fresh keystore\nrm detox.keystore\nkeytool -genkeypair -v -keystore detox.keystore -alias detox -keyalg RSA -keysize 2048 -validity 10000 -storepass 123456 -keypass 123456 -dname 'cn=Unknown, ou=Unknown, o=Unknown, c=Unknown'\n\n# building release APK\ncd android && ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release && cd ..\n\n# backup & sign apk1\ncp ./android/app/build/outputs/apk/release/app-release-unsigned.apk ./android/app/build/outputs/apk/release/app-release-unsigned.apk.bak\njarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore detox.keystore ./android/app/build/outputs/apk/release/app-release-unsigned.apk detox -storepass 123456\n\n# move apk1 to expected filename\nmv ./android/app/build/outputs/apk/release/app-release-unsigned.apk ./android/app/build/outputs/apk/release/app-release.apk\n\n# backup and sign apk2\ncp android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk.bak\njarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore detox.keystore android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk detox -storepass 123456", "type": "android.emulator", "device": { "avdName": "Pixel_API_29_AOSP" } } }, "test-runner": "jest", "runner-config": "tests/e2e/config.json" }, "browser": { "path": "path-browserify", "fs": "react-native-level-fs", "_stream_transform": "readable-stream/transform", "_stream_readable": "readable-stream/readable", "_stream_writable": "readable-stream/writable", "_stream_duplex": "readable-stream/duplex", "_stream_passthrough": "readable-stream/passthrough", "stream": "stream-browserify" } }