diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index 28345fdb0..4e5bcd748 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -142,12 +142,14 @@ jobs:
# Actual environment variables are not being picked up
# by the build so they're put into an .env file.
- name: Create environment settings
- if: env.MEDIATOR_URL != null
+ if: env.MEDIATOR_URL != null || env.BUGSNAG_API_KEY != null
working-directory: app
env:
MEDIATOR_URL: ${{ secrets.MEDIATOR_URL }}
+ BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
run: |
- echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env
+ echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env |
+ echo "BUGSNAG_API_KEY=${BUGSNAG_API_KEY}" >>.env
# https://docs.github.com/en/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development
- name: Create Provisioning Profile
if: github.ref_name == 'main' && needs.check-ios-secrets.outputs.isReleaseBuild == 'true'
@@ -301,12 +303,14 @@ jobs:
# Actual environment variables are not being picked up
# by the build so they're put into an .env file.
- name: Create environment settings
- if: env.MEDIATOR_URL != null
+ if: env.MEDIATOR_URL != null || env.BUGSNAG_API_KEY != null
working-directory: app
env:
MEDIATOR_URL: ${{ secrets.MEDIATOR_URL }}
+ BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
run: |
- echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env
+ echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env |
+ echo "BUGSNAG_API_KEY=${BUGSNAG_API_KEY}" >>.env
- name: Android debug build
if: github.ref_name != 'main' || needs.check-android-secrets.outputs.isReleaseBuild != 'true'
diff --git a/.gitignore b/.gitignore
index 8411e0d55..f28ab734c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,3 +41,4 @@ app/patches/react-native-gifted-chat*.patch
# xcode
xcuserdata/
.npmrc
+app/ios/tmp.xcconfig
diff --git a/app/android/app/build.gradle b/app/android/app/build.gradle
index fcccbb4d7..76aaa59b3 100644
--- a/app/android/app/build.gradle
+++ b/app/android/app/build.gradle
@@ -1,4 +1,5 @@
apply plugin: "com.android.application"
+apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
import com.android.build.OutputFile
@@ -93,6 +94,7 @@ project.ext.react = [
]
apply from: "../../node_modules/react-native/react.gradle"
+apply plugin: "com.bugsnag.android.gradle"
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
/**
@@ -155,6 +157,7 @@ android {
missingDimensionStrategy 'react-native-camera', 'general'
+ manifestPlaceholders = [API_KEY: project.env.get("BUGSNAG_API_KEY")]
}
splits {
abi {
@@ -237,5 +240,8 @@ task copyDownloadableDepsToLibs(type: Copy) {
into 'libs'
}
-apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
+
+bugsnag {
+ uploadReactNativeMappings = true
+}
diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml
index 289b56d4d..65f817e38 100644
--- a/app/android/app/src/main/AndroidManifest.xml
+++ b/app/android/app/src/main/AndroidManifest.xml
@@ -42,5 +42,6 @@
+
\ No newline at end of file
diff --git a/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java b/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java
index 235e7e0f2..dc77d519e 100644
--- a/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java
+++ b/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java
@@ -1,5 +1,6 @@
package ca.qc.gouv.portefeuilleqc;
+import com.bugsnag.android.Bugsnag;
import android.app.Application;
import android.content.Context;
import com.facebook.react.PackageList;
@@ -44,6 +45,7 @@ public ReactNativeHost getReactNativeHost() {
@Override
public void onCreate() {
super.onCreate();
+ Bugsnag.start(this);
SoLoader.init(this, /* native exopackage */ false);
}
}
diff --git a/app/android/build.gradle b/app/android/build.gradle
index 0e1bbc0f9..b2f43ad82 100644
--- a/app/android/build.gradle
+++ b/app/android/build.gradle
@@ -18,6 +18,7 @@ buildscript {
}
dependencies {
classpath("com.android.tools.build:gradle:7.2.1")
+ classpath("com.bugsnag:bugsnag-android-gradle-plugin:7.+")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
diff --git a/app/index.js b/app/index.js
index 862d9891e..b6603a478 100644
--- a/app/index.js
+++ b/app/index.js
@@ -20,6 +20,8 @@ import '@formatjs/intl-datetimeformat/polyfill'
import '@formatjs/intl-datetimeformat/locale-data/en' // locale-data for en
import '@formatjs/intl-datetimeformat/add-all-tz' // Add ALL tz data
+import BugsnagPluginReactNavigation from '@bugsnag/plugin-react-navigation'
+import Bugsnag from '@bugsnag/react-native'
import { NavigationContainer } from '@react-navigation/native'
import React from 'react'
import { AppRegistry } from 'react-native'
@@ -31,6 +33,16 @@ const { theme } = qcwallet
const { ColorPallet } = theme
+Bugsnag.start({
+ plugins: [new BugsnagPluginReactNavigation()],
+})
+
+const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)
+
+const { createNavigationContainer } = Bugsnag.getPlugin('reactNavigation')
+
+const BugsnagNavigationContainer = createNavigationContainer(NavigationContainer)
+
const navigationTheme = {
dark: true,
colors: {
@@ -45,9 +57,11 @@ const navigationTheme = {
const Base = () => {
return (
-
-
-
+
+
+
+
+
)
}
AppRegistry.registerComponent(appName, () => Base)
diff --git a/app/ios/AriesBifold.xcodeproj/project.pbxproj b/app/ios/AriesBifold.xcodeproj/project.pbxproj
index 30bf59726..272920846 100644
--- a/app/ios/AriesBifold.xcodeproj/project.pbxproj
+++ b/app/ios/AriesBifold.xcodeproj/project.pbxproj
@@ -72,6 +72,7 @@
56A83D5C27D95E24002FE8FE /* BCSans-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "BCSans-BoldItalic.ttf"; path = "../src/assets/fonts/BCSans-BoldItalic.ttf"; sourceTree = ""; };
56A83D5D27D95E24002FE8FE /* BCSans-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "BCSans-Italic.ttf"; path = "../src/assets/fonts/BCSans-Italic.ttf"; sourceTree = ""; };
62AD74D113A13E6D7ECD73DC /* Pods-AriesBifold.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AriesBifold.release.xcconfig"; path = "Target Support Files/Pods-AriesBifold/Pods-AriesBifold.release.xcconfig"; sourceTree = ""; };
+ 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; };
6FAA896629281E3E002D887C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
6FAA896B29281E60002D887C /* fr-CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "fr-CA"; path = "fr-CA.lproj/InfoPlist.strings"; sourceTree = ""; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = AriesBifold/LaunchScreen.storyboard; sourceTree = ""; };
@@ -166,6 +167,7 @@
83CBB9F61A601CBA00E9B192 = {
isa = PBXGroup;
children = (
+ 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */,
566FB1F1273B158E003E9BEE /* Media.xcassets */,
13B07FAE1A68108700A75B9A /* AriesBifold */,
00E356EF1AD99517003FC87E /* AriesBifoldTests */,
@@ -237,6 +239,7 @@
F5B7D67D9BBF4C5FE692BB29 /* [CP] Embed Pods Frameworks */,
EB396EB204E0E4C9F6307F29 /* [CP] Copy Pods Resources */,
433E774026557E1B00F569EE /* Embed Frameworks */,
+ 9D840F3D7FAB4E2AA01DCE7C /* Upload source maps to Bugsnag */,
);
buildRules = (
);
@@ -323,7 +326,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
+ shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nset -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
};
4EC0E8613979411464217753 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
@@ -381,6 +384,20 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AriesBifold-AriesBifoldTests/Pods-AriesBifold-AriesBifoldTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
+ 9D840F3D7FAB4E2AA01DCE7C /* Upload source maps to Bugsnag */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Upload source maps to Bugsnag";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh";
+ };
B9A54C90D3BE82CD93B12CE2 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@@ -638,6 +655,7 @@
};
83CBBA201A601CBA00E9B192 /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
@@ -703,6 +721,7 @@
};
83CBBA211A601CBA00E9B192 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
diff --git a/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme b/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme
index bc517c677..bfa2bddfb 100644
--- a/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme
+++ b/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme
@@ -1,10 +1,28 @@
+ version = "1.7">
+
+
+
+
+
+
+
+
+
+
#import "AppDelegate.h"
#import
@@ -10,7 +11,9 @@ @implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
- RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
+ [Bugsnag start];
+
+RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"QCWallet"
initialProperties:nil];
diff --git a/app/ios/AriesBifold/Info.plist b/app/ios/AriesBifold/Info.plist
index f3b7f9e3e..d70e01d78 100644
--- a/app/ios/AriesBifold/Info.plist
+++ b/app/ios/AriesBifold/Info.plist
@@ -81,5 +81,10 @@
+ bugsnag
+
+ apiKey
+ $(BUGSNAG_API_KEY)
+
diff --git a/app/ios/Config.xcconfig b/app/ios/Config.xcconfig
new file mode 100644
index 000000000..907ca1e5f
--- /dev/null
+++ b/app/ios/Config.xcconfig
@@ -0,0 +1,10 @@
+//
+// Config.xcconfig
+// AriesBifold
+//
+// Created by jean-christophe.drouin@mcn.gouv.qc.ca on 2023-05-05.
+//
+
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+#include? "tmp.xcconfig"
diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock
index e995bdfca..7048a9021 100644
--- a/app/ios/Podfile.lock
+++ b/app/ios/Podfile.lock
@@ -1,5 +1,7 @@
PODS:
- boost (1.76.0)
+ - BugsnagReactNative (7.20.2):
+ - React-Core
- CatCrypto (0.3.2)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
@@ -387,6 +389,7 @@ PODS:
DEPENDENCIES:
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
+ - "BugsnagReactNative (from `../node_modules/@bugsnag/react-native`)"
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
@@ -458,6 +461,8 @@ SPEC REPOS:
EXTERNAL SOURCES:
boost:
:podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
+ BugsnagReactNative:
+ :path: "../node_modules/@bugsnag/react-native"
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
FBLazyVector:
@@ -571,6 +576,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234
+ BugsnagReactNative: bf6f4ebababa8536726b3014c7d3e4af8c53d488
CatCrypto: a477899b6be4954e75be4897e732da098cc0a5a8
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
@@ -634,4 +640,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: ac6fb920404abfaf943a3b94ff54624a7f9c89e8
-COCOAPODS: 1.11.3
+COCOAPODS: 1.12.1
diff --git a/app/package-lock.json b/app/package-lock.json
index 307f3514c..fba0f9d3d 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -13,6 +13,8 @@
"@aries-framework/core": "^0.3.3",
"@aries-framework/react-hooks": "^0.4.0",
"@aries-framework/react-native": "^0.3.2",
+ "@bugsnag/plugin-react-navigation": "^7.19.0",
+ "@bugsnag/react-native": "^7.20.2",
"@formatjs/intl-datetimeformat": "4.2.4",
"@formatjs/intl-displaynames": "5.2.4",
"@formatjs/intl-getcanonicallocales": "1.7.3",
@@ -77,6 +79,7 @@
"devDependencies": {
"@babel/core": "7.15.5",
"@babel/runtime": "7.15.4",
+ "@bugsnag/source-maps": "^2.3.1",
"@commitlint/cli": "^11.0.0",
"@react-native-community/eslint-config": "^2.0.0",
"@storybook/addon-actions": "^5.3.21",
@@ -392,7 +395,7 @@
},
"peerDependencies": {
"@aries-framework/core": "^0.3.3",
- "@aries-framework/react-hooks": "^0.4.0",
+ "@aries-framework/react-hooks": "^0.4.2",
"@aries-framework/react-native": "^0.3.2",
"@formatjs/intl-datetimeformat": "^4.2.3",
"@formatjs/intl-displaynames": "^5.2.3",
@@ -1246,6 +1249,8 @@
},
"node_modules/@babel/plugin-syntax-class-static-block": {
"version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1285,6 +1290,8 @@
},
"node_modules/@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1421,6 +1428,8 @@
},
"node_modules/@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2149,6 +2158,8 @@
},
"node_modules/@babel/preset-modules": {
"version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2280,6 +2291,179 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
+ "node_modules/@bugsnag/core": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.19.0.tgz",
+ "integrity": "sha512-2KGwdaLD9PhR7Wk7xPi3jGuGsKTatc/28U4TOZIDU3CgC2QhGjubwiXSECel5gwxhZ3jACKcMKSV2ovHhv1NrA==",
+ "dependencies": {
+ "@bugsnag/cuid": "^3.0.0",
+ "@bugsnag/safe-json-stringify": "^6.0.0",
+ "error-stack-parser": "^2.0.3",
+ "iserror": "0.0.2",
+ "stack-generator": "^2.0.3"
+ }
+ },
+ "node_modules/@bugsnag/cuid": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.2.tgz",
+ "integrity": "sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ=="
+ },
+ "node_modules/@bugsnag/delivery-react-native": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/delivery-react-native/-/delivery-react-native-7.19.0.tgz",
+ "integrity": "sha512-Zzl3VOwLDU4KHmf3VweyfNeJcQgL0NzbWG+OCxjCYen093Q4sxNTpWAVBCrYPRjQ2Sq3+D3+YbQg5UUrHL7kig==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-console-breadcrumbs": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-console-breadcrumbs/-/plugin-console-breadcrumbs-7.19.0.tgz",
+ "integrity": "sha512-ZHqPAK0WpbvWjj2wwSV8+C8+K9TOyQsfZnRJ7lIadbeUUJORmFRnG0vUHKBvwxMP7bqCj8fOe/S0kKF3dfMMKA==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-network-breadcrumbs": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-network-breadcrumbs/-/plugin-network-breadcrumbs-7.19.0.tgz",
+ "integrity": "sha512-Farc0XuUoxv10kJE65zfgZlqujR7TDu8QjwxA4YDxEE41kFM8TAw0CAK15WkQK1UTsNACiiAETZGyU279eB65Q==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react/-/plugin-react-7.19.0.tgz",
+ "integrity": "sha512-owC4QXYJWGllMoOPcH5P7sbDIDuFLMCbjGAU6FwH5mBMObSQo+1ViSKImlTJQUFXATM8ySISTBVt7w3C6FFHng==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@bugsnag/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-native-client-sync": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-client-sync/-/plugin-react-native-client-sync-7.19.0.tgz",
+ "integrity": "sha512-WyK5pZuIzqVrY0h0HimwuODCo9ty9AyDY3q1pmwjrz2y8JTT21nnwUtHybLsp5Rl2oJR4tG06QkWmazgHDkWdA==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-native-event-sync": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-event-sync/-/plugin-react-native-event-sync-7.19.0.tgz",
+ "integrity": "sha512-OD73WFkDJAq8AheN2Jap+d17M1mPbEBc1Aulz9FCLs//QwlM2IOij8oarB1iF/wgK6FnIgLFEBPTZpGHuZUsyQ==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-native-global-error-handler": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-global-error-handler/-/plugin-react-native-global-error-handler-7.19.0.tgz",
+ "integrity": "sha512-zf+KIHqGEAs2ekAzJCTS0rM1nKrmpIfznBhn72xZJwyfYrh0wbvjZjClDEwxDZ24uNVUUHrIymzdqxpHqVb0lg==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-native-hermes": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-hermes/-/plugin-react-native-hermes-7.19.0.tgz",
+ "integrity": "sha512-6SGTSR6NMS2t8j02ZQ6FlA+K/nKkZqvGA+8A7WS/0M8HAShzyoMpZH10kGrU2dcCaiEtmD2T6OGBSbpF+385Dg==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-native-session": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-session/-/plugin-react-native-session-7.19.0.tgz",
+ "integrity": "sha512-PVwsUstedp9wTqJU/IKdCaMFKP2YrqHXoeBtqRTQ7FFyr0K8wsiW7nZP2jM31VS388hZWSWBlHQPA/3LZ49tNQ==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-native-unhandled-rejection": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.19.0.tgz",
+ "integrity": "sha512-+XDk0OoeM6MZhBh7kEalbRwFuhCZST6Y1jOostfz0fhrmT4FdgQYi1FWcPNsUTcjqv7M48pOFZNx8yWI0lGaYg==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0"
+ }
+ },
+ "node_modules/@bugsnag/plugin-react-navigation": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-navigation/-/plugin-react-navigation-7.19.0.tgz",
+ "integrity": "sha512-cDuHwykruivUZFtaIt5/MhbfRyH20X0XFrW071V+5M+rXAnpJa2AwppXwEuP7DWeER38hd2O8VqaUU2Ijes2Lw==",
+ "peerDependencies": {
+ "@bugsnag/core": "^7.0.0",
+ "@react-navigation/native": "^5.0 || ^6.0"
+ },
+ "peerDependenciesMeta": {
+ "@bugsnag/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@bugsnag/react-native": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.20.2.tgz",
+ "integrity": "sha512-pvzFZA/7PzChLgrSsynZFl/lBOcY+X76sLbniJz7S3Lcrdc5+NY5fP+AVoZH9mqNaob6OSiALubUVLpPeirivg==",
+ "dependencies": {
+ "@bugsnag/core": "^7.19.0",
+ "@bugsnag/delivery-react-native": "^7.19.0",
+ "@bugsnag/plugin-console-breadcrumbs": "^7.19.0",
+ "@bugsnag/plugin-network-breadcrumbs": "^7.19.0",
+ "@bugsnag/plugin-react": "^7.19.0",
+ "@bugsnag/plugin-react-native-client-sync": "^7.19.0",
+ "@bugsnag/plugin-react-native-event-sync": "^7.19.0",
+ "@bugsnag/plugin-react-native-global-error-handler": "^7.19.0",
+ "@bugsnag/plugin-react-native-hermes": "^7.19.0",
+ "@bugsnag/plugin-react-native-session": "^7.19.0",
+ "@bugsnag/plugin-react-native-unhandled-rejection": "^7.19.0",
+ "iserror": "^0.0.2"
+ }
+ },
+ "node_modules/@bugsnag/safe-json-stringify": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz",
+ "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA=="
+ },
+ "node_modules/@bugsnag/source-maps": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@bugsnag/source-maps/-/source-maps-2.3.1.tgz",
+ "integrity": "sha512-9xJTcf5+W7+y1fQBftSOste/3ORi+d5EeCCMdvaHSX69MKQP0lrDiSYpLwX/ErcXrTbvu7nimGGKJP2vBdF7zQ==",
+ "dev": true,
+ "dependencies": {
+ "command-line-args": "^5.1.1",
+ "command-line-usage": "^6.1.0",
+ "concat-stream": "^2.0.0",
+ "consola": "^2.15.0",
+ "form-data": "^3.0.0",
+ "glob": "^7.1.6",
+ "read-pkg-up": "^7.0.1"
+ },
+ "bin": {
+ "bugsnag-source-maps": "bin/cli"
+ }
+ },
+ "node_modules/@bugsnag/source-maps/node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "engines": [
+ "node >= 6.0"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
"node_modules/@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
@@ -9138,6 +9322,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/array-buffer-byte-length": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
@@ -9195,6 +9388,8 @@
},
"node_modules/array-union": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9206,6 +9401,8 @@
},
"node_modules/array-uniq": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11810,6 +12007,54 @@
"integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
"license": "MIT"
},
+ "node_modules/command-line-args": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
+ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+ "dev": true,
+ "dependencies": {
+ "array-back": "^3.1.0",
+ "find-replace": "^3.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/command-line-usage": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz",
+ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==",
+ "dev": true,
+ "dependencies": {
+ "array-back": "^4.0.2",
+ "chalk": "^2.4.2",
+ "table-layout": "^1.0.2",
+ "typical": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/command-line-usage/node_modules/typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -11979,6 +12224,12 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
+ "node_modules/consola": {
+ "version": "2.15.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
+ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
+ "dev": true
+ },
"node_modules/console-browserify": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
@@ -12832,6 +13083,15 @@
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"license": "MIT"
},
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -15562,6 +15822,18 @@
"node": ">=6"
}
},
+ "node_modules/find-replace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
+ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+ "dev": true,
+ "dependencies": {
+ "array-back": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/find-root": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
@@ -17232,6 +17504,8 @@
},
"node_modules/ignore": {
"version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true,
"license": "MIT"
},
@@ -17633,6 +17907,8 @@
},
"node_modules/interpret": {
"version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -17699,6 +17975,8 @@
},
"node_modules/is-arguments": {
"version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
@@ -18256,6 +18534,11 @@
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"license": "MIT"
},
+ "node_modules/iserror": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz",
+ "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw=="
+ },
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -23120,6 +23403,12 @@
"integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
"license": "MIT"
},
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "dev": true
+ },
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -25108,6 +25397,8 @@
},
"node_modules/object-is": {
"version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
@@ -25670,6 +25961,8 @@
},
"node_modules/path-type": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -25681,6 +25974,8 @@
},
"node_modules/path-type/node_modules/pify": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -26174,6 +26469,8 @@
},
"node_modules/process": {
"version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -28577,6 +28874,8 @@
},
"node_modules/rechoir": {
"version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"dev": true,
"dependencies": {
"resolve": "^1.1.6"
@@ -28622,6 +28921,15 @@
"node": ">=8"
}
},
+ "node_modules/reduce-flatten": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
+ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -29687,6 +29995,8 @@
},
"node_modules/shelljs": {
"version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -30154,6 +30464,14 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/stack-generator": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+ "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
"node_modules/stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
@@ -30176,8 +30494,9 @@
}
},
"node_modules/stackframe": {
- "version": "1.2.1",
- "license": "MIT"
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
},
"node_modules/stacktrace-parser": {
"version": "0.1.10",
@@ -30914,6 +31233,39 @@
"node": ">=10.0.0"
}
},
+ "node_modules/table-layout": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz",
+ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==",
+ "dev": true,
+ "dependencies": {
+ "array-back": "^4.0.1",
+ "deep-extend": "~0.6.0",
+ "typical": "^5.2.0",
+ "wordwrapjs": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/table-layout/node_modules/array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/table-layout/node_modules/typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/table/node_modules/ajv": {
"version": "8.11.0",
"dev": true,
@@ -31819,6 +32171,15 @@
"node": ">=4.2.0"
}
},
+ "node_modules/typical": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
+ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/ua-parser-js": {
"version": "0.7.31",
"funding": [
@@ -33107,6 +33468,28 @@
"node": ">=0.10.0"
}
},
+ "node_modules/wordwrapjs": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
+ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
+ "dev": true,
+ "dependencies": {
+ "reduce-flatten": "^2.0.0",
+ "typical": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/wordwrapjs/node_modules/typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -33917,6 +34300,8 @@
},
"@babel/plugin-syntax-class-static-block": {
"version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.14.5"
@@ -33938,6 +34323,8 @@
},
"@babel/plugin-syntax-export-namespace-from": {
"version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.8.3"
@@ -34025,6 +34412,8 @@
},
"@babel/plugin-syntax-private-property-in-object": {
"version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.14.5"
@@ -34432,6 +34821,8 @@
},
"@babel/preset-modules": {
"version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -34530,6 +34921,131 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
+ "@bugsnag/core": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.19.0.tgz",
+ "integrity": "sha512-2KGwdaLD9PhR7Wk7xPi3jGuGsKTatc/28U4TOZIDU3CgC2QhGjubwiXSECel5gwxhZ3jACKcMKSV2ovHhv1NrA==",
+ "requires": {
+ "@bugsnag/cuid": "^3.0.0",
+ "@bugsnag/safe-json-stringify": "^6.0.0",
+ "error-stack-parser": "^2.0.3",
+ "iserror": "0.0.2",
+ "stack-generator": "^2.0.3"
+ }
+ },
+ "@bugsnag/cuid": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.2.tgz",
+ "integrity": "sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ=="
+ },
+ "@bugsnag/delivery-react-native": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/delivery-react-native/-/delivery-react-native-7.19.0.tgz",
+ "integrity": "sha512-Zzl3VOwLDU4KHmf3VweyfNeJcQgL0NzbWG+OCxjCYen093Q4sxNTpWAVBCrYPRjQ2Sq3+D3+YbQg5UUrHL7kig=="
+ },
+ "@bugsnag/plugin-console-breadcrumbs": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-console-breadcrumbs/-/plugin-console-breadcrumbs-7.19.0.tgz",
+ "integrity": "sha512-ZHqPAK0WpbvWjj2wwSV8+C8+K9TOyQsfZnRJ7lIadbeUUJORmFRnG0vUHKBvwxMP7bqCj8fOe/S0kKF3dfMMKA=="
+ },
+ "@bugsnag/plugin-network-breadcrumbs": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-network-breadcrumbs/-/plugin-network-breadcrumbs-7.19.0.tgz",
+ "integrity": "sha512-Farc0XuUoxv10kJE65zfgZlqujR7TDu8QjwxA4YDxEE41kFM8TAw0CAK15WkQK1UTsNACiiAETZGyU279eB65Q=="
+ },
+ "@bugsnag/plugin-react": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react/-/plugin-react-7.19.0.tgz",
+ "integrity": "sha512-owC4QXYJWGllMoOPcH5P7sbDIDuFLMCbjGAU6FwH5mBMObSQo+1ViSKImlTJQUFXATM8ySISTBVt7w3C6FFHng=="
+ },
+ "@bugsnag/plugin-react-native-client-sync": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-client-sync/-/plugin-react-native-client-sync-7.19.0.tgz",
+ "integrity": "sha512-WyK5pZuIzqVrY0h0HimwuODCo9ty9AyDY3q1pmwjrz2y8JTT21nnwUtHybLsp5Rl2oJR4tG06QkWmazgHDkWdA=="
+ },
+ "@bugsnag/plugin-react-native-event-sync": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-event-sync/-/plugin-react-native-event-sync-7.19.0.tgz",
+ "integrity": "sha512-OD73WFkDJAq8AheN2Jap+d17M1mPbEBc1Aulz9FCLs//QwlM2IOij8oarB1iF/wgK6FnIgLFEBPTZpGHuZUsyQ=="
+ },
+ "@bugsnag/plugin-react-native-global-error-handler": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-global-error-handler/-/plugin-react-native-global-error-handler-7.19.0.tgz",
+ "integrity": "sha512-zf+KIHqGEAs2ekAzJCTS0rM1nKrmpIfznBhn72xZJwyfYrh0wbvjZjClDEwxDZ24uNVUUHrIymzdqxpHqVb0lg=="
+ },
+ "@bugsnag/plugin-react-native-hermes": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-hermes/-/plugin-react-native-hermes-7.19.0.tgz",
+ "integrity": "sha512-6SGTSR6NMS2t8j02ZQ6FlA+K/nKkZqvGA+8A7WS/0M8HAShzyoMpZH10kGrU2dcCaiEtmD2T6OGBSbpF+385Dg=="
+ },
+ "@bugsnag/plugin-react-native-session": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-session/-/plugin-react-native-session-7.19.0.tgz",
+ "integrity": "sha512-PVwsUstedp9wTqJU/IKdCaMFKP2YrqHXoeBtqRTQ7FFyr0K8wsiW7nZP2jM31VS388hZWSWBlHQPA/3LZ49tNQ=="
+ },
+ "@bugsnag/plugin-react-native-unhandled-rejection": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.19.0.tgz",
+ "integrity": "sha512-+XDk0OoeM6MZhBh7kEalbRwFuhCZST6Y1jOostfz0fhrmT4FdgQYi1FWcPNsUTcjqv7M48pOFZNx8yWI0lGaYg=="
+ },
+ "@bugsnag/plugin-react-navigation": {
+ "version": "7.19.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-navigation/-/plugin-react-navigation-7.19.0.tgz",
+ "integrity": "sha512-cDuHwykruivUZFtaIt5/MhbfRyH20X0XFrW071V+5M+rXAnpJa2AwppXwEuP7DWeER38hd2O8VqaUU2Ijes2Lw=="
+ },
+ "@bugsnag/react-native": {
+ "version": "7.20.2",
+ "resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.20.2.tgz",
+ "integrity": "sha512-pvzFZA/7PzChLgrSsynZFl/lBOcY+X76sLbniJz7S3Lcrdc5+NY5fP+AVoZH9mqNaob6OSiALubUVLpPeirivg==",
+ "requires": {
+ "@bugsnag/core": "^7.19.0",
+ "@bugsnag/delivery-react-native": "^7.19.0",
+ "@bugsnag/plugin-console-breadcrumbs": "^7.19.0",
+ "@bugsnag/plugin-network-breadcrumbs": "^7.19.0",
+ "@bugsnag/plugin-react": "^7.19.0",
+ "@bugsnag/plugin-react-native-client-sync": "^7.19.0",
+ "@bugsnag/plugin-react-native-event-sync": "^7.19.0",
+ "@bugsnag/plugin-react-native-global-error-handler": "^7.19.0",
+ "@bugsnag/plugin-react-native-hermes": "^7.19.0",
+ "@bugsnag/plugin-react-native-session": "^7.19.0",
+ "@bugsnag/plugin-react-native-unhandled-rejection": "^7.19.0",
+ "iserror": "^0.0.2"
+ }
+ },
+ "@bugsnag/safe-json-stringify": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz",
+ "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA=="
+ },
+ "@bugsnag/source-maps": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@bugsnag/source-maps/-/source-maps-2.3.1.tgz",
+ "integrity": "sha512-9xJTcf5+W7+y1fQBftSOste/3ORi+d5EeCCMdvaHSX69MKQP0lrDiSYpLwX/ErcXrTbvu7nimGGKJP2vBdF7zQ==",
+ "dev": true,
+ "requires": {
+ "command-line-args": "^5.1.1",
+ "command-line-usage": "^6.1.0",
+ "concat-stream": "^2.0.0",
+ "consola": "^2.15.0",
+ "form-data": "^3.0.0",
+ "glob": "^7.1.6",
+ "read-pkg-up": "^7.0.1"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ }
+ }
+ },
"@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
@@ -39836,6 +40352,12 @@
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
"integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q=="
},
+ "array-back": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
+ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+ "dev": true
+ },
"array-buffer-byte-length": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
@@ -39880,6 +40402,8 @@
},
"array-union": {
"version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
"dev": true,
"requires": {
"array-uniq": "^1.0.1"
@@ -39887,6 +40411,8 @@
},
"array-uniq": {
"version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
"dev": true
},
"array-unique": {
@@ -41910,6 +42436,44 @@
"resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
"integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
},
+ "command-line-args": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
+ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+ "dev": true,
+ "requires": {
+ "array-back": "^3.1.0",
+ "find-replace": "^3.0.0",
+ "lodash.camelcase": "^4.3.0",
+ "typical": "^4.0.0"
+ }
+ },
+ "command-line-usage": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz",
+ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.2",
+ "chalk": "^2.4.2",
+ "table-layout": "^1.0.2",
+ "typical": "^5.2.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true
+ },
+ "typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true
+ }
+ }
+ },
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -42056,6 +42620,12 @@
}
}
},
+ "consola": {
+ "version": "2.15.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
+ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
+ "dev": true
+ },
"console-browserify": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
@@ -42712,6 +43282,12 @@
}
}
},
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -44742,6 +45318,15 @@
"pkg-dir": "^3.0.0"
}
},
+ "find-replace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
+ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "^3.0.1"
+ }
+ },
"find-root": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
@@ -46002,6 +46587,8 @@
},
"ignore": {
"version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true
},
"image-size": {
@@ -46294,6 +46881,8 @@
},
"interpret": {
"version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true
},
"invariant": {
@@ -46339,6 +46928,8 @@
},
"is-arguments": {
"version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
"requires": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -46695,6 +47286,11 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
+ "iserror": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz",
+ "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw=="
+ },
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@@ -50212,6 +50808,12 @@
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA=="
},
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
+ "dev": true
+ },
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -51781,6 +52383,8 @@
},
"object-is": {
"version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3"
@@ -52184,6 +52788,8 @@
},
"path-type": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
"dev": true,
"requires": {
"pify": "^3.0.0"
@@ -52191,6 +52797,8 @@
"dependencies": {
"pify": {
"version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true
}
}
@@ -52542,6 +53150,8 @@
},
"process": {
"version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"dev": true
},
"process-nextick-args": {
@@ -54335,6 +54945,8 @@
},
"rechoir": {
"version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"dev": true,
"requires": {
"resolve": "^1.1.6"
@@ -54370,6 +54982,12 @@
"strip-indent": "^3.0.0"
}
},
+ "reduce-flatten": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
+ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
+ "dev": true
+ },
"reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
@@ -55167,6 +55785,8 @@
},
"shelljs": {
"version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"dev": true,
"requires": {
"glob": "^7.0.0",
@@ -55539,6 +56159,14 @@
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
"dev": true
},
+ "stack-generator": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
+ "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
+ "requires": {
+ "stackframe": "^1.3.4"
+ }
+ },
"stack-utils": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
@@ -55557,7 +56185,9 @@
}
},
"stackframe": {
- "version": "1.2.1"
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
},
"stacktrace-parser": {
"version": "0.1.10",
@@ -56183,6 +56813,32 @@
}
}
},
+ "table-layout": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz",
+ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==",
+ "dev": true,
+ "requires": {
+ "array-back": "^4.0.1",
+ "deep-extend": "~0.6.0",
+ "typical": "^5.2.0",
+ "wordwrapjs": "^4.0.0"
+ },
+ "dependencies": {
+ "array-back": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
+ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
+ "dev": true
+ },
+ "typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true
+ }
+ }
+ },
"tapable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
@@ -56788,6 +57444,12 @@
"integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
"dev": true
},
+ "typical": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
+ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
+ "dev": true
+ },
"ua-parser-js": {
"version": "0.7.31"
},
@@ -57779,6 +58441,24 @@
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
+ "wordwrapjs": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
+ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
+ "dev": true,
+ "requires": {
+ "reduce-flatten": "^2.0.0",
+ "typical": "^5.2.0"
+ },
+ "dependencies": {
+ "typical": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
+ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
+ "dev": true
+ }
+ }
+ },
"worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
@@ -57992,4 +58672,4 @@
"devOptional": true
}
}
-}
\ No newline at end of file
+}
diff --git a/app/package.json b/app/package.json
index d2ee40b05..4b9eadd95 100644
--- a/app/package.json
+++ b/app/package.json
@@ -43,6 +43,8 @@
"@aries-framework/core": "^0.3.3",
"@aries-framework/react-hooks": "^0.4.0",
"@aries-framework/react-native": "^0.3.2",
+ "@bugsnag/plugin-react-navigation": "^7.19.0",
+ "@bugsnag/react-native": "^7.20.2",
"@formatjs/intl-datetimeformat": "4.2.4",
"@formatjs/intl-displaynames": "5.2.4",
"@formatjs/intl-getcanonicallocales": "1.7.3",
@@ -107,6 +109,7 @@
"devDependencies": {
"@babel/core": "7.15.5",
"@babel/runtime": "7.15.4",
+ "@bugsnag/source-maps": "^2.3.1",
"@commitlint/cli": "^11.0.0",
"@react-native-community/eslint-config": "^2.0.0",
"@storybook/addon-actions": "^5.3.21",
diff --git a/app/src/screens/Splash.tsx b/app/src/screens/Splash.tsx
index e59d3f701..8dc32734f 100644
--- a/app/src/screens/Splash.tsx
+++ b/app/src/screens/Splash.tsx
@@ -9,6 +9,7 @@ import {
} from '@aries-framework/core'
import { useAgent } from '@aries-framework/react-hooks'
import { agentDependencies } from '@aries-framework/react-native'
+import Bugsnag from '@bugsnag/react-native'
import AsyncStorage from '@react-native-async-storage/async-storage'
import { useNavigation } from '@react-navigation/core'
import { CommonActions } from '@react-navigation/native'
@@ -149,7 +150,8 @@ const Splash: React.FC = () => {
if (data) {
return JSON.parse(data)
}
- } catch {
+ } catch (e: unknown) {
+ Bugsnag.notify(e as Error)
return
}
}
@@ -272,6 +274,7 @@ const Splash: React.FC = () => {
})
)
} catch (e: unknown) {
+ Bugsnag.notify(e as Error)
setInitErrorType(InitErrorTypes.Onboarding)
setInitError(e as Error)
}
@@ -335,6 +338,7 @@ const Splash: React.FC = () => {
})
)
} catch (e: unknown) {
+ Bugsnag.notify(e as Error)
setInitErrorType(InitErrorTypes.Agent)
setInitError(e as Error)
}
diff --git a/patch/Qc/bugsnag/bugsnag.patch b/patch/Qc/bugsnag/bugsnag.patch
new file mode 100644
index 000000000..4f88cf7a6
--- /dev/null
+++ b/patch/Qc/bugsnag/bugsnag.patch
@@ -0,0 +1,1558 @@
+diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
+index 28345fd..4e5bcd7 100644
+--- a/.github/workflows/main.yaml
++++ b/.github/workflows/main.yaml
+@@ -142,12 +142,14 @@ jobs:
+ # Actual environment variables are not being picked up
+ # by the build so they're put into an .env file.
+ - name: Create environment settings
+- if: env.MEDIATOR_URL != null
++ if: env.MEDIATOR_URL != null || env.BUGSNAG_API_KEY != null
+ working-directory: app
+ env:
+ MEDIATOR_URL: ${{ secrets.MEDIATOR_URL }}
++ BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
+ run: |
+- echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env
++ echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env |
++ echo "BUGSNAG_API_KEY=${BUGSNAG_API_KEY}" >>.env
+ # https://docs.github.com/en/actions/deployment/deploying-xcode-applications/installing-an-apple-certificate-on-macos-runners-for-xcode-development
+ - name: Create Provisioning Profile
+ if: github.ref_name == 'main' && needs.check-ios-secrets.outputs.isReleaseBuild == 'true'
+@@ -301,12 +303,14 @@ jobs:
+ # Actual environment variables are not being picked up
+ # by the build so they're put into an .env file.
+ - name: Create environment settings
+- if: env.MEDIATOR_URL != null
++ if: env.MEDIATOR_URL != null || env.BUGSNAG_API_KEY != null
+ working-directory: app
+ env:
+ MEDIATOR_URL: ${{ secrets.MEDIATOR_URL }}
++ BUGSNAG_API_KEY: ${{ secrets.BUGSNAG_API_KEY }}
+ run: |
+- echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env
++ echo "MEDIATOR_URL=${MEDIATOR_URL}" >.env |
++ echo "BUGSNAG_API_KEY=${BUGSNAG_API_KEY}" >>.env
+
+ - name: Android debug build
+ if: github.ref_name != 'main' || needs.check-android-secrets.outputs.isReleaseBuild != 'true'
+diff --git a/.gitignore b/.gitignore
+index 8411e0d..f28ab73 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -41,3 +41,4 @@ app/patches/react-native-gifted-chat*.patch
+ # xcode
+ xcuserdata/
+ .npmrc
++app/ios/tmp.xcconfig
+diff --git a/app/android/app/build.gradle b/app/android/app/build.gradle
+index fcccbb4..76aaa59 100644
+--- a/app/android/app/build.gradle
++++ b/app/android/app/build.gradle
+@@ -1,4 +1,5 @@
+ apply plugin: "com.android.application"
++apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
+
+ import com.android.build.OutputFile
+
+@@ -93,6 +94,7 @@ project.ext.react = [
+ ]
+
+ apply from: "../../node_modules/react-native/react.gradle"
++apply plugin: "com.bugsnag.android.gradle"
+ apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
+
+ /**
+@@ -155,6 +157,7 @@ android {
+
+
+ missingDimensionStrategy 'react-native-camera', 'general'
++ manifestPlaceholders = [API_KEY: project.env.get("BUGSNAG_API_KEY")]
+ }
+ splits {
+ abi {
+@@ -237,5 +240,8 @@ task copyDownloadableDepsToLibs(type: Copy) {
+ into 'libs'
+ }
+
+-apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
+ apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
++
++bugsnag {
++ uploadReactNativeMappings = true
++}
+diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml
+index 289b56d..65f817e 100644
+--- a/app/android/app/src/main/AndroidManifest.xml
++++ b/app/android/app/src/main/AndroidManifest.xml
+@@ -42,5 +42,6 @@
+
+
+
++
+
+
+\ No newline at end of file
+diff --git a/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java b/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java
+index 235e7e0..dc77d51 100644
+--- a/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java
++++ b/app/android/app/src/main/java/ca/qc/gouv/QCWallet/MainApplication.java
+@@ -1,5 +1,6 @@
+ package ca.qc.gouv.portefeuilleqc;
+
++import com.bugsnag.android.Bugsnag;
+ import android.app.Application;
+ import android.content.Context;
+ import com.facebook.react.PackageList;
+@@ -44,6 +45,7 @@ public class MainApplication extends Application implements ReactApplication {
+ @Override
+ public void onCreate() {
+ super.onCreate();
++ Bugsnag.start(this);
+ SoLoader.init(this, /* native exopackage */ false);
+ }
+ }
+diff --git a/app/android/build.gradle b/app/android/build.gradle
+index 0e1bbc0..b2f43ad 100644
+--- a/app/android/build.gradle
++++ b/app/android/build.gradle
+@@ -18,6 +18,7 @@ buildscript {
+ }
+ dependencies {
+ classpath("com.android.tools.build:gradle:7.2.1")
++ classpath("com.bugsnag:bugsnag-android-gradle-plugin:7.+")
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+diff --git a/app/index.js b/app/index.js
+index 862d989..b6603a4 100644
+--- a/app/index.js
++++ b/app/index.js
+@@ -20,6 +20,8 @@ import '@formatjs/intl-datetimeformat/polyfill'
+ import '@formatjs/intl-datetimeformat/locale-data/en' // locale-data for en
+ import '@formatjs/intl-datetimeformat/add-all-tz' // Add ALL tz data
+
++import BugsnagPluginReactNavigation from '@bugsnag/plugin-react-navigation'
++import Bugsnag from '@bugsnag/react-native'
+ import { NavigationContainer } from '@react-navigation/native'
+ import React from 'react'
+ import { AppRegistry } from 'react-native'
+@@ -31,6 +33,16 @@ const { theme } = qcwallet
+
+ const { ColorPallet } = theme
+
++Bugsnag.start({
++ plugins: [new BugsnagPluginReactNavigation()],
++})
++
++const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)
++
++const { createNavigationContainer } = Bugsnag.getPlugin('reactNavigation')
++
++const BugsnagNavigationContainer = createNavigationContainer(NavigationContainer)
++
+ const navigationTheme = {
+ dark: true,
+ colors: {
+@@ -45,9 +57,11 @@ const navigationTheme = {
+
+ const Base = () => {
+ return (
+-
+-
+-
++
++
++
++
++
+ )
+ }
+ AppRegistry.registerComponent(appName, () => Base)
+diff --git a/app/ios/AriesBifold.xcodeproj/project.pbxproj b/app/ios/AriesBifold.xcodeproj/project.pbxproj
+index 30bf597..2729208 100644
+--- a/app/ios/AriesBifold.xcodeproj/project.pbxproj
++++ b/app/ios/AriesBifold.xcodeproj/project.pbxproj
+@@ -72,6 +72,7 @@
+ 56A83D5C27D95E24002FE8FE /* BCSans-BoldItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "BCSans-BoldItalic.ttf"; path = "../src/assets/fonts/BCSans-BoldItalic.ttf"; sourceTree = ""; };
+ 56A83D5D27D95E24002FE8FE /* BCSans-Italic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "BCSans-Italic.ttf"; path = "../src/assets/fonts/BCSans-Italic.ttf"; sourceTree = ""; };
+ 62AD74D113A13E6D7ECD73DC /* Pods-AriesBifold.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AriesBifold.release.xcconfig"; path = "Target Support Files/Pods-AriesBifold/Pods-AriesBifold.release.xcconfig"; sourceTree = ""; };
++ 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = ""; };
+ 6FAA896629281E3E002D887C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
+ 6FAA896B29281E60002D887C /* fr-CA */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "fr-CA"; path = "fr-CA.lproj/InfoPlist.strings"; sourceTree = ""; };
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = AriesBifold/LaunchScreen.storyboard; sourceTree = ""; };
+@@ -166,6 +167,7 @@
+ 83CBB9F61A601CBA00E9B192 = {
+ isa = PBXGroup;
+ children = (
++ 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */,
+ 566FB1F1273B158E003E9BEE /* Media.xcassets */,
+ 13B07FAE1A68108700A75B9A /* AriesBifold */,
+ 00E356EF1AD99517003FC87E /* AriesBifoldTests */,
+@@ -237,6 +239,7 @@
+ F5B7D67D9BBF4C5FE692BB29 /* [CP] Embed Pods Frameworks */,
+ EB396EB204E0E4C9F6307F29 /* [CP] Copy Pods Resources */,
+ 433E774026557E1B00F569EE /* Embed Frameworks */,
++ 9D840F3D7FAB4E2AA01DCE7C /* Upload source maps to Bugsnag */,
+ );
+ buildRules = (
+ );
+@@ -323,7 +326,7 @@
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+- shellScript = "set -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
++ shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nset -e\n\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
+ };
+ 4EC0E8613979411464217753 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+@@ -381,6 +384,20 @@
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AriesBifold-AriesBifoldTests/Pods-AriesBifold-AriesBifoldTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
++ 9D840F3D7FAB4E2AA01DCE7C /* Upload source maps to Bugsnag */ = {
++ isa = PBXShellScriptBuildPhase;
++ buildActionMask = 2147483647;
++ files = (
++ );
++ inputPaths = (
++ );
++ name = "Upload source maps to Bugsnag";
++ outputPaths = (
++ );
++ runOnlyForDeploymentPostprocessing = 0;
++ shellPath = /bin/sh;
++ shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh";
++ };
+ B9A54C90D3BE82CD93B12CE2 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+@@ -638,6 +655,7 @@
+ };
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
+ isa = XCBuildConfiguration;
++ baseConfigurationReference = 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+@@ -703,6 +721,7 @@
+ };
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
+ isa = XCBuildConfiguration;
++ baseConfigurationReference = 6F99AD4C2A0572BB0073B4BF /* Config.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+diff --git a/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme b/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme
+index bc517c6..bfa2bdd 100644
+--- a/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme
++++ b/app/ios/AriesBifold.xcodeproj/xcshareddata/xcschemes/AriesBifold.xcscheme
+@@ -1,10 +1,28 @@
+
+
++ version = "1.7">
+
++
++
++
++
++
++
++
++
++
++
+
+
+ #import "AppDelegate.h"
+
+ #import
+@@ -10,7 +11,9 @@ @implementation AppDelegate
+ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+ {
+
+- RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
++ [Bugsnag start];
++
++RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
+ RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
+ moduleName:@"QCWallet"
+ initialProperties:nil];
+diff --git a/app/ios/AriesBifold/Info.plist b/app/ios/AriesBifold/Info.plist
+index f3b7f9e..d70e01d 100644
+--- a/app/ios/AriesBifold/Info.plist
++++ b/app/ios/AriesBifold/Info.plist
+@@ -81,5 +81,10 @@
+
+
+
++ bugsnag
++
++ apiKey
++ $(BUGSNAG_API_KEY)
++
+
+
+diff --git a/app/ios/Config.xcconfig b/app/ios/Config.xcconfig
+new file mode 100644
+index 0000000..907ca1e
+--- /dev/null
++++ b/app/ios/Config.xcconfig
+@@ -0,0 +1,10 @@
++//
++// Config.xcconfig
++// AriesBifold
++//
++// Created by jean-christophe.drouin@mcn.gouv.qc.ca on 2023-05-05.
++//
++
++// Configuration settings file format documentation can be found at:
++// https://help.apple.com/xcode/#/dev745c5c974
++#include? "tmp.xcconfig"
+diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock
+index e995bdf..7048a90 100644
+--- a/app/ios/Podfile.lock
++++ b/app/ios/Podfile.lock
+@@ -1,5 +1,7 @@
+ PODS:
+ - boost (1.76.0)
++ - BugsnagReactNative (7.20.2):
++ - React-Core
+ - CatCrypto (0.3.2)
+ - CocoaAsyncSocket (7.6.5)
+ - DoubleConversion (1.1.6)
+@@ -387,6 +389,7 @@ PODS:
+
+ DEPENDENCIES:
+ - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
++ - "BugsnagReactNative (from `../node_modules/@bugsnag/react-native`)"
+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
+ - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
+@@ -458,6 +461,8 @@ SPEC REPOS:
+ EXTERNAL SOURCES:
+ boost:
+ :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
++ BugsnagReactNative:
++ :path: "../node_modules/@bugsnag/react-native"
+ DoubleConversion:
+ :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ FBLazyVector:
+@@ -571,6 +576,7 @@ EXTERNAL SOURCES:
+
+ SPEC CHECKSUMS:
+ boost: a7c83b31436843459a1961bfd74b96033dc77234
++ BugsnagReactNative: bf6f4ebababa8536726b3014c7d3e4af8c53d488
+ CatCrypto: a477899b6be4954e75be4897e732da098cc0a5a8
+ CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
+ DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
+@@ -634,4 +640,4 @@ SPEC CHECKSUMS:
+
+ PODFILE CHECKSUM: ac6fb920404abfaf943a3b94ff54624a7f9c89e8
+
+-COCOAPODS: 1.11.3
++COCOAPODS: 1.12.1
+diff --git a/app/package-lock.json b/app/package-lock.json
+index 307f351..fba0f9d 100644
+--- a/app/package-lock.json
++++ b/app/package-lock.json
+@@ -13,6 +13,8 @@
+ "@aries-framework/core": "^0.3.3",
+ "@aries-framework/react-hooks": "^0.4.0",
+ "@aries-framework/react-native": "^0.3.2",
++ "@bugsnag/plugin-react-navigation": "^7.19.0",
++ "@bugsnag/react-native": "^7.20.2",
+ "@formatjs/intl-datetimeformat": "4.2.4",
+ "@formatjs/intl-displaynames": "5.2.4",
+ "@formatjs/intl-getcanonicallocales": "1.7.3",
+@@ -77,6 +79,7 @@
+ "devDependencies": {
+ "@babel/core": "7.15.5",
+ "@babel/runtime": "7.15.4",
++ "@bugsnag/source-maps": "^2.3.1",
+ "@commitlint/cli": "^11.0.0",
+ "@react-native-community/eslint-config": "^2.0.0",
+ "@storybook/addon-actions": "^5.3.21",
+@@ -392,7 +395,7 @@
+ },
+ "peerDependencies": {
+ "@aries-framework/core": "^0.3.3",
+- "@aries-framework/react-hooks": "^0.4.0",
++ "@aries-framework/react-hooks": "^0.4.2",
+ "@aries-framework/react-native": "^0.3.2",
+ "@formatjs/intl-datetimeformat": "^4.2.3",
+ "@formatjs/intl-displaynames": "^5.2.3",
+@@ -1246,6 +1249,8 @@
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
++ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+@@ -1285,6 +1290,8 @@
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
++ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+@@ -1421,6 +1428,8 @@
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
++ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+@@ -2149,6 +2158,8 @@
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.5",
++ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
++ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+@@ -2280,6 +2291,179 @@
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
++ "node_modules/@bugsnag/core": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.19.0.tgz",
++ "integrity": "sha512-2KGwdaLD9PhR7Wk7xPi3jGuGsKTatc/28U4TOZIDU3CgC2QhGjubwiXSECel5gwxhZ3jACKcMKSV2ovHhv1NrA==",
++ "dependencies": {
++ "@bugsnag/cuid": "^3.0.0",
++ "@bugsnag/safe-json-stringify": "^6.0.0",
++ "error-stack-parser": "^2.0.3",
++ "iserror": "0.0.2",
++ "stack-generator": "^2.0.3"
++ }
++ },
++ "node_modules/@bugsnag/cuid": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.2.tgz",
++ "integrity": "sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ=="
++ },
++ "node_modules/@bugsnag/delivery-react-native": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/delivery-react-native/-/delivery-react-native-7.19.0.tgz",
++ "integrity": "sha512-Zzl3VOwLDU4KHmf3VweyfNeJcQgL0NzbWG+OCxjCYen093Q4sxNTpWAVBCrYPRjQ2Sq3+D3+YbQg5UUrHL7kig==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-console-breadcrumbs": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-console-breadcrumbs/-/plugin-console-breadcrumbs-7.19.0.tgz",
++ "integrity": "sha512-ZHqPAK0WpbvWjj2wwSV8+C8+K9TOyQsfZnRJ7lIadbeUUJORmFRnG0vUHKBvwxMP7bqCj8fOe/S0kKF3dfMMKA==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-network-breadcrumbs": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-network-breadcrumbs/-/plugin-network-breadcrumbs-7.19.0.tgz",
++ "integrity": "sha512-Farc0XuUoxv10kJE65zfgZlqujR7TDu8QjwxA4YDxEE41kFM8TAw0CAK15WkQK1UTsNACiiAETZGyU279eB65Q==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react/-/plugin-react-7.19.0.tgz",
++ "integrity": "sha512-owC4QXYJWGllMoOPcH5P7sbDIDuFLMCbjGAU6FwH5mBMObSQo+1ViSKImlTJQUFXATM8ySISTBVt7w3C6FFHng==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ },
++ "peerDependenciesMeta": {
++ "@bugsnag/core": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-native-client-sync": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-client-sync/-/plugin-react-native-client-sync-7.19.0.tgz",
++ "integrity": "sha512-WyK5pZuIzqVrY0h0HimwuODCo9ty9AyDY3q1pmwjrz2y8JTT21nnwUtHybLsp5Rl2oJR4tG06QkWmazgHDkWdA==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-native-event-sync": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-event-sync/-/plugin-react-native-event-sync-7.19.0.tgz",
++ "integrity": "sha512-OD73WFkDJAq8AheN2Jap+d17M1mPbEBc1Aulz9FCLs//QwlM2IOij8oarB1iF/wgK6FnIgLFEBPTZpGHuZUsyQ==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-native-global-error-handler": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-global-error-handler/-/plugin-react-native-global-error-handler-7.19.0.tgz",
++ "integrity": "sha512-zf+KIHqGEAs2ekAzJCTS0rM1nKrmpIfznBhn72xZJwyfYrh0wbvjZjClDEwxDZ24uNVUUHrIymzdqxpHqVb0lg==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-native-hermes": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-hermes/-/plugin-react-native-hermes-7.19.0.tgz",
++ "integrity": "sha512-6SGTSR6NMS2t8j02ZQ6FlA+K/nKkZqvGA+8A7WS/0M8HAShzyoMpZH10kGrU2dcCaiEtmD2T6OGBSbpF+385Dg==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-native-session": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-session/-/plugin-react-native-session-7.19.0.tgz",
++ "integrity": "sha512-PVwsUstedp9wTqJU/IKdCaMFKP2YrqHXoeBtqRTQ7FFyr0K8wsiW7nZP2jM31VS388hZWSWBlHQPA/3LZ49tNQ==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-native-unhandled-rejection": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.19.0.tgz",
++ "integrity": "sha512-+XDk0OoeM6MZhBh7kEalbRwFuhCZST6Y1jOostfz0fhrmT4FdgQYi1FWcPNsUTcjqv7M48pOFZNx8yWI0lGaYg==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0"
++ }
++ },
++ "node_modules/@bugsnag/plugin-react-navigation": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-navigation/-/plugin-react-navigation-7.19.0.tgz",
++ "integrity": "sha512-cDuHwykruivUZFtaIt5/MhbfRyH20X0XFrW071V+5M+rXAnpJa2AwppXwEuP7DWeER38hd2O8VqaUU2Ijes2Lw==",
++ "peerDependencies": {
++ "@bugsnag/core": "^7.0.0",
++ "@react-navigation/native": "^5.0 || ^6.0"
++ },
++ "peerDependenciesMeta": {
++ "@bugsnag/core": {
++ "optional": true
++ }
++ }
++ },
++ "node_modules/@bugsnag/react-native": {
++ "version": "7.20.2",
++ "resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.20.2.tgz",
++ "integrity": "sha512-pvzFZA/7PzChLgrSsynZFl/lBOcY+X76sLbniJz7S3Lcrdc5+NY5fP+AVoZH9mqNaob6OSiALubUVLpPeirivg==",
++ "dependencies": {
++ "@bugsnag/core": "^7.19.0",
++ "@bugsnag/delivery-react-native": "^7.19.0",
++ "@bugsnag/plugin-console-breadcrumbs": "^7.19.0",
++ "@bugsnag/plugin-network-breadcrumbs": "^7.19.0",
++ "@bugsnag/plugin-react": "^7.19.0",
++ "@bugsnag/plugin-react-native-client-sync": "^7.19.0",
++ "@bugsnag/plugin-react-native-event-sync": "^7.19.0",
++ "@bugsnag/plugin-react-native-global-error-handler": "^7.19.0",
++ "@bugsnag/plugin-react-native-hermes": "^7.19.0",
++ "@bugsnag/plugin-react-native-session": "^7.19.0",
++ "@bugsnag/plugin-react-native-unhandled-rejection": "^7.19.0",
++ "iserror": "^0.0.2"
++ }
++ },
++ "node_modules/@bugsnag/safe-json-stringify": {
++ "version": "6.0.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz",
++ "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA=="
++ },
++ "node_modules/@bugsnag/source-maps": {
++ "version": "2.3.1",
++ "resolved": "https://registry.npmjs.org/@bugsnag/source-maps/-/source-maps-2.3.1.tgz",
++ "integrity": "sha512-9xJTcf5+W7+y1fQBftSOste/3ORi+d5EeCCMdvaHSX69MKQP0lrDiSYpLwX/ErcXrTbvu7nimGGKJP2vBdF7zQ==",
++ "dev": true,
++ "dependencies": {
++ "command-line-args": "^5.1.1",
++ "command-line-usage": "^6.1.0",
++ "concat-stream": "^2.0.0",
++ "consola": "^2.15.0",
++ "form-data": "^3.0.0",
++ "glob": "^7.1.6",
++ "read-pkg-up": "^7.0.1"
++ },
++ "bin": {
++ "bugsnag-source-maps": "bin/cli"
++ }
++ },
++ "node_modules/@bugsnag/source-maps/node_modules/concat-stream": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
++ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
++ "dev": true,
++ "engines": [
++ "node >= 6.0"
++ ],
++ "dependencies": {
++ "buffer-from": "^1.0.0",
++ "inherits": "^2.0.3",
++ "readable-stream": "^3.0.2",
++ "typedarray": "^0.0.6"
++ }
++ },
+ "node_modules/@cnakazawa/watch": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
+@@ -9138,6 +9322,15 @@
+ "node": ">=0.10.0"
+ }
+ },
++ "node_modules/array-back": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
++ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
++ "dev": true,
++ "engines": {
++ "node": ">=6"
++ }
++ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+@@ -9195,6 +9388,8 @@
+ },
+ "node_modules/array-union": {
+ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
++ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+@@ -9206,6 +9401,8 @@
+ },
+ "node_modules/array-uniq": {
+ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
++ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+@@ -11810,6 +12007,54 @@
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==",
+ "license": "MIT"
+ },
++ "node_modules/command-line-args": {
++ "version": "5.2.1",
++ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
++ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
++ "dev": true,
++ "dependencies": {
++ "array-back": "^3.1.0",
++ "find-replace": "^3.0.0",
++ "lodash.camelcase": "^4.3.0",
++ "typical": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=4.0.0"
++ }
++ },
++ "node_modules/command-line-usage": {
++ "version": "6.1.3",
++ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz",
++ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==",
++ "dev": true,
++ "dependencies": {
++ "array-back": "^4.0.2",
++ "chalk": "^2.4.2",
++ "table-layout": "^1.0.2",
++ "typical": "^5.2.0"
++ },
++ "engines": {
++ "node": ">=8.0.0"
++ }
++ },
++ "node_modules/command-line-usage/node_modules/array-back": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
++ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
++ "dev": true,
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/command-line-usage/node_modules/typical": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
++ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
++ "dev": true,
++ "engines": {
++ "node": ">=8"
++ }
++ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+@@ -11979,6 +12224,12 @@
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
++ "node_modules/consola": {
++ "version": "2.15.3",
++ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
++ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
++ "dev": true
++ },
+ "node_modules/console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+@@ -12832,6 +13083,15 @@
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
++ "node_modules/deep-extend": {
++ "version": "0.6.0",
++ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
++ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
++ "dev": true,
++ "engines": {
++ "node": ">=4.0.0"
++ }
++ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+@@ -15562,6 +15822,18 @@
+ "node": ">=6"
+ }
+ },
++ "node_modules/find-replace": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
++ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
++ "dev": true,
++ "dependencies": {
++ "array-back": "^3.0.1"
++ },
++ "engines": {
++ "node": ">=4.0.0"
++ }
++ },
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+@@ -17232,6 +17504,8 @@
+ },
+ "node_modules/ignore": {
+ "version": "3.3.10",
++ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
++ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true,
+ "license": "MIT"
+ },
+@@ -17633,6 +17907,8 @@
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
++ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+@@ -17699,6 +17975,8 @@
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
++ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+@@ -18256,6 +18534,11 @@
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
++ "node_modules/iserror": {
++ "version": "0.0.2",
++ "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz",
++ "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw=="
++ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+@@ -23120,6 +23403,12 @@
+ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
+ "license": "MIT"
+ },
++ "node_modules/lodash.camelcase": {
++ "version": "4.3.0",
++ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
++ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
++ "dev": true
++ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+@@ -25108,6 +25397,8 @@
+ },
+ "node_modules/object-is": {
+ "version": "1.1.5",
++ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
++ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.2",
+@@ -25670,6 +25961,8 @@
+ },
+ "node_modules/path-type": {
+ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
++ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+@@ -25681,6 +25974,8 @@
+ },
+ "node_modules/path-type/node_modules/pify": {
+ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
++ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+@@ -26174,6 +26469,8 @@
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
++ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
++ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+@@ -28577,6 +28874,8 @@
+ },
+ "node_modules/rechoir": {
+ "version": "0.6.2",
++ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
++ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "^1.1.6"
+@@ -28622,6 +28921,15 @@
+ "node": ">=8"
+ }
+ },
++ "node_modules/reduce-flatten": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
++ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
++ "dev": true,
++ "engines": {
++ "node": ">=6"
++ }
++ },
+ "node_modules/reflect-metadata": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+@@ -29687,6 +29995,8 @@
+ },
+ "node_modules/shelljs": {
+ "version": "0.8.5",
++ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
++ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+@@ -30154,6 +30464,14 @@
+ "dev": true,
+ "license": "MIT"
+ },
++ "node_modules/stack-generator": {
++ "version": "2.0.10",
++ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
++ "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
++ "dependencies": {
++ "stackframe": "^1.3.4"
++ }
++ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+@@ -30176,8 +30494,9 @@
+ }
+ },
+ "node_modules/stackframe": {
+- "version": "1.2.1",
+- "license": "MIT"
++ "version": "1.3.4",
++ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
++ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
+ },
+ "node_modules/stacktrace-parser": {
+ "version": "0.1.10",
+@@ -30914,6 +31233,39 @@
+ "node": ">=10.0.0"
+ }
+ },
++ "node_modules/table-layout": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz",
++ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==",
++ "dev": true,
++ "dependencies": {
++ "array-back": "^4.0.1",
++ "deep-extend": "~0.6.0",
++ "typical": "^5.2.0",
++ "wordwrapjs": "^4.0.0"
++ },
++ "engines": {
++ "node": ">=8.0.0"
++ }
++ },
++ "node_modules/table-layout/node_modules/array-back": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
++ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
++ "dev": true,
++ "engines": {
++ "node": ">=8"
++ }
++ },
++ "node_modules/table-layout/node_modules/typical": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
++ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
++ "dev": true,
++ "engines": {
++ "node": ">=8"
++ }
++ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.11.0",
+ "dev": true,
+@@ -31819,6 +32171,15 @@
+ "node": ">=4.2.0"
+ }
+ },
++ "node_modules/typical": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
++ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
++ "dev": true,
++ "engines": {
++ "node": ">=8"
++ }
++ },
+ "node_modules/ua-parser-js": {
+ "version": "0.7.31",
+ "funding": [
+@@ -33107,6 +33468,28 @@
+ "node": ">=0.10.0"
+ }
+ },
++ "node_modules/wordwrapjs": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
++ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
++ "dev": true,
++ "dependencies": {
++ "reduce-flatten": "^2.0.0",
++ "typical": "^5.2.0"
++ },
++ "engines": {
++ "node": ">=8.0.0"
++ }
++ },
++ "node_modules/wordwrapjs/node_modules/typical": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
++ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
++ "dev": true,
++ "engines": {
++ "node": ">=8"
++ }
++ },
+ "node_modules/worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+@@ -33917,6 +34300,8 @@
+ },
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
++ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+@@ -33938,6 +34323,8 @@
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
++ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+@@ -34025,6 +34412,8 @@
+ },
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
++ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
++ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+@@ -34432,6 +34821,8 @@
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.5",
++ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
++ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+@@ -34530,6 +34921,131 @@
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true
+ },
++ "@bugsnag/core": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.19.0.tgz",
++ "integrity": "sha512-2KGwdaLD9PhR7Wk7xPi3jGuGsKTatc/28U4TOZIDU3CgC2QhGjubwiXSECel5gwxhZ3jACKcMKSV2ovHhv1NrA==",
++ "requires": {
++ "@bugsnag/cuid": "^3.0.0",
++ "@bugsnag/safe-json-stringify": "^6.0.0",
++ "error-stack-parser": "^2.0.3",
++ "iserror": "0.0.2",
++ "stack-generator": "^2.0.3"
++ }
++ },
++ "@bugsnag/cuid": {
++ "version": "3.0.2",
++ "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.0.2.tgz",
++ "integrity": "sha512-cIwzC93r3PQ/INeuwtZwkZIG2K8WWN0rRLZQhu+mr48Ay+i6sEki4GYfTsflse7hZ1BeDWrNb/Q9vgY3B31xHQ=="
++ },
++ "@bugsnag/delivery-react-native": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/delivery-react-native/-/delivery-react-native-7.19.0.tgz",
++ "integrity": "sha512-Zzl3VOwLDU4KHmf3VweyfNeJcQgL0NzbWG+OCxjCYen093Q4sxNTpWAVBCrYPRjQ2Sq3+D3+YbQg5UUrHL7kig=="
++ },
++ "@bugsnag/plugin-console-breadcrumbs": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-console-breadcrumbs/-/plugin-console-breadcrumbs-7.19.0.tgz",
++ "integrity": "sha512-ZHqPAK0WpbvWjj2wwSV8+C8+K9TOyQsfZnRJ7lIadbeUUJORmFRnG0vUHKBvwxMP7bqCj8fOe/S0kKF3dfMMKA=="
++ },
++ "@bugsnag/plugin-network-breadcrumbs": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-network-breadcrumbs/-/plugin-network-breadcrumbs-7.19.0.tgz",
++ "integrity": "sha512-Farc0XuUoxv10kJE65zfgZlqujR7TDu8QjwxA4YDxEE41kFM8TAw0CAK15WkQK1UTsNACiiAETZGyU279eB65Q=="
++ },
++ "@bugsnag/plugin-react": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react/-/plugin-react-7.19.0.tgz",
++ "integrity": "sha512-owC4QXYJWGllMoOPcH5P7sbDIDuFLMCbjGAU6FwH5mBMObSQo+1ViSKImlTJQUFXATM8ySISTBVt7w3C6FFHng=="
++ },
++ "@bugsnag/plugin-react-native-client-sync": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-client-sync/-/plugin-react-native-client-sync-7.19.0.tgz",
++ "integrity": "sha512-WyK5pZuIzqVrY0h0HimwuODCo9ty9AyDY3q1pmwjrz2y8JTT21nnwUtHybLsp5Rl2oJR4tG06QkWmazgHDkWdA=="
++ },
++ "@bugsnag/plugin-react-native-event-sync": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-event-sync/-/plugin-react-native-event-sync-7.19.0.tgz",
++ "integrity": "sha512-OD73WFkDJAq8AheN2Jap+d17M1mPbEBc1Aulz9FCLs//QwlM2IOij8oarB1iF/wgK6FnIgLFEBPTZpGHuZUsyQ=="
++ },
++ "@bugsnag/plugin-react-native-global-error-handler": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-global-error-handler/-/plugin-react-native-global-error-handler-7.19.0.tgz",
++ "integrity": "sha512-zf+KIHqGEAs2ekAzJCTS0rM1nKrmpIfznBhn72xZJwyfYrh0wbvjZjClDEwxDZ24uNVUUHrIymzdqxpHqVb0lg=="
++ },
++ "@bugsnag/plugin-react-native-hermes": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-hermes/-/plugin-react-native-hermes-7.19.0.tgz",
++ "integrity": "sha512-6SGTSR6NMS2t8j02ZQ6FlA+K/nKkZqvGA+8A7WS/0M8HAShzyoMpZH10kGrU2dcCaiEtmD2T6OGBSbpF+385Dg=="
++ },
++ "@bugsnag/plugin-react-native-session": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-session/-/plugin-react-native-session-7.19.0.tgz",
++ "integrity": "sha512-PVwsUstedp9wTqJU/IKdCaMFKP2YrqHXoeBtqRTQ7FFyr0K8wsiW7nZP2jM31VS388hZWSWBlHQPA/3LZ49tNQ=="
++ },
++ "@bugsnag/plugin-react-native-unhandled-rejection": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-native-unhandled-rejection/-/plugin-react-native-unhandled-rejection-7.19.0.tgz",
++ "integrity": "sha512-+XDk0OoeM6MZhBh7kEalbRwFuhCZST6Y1jOostfz0fhrmT4FdgQYi1FWcPNsUTcjqv7M48pOFZNx8yWI0lGaYg=="
++ },
++ "@bugsnag/plugin-react-navigation": {
++ "version": "7.19.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/plugin-react-navigation/-/plugin-react-navigation-7.19.0.tgz",
++ "integrity": "sha512-cDuHwykruivUZFtaIt5/MhbfRyH20X0XFrW071V+5M+rXAnpJa2AwppXwEuP7DWeER38hd2O8VqaUU2Ijes2Lw=="
++ },
++ "@bugsnag/react-native": {
++ "version": "7.20.2",
++ "resolved": "https://registry.npmjs.org/@bugsnag/react-native/-/react-native-7.20.2.tgz",
++ "integrity": "sha512-pvzFZA/7PzChLgrSsynZFl/lBOcY+X76sLbniJz7S3Lcrdc5+NY5fP+AVoZH9mqNaob6OSiALubUVLpPeirivg==",
++ "requires": {
++ "@bugsnag/core": "^7.19.0",
++ "@bugsnag/delivery-react-native": "^7.19.0",
++ "@bugsnag/plugin-console-breadcrumbs": "^7.19.0",
++ "@bugsnag/plugin-network-breadcrumbs": "^7.19.0",
++ "@bugsnag/plugin-react": "^7.19.0",
++ "@bugsnag/plugin-react-native-client-sync": "^7.19.0",
++ "@bugsnag/plugin-react-native-event-sync": "^7.19.0",
++ "@bugsnag/plugin-react-native-global-error-handler": "^7.19.0",
++ "@bugsnag/plugin-react-native-hermes": "^7.19.0",
++ "@bugsnag/plugin-react-native-session": "^7.19.0",
++ "@bugsnag/plugin-react-native-unhandled-rejection": "^7.19.0",
++ "iserror": "^0.0.2"
++ }
++ },
++ "@bugsnag/safe-json-stringify": {
++ "version": "6.0.0",
++ "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz",
++ "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA=="
++ },
++ "@bugsnag/source-maps": {
++ "version": "2.3.1",
++ "resolved": "https://registry.npmjs.org/@bugsnag/source-maps/-/source-maps-2.3.1.tgz",
++ "integrity": "sha512-9xJTcf5+W7+y1fQBftSOste/3ORi+d5EeCCMdvaHSX69MKQP0lrDiSYpLwX/ErcXrTbvu7nimGGKJP2vBdF7zQ==",
++ "dev": true,
++ "requires": {
++ "command-line-args": "^5.1.1",
++ "command-line-usage": "^6.1.0",
++ "concat-stream": "^2.0.0",
++ "consola": "^2.15.0",
++ "form-data": "^3.0.0",
++ "glob": "^7.1.6",
++ "read-pkg-up": "^7.0.1"
++ },
++ "dependencies": {
++ "concat-stream": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
++ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
++ "dev": true,
++ "requires": {
++ "buffer-from": "^1.0.0",
++ "inherits": "^2.0.3",
++ "readable-stream": "^3.0.2",
++ "typedarray": "^0.0.6"
++ }
++ }
++ }
++ },
+ "@cnakazawa/watch": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
+@@ -39836,6 +40352,12 @@
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q=="
+ },
++ "array-back": {
++ "version": "3.1.0",
++ "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
++ "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
++ "dev": true
++ },
+ "array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+@@ -39880,6 +40402,8 @@
+ },
+ "array-union": {
+ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
++ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+@@ -39887,6 +40411,8 @@
+ },
+ "array-uniq": {
+ "version": "1.0.3",
++ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
++ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+ "dev": true
+ },
+ "array-unique": {
+@@ -41910,6 +42436,44 @@
+ "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz",
+ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
+ },
++ "command-line-args": {
++ "version": "5.2.1",
++ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
++ "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
++ "dev": true,
++ "requires": {
++ "array-back": "^3.1.0",
++ "find-replace": "^3.0.0",
++ "lodash.camelcase": "^4.3.0",
++ "typical": "^4.0.0"
++ }
++ },
++ "command-line-usage": {
++ "version": "6.1.3",
++ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz",
++ "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==",
++ "dev": true,
++ "requires": {
++ "array-back": "^4.0.2",
++ "chalk": "^2.4.2",
++ "table-layout": "^1.0.2",
++ "typical": "^5.2.0"
++ },
++ "dependencies": {
++ "array-back": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
++ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
++ "dev": true
++ },
++ "typical": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
++ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
++ "dev": true
++ }
++ }
++ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+@@ -42056,6 +42620,12 @@
+ }
+ }
+ },
++ "consola": {
++ "version": "2.15.3",
++ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
++ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
++ "dev": true
++ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+@@ -42712,6 +43282,12 @@
+ }
+ }
+ },
++ "deep-extend": {
++ "version": "0.6.0",
++ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
++ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
++ "dev": true
++ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+@@ -44742,6 +45318,15 @@
+ "pkg-dir": "^3.0.0"
+ }
+ },
++ "find-replace": {
++ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
++ "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
++ "dev": true,
++ "requires": {
++ "array-back": "^3.0.1"
++ }
++ },
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+@@ -46002,6 +46587,8 @@
+ },
+ "ignore": {
+ "version": "3.3.10",
++ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
++ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "image-size": {
+@@ -46294,6 +46881,8 @@
+ },
+ "interpret": {
+ "version": "1.4.0",
++ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
++ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "invariant": {
+@@ -46339,6 +46928,8 @@
+ },
+ "is-arguments": {
+ "version": "1.1.1",
++ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
++ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+@@ -46695,6 +47286,11 @@
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
++ "iserror": {
++ "version": "0.0.2",
++ "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz",
++ "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw=="
++ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+@@ -50212,6 +50808,12 @@
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA=="
+ },
++ "lodash.camelcase": {
++ "version": "4.3.0",
++ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
++ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
++ "dev": true
++ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+@@ -51781,6 +52383,8 @@
+ },
+ "object-is": {
+ "version": "1.1.5",
++ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
++ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+@@ -52184,6 +52788,8 @@
+ },
+ "path-type": {
+ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
++ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+@@ -52191,6 +52797,8 @@
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
++ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
++ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
+ }
+ }
+@@ -52542,6 +53150,8 @@
+ },
+ "process": {
+ "version": "0.11.10",
++ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
++ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true
+ },
+ "process-nextick-args": {
+@@ -54335,6 +54945,8 @@
+ },
+ "rechoir": {
+ "version": "0.6.2",
++ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
++ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+@@ -54370,6 +54982,12 @@
+ "strip-indent": "^3.0.0"
+ }
+ },
++ "reduce-flatten": {
++ "version": "2.0.0",
++ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
++ "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==",
++ "dev": true
++ },
+ "reflect-metadata": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
+@@ -55167,6 +55785,8 @@
+ },
+ "shelljs": {
+ "version": "0.8.5",
++ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
++ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+@@ -55539,6 +56159,14 @@
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
++ "stack-generator": {
++ "version": "2.0.10",
++ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz",
++ "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==",
++ "requires": {
++ "stackframe": "^1.3.4"
++ }
++ },
+ "stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+@@ -55557,7 +56185,9 @@
+ }
+ },
+ "stackframe": {
+- "version": "1.2.1"
++ "version": "1.3.4",
++ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
++ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="
+ },
+ "stacktrace-parser": {
+ "version": "0.1.10",
+@@ -56183,6 +56813,32 @@
+ }
+ }
+ },
++ "table-layout": {
++ "version": "1.0.2",
++ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz",
++ "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==",
++ "dev": true,
++ "requires": {
++ "array-back": "^4.0.1",
++ "deep-extend": "~0.6.0",
++ "typical": "^5.2.0",
++ "wordwrapjs": "^4.0.0"
++ },
++ "dependencies": {
++ "array-back": {
++ "version": "4.0.2",
++ "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
++ "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
++ "dev": true
++ },
++ "typical": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
++ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
++ "dev": true
++ }
++ }
++ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+@@ -56788,6 +57444,12 @@
+ "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==",
+ "dev": true
+ },
++ "typical": {
++ "version": "4.0.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
++ "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
++ "dev": true
++ },
+ "ua-parser-js": {
+ "version": "0.7.31"
+ },
+@@ -57779,6 +58441,24 @@
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
++ "wordwrapjs": {
++ "version": "4.0.1",
++ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz",
++ "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==",
++ "dev": true,
++ "requires": {
++ "reduce-flatten": "^2.0.0",
++ "typical": "^5.2.0"
++ },
++ "dependencies": {
++ "typical": {
++ "version": "5.2.0",
++ "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
++ "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==",
++ "dev": true
++ }
++ }
++ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+@@ -57992,4 +58672,4 @@
+ "devOptional": true
+ }
+ }
+-}
+\ No newline at end of file
++}
+diff --git a/app/package.json b/app/package.json
+index d2ee40b..4b9eadd 100644
+--- a/app/package.json
++++ b/app/package.json
+@@ -43,6 +43,8 @@
+ "@aries-framework/core": "^0.3.3",
+ "@aries-framework/react-hooks": "^0.4.0",
+ "@aries-framework/react-native": "^0.3.2",
++ "@bugsnag/plugin-react-navigation": "^7.19.0",
++ "@bugsnag/react-native": "^7.20.2",
+ "@formatjs/intl-datetimeformat": "4.2.4",
+ "@formatjs/intl-displaynames": "5.2.4",
+ "@formatjs/intl-getcanonicallocales": "1.7.3",
+@@ -107,6 +109,7 @@
+ "devDependencies": {
+ "@babel/core": "7.15.5",
+ "@babel/runtime": "7.15.4",
++ "@bugsnag/source-maps": "^2.3.1",
+ "@commitlint/cli": "^11.0.0",
+ "@react-native-community/eslint-config": "^2.0.0",
+ "@storybook/addon-actions": "^5.3.21",
+diff --git a/app/src/screens/Splash.tsx b/app/src/screens/Splash.tsx
+index e59d3f7..8dc3273 100644
+--- a/app/src/screens/Splash.tsx
++++ b/app/src/screens/Splash.tsx
+@@ -9,6 +9,7 @@ import {
+ } from '@aries-framework/core'
+ import { useAgent } from '@aries-framework/react-hooks'
+ import { agentDependencies } from '@aries-framework/react-native'
++import Bugsnag from '@bugsnag/react-native'
+ import AsyncStorage from '@react-native-async-storage/async-storage'
+ import { useNavigation } from '@react-navigation/core'
+ import { CommonActions } from '@react-navigation/native'
+@@ -149,7 +150,8 @@ const Splash: React.FC = () => {
+ if (data) {
+ return JSON.parse(data)
+ }
+- } catch {
++ } catch (e: unknown) {
++ Bugsnag.notify(e as Error)
+ return
+ }
+ }
+@@ -272,6 +274,7 @@ const Splash: React.FC = () => {
+ })
+ )
+ } catch (e: unknown) {
++ Bugsnag.notify(e as Error)
+ setInitErrorType(InitErrorTypes.Onboarding)
+ setInitError(e as Error)
+ }
+@@ -335,6 +338,7 @@ const Splash: React.FC = () => {
+ })
+ )
+ } catch (e: unknown) {
++ Bugsnag.notify(e as Error)
+ setInitErrorType(InitErrorTypes.Agent)
+ setInitError(e as Error)
+ }