diff --git a/.gitignore b/.gitignore index 03e8849..dd22c9c 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,10 @@ fastlane/report.xml fastlane/Preview.html fastlane/screenshots -.env \ No newline at end of file +.env +*.swp + +# Sentry +android/sentry.properties +ios/sentry.properties + diff --git a/README.md b/README.md index 5dc30df..6c63216 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,15 @@ ## Install # See https://facebook.github.io/react-native/docs/getting-started.html#content yarn + + # Environment settings cp env-example .env + + # Sentry + # Get auth token from https://sentry.neuf.no/api/ with project:write scope + cp ios/sentry.properties-example ios/sentry.properties + cp android/sentry.properties-example android/sentry.properties + react-native start react-native run-android diff --git a/android/app/build.gradle b/android/app/build.gradle index fd9cb54..ae0193d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -74,6 +74,7 @@ import com.android.build.OutputFile */ apply from: "../../node_modules/react-native/react.gradle" +apply from: "../../node_modules/react-native-sentry/sentry.gradle" /** * Set this to true to create two separate APKs instead of one: @@ -98,8 +99,8 @@ android { applicationId "no.neuf.chateau" minSdkVersion 16 targetSdkVersion 23 - versionCode 14 - versionName "1.1.0" + versionCode 16 + versionName "1.1.2" ndk { abiFilters "armeabi-v7a", "x86" } @@ -154,6 +155,7 @@ android { } dependencies { + compile project(':react-native-sentry') compile project(':react-native-config') compile fileTree(dir: "libs", include: ["*.jar"]) compile "com.android.support:appcompat-v7:23.0.1" diff --git a/android/app/src/main/java/no/neuf/chateau/MainApplication.java b/android/app/src/main/java/no/neuf/chateau/MainApplication.java index 765eb96..b02be0a 100644 --- a/android/app/src/main/java/no/neuf/chateau/MainApplication.java +++ b/android/app/src/main/java/no/neuf/chateau/MainApplication.java @@ -3,6 +3,7 @@ package no.neuf.chateau; import android.app.Application; import com.facebook.react.ReactApplication; +import io.sentry.RNSentryPackage; import com.lugg.ReactNativeConfig.ReactNativeConfigPackage; import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; @@ -25,6 +26,7 @@ public class MainApplication extends Application implements ReactApplication { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new RNSentryPackage(MainApplication.this), new ReactNativeConfigPackage() ); } diff --git a/android/sentry.properties-example b/android/sentry.properties-example new file mode 100644 index 0000000..380a5b0 --- /dev/null +++ b/android/sentry.properties-example @@ -0,0 +1,5 @@ +defaults.url=https://sentry.neuf.no/ +defaults.org=edb +defaults.project=dusken-client +auth.token= +cli.executable=node_modules/sentry-cli-binary/bin/sentry-cli diff --git a/android/settings.gradle b/android/settings.gradle index 2657da2..24b641c 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,4 +1,6 @@ rootProject.name = 'Dusken' +include ':react-native-sentry' +project(':react-native-sentry').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sentry/android') include ':react-native-config' project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android') diff --git a/env-example b/env-example index 9ea043a..4b08559 100644 --- a/env-example +++ b/env-example @@ -1,4 +1,5 @@ EVENT_API_URL=https://studentersamfundet.no DUSKEN_API_URL=https://galtinn.neuf.no DUSKEN_PURCHASE_URL=https://galtinn.neuf.no/?utm_source=purchase-button&utm_medium=app -DUSKEN_FORGOT_PASSWORD_URL=https://galtinn.neuf.no/auth/password_reset/ \ No newline at end of file +DUSKEN_FORGOT_PASSWORD_URL=https://galtinn.neuf.no/auth/password_reset/ +SENTRY_DSN= \ No newline at end of file diff --git a/index.android.js b/index.android.js index 7bedd44..31a205d 100644 --- a/index.android.js +++ b/index.android.js @@ -1,3 +1,8 @@ import App from './src/App'; import { AppRegistry } from "react-native"; +import { Sentry } from 'react-native-sentry'; +import Config from 'react-native-config'; + +Sentry.config(Config.SENTRY_DSN).install(); + AppRegistry.registerComponent('Dusken', () => App); \ No newline at end of file diff --git a/index.ios.js b/index.ios.js index 7bedd44..31a205d 100644 --- a/index.ios.js +++ b/index.ios.js @@ -1,3 +1,8 @@ import App from './src/App'; import { AppRegistry } from "react-native"; +import { Sentry } from 'react-native-sentry'; +import Config from 'react-native-config'; + +Sentry.config(Config.SENTRY_DSN).install(); + AppRegistry.registerComponent('Dusken', () => App); \ No newline at end of file diff --git a/ios/Dusken.xcodeproj/project.pbxproj b/ios/Dusken.xcodeproj/project.pbxproj index 0860ef9..095d391 100644 --- a/ios/Dusken.xcodeproj/project.pbxproj +++ b/ios/Dusken.xcodeproj/project.pbxproj @@ -5,7 +5,6 @@ }; objectVersion = 46; objects = { - /* Begin PBXBuildFile section */ 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; @@ -51,6 +50,8 @@ C867C6D3ECB7499FA2F051D6 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E926661F17B94D69B50A0BA5 /* FontAwesome.ttf */; }; CC801D520E86402F9AF28660 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 390970DBF0FD44B0B4C8E2F0 /* Foundation.ttf */; }; D218B6D7605D4C17B6540D0B /* libReactNativeConfig.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 07B9F82FBB154C258C70E333 /* libReactNativeConfig.a */; }; + 65850D7E09F243FDB4F2B168 /* libRNSentry.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E3DF2205F5D4B34BF1CCCCF /* libRNSentry.a */; }; + 83EBB8CA4CF842BA8C090802 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 923192359DEC49D085C78135 /* libz.tbd */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -335,6 +336,9 @@ D4F0955EA08E41F69EEE0DED /* Roboto.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Roboto.ttf; path = "../node_modules/native-base/Fonts/Roboto.ttf"; sourceTree = ""; }; D7A0431FBA3840039633FC3C /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/native-base/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; E926661F17B94D69B50A0BA5 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/native-base/Fonts/FontAwesome.ttf"; sourceTree = ""; }; + 76F0B251D6DD45228CBC367B /* RNSentry.xcodeproj */ = {isa = PBXFileReference; name = "RNSentry.xcodeproj"; path = "../node_modules/react-native-sentry/ios/RNSentry.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; + 4E3DF2205F5D4B34BF1CCCCF /* libRNSentry.a */ = {isa = PBXFileReference; name = "libRNSentry.a"; path = "libRNSentry.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; + 923192359DEC49D085C78135 /* libz.tbd */ = {isa = PBXFileReference; name = "libz.tbd"; path = "usr/lib/libz.tbd"; sourceTree = SDKROOT; fileEncoding = undefined; lastKnownFileType = sourcecode.text-based-dylib-definition; explicitFileType = undefined; includeInIndex = 0; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -364,6 +368,8 @@ 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, D218B6D7605D4C17B6540D0B /* libReactNativeConfig.a in Frameworks */, + 65850D7E09F243FDB4F2B168 /* libRNSentry.a in Frameworks */, + 83EBB8CA4CF842BA8C090802 /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -537,6 +543,7 @@ 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 0D8F73C46ADC4ABEBE691283 /* ReactNativeConfig.xcodeproj */, + 76F0B251D6DD45228CBC367B /* RNSentry.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -611,6 +618,15 @@ name = Products; sourceTree = ""; }; + F88C5E6EF1A64A20869703D5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 923192359DEC49D085C78135 /* libz.tbd */, + ); + name = Frameworks; + path = Application; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -640,6 +656,7 @@ 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 98D2BF556B534A3FBEC71C2F /* Upload Debug Symbols to Sentry */, ); buildRules = ( ); @@ -1075,7 +1092,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + shellScript = "export SENTRY_PROPERTIES=sentry.properties\nexport NODE_BINARY=node\n../node_modules/sentry-cli-binary/bin/sentry-cli react-native xcode ../node_modules/react-native/scripts/react-native-xcode.sh"; }; 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { isa = PBXShellScriptBuildPhase; @@ -1089,7 +1106,21 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + shellScript = "export SENTRY_PROPERTIES=sentry.properties\nexport NODE_BINARY=node\n../node_modules/sentry-cli-binary/bin/sentry-cli react-native xcode ../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + 98D2BF556B534A3FBEC71C2F /* Upload Debug Symbols to Sentry */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + name = "Upload Debug Symbols to Sentry"; + inputPaths = ( + ); + outputPaths = ( + ); + shellPath = /bin/sh; + shellScript = "export SENTRY_PROPERTIES=sentry.properties\n../node_modules/sentry-cli-binary/bin/sentry-cli upload-dsym"; }; /* End PBXShellScriptBuildPhase section */ @@ -1167,6 +1198,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-config/ios/ReactNativeConfig", + "$(SRCROOT)/../node_modules/react-native-sentry/ios/**", ); INFOPLIST_FILE = DuskenTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; @@ -1174,6 +1206,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1192,6 +1225,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-config/ios/ReactNativeConfig", + "$(SRCROOT)/../node_modules/react-native-sentry/ios/**", ); INFOPLIST_FILE = DuskenTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; @@ -1199,6 +1233,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1219,6 +1254,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-config/ios/ReactNativeConfig", + "$(SRCROOT)/../node_modules/react-native-sentry/ios/**", ); INFOPLIST_FILE = Dusken/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -1242,6 +1278,7 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-config/ios/ReactNativeConfig", + "$(SRCROOT)/../node_modules/react-native-sentry/ios/**", ); INFOPLIST_FILE = Dusken/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -1271,12 +1308,14 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-config/ios/ReactNativeConfig", + "$(SRCROOT)/../node_modules/react-native-sentry/ios/**", ); INFOPLIST_FILE = "Dusken-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1305,12 +1344,14 @@ HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-config/ios/ReactNativeConfig", + "$(SRCROOT)/../node_modules/react-native-sentry/ios/**", ); INFOPLIST_FILE = "Dusken-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1340,6 +1381,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.Dusken-tvOSTests"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1365,6 +1407,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.Dusken-tvOSTests"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/ios/Dusken/AppDelegate.m b/ios/Dusken/AppDelegate.m index c94fbf2..57d2506 100644 --- a/ios/Dusken/AppDelegate.m +++ b/ios/Dusken/AppDelegate.m @@ -11,6 +11,11 @@ #import #import +#if __has_include() +#import // This is used for versions of react >= 0.40 +#else +#import "RNSentry.h" // This is used for versions of react < 0.40 +#endif @implementation AppDelegate @@ -24,6 +29,9 @@ moduleName:@"Dusken" initialProperties:nil launchOptions:launchOptions]; + + [RNSentry installWithRootView:rootView]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; diff --git a/ios/sentry.properties-example b/ios/sentry.properties-example new file mode 100644 index 0000000..380a5b0 --- /dev/null +++ b/ios/sentry.properties-example @@ -0,0 +1,5 @@ +defaults.url=https://sentry.neuf.no/ +defaults.org=edb +defaults.project=dusken-client +auth.token= +cli.executable=node_modules/sentry-cli-binary/bin/sentry-cli diff --git a/package.json b/package.json index 9835dd6..73b2550 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "react-native-confetti": "^0.0.6", "react-native-config": "^0.6.1", "react-native-htmlview": "^0.12.0", + "react-native-sentry": "^0.23.2", "react-navigation": "^1.0.0-beta.11", "react-redux": "^5.0.6", "redux": "^3.7.2", diff --git a/src/modules/events/EventDetail.js b/src/modules/events/EventDetail.js index 5c37622..e205799 100644 --- a/src/modules/events/EventDetail.js +++ b/src/modules/events/EventDetail.js @@ -81,7 +81,7 @@ export default class EventDetail extends Component { const fbEventPattern = /https?:\/\/www\.facebook\.com\/events\/(\d+)\/?/i; const matches = fbEventPattern.exec(link); let iosURL = link; - if( matches && matches.length ) { + if( matches.length ) { iosURL = 'fb://event/?id=' + matches[1]; } const url = Platform.select({ diff --git a/yarn.lock b/yarn.lock index dcca682..a973df5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -57,7 +57,7 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -ansi-escapes@^1.4.0: +ansi-escapes@^1.1.0, ansi-escapes@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -1597,6 +1597,14 @@ extend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" +external-editor@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + external-editor@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" @@ -1837,6 +1845,17 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.3, glob@^7.0.5, glob@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -2060,6 +2079,24 @@ ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inquirer@3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.1" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^2.0.0" + strip-ansi "^3.0.0" + through "^2.3.6" + inquirer@^3.0.6: version "3.2.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.0.tgz#45b44c2160c729d7578c54060b3eed94487bb42b" @@ -3231,7 +3268,7 @@ os-name@^2.0.1: macos-release "^1.0.0" win-release "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3395,6 +3432,10 @@ process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" +progress@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + promise@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" @@ -3453,6 +3494,10 @@ range-parser@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" +raven-js@^3.17.0: + version "3.17.0" + resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.17.0.tgz#779457ac7910512c3c2cc9bb6d0a9eeb59a969ec" + raw-body@~2.1.2: version "2.1.7" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" @@ -3537,6 +3582,17 @@ react-native-htmlview@^0.12.0: prop-types "^15.5.10" react-timer-mixin "^0.13.3" +react-native-sentry@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/react-native-sentry/-/react-native-sentry-0.23.2.tgz#f9859263d5d274faa6d17604deae2adc94568234" + dependencies: + chalk "^1.1.1" + glob "7.1.1" + inquirer "3.0.6" + raven-js "^3.17.0" + sentry-cli-binary "^1.19.1" + xcode "0.9.3" + react-native-tab-view@^0.0.65: version "0.0.65" resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-0.0.65.tgz#b685ea3081ff7c96486cd997361026c407302c59" @@ -3972,6 +4028,10 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" +rx@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" + safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -4050,6 +4110,12 @@ send@0.13.2: range-parser "~1.0.3" statuses "~1.2.1" +sentry-cli-binary@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/sentry-cli-binary/-/sentry-cli-binary-1.19.1.tgz#0abc210ed7f35d7ec0680963e612b15bd2bc14c0" + dependencies: + progress "2.0.0" + serve-favicon@~2.3.0: version "2.3.2" resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f" @@ -4227,6 +4293,13 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0" @@ -4365,6 +4438,12 @@ tmp@^0.0.31: dependencies: os-tmpdir "~1.0.1" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -4636,7 +4715,7 @@ ws@^2.0.3: safe-buffer "~5.0.1" ultron "~1.1.0" -xcode@^0.9.1: +xcode@0.9.3, xcode@^0.9.1: version "0.9.3" resolved "https://registry.yarnpkg.com/xcode/-/xcode-0.9.3.tgz#910a89c16aee6cc0b42ca805a6d0b4cf87211cf3" dependencies: