diff --git a/.gitignore b/.gitignore
index 67360f2..cbecfc5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,6 +58,11 @@ buck-out/
# CocoaPods
/ios/Pods/
+#firebase
+
+
+
+
#amplify
build/
dist/
diff --git a/App.js b/App.js
index 51b1da9..89f2711 100644
--- a/App.js
+++ b/App.js
@@ -5,8 +5,7 @@
* @format
* @flow strict-local
*/
-
-import React, { useState, useEffect } from 'react';
+import 'react-native-gesture-handler';
import { NavigationContainer, DarkTheme} from '@react-navigation/native';
//import { createStackNavigator } from '@react-navigation/stack';
import { createDrawerNavigator } from '@react-navigation/drawer';
@@ -14,11 +13,23 @@ import MainTabScreen from './screens/MainTabScreen';
import { DrawerContent } from './screens/DrawerContent';
import ProfileScreen from './screens/profile';
import onboarding from './screens/onboarding';
-import login from './screens/loginScreen';
-import LoginScreen from './screens/loginScreen';
+import login from './screens/loginScreens/loginScreen';
+import LoginScreen from './screens/loginScreens/loginScreen';
import AsyncStorage from '@react-native-async-storage/async-storage';
import HomeScreen from './screens/HomeScreen';
import Onboarding from 'react-native-onboarding-swiper';
+import linearRegression from './screens/linearRegression';
+import BoxPlot from './screens/BoxPlot';
+import logisticRegression from './screens/logisticRegression';
+import SER from './screens/sErrorBars';
+import hcp from './screens/hcp';
+import cdp from './screens/cdp';
+import spc from './screens/spc';
+import pointCloud from './screens/pointCoud';
+import React, { useState, useEffect } from 'react';
+import auth from '@react-native-firebase/auth';
+import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native';
+import styles from './screens/loginScreens/styles';
@@ -36,16 +47,48 @@ const Drawer = createDrawerNavigator()
const App = () => {
+ const [initializing, setInitializing] = useState(true);
+ const [user, setUser] = useState();
+
+ // Handle user state changes
+ function onAuthStateChanged(user) {
+ setUser(user);
+ if (initializing) setInitializing(false);
+ }
+
+ useEffect(() => {
+ const subscriber = auth().onAuthStateChanged(onAuthStateChanged);
+ return subscriber; // logout on unmount
+ }, []);
+
+ if (initializing) return null;
+
+ if (!user) {
+
+ return (
+
+ );
+ }
-
return(
}>
+ {/* */}
+
+
+
+
+
+
+
+
+
+
diff --git a/README.md b/README.md
index b355f6f..c55da1a 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,224 @@
-#please change branch to latest version
-
-
-To learn more about the app visit: https://2020.igem.org/Team:Lambert_GA/Software#agroQ
+[![Firebase][Firebase]][firebase-url]
+
+
+
+
+
+
+
+
+
+
+
Agro-Q
+
+
+ Revolutionizing the Future of Hydroponics
+
+
+
+
+
+
+
+
+
+
+## Table of Contents
+
+
+* [Overview](#Overview)
+ * [Screens](#Screens)
+ * [DataFlow](#DataFLow)
+* [Setup and Run](#SetupandRun)
+* [Contanct](#Contact)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+The Agro-Q mobile app has a wide variety of features that allow users to maintain their hydroponics system. Users can view sensor data of pH, water temperature, CO2, atmospheric temperature, and light intensity, via the app, and analyze the plant growth. The Agro-Q app allows collaboration among the user by sharing their specific hydroponics setups through the google maps in the app.
+
+
+
+### Screens
+
+
+#screenshots
+
+
+
+Screens Descriptions:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### DataFlow
+
+Once the data is collected from the sensors, the data is sent to the Raspberry Pi using a serial connection. Using the Raspberry Pi’s internet connection, the data is then sent to the Firebase Cloud Server to be stored in a non-sql database. The data is then read from the database and displayed in the Agro-Q app for users to monitor their hydroponics system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+Agro-Q uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+Select the “React Native CLI Quickstart” option and your desired platforms and complete the installation with the instructions provided.
+
+
+Download the project files to your computer
+
+### Mac - Android or iOS
+1. Open Terminal and navigate to the project folder
+1. To run the app on the iOS Simulator, Xcode must be installed with a valid signing profile. Enter the following command in the terminal:
+```
+npx react-native run-ios
+```
+
+Run the app on the iOS Simulator by opening the .xcworkspace file and clicking the play button at the top of the screen. To run on a physical iOS device, plug the device into the Mac and choose the device from the dropdown menu at the top of the screen.
+
+
+To run on an Android simulator, simply use the following command or open Android Studio and run the app manually.
+```
+npx react-native run-android
+```
+
+### Windows - Android
+1. To run the app on the Android simulator, open a command prompt window and navigate to the project folder
+2. Run the following command:
+```
+npx react-native run-android
+```
+To run on a physical Android device, plug in the device into the computer and use Android Studio to manually run the app onto the device.
+
+
+Note to user:
+- app currently optimized for android
+- Data uploads to the app between 5sec -1min
+- Sometimes data may not update properly so restart the app and run again
+
+Login info for test account: (create user will be created in future version)
+- Username : lamberttest@gamil.com
+- Password : lambert123
+
+
+## Testing
+Download the code from this repository to run a node js server to update values on the app:
+https://github.com/VarunSendilraj/testingagro-q/tree/main
+
+### Run
+1. Open Terminal and navigate to the project folder
+1. To run the server, enter the following command in the terminal:
+```
+npm install
+```
+To start the server run the following command in the terminal:
+```
+npm start
+```
+
+To update the data values type the values in the following link
+```
+http://localhost:3000/sendData/temp,Ph,light,co2,waterTemp,humidity
+
+```
+
+
+
+
+## Contact
+varunsendil2003@gmail.com
+
+
+
+
+
+[firebase]: https://camo.githubusercontent.com/2d891f78cbe8e96dbff64e86fa29ab801c2ebe90/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75642d46697265626173652d6635626132333f6c6f676f3d4669726562617365
+[firebase-url]:https://rnfirebase.io/
+[app1]: https://2020.igem.org/wiki/images/5/58/T--Lambert_GA--Agro1.png
+[app2]: https://2020.igem.org/wiki/images/a/a2/T--Lambert_GA--home.png
+[app3]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro3.png
+[app4]: https://2020.igem.org/wiki/images/3/3e/T--Lambert_GA--Agro5.png
+[app5]: https://2020.igem.org/wiki/images/1/15/T--Lambert_GA--Agro6.png
+[app6]:https://2020.igem.org/wiki/images/2/22/T--Lambert_GA--ScanAPp.png
+[app7]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro7.png
+[app8]:https://2020.igem.org/wiki/images/7/7e/T--Lambert_GA--Agro9.png
+
+To learn more about the app visit: https://2020.igem.org/Team:Lambert_GA/Software#agroQ
+
diff --git a/README1.md b/README1.md
new file mode 100644
index 0000000..bd6cf87
--- /dev/null
+++ b/README1.md
@@ -0,0 +1,228 @@
+#please change branch to latest version
+
+
+<<<<<<< latestver
+[![Firebase][Firebase]][firebase-url]
+
+
+
+
+
+
+
+
+
+
+
Agro-Q
+
+
+ Revolutionizing the Future of Hydroponics
+
+
+
+
+
+
+
+
+
+
+## Table of Contents
+
+
+* [Overview](#Overview)
+ * [Screens](#Screens)
+ * [DataFlow](#DataFLow)
+* [Setup and Run](#SetupandRun)
+* [Contanct](#Contact)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Overview
+
+The Agro-Q mobile app has a wide variety of features that allow users to maintain their hydroponics system. Users can view sensor data of pH, water temperature, CO2, atmospheric temperature, and light intensity, via the app, and analyze the plant growth. The Agro-Q app allows collaboration among the user by sharing their specific hydroponics setups through the google maps in the app.
+
+
+
+### Screens
+
+
+#screenshots
+
+
+
+Screens Descriptions:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### DataFlow
+
+Once the data is collected from the sensors, the data is sent to the Raspberry Pi using a serial connection. Using the Raspberry Pi’s internet connection, the data is then sent to the Firebase Cloud Server to be stored in a non-sql database. The data is then read from the database and displayed in the Agro-Q app for users to monitor their hydroponics system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Installation
+
+Agro-Q uses React Native . First, install the React Native CLI using the instructions at https://reactnative.dev/docs/environment-setup.
+Select the “React Native CLI Quickstart” option and your desired platforms and complete the installation with the instructions provided.
+
+
+Download the project files to your computer
+
+### Mac - Android or iOS
+1. Open Terminal and navigate to the project folder
+1. To run the app on the iOS Simulator, Xcode must be installed with a valid signing profile. Enter the following command in the terminal:
+```
+npx react-native run-ios
+```
+
+Run the app on the iOS Simulator by opening the .xcworkspace file and clicking the play button at the top of the screen. To run on a physical iOS device, plug the device into the Mac and choose the device from the dropdown menu at the top of the screen.
+
+
+To run on an Android simulator, simply use the following command or open Android Studio and run the app manually.
+```
+npx react-native run-android
+```
+
+### Windows - Android
+1. To run the app on the Android simulator, open a command prompt window and navigate to the project folder
+2. Run the following command:
+```
+npx react-native run-android
+```
+To run on a physical Android device, plug in the device into the computer and use Android Studio to manually run the app onto the device.
+
+
+Note to user:
+- app currently optimized for android
+- Data uploads to the app between 5sec -1min
+- Sometimes data may not update properly so restart the app and run again
+
+Login info for test account: (create user will be created in future version)
+- Username : lamberttest@gamil.com
+- Password : lambert123
+
+
+## Testing
+Download the code from this repository to run a node js server to update values on the app:
+https://github.com/VarunSendilraj/testingagro-q/tree/main
+
+### Run
+1. Open Terminal and navigate to the project folder
+1. To run the server, enter the following command in the terminal:
+```
+npm install
+```
+To start the server run the following command in the terminal:
+```
+npm start
+```
+
+To update the data values type the values in the following link
+```
+http://localhost:3000/sendData/temp,Ph,light,co2,waterTemp,humidity
+
+```
+
+
+
+
+## Contact
+varunsendil2003@gmail.com
+
+
+
+
+
+[firebase]: https://camo.githubusercontent.com/2d891f78cbe8e96dbff64e86fa29ab801c2ebe90/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c6f75642d46697265626173652d6635626132333f6c6f676f3d4669726562617365
+[firebase-url]:https://rnfirebase.io/
+[app1]: https://2020.igem.org/wiki/images/5/58/T--Lambert_GA--Agro1.png
+[app2]: https://2020.igem.org/wiki/images/a/a2/T--Lambert_GA--home.png
+[app3]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro3.png
+[app4]: https://2020.igem.org/wiki/images/3/3e/T--Lambert_GA--Agro5.png
+[app5]: https://2020.igem.org/wiki/images/1/15/T--Lambert_GA--Agro6.png
+[app6]:https://2020.igem.org/wiki/images/2/22/T--Lambert_GA--ScanAPp.png
+[app7]: https://2020.igem.org/wiki/images/e/e0/T--Lambert_GA--Agro7.png
+[app8]:https://2020.igem.org/wiki/images/7/7e/T--Lambert_GA--Agro9.png
+=======
+To learn more about the app visit: https://2020.igem.org/Team:Lambert_GA/Software#agroQ
+>>>>>>> master
diff --git a/android/app/build.gradle b/android/app/build.gradle
index b290a51..72a6221 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -130,6 +130,7 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
+
defaultConfig {
applicationId "com.agroq"
minSdkVersion rootProject.ext.minSdkVersion
@@ -137,6 +138,20 @@ android {
versionCode 1
versionName "1.0"
multiDexEnabled true
+ missingDimensionStrategy 'react-native-camera', 'general'
+ }
+ signingConfigs
+ {
+ release
+ {
+ if (project.hasProperty('MYAPP_RELEASE_STORE_FILE'))
+ {
+ storeFile file(MYAPP_RELEASE_STORE_FILE)
+ storePassword MYAPP_RELEASE_STORE_PASSWORD
+ keyAlias MYAPP_RELEASE_KEY_ALIAS
+ keyPassword MYAPP_RELEASE_KEY_PASSWORD
+ }
+ }
}
splits {
abi {
@@ -164,6 +179,7 @@ android {
signingConfig signingConfigs.debug
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
+ signingConfig signingConfigs.release
}
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 9057cc4..7a3a19a 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
+
);
@@ -59,6 +59,7 @@ const tempIcon = (
/>
);
+
export default class Icon extends PureComponent {
render() {
diff --git a/environment/config.js b/environment/config.js
index cc506d9..7ea7fee 100644
--- a/environment/config.js
+++ b/environment/config.js
@@ -1,30 +1,30 @@
-import firebase from 'firebase';
+// import firebase from 'firebase';
-
- // Your web app's Firebase configuration
- // For Firebase JS SDK v7.20.0 and later, measurementId is optional
- var firebaseConfig= {
- apiKey: "AIzaSyC8QpdR3EXSLip4o03td9G4BqX8KpRXz6Y",
- authDomain: "agroq-d66b7.firebaseapp.com",
- databaseURL: "https://agroq-d66b7.firebaseio.com",
- projectId: "agroq-d66b7",
- storageBucket: "agroq-d66b7.appspot.com",
- messagingSenderId: "582267081238",
- appId: "1:582267081238:web:52d0e2abc5c73ebe8d1b37",
- measurementId: "G-D0ZH6Z9PSF"
- };
- // var serviceAccount = require("./firebase_key.json");
-
- // Initialize Firebase
+// // Your web app's Firebase configuration
+// // For Firebase JS SDK v7.20.0 and later, measurementId is optional
+// var firebaseConfig= {
+// apiKey: "AIzaSyC8QpdR3EXSLip4o03td9G4BqX8KpRXz6Y",
+// authDomain: "agroq-d66b7.firebaseapp.com",
+// databaseURL: "https://agroq-d66b7.firebaseio.com",
+// projectId: "agroq-d66b7",
+// storageBucket: "agroq-d66b7.appspot.com",
+// messagingSenderId: "582267081238",
+// appId: "1:582267081238:web:52d0e2abc5c73ebe8d1b37",
+// measurementId: "G-D0ZH6Z9PSF"
+// };
+// // var serviceAccount = require("./firebase_key.json");
-var app = firebase.initializeApp(firebaseConfig);
-
-export default firebase;
+// // Initialize Firebase
+
+
+// var app = firebase.initializeApp(firebaseConfig);
+
+// export default firebase;
// Get a reference to the database service
-
+
diff --git a/environment/db.js b/environment/db.js
index 6302781..0e11fae 100644
--- a/environment/db.js
+++ b/environment/db.js
@@ -1,36 +1,47 @@
"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DBInteraction = exports.iotData = void 0;
-const firebase_config_1 = __importDefault(require("./config"));
-class iotData {
-}
-exports.iotData = iotData;
+import firebase from '@react-native-firebase/app';
+import firestore from '@react-native-firebase/firestore';
+
+ // Your web app's Firebase configuration
+ // For Firebase JS SDK v7.20.0 and later, measurementId is optional
+ var firebaseConfig= {
+ apiKey: "AIzaSyC8QpdR3EXSLip4o03td9G4BqX8KpRXz6Y",
+ authDomain: "agroq-d66b7.firebaseapp.com",
+ databaseURL: "https://agroq-d66b7.firebaseio.com",
+ projectId: "agroq-d66b7",
+ storageBucket: "agroq-d66b7.appspot.com",
+ messagingSenderId: "582267081238",
+ appId: "1:582267081238:web:52d0e2abc5c73ebe8d1b37",
+ measurementId: "G-D0ZH6Z9PSF"
+ };
+ // var serviceAccount = require("./firebase_key.json");
+
+
+ // Initialize Firebase
+var fb = null;
+if (! firebase.apps.length)
+ fb = firebase.initializeApp(firebaseConfig);
+else
+ fb = firebase.app();
class DBInteraction {
- getCurrentData(systemName) {
- return __awaiter(this, void 0, void 0, function* () {
- var docRef = firebase_config_1.database().ref('hydroSystem/'+systemName);
- // Attach an asynchronous callback to read the data at our posts reference
- var val = yield docRef.get();
- console.log(val.data());
- return val.data();
- });
+ async getCurrentData(systemName) {
+
+ // fb.firestore.setLogLevel('debug');
+
+ var coll =fb.firestore().collection('hydroSystem');
+ var ref = coll.doc('lambert');
+ var data= await ref.get();
+ var finalData = data.data();
+ return finalData;
+ // var docRef = firebase_config_1.default.collection('historySystem').doc(systemName);
+ // var docData = docRef.get();
+ // return docData.data();
+
}
getHistoricalData(systemName) {
return __awaiter(this, void 0, void 0, function* () {
// var docRef:firebasedb.Reference = db.ref("hydroSystem/lambert");
- var docRef = firebase_config_1.default.collection('historySystem').doc(systemName);
+ var docRef = fb.collection('historySystem').doc(systemName);
// Attach an asynchronous callback to read the data at our posts reference
var lst = yield docRef.listCollections();
let arData = [];
diff --git a/ios/Podfile b/ios/Podfile
index 3aa0a3a..79a7378 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -19,6 +19,8 @@ target 'agroQ' do
pod 'RNTableView', :path => '../node_modules/react-native-tableview'
+ pod 'react-native-webview', :path => '../node_modules/react-native-webview'
+
target 'agroQTests' do
inherit! :complete
# Pods for testing
diff --git a/package-lock.json b/package-lock.json
index f330232..1f92428 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -817,9 +817,9 @@
}
},
"@babel/runtime": {
- "version": "7.11.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
- "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
+ "version": "7.12.1",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
+ "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -974,462 +974,6 @@
}
}
},
- "@firebase/analytics": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.6.0.tgz",
- "integrity": "sha512-6qYEOPUVYrMhqvJ46Z5Uf1S4uULd6d7vGpMP5Qz+u8kIWuOQGcPdJKQap+Hla6Rq164or9gC2HRXuYXKlgWfpw==",
- "requires": {
- "@firebase/analytics-types": "0.4.0",
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/analytics-types": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.4.0.tgz",
- "integrity": "sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA=="
- },
- "@firebase/app": {
- "version": "0.6.11",
- "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.11.tgz",
- "integrity": "sha512-FH++PaoyTzfTAVuJ0gITNYEIcjT5G+D0671La27MU8Vvr6MTko+5YUZ4xS9QItyotSeRF4rMJ1KR7G8LSyySiA==",
- "requires": {
- "@firebase/app-types": "0.6.1",
- "@firebase/component": "0.1.19",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "dom-storage": "2.1.0",
- "tslib": "^1.11.1",
- "xmlhttprequest": "1.8.0"
- }
- },
- "@firebase/app-types": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.6.1.tgz",
- "integrity": "sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg=="
- },
- "@firebase/auth": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.15.0.tgz",
- "integrity": "sha512-IFuzhxS+HtOQl7+SZ/Mhaghy/zTU7CENsJFWbC16tv2wfLZbayKF5jYGdAU3VFLehgC8KjlcIWd10akc3XivfQ==",
- "requires": {
- "@firebase/auth-types": "0.10.1"
- }
- },
- "@firebase/auth-interop-types": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz",
- "integrity": "sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw=="
- },
- "@firebase/auth-types": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.10.1.tgz",
- "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw=="
- },
- "@firebase/component": {
- "version": "0.1.19",
- "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.19.tgz",
- "integrity": "sha512-L0S3g8eqaerg8y0zox3oOHSTwn/FE8RbcRHiurnbESvDViZtP5S5WnhuAPd7FnFxa8ElWK0z1Tr3ikzWDv1xdQ==",
- "requires": {
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/database": {
- "version": "0.6.13",
- "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.13.tgz",
- "integrity": "sha512-NommVkAPzU7CKd1gyehmi3lz0K78q0KOfiex7Nfy7MBMwknLm7oNqKovXSgQV1PCLvKXvvAplDSFhDhzIf9obA==",
- "requires": {
- "@firebase/auth-interop-types": "0.1.5",
- "@firebase/component": "0.1.19",
- "@firebase/database-types": "0.5.2",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "faye-websocket": "0.11.3",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/database-types": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.5.2.tgz",
- "integrity": "sha512-ap2WQOS3LKmGuVFKUghFft7RxXTyZTDr0Xd8y2aqmWsbJVjgozi0huL/EUMgTjGFrATAjcf2A7aNs8AKKZ2a8g==",
- "requires": {
- "@firebase/app-types": "0.6.1"
- }
- },
- "@firebase/firestore": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.18.0.tgz",
- "integrity": "sha512-maMq4ltkrwjDRusR2nt0qS4wldHQMp+0IDSfXIjC+SNmjnWY/t/+Skn9U3Po+dB38xpz3i7nsKbs+8utpDnPSw==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/firestore-types": "1.14.0",
- "@firebase/logger": "0.2.6",
- "@firebase/util": "0.3.2",
- "@firebase/webchannel-wrapper": "0.4.0",
- "@grpc/grpc-js": "^1.0.0",
- "@grpc/proto-loader": "^0.5.0",
- "node-fetch": "2.6.1",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/firestore-types": {
- "version": "1.14.0",
- "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.14.0.tgz",
- "integrity": "sha512-WF8IBwHzZDhwyOgQnmB0pheVrLNP78A8PGxk1nxb/Nrgh1amo4/zYvFMGgSsTeaQK37xMYS/g7eS948te/dJxw=="
- },
- "@firebase/functions": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.5.1.tgz",
- "integrity": "sha512-yyjPZXXvzFPjkGRSqFVS5Hc2Y7Y48GyyMH+M3i7hLGe69r/59w6wzgXKqTiSYmyE1pxfjxU4a1YqBDHNkQkrYQ==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/functions-types": "0.3.17",
- "@firebase/messaging-types": "0.5.0",
- "node-fetch": "2.6.1",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/functions-types": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.17.tgz",
- "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ=="
- },
- "@firebase/installations": {
- "version": "0.4.17",
- "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.17.tgz",
- "integrity": "sha512-AE/TyzIpwkC4UayRJD419xTqZkKzxwk0FLht3Dci8WI2OEKHSwoZG9xv4hOBZebe+fDzoV2EzfatQY8c/6Avig==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations-types": "0.3.4",
- "@firebase/util": "0.3.2",
- "idb": "3.0.2",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "idb": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
- "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
- }
- }
- },
- "@firebase/installations-types": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.3.4.tgz",
- "integrity": "sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q=="
- },
- "@firebase/logger": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.2.6.tgz",
- "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
- },
- "@firebase/messaging": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.7.1.tgz",
- "integrity": "sha512-iev/ST9v0xd/8YpGYrZtDcqdD9J6ZWzSuceRn8EKy5vIgQvW/rk2eTQc8axzvDpQ36ZfphMYuhW6XuNrR3Pd2Q==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/messaging-types": "0.5.0",
- "@firebase/util": "0.3.2",
- "idb": "3.0.2",
- "tslib": "^1.11.1"
- },
- "dependencies": {
- "idb": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
- "integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
- }
- }
- },
- "@firebase/messaging-types": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.5.0.tgz",
- "integrity": "sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg=="
- },
- "@firebase/performance": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.4.2.tgz",
- "integrity": "sha512-irHTCVWJ/sxJo0QHg+yQifBeVu8ZJPihiTqYzBUz/0AGc51YSt49FZwqSfknvCN2+OfHaazz/ARVBn87g7Ex8g==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/logger": "0.2.6",
- "@firebase/performance-types": "0.0.13",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/performance-types": {
- "version": "0.0.13",
- "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.13.tgz",
- "integrity": "sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA=="
- },
- "@firebase/polyfill": {
- "version": "0.3.36",
- "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.36.tgz",
- "integrity": "sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg==",
- "requires": {
- "core-js": "3.6.5",
- "promise-polyfill": "8.1.3",
- "whatwg-fetch": "2.0.4"
- },
- "dependencies": {
- "core-js": {
- "version": "3.6.5",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
- "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA=="
- },
- "whatwg-fetch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
- "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
- }
- }
- },
- "@firebase/remote-config": {
- "version": "0.1.28",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.28.tgz",
- "integrity": "sha512-4zSdyxpt94jAnFhO8toNjG8oMKBD+xTuBIcK+Nw8BdQWeJhEamgXlupdBARUk1uf3AvYICngHH32+Si/dMVTbw==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/installations": "0.4.17",
- "@firebase/logger": "0.2.6",
- "@firebase/remote-config-types": "0.1.9",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/remote-config-types": {
- "version": "0.1.9",
- "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz",
- "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA=="
- },
- "@firebase/storage": {
- "version": "0.3.43",
- "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.43.tgz",
- "integrity": "sha512-Jp54jcuyimLxPhZHFVAhNbQmgTu3Sda7vXjXrNpPEhlvvMSq4yuZBR6RrZxe/OrNVprLHh/6lTCjwjOVSo3bWA==",
- "requires": {
- "@firebase/component": "0.1.19",
- "@firebase/storage-types": "0.3.13",
- "@firebase/util": "0.3.2",
- "tslib": "^1.11.1"
- }
- },
- "@firebase/storage-types": {
- "version": "0.3.13",
- "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.13.tgz",
- "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog=="
- },
- "@firebase/util": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.2.tgz",
- "integrity": "sha512-Dqs00++c8rwKky6KCKLLY2T1qYO4Q+X5t+lF7DInXDNF4ae1Oau35bkD+OpJ9u7l1pEv7KHowP6CUKuySCOc8g==",
- "requires": {
- "tslib": "^1.11.1"
- }
- },
- "@firebase/webchannel-wrapper": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.0.tgz",
- "integrity": "sha512-8cUA/mg0S+BxIZ72TdZRsXKBP5n5uRcE3k29TZhZw6oIiHBt9JA7CTb/4pE1uKtE/q5NeTY2tBDcagoZ+1zjXQ=="
- },
- "@google-cloud/common": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.4.1.tgz",
- "integrity": "sha512-e5z0CwsM0RXky+PnyPtQ3QK46ksqm+kE7kX8pm8X+ddBwZJipHchKeazMM5fLlGCS+AALalzXb+uYmH72TRnpQ==",
- "optional": true,
- "requires": {
- "@google-cloud/projectify": "^2.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.1",
- "duplexify": "^4.1.1",
- "ent": "^2.2.0",
- "extend": "^3.0.2",
- "google-auth-library": "^6.1.1",
- "retry-request": "^4.1.1",
- "teeny-request": "^7.0.0"
- }
- },
- "@google-cloud/firestore": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-4.4.0.tgz",
- "integrity": "sha512-nixsumd4C7eL+hHEgyihspzhBBNe3agsvNFRX0xfqO3uR/6ro4CUj9XdcCvdnSSd3yTyqKfdBSRK2fEj1jIbYg==",
- "optional": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "functional-red-black-tree": "^1.0.1",
- "google-gax": "^2.2.0"
- }
- },
- "@google-cloud/paginator": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.5.tgz",
- "integrity": "sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw==",
- "optional": true,
- "requires": {
- "arrify": "^2.0.0",
- "extend": "^3.0.2"
- }
- },
- "@google-cloud/projectify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-2.0.1.tgz",
- "integrity": "sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ==",
- "optional": true
- },
- "@google-cloud/promisify": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz",
- "integrity": "sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw==",
- "optional": true
- },
- "@google-cloud/storage": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-5.3.0.tgz",
- "integrity": "sha512-3t5UF3SZ14Bw2kcBHubCai6EIugU2GnQOstYWVSFuoO8IJ94RAaIOPq/dtexvQbUTpBTAGpd5smVR9WPL1mJVw==",
- "optional": true,
- "requires": {
- "@google-cloud/common": "^3.3.0",
- "@google-cloud/paginator": "^3.0.0",
- "@google-cloud/promisify": "^2.0.0",
- "arrify": "^2.0.0",
- "compressible": "^2.0.12",
- "concat-stream": "^2.0.0",
- "date-and-time": "^0.14.0",
- "duplexify": "^3.5.0",
- "extend": "^3.0.2",
- "gaxios": "^3.0.0",
- "gcs-resumable-upload": "^3.1.0",
- "hash-stream-validation": "^0.2.2",
- "mime": "^2.2.0",
- "mime-types": "^2.0.8",
- "onetime": "^5.1.0",
- "p-limit": "^3.0.1",
- "pumpify": "^2.0.0",
- "snakeize": "^0.1.0",
- "stream-events": "^1.0.1",
- "xdg-basedir": "^4.0.0"
- },
- "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==",
- "optional": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "optional": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- }
- }
- },
- "mime": {
- "version": "2.4.6",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
- "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
- "optional": true
- },
- "p-limit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz",
- "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==",
- "optional": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "optional": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
- "@grpc/grpc-js": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.7.tgz",
- "integrity": "sha512-EuxMstI0u778dp0nk6Fe3gHXYPeV6FYsWOe0/QFwxv1NQ6bc5Wl/0Yxa4xl9uBlKElL6AIxuASmSfu7KEJhqiw==",
- "requires": {
- "@grpc/proto-loader": "^0.6.0-pre14",
- "@types/node": "^12.12.47",
- "google-auth-library": "^6.0.0",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "@grpc/proto-loader": {
- "version": "0.6.0-pre9",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.0-pre9.tgz",
- "integrity": "sha512-oM+LjpEjNzW5pNJjt4/hq1HYayNeQT+eGrOPABJnYHv7TyNPDNzkQ76rDYZF86X5swJOa4EujEMzQ9iiTdPgww==",
- "requires": {
- "@types/long": "^4.0.1",
- "lodash.camelcase": "^4.3.0",
- "long": "^4.0.0",
- "protobufjs": "^6.9.0",
- "yargs": "^15.3.1"
- }
- },
- "@types/node": {
- "version": "12.19.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.1.tgz",
- "integrity": "sha512-/xaVmBBjOGh55WCqumLAHXU9VhjGtmyTGqJzFBXRWZzByOXI5JAJNx9xPVGEsNizrNwcec92fQMj458MWfjN1A=="
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
- }
- }
- },
- "@grpc/proto-loader": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.5.tgz",
- "integrity": "sha512-WwN9jVNdHRQoOBo9FDH7qU+mgfjPc8GygPYms3M+y3fbQLfnCe/Kv/E01t7JRgnrsOHH8euvSbed3mIalXhwqQ==",
- "requires": {
- "lodash.camelcase": "^4.3.0",
- "protobufjs": "^6.8.6"
- }
- },
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -1728,60 +1272,6 @@
}
}
},
- "@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
- },
- "@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
- },
- "@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
- },
- "@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
- },
- "@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
- "requires": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
- }
- },
- "@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
- },
- "@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
- },
- "@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
- },
- "@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
- },
- "@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
- },
"@react-native-async-storage/async-storage": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.13.0.tgz",
@@ -1999,14 +1489,30 @@
"integrity": "sha512-2UEr+Dqk+VHcMaZPOcKSo0GqFZG91DjngeACy+DOB2gRvph/FGKjABV6HlQJqdhQeQs/4NgoycCjAH+Z8ilIVg=="
},
"@react-native-firebase/app": {
- "version": "8.4.6",
- "resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-8.4.6.tgz",
- "integrity": "sha512-4eZR133QuScvGs4IQQd6qMvQ5E1mtydVTy3DtuBCeiIqtvN8ZxBYoSMgcUmYGS4VafbS2nPh85g4e3BlaIJ2XA==",
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/app/-/app-7.3.1.tgz",
+ "integrity": "sha512-pQM4YnPRl1PaXqdFEfJSSCB5ETM303Rwucy015K1YKANtcB4r5VlXYgVHOx7BesXMxOjkzYfXH8WLtnC8PD/Xw==",
"requires": {
+ "@react-native-firebase/app-types": "6.7.2",
"opencollective-postinstall": "^2.0.1",
"superstruct": "^0.6.2"
}
},
+ "@react-native-firebase/app-types": {
+ "version": "6.7.2",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/app-types/-/app-types-6.7.2.tgz",
+ "integrity": "sha512-pIwc6e0ZINw6PJqNVsAxzOVJUDg6au2TdulY+ZOYQ11SPDs5I2n9likoGrElPmJjajT4s9h87uz/6PWP2k9PxQ=="
+ },
+ "@react-native-firebase/auth": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/auth/-/auth-8.3.3.tgz",
+ "integrity": "sha512-EM73Q8VDh3n9rbdv9Z8nAoe9d+JfNvbU4iXlEBpmH7FZhCkDKQR9Q9isa4Q8vzhVCmyJTQbgi0sMCJIXbOFTug=="
+ },
+ "@react-native-firebase/firestore": {
+ "version": "7.8.7",
+ "resolved": "https://registry.npmjs.org/@react-native-firebase/firestore/-/firestore-7.8.7.tgz",
+ "integrity": "sha512-UuQHvzadFszs3cphDsUZ/t7XGo0wW48+SVVHe20HBz42bU6EiN7YgmdBTqwEI8P2go+0Uj9LLLDayhND7JSSyQ=="
+ },
"@react-navigation/core": {
"version": "5.12.4",
"resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-5.12.4.tgz",
@@ -2085,12 +1591,6 @@
"@sinonjs/commons": "^1.7.0"
}
},
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "optional": true
- },
"@types/babel__core": {
"version": "7.1.9",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz",
@@ -2185,11 +1685,6 @@
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
"dev": true
},
- "@types/long": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz",
- "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
- },
"@types/node": {
"version": "14.11.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz",
@@ -2399,29 +1894,6 @@
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
"dev": true
},
- "agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "requires": {
- "debug": "4"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
"ajv": {
"version": "6.12.5",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz",
@@ -2733,11 +2205,6 @@
}
}
},
- "arrify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
- "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
- },
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
@@ -2994,11 +2461,6 @@
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz",
"integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w=="
},
- "bignumber.js": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz",
- "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA=="
- },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -3076,11 +2538,6 @@
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
},
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
- },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -3482,37 +2939,6 @@
"typedarray": "^0.0.6"
}
},
- "configstore": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
- "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
- "optional": true,
- "requires": {
- "dot-prop": "^5.2.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^3.0.0",
- "unique-string": "^2.0.0",
- "write-file-atomic": "^3.0.0",
- "xdg-basedir": "^4.0.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "optional": true,
- "requires": {
- "semver": "^6.0.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "optional": true
- }
- }
- },
"connect": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
@@ -3631,12 +3057,6 @@
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz",
"integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q=="
},
- "crypto-random-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
- "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
- "optional": true
- },
"css-color-keywords": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
@@ -3803,12 +3223,6 @@
"whatwg-url": "^8.0.0"
}
},
- "date-and-time": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.14.1.tgz",
- "integrity": "sha512-M4RggEH5OF2ZuCOxgOU67R6Z9ohjKbxGvAQz48vj53wLmL0bAgumkBvycR32f30pK+Og9pIR+RFDyChbaE4oLA==",
- "optional": true
- },
"dayjs": {
"version": "1.8.36",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz",
@@ -3909,14 +3323,6 @@
"integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
"dev": true
},
- "dicer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
- "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
- "requires": {
- "streamsearch": "0.1.2"
- }
- },
"diff-sequences": {
"version": "26.3.0",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.3.0.tgz",
@@ -3948,11 +3354,6 @@
}
}
},
- "dom-storage": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
- "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
- },
"domelementtype": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
@@ -3984,48 +3385,6 @@
"domelementtype": "1"
}
},
- "dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "optional": true,
- "requires": {
- "is-obj": "^2.0.0"
- },
- "dependencies": {
- "is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "optional": true
- }
- }
- },
- "duplexify": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.1.tgz",
- "integrity": "sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA==",
- "optional": true,
- "requires": {
- "end-of-stream": "^1.4.1",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
- "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "optional": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- }
- }
- },
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -4036,14 +3395,6 @@
"safer-buffer": "^2.1.0"
}
},
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -4108,12 +3459,6 @@
}
}
},
- "ent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=",
- "optional": true
- },
"entities": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
@@ -4656,7 +4001,8 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
},
"extend-shallow": {
"version": "3.0.2",
@@ -4740,7 +4086,8 @@
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
},
"fast-diff": {
"version": "1.2.0",
@@ -4760,19 +4107,6 @@
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
- "fast-text-encoding": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz",
- "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig=="
- },
- "faye-websocket": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
- "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
- "requires": {
- "websocket-driver": ">=0.5.1"
- }
- },
"fb-watchman": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz",
@@ -4978,51 +4312,8 @@
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "firebase": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.24.0.tgz",
- "integrity": "sha512-j6jIyGFFBlwWAmrlUg9HyQ/x+YpsPkc/TTkbTyeLwwAJrpAmmEHNPT6O9xtAnMV4g7d3RqLL/u9//aZlbY4rQA==",
- "requires": {
- "@firebase/analytics": "0.6.0",
- "@firebase/app": "0.6.11",
- "@firebase/app-types": "0.6.1",
- "@firebase/auth": "0.15.0",
- "@firebase/database": "0.6.13",
- "@firebase/firestore": "1.18.0",
- "@firebase/functions": "0.5.1",
- "@firebase/installations": "0.4.17",
- "@firebase/messaging": "0.7.1",
- "@firebase/performance": "0.4.2",
- "@firebase/polyfill": "0.3.36",
- "@firebase/remote-config": "0.1.28",
- "@firebase/storage": "0.3.43",
- "@firebase/util": "0.3.2"
- }
- },
- "firebase-admin": {
- "version": "9.3.0",
- "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-9.3.0.tgz",
- "integrity": "sha512-qMUITOp2QKLLc2o0/wSiDC2OO2knejjieZN/8Or9AzfFk8ftTcUKq5ALNlQXu+7aUzGe0IwSJq9TVnkIU0h1xw==",
- "requires": {
- "@firebase/database": "^0.6.10",
- "@firebase/database-types": "^0.5.2",
- "@google-cloud/firestore": "^4.0.0",
- "@google-cloud/storage": "^5.3.0",
- "@types/node": "^10.10.0",
- "dicer": "^0.3.0",
- "jsonwebtoken": "^8.5.1",
- "node-forge": "^0.10.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "10.17.42",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.42.tgz",
- "integrity": "sha512-HElxYF7C/MSkuvlaHB2c+82zhXiuO49Cq056Dol8AQuTph7oJtduo2n6J8rFa+YhJyNgQ/Lm20ZaxqD0vxU0+Q=="
- }
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
}
},
"flat-cache": {
@@ -5126,50 +4417,8 @@
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
- },
- "gaxios": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.2.0.tgz",
- "integrity": "sha512-+6WPeVzPvOshftpxJwRi2Ozez80tn/hdtOUag7+gajDHRJvAblKxTFSSMPtr2hmnLy7p0mvYz0rMXLBl8pSO7Q==",
- "requires": {
- "abort-controller": "^3.0.0",
- "extend": "^3.0.2",
- "https-proxy-agent": "^5.0.0",
- "is-stream": "^2.0.0",
- "node-fetch": "^2.3.0"
- },
- "dependencies": {
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
- }
- }
- },
- "gcp-metadata": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.0.tgz",
- "integrity": "sha512-vQZD57cQkqIA6YPGXM/zc+PIZfNRFdukWGsGZ5+LcJzesi5xp6Gn7a02wRJi4eXPyArNMIYpPET4QMxGqtlk6Q==",
- "requires": {
- "gaxios": "^3.0.0",
- "json-bigint": "^1.0.0"
- }
- },
- "gcs-resumable-upload": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-3.1.1.tgz",
- "integrity": "sha512-RS1osvAicj9+MjCc6jAcVL1Pt3tg7NK2C2gXM5nqD1Gs0klF2kj5nnAFSBy97JrtslMIQzpb7iSuxaG8rFWd2A==",
- "optional": true,
- "requires": {
- "abort-controller": "^3.0.0",
- "configstore": "^5.0.0",
- "extend": "^3.0.2",
- "gaxios": "^3.0.0",
- "google-auth-library": "^6.0.0",
- "pumpify": "^2.0.0",
- "stream-events": "^1.0.4"
- }
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
},
"gensync": {
"version": "1.0.0-beta.1",
@@ -5242,63 +4491,6 @@
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
},
- "google-auth-library": {
- "version": "6.1.2",
- "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.1.2.tgz",
- "integrity": "sha512-X9EUX8R+kIpsf55KdSPhFWF0RNyBGuBc1zeYc/5Sjuk65eIYqq91rINJVBD22pp+w/PuM2fasHiA6H2xYjxTIQ==",
- "requires": {
- "arrify": "^2.0.0",
- "base64-js": "^1.3.0",
- "ecdsa-sig-formatter": "^1.0.11",
- "fast-text-encoding": "^1.0.0",
- "gaxios": "^3.0.0",
- "gcp-metadata": "^4.2.0",
- "gtoken": "^5.0.4",
- "jws": "^4.0.0",
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
- },
- "google-gax": {
- "version": "2.9.1",
- "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-2.9.1.tgz",
- "integrity": "sha512-KQ7HiMTB/PAzKv3OU00x6tC1H7MHvSxQfon5BSyW5o+lkMgRA8xoqvlxZCBC1dlW1azOPGF8vScy8QgFmhaQ9Q==",
- "optional": true,
- "requires": {
- "@grpc/grpc-js": "~1.1.1",
- "@grpc/proto-loader": "^0.5.1",
- "@types/long": "^4.0.0",
- "abort-controller": "^3.0.0",
- "duplexify": "^4.0.0",
- "google-auth-library": "^6.0.0",
- "is-stream-ended": "^0.1.4",
- "node-fetch": "^2.6.1",
- "protobufjs": "^6.9.0",
- "retry-request": "^4.0.0"
- }
- },
- "google-p12-pem": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
- "integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
- "requires": {
- "node-forge": "^0.10.0"
- }
- },
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -5311,24 +4503,6 @@
"dev": true,
"optional": true
},
- "gtoken": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.4.tgz",
- "integrity": "sha512-U9wnSp4GZ7ov6zRdPuRHG4TuqEWqRRgT1gfXGNArhzBUn9byrPeH8uTmBWU/ZiWJJvTEmkjhDIC3mqHWdVi3xQ==",
- "requires": {
- "gaxios": "^3.0.0",
- "google-p12-pem": "^3.0.3",
- "jws": "^4.0.0",
- "mime": "^2.2.0"
- },
- "dependencies": {
- "mime": {
- "version": "2.4.6",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
- "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA=="
- }
- }
- },
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
@@ -5392,12 +4566,6 @@
}
}
},
- "hash-stream-validation": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz",
- "integrity": "sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ==",
- "optional": true
- },
"hermes-engine": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/hermes-engine/-/hermes-engine-0.5.1.tgz",
@@ -5459,39 +4627,6 @@
"toidentifier": "1.0.0"
}
},
- "http-parser-js": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz",
- "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ=="
- },
- "http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "optional": true,
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "optional": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "optional": true
- }
- }
- },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -5503,30 +4638,6 @@
"sshpk": "^1.7.0"
}
},
- "https-proxy-agent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
- "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
- "requires": {
- "agent-base": "6",
- "debug": "4"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
"human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -5907,12 +5018,6 @@
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
- "is-stream-ended": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz",
- "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==",
- "optional": true
- },
"is-string": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
@@ -5930,7 +5035,8 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
},
"is-windows": {
"version": "1.0.2",
@@ -6730,14 +5836,6 @@
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
},
- "json-bigint": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
- "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
- "requires": {
- "bignumber.js": "^9.0.0"
- }
- },
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@@ -6802,49 +5900,6 @@
"resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
},
- "jsonwebtoken": {
- "version": "8.5.1",
- "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
- "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
- "requires": {
- "jws": "^3.2.2",
- "lodash.includes": "^4.3.0",
- "lodash.isboolean": "^3.0.3",
- "lodash.isinteger": "^4.0.4",
- "lodash.isnumber": "^3.0.3",
- "lodash.isplainobject": "^4.0.6",
- "lodash.isstring": "^4.0.1",
- "lodash.once": "^4.0.0",
- "ms": "^2.1.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "jwa": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
- "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
- "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
- "requires": {
- "jwa": "^1.4.1",
- "safe-buffer": "^5.0.1"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- }
- }
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -6867,25 +5922,6 @@
"object.assign": "^4.1.0"
}
},
- "jwa": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz",
- "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==",
- "requires": {
- "buffer-equal-constant-time": "1.0.1",
- "ecdsa-sig-formatter": "1.0.11",
- "safe-buffer": "^5.0.1"
- }
- },
- "jws": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
- "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
- "requires": {
- "jwa": "^2.0.0",
- "safe-buffer": "^5.0.1"
- }
- },
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -6964,46 +6000,16 @@
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
},
- "lodash.camelcase": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
- "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
- },
"lodash.frompairs": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz",
"integrity": "sha1-vE5SB/onV8E25XNhTpZkUGsrG9I="
},
- "lodash.includes": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
- "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
- },
- "lodash.isboolean": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
- "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
- },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
},
- "lodash.isinteger": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
- "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
- },
- "lodash.isnumber": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
- "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
- },
- "lodash.isplainobject": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
- },
"lodash.isstring": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
@@ -7014,11 +6020,6 @@
"resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
"integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
},
- "lodash.once": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
- "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
- },
"lodash.pick": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
@@ -7111,11 +6112,6 @@
"yargs": "^15.1.0"
}
},
- "long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -8545,7 +7541,8 @@
"mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
},
"minimatch": {
"version": "3.0.4",
@@ -8670,11 +7667,6 @@
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
- "node-forge": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
- "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
- },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -9017,6 +8009,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
"requires": {
"mimic-fn": "^2.1.0"
}
@@ -9367,11 +8360,6 @@
"asap": "~2.0.6"
}
},
- "promise-polyfill": {
- "version": "8.1.3",
- "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
- "integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
- },
"prompts": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz",
@@ -9392,33 +8380,6 @@
"react-is": "^16.8.1"
}
},
- "protobufjs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.10.1.tgz",
- "integrity": "sha512-pb8kTchL+1Ceg4lFd5XUpK8PdWacbvV5SK2ULH2ebrYtl4GjJmS24m6CKME67jzV53tbJxHlnNOSqQHbTsR9JQ==",
- "requires": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.1",
- "@types/node": "^13.7.0",
- "long": "^4.0.0"
- },
- "dependencies": {
- "@types/node": {
- "version": "13.13.28",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.28.tgz",
- "integrity": "sha512-EM/qFeRH8ZCD+TlsaIPULyyFm9vOhFIvgskY2JmHbEsWsOPgN+rtjSXrcHGgJpob4Nu17VfO95FKewr0XY7iOQ=="
- }
- }
- },
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -9439,17 +8400,6 @@
"once": "^1.3.1"
}
},
- "pumpify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz",
- "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==",
- "optional": true,
- "requires": {
- "duplexify": "^4.1.1",
- "inherits": "^2.0.3",
- "pump": "^3.0.0"
- }
- },
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -9792,6 +8742,14 @@
"use-subscription": "^1.0.0"
}
},
+ "react-native-camera": {
+ "version": "3.40.0",
+ "resolved": "https://registry.npmjs.org/react-native-camera/-/react-native-camera-3.40.0.tgz",
+ "integrity": "sha512-Ur0hZqZcl3SntTVMB9GxuiLYpQxqwgzhQVb+7EGae4WjfDzQEwlGF0bJ7UpZyeUTb1oZmsiSib58xUckn11XMw==",
+ "requires": {
+ "prop-types": "^15.6.2"
+ }
+ },
"react-native-gesture-handler": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz",
@@ -9808,6 +8766,15 @@
"resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz",
"integrity": "sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ=="
},
+ "react-native-keyboard-aware-scroll-view": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.3.tgz",
+ "integrity": "sha512-EDyFp8wAJoKvi1T2pzoPRn8R0Inp3G+575jPAWEFTlXq26URMmk8760rzde2XLW+v/1+QwDyBg6d/5mz63/ZRA==",
+ "requires": {
+ "prop-types": "^15.6.2",
+ "react-native-iphone-x-helper": "^1.0.3"
+ }
+ },
"react-native-maps": {
"version": "0.27.1",
"resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-0.27.1.tgz",
@@ -9831,6 +8798,11 @@
"react-native-safe-area-view": "^0.14.9"
}
},
+ "react-native-plotly": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/react-native-plotly/-/react-native-plotly-4.0.0.tgz",
+ "integrity": "sha512-P0FdQ1JwqhxhbRAh36eBas5e8qpPfKOWpsG99ekePXBrkPSvm5i9UcRopKW5AkFifs0GstDOJsOxfKpsVj4Whw=="
+ },
"react-native-reanimated": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.13.0.tgz",
@@ -9930,6 +8902,22 @@
"yargs": "^15.0.2"
}
},
+ "react-native-webview": {
+ "version": "10.9.3",
+ "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-10.9.3.tgz",
+ "integrity": "sha512-50KVtsgJEdK4S3rzWQBDGosjFDct9O1ve9UWtf6ZX9FE2kLmq1K29aoJ7PL4xo3EusctfoQAf0bhiDx/EaAGNA==",
+ "requires": {
+ "escape-string-regexp": "2.0.0",
+ "invariant": "2.2.4"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
+ }
+ }
+ },
"react-redux": {
"version": "7.2.1",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.1.tgz",
@@ -10296,32 +9284,6 @@
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
- "retry-request": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
- "integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
- "optional": true,
- "requires": {
- "debug": "^4.1.1"
- },
- "dependencies": {
- "debug": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
- "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
- "optional": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "optional": true
- }
- }
- },
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -10728,12 +9690,6 @@
"resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
"integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
},
- "snakeize": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz",
- "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=",
- "optional": true
- },
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -11069,26 +10025,6 @@
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
"integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
},
- "stream-events": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz",
- "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==",
- "optional": true,
- "requires": {
- "stubs": "^3.0.0"
- }
- },
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "optional": true
- },
- "streamsearch": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
- "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
- },
"strict-uri-encode": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
@@ -11264,12 +10200,6 @@
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
"dev": true
},
- "stubs": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz",
- "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=",
- "optional": true
- },
"styled-components": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.0.tgz",
@@ -11374,27 +10304,6 @@
"string-width": "^3.0.0"
}
},
- "teeny-request": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-7.0.1.tgz",
- "integrity": "sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw==",
- "optional": true,
- "requires": {
- "http-proxy-agent": "^4.0.0",
- "https-proxy-agent": "^5.0.0",
- "node-fetch": "^2.6.1",
- "stream-events": "^1.0.5",
- "uuid": "^8.0.0"
- },
- "dependencies": {
- "uuid": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz",
- "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==",
- "optional": true
- }
- }
- },
"temp": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
@@ -11550,7 +10459,8 @@
"tslib": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
- "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q=="
+ "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
+ "dev": true
},
"tsutils": {
"version": "3.17.1",
@@ -11606,6 +10516,7 @@
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
"requires": {
"is-typedarray": "^1.0.0"
}
@@ -11681,15 +10592,6 @@
"set-value": "^2.0.1"
}
},
- "unique-string": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
- "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
- "optional": true,
- "requires": {
- "crypto-random-string": "^2.0.0"
- }
- },
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -11874,21 +10776,6 @@
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
"dev": true
},
- "websocket-driver": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
- "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
- "requires": {
- "http-parser-js": ">=0.5.1",
- "safe-buffer": ">=5.1.0",
- "websocket-extensions": ">=0.1.1"
- }
- },
- "websocket-extensions": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
- "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
- },
"whatwg-encoding": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
@@ -12002,6 +10889,7 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
"integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
"requires": {
"imurmurhash": "^0.1.4",
"is-typedarray": "^1.0.0",
@@ -12027,12 +10915,6 @@
"uuid": "^3.3.2"
}
},
- "xdg-basedir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
- "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
- "optional": true
- },
"xml-name-validator": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
@@ -12063,11 +10945,6 @@
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ=="
},
- "xmlhttprequest": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
- "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
- },
"xpipe": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
diff --git a/package.json b/package.json
index d004cac..17734e6 100644
--- a/package.json
+++ b/package.json
@@ -15,19 +15,23 @@
"@react-native-community/netinfo": "^5.9.7",
"@react-native-community/segmented-control": "^2.1.2",
"@react-native-firebase/app": "^8.4.6",
+ "@react-native-firebase/auth": "^9.3.1",
+ "@react-native-firebase/firestore": "^7.1.5",
"@react-navigation/drawer": "^5.9.1",
"@react-navigation/material-bottom-tabs": "^5.2.17",
"@react-navigation/native": "^5.7.4",
"@react-navigation/stack": "^5.9.1",
"amazon-cognito-identity-js": "^4.4.0",
- "firebase": "^7.24.0",
"react": "16.13.1",
"react-native": "0.63.2",
"react-native-appearance": "^0.3.4",
+ "react-native-camera": "^3.40.0",
"react-native-gesture-handler": "^1.8.0",
+ "react-native-keyboard-aware-scroll-view": "^0.9.3",
"react-native-maps": "^0.27.1",
"react-native-onboarding-swiper": "^1.1.4",
"react-native-paper": "^4.2.0",
+ "react-native-plotly": "^4.0.0",
"react-native-reanimated": "^1.13.0",
"react-native-safe-area-context": "^3.1.8",
"react-native-screens": "^2.11.0",
@@ -38,6 +42,7 @@
"react-native-swiper": "^1.6.0",
"react-native-tableview": "^3.0.0",
"react-native-vector-icons": "^7.1.0",
+ "react-native-webview": "^10.9.3",
"react-redux": "^7.2.1",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
@@ -45,7 +50,6 @@
},
"devDependencies": {
"@babel/core": "^7.11.6",
- "@babel/runtime": "^7.11.2",
"@react-native-community/eslint-config": "^2.0.0",
"babel-jest": "^26.3.0",
"eslint": "^7.9.0",
diff --git a/screens/BoxPlot.js b/screens/BoxPlot.js
new file mode 100644
index 0000000..ef375b0
--- /dev/null
+++ b/screens/BoxPlot.js
@@ -0,0 +1,94 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+
+const trace1 = {
+ __id: 'up',
+ x: ['ph', 'temp', 'humidity'],
+ y: [global.ph, global.temp, global.humidity],
+ name: 'Control',
+ error_y: {
+ type: 'data',
+ array: [1, 0.5, 1.5],
+ visible: true
+ },
+ type: 'bar'
+ };
+
+ const trace2 = {
+ __id: 'down',
+ x: ['avg ph', 'avg temp', 'avg humidity'],
+ y: [5, 20, 60 ],
+ name: 'Experimental',
+ error_y: {
+ type: 'data',
+ array: [0.5, 10, 5],
+ visible: true
+ },
+ type: 'bar'
+ };
+
+const boxPlot = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default boxPlot;
\ No newline at end of file
diff --git a/screens/DetailsScreen.js b/screens/DetailsScreen.js
index 423c650..065215b 100644
--- a/screens/DetailsScreen.js
+++ b/screens/DetailsScreen.js
@@ -1,5 +1,6 @@
import React from 'react';
-import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import { View, Text, Button, StyleSheet, StatusBar, Alert } from 'react-native';
+import { TouchableOpacity } from 'react-native-gesture-handler';
import SettingsList from 'react-native-settings-list';
@@ -10,14 +11,25 @@ const DetailsScreen = ({navigation}) => {
-
-
-
-
-
-
-
-
+
+ navigation.navigate('linearRegression')}
+ title='Linear Regression '/>
+
+ navigation.navigate('SymmetricErrorBars')}
+ title='Symmetric Error Bars'/>
+ navigation.navigate('BoxPlot')}
+ title='Bar Plot'/>
+ navigation.navigate('logisticRegression')}
+ title='Logistic Regression'/>
+ navigation.navigate("cdp")}
+ title='Catagorical Dot Plot'/>
+ navigation.navigate("spc")} title='SPC Control Chart'/>
+
diff --git a/screens/DrawerContent.js b/screens/DrawerContent.js
index 941c84d..af67c2d 100644
--- a/screens/DrawerContent.js
+++ b/screens/DrawerContent.js
@@ -1,5 +1,6 @@
import React from 'react';
import {View, StyleSheet} from 'react-native';
+import auth from '@react-native-firebase/auth';
import {
@@ -22,6 +23,12 @@ import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
export function DrawerContent(props) {
+ const logoff = () => {
+ auth()
+ .signOut()
+ .then(() => console.log('User signed out!'));
+
+ };
return(
@@ -141,7 +148,7 @@ export function DrawerContent(props) {
/>
)}
label="Sign Out"
- // onPress={}
+ onPress={() => logoff()}
/>
diff --git a/screens/HomeScreen.js b/screens/HomeScreen.js
index 9597e67..6465a34 100644
--- a/screens/HomeScreen.js
+++ b/screens/HomeScreen.js
@@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react";
-import { View, Text, Image,Button, StyleSheet, StatusBar, TouchableOpacity } from 'react-native';
+import { View, Text, Image,Button, StyleSheet, StatusBar, TouchableOpacity, FlatList } from 'react-native';
import Swiper from 'react-native-swiper';
-import firebase from 'firebase';
+import firebase from '@react-native-firebase/app';
import { firebaseApp } from '../environment/config';
import Ionicons from 'react-native-vector-icons/Ionicons';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
@@ -20,30 +20,140 @@ import Icon from "../components/Icon";
import Card from "../components/Card";
-
-
+var firstData=null;
const HomeScreen = ({navigation}) => {
console.log("starting");
- const[system, setSystem]= useState({});
+ const[hsystem, setHsystem]= useState({});
+
+
+ var stylerco2;
+ var iconUsedco2;
+ var stylertemp;
+ var iconUsedtemp;
+
+ var systemHealth = 0;
+
+ var stylerhumidity;
+ var iconUsedhumidity;
+
+ var stylerph;
+ var iconUsedph;
+
+ var stylerwaterTemp;
+ var iconUsedwaterTemp;
+
+ var stylersyshealth ;
+ var iconUsedsyshealth ;
+ const checkValidity= ()=>{
+
+ console.log('this temp: '+ global.temp)
+ if (global.temp > 18 && global.temp < 26){
+ stylertemp = styles.categoryIcon2;
+ iconUsedtemp = "checkmark";
+ }else {
+ stylertemp = styles.categoryIcon3;
+ iconUsedtemp = "alert-outline";
+
+ }
+ if (global.humidity > 60 && global.humidity < 70){
+ stylerhumidity = styles.categoryIcon2;
+ iconUsedhumidity = "checkmark";
+ }else {
+ stylerhumidity = styles.categoryIcon3;
+ iconUsedhumidity = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+ if (global.ph > 60 && global.ph < 70){
+ stylerph = styles.categoryIcon2;
+ iconUsedph = "checkmark";
+ }else {
+ stylerph = styles.categoryIcon3;
+ iconUsedph = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+ if (global.co2 > 400 && global.co2 < 1500){
+ stylerco2 = styles.categoryIcon2;
+ iconUsedco2 = "checkmark";
+ }else {
+ stylerco2 = styles.categoryIcon3;
+ iconUsedco2 = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+ if (global.waterTemp > 18 && global.waterTemp < 26){
+ stylerwaterTemp = styles.categoryIcon2;
+ iconUsedwaterTemp = "checkmark";
+ }else {
+ stylerwaterTemp = styles.categoryIcon3;
+ iconUsedwaterTemp = "alert-outline";
+ systemHealth=systemHealth+1;
+
+ }
+
+ if (systemHealth > 2) {
+ stylersyshealth = styles.categoryIcon3;
+ iconUsedsyshealth = "alert-outline";
- useEffect(() => {
+ } else{
+ stylersyshealth = styles.categoryIcon;
+ iconUsedsyshealth = "happy";
+
+ }
+
+
+ };
+
+
+
+ useEffect(() => {
console.log("useeffect");
+
const fetch= async()=>{
console.log("fetch start");
const xDB = new DBInteraction();
- var data =await xDB.getCurrentData('lambert');
- console.log(data);
- setSystem(data);
+ var finalData =await xDB.getCurrentData('lambert');
+ console.log(finalData);
+
+ setHsystem(finalData);
+ console.log("the temp" + finalData.Temp);
+ //Initializing variabbles for app use
+ global.temp = finalData.Temp;
+ global.co2=finalData.co2;
+ global.ph=finalData.Ph;
+ global.humidity=finalData.humidity;
+ global.longitude=finalData.longitude;
+ global.latitude=finalData.latitude;
+ global.light=finalData.light;
+ global.location= finalData.location;
+ global.time=finalData.time;
+ global.waterTemp=finalData.waterTemp;
+ checkValidity();
+
+ console.log("ph"+global.ph);
+
- }
+ // firstData = finalData
+
- fetch();
+ }
+ if ( firstData ==null)
+ fetch();
- });
-
+ },
+ []);
+
+
+
+
return (
+
+
+
+
@@ -80,8 +190,8 @@ const HomeScreen = ({navigation}) => {
style={styles.categoryBtn}>
System Health:
-
-
+
+
@@ -105,22 +215,26 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
+
- Temp: {system.temp}
+
+ Temp:{hsystem.Temp}
+
- Temp on track
+ Celcius
-
-
+
+
- Humidity: 40
- Humidity on track
+ Humidity: {hsystem.humidity}
+
+ Percent
@@ -134,20 +248,22 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
- O2: 30
+ Light: {hsystem.light}
+ Lumens
-
+
-
-
+
+
- Water Temp: 30
+ Water: {hsystem.waterTemp}
+ Celcius
@@ -163,21 +279,21 @@ const HomeScreen = ({navigation}) => {
-
-
+
+
- Co2: 700
- Co2 on track
+ Co2: {hsystem.co2}
+ PPMs
-
-
+
+
- PH: 4
- PH on Track
+ PH: {hsystem.Ph}
+ logarithm of H+
diff --git a/screens/MainTabScreen.js b/screens/MainTabScreen.js
index 328515b..c2bf671 100644
--- a/screens/MainTabScreen.js
+++ b/screens/MainTabScreen.js
@@ -26,7 +26,9 @@ const DetailsStack = createStackNavigator();
const SensorStack = createStackNavigator();
const ProfileStack = createStackNavigator();
const Tab = createMaterialBottomTabNavigator();
+
const MainTabScreen = () => (
+
(
/>
diff --git a/screens/MapScreen.js b/screens/MapScreen.js
index 95b5124..e59611d 100644
--- a/screens/MapScreen.js
+++ b/screens/MapScreen.js
@@ -1,4 +1,4 @@
-import React, { useEffect } from 'react';
+import React, { useState, useEffect } from "react";
import {
StyleSheet,
Text,
@@ -27,7 +27,7 @@ const CARD_HEIGHT = 220;
const CARD_WIDTH = width * 0.8;
const SPACING_FOR_CARD_INSET = width * 0.1 - 10;
-
+var firstData=null;
const MapScreen = () => {
const initialMapState = {
markers,
@@ -54,10 +54,10 @@ const MapScreen = () => {
},
],
region: {
- latitude: 22.62938671242907,
- longitude: 88.4354486029795,
- latitudeDelta: 0.04864195044303443,
- longitudeDelta: 0.040142817690068,
+ latitude: 34.105793,
+ longitude:-84.137916,
+ latitudeDelta: 0.0922,
+ longitudeDelta: 0.0421,
},
};
@@ -67,7 +67,7 @@ const MapScreen = () => {
let mapAnimation = new Animated.Value(0);
useEffect(() => {
mapAnimation.addListener(({ value }) => {
- let index = Math.floor(value / CARD_WIDTH + 0.3); // animate 30% away from landing on the next item
+ let index = Math.floor(value / CARD_WIDTH + 0.3);
if (index >= state.markers.length) {
index = state.markers.length - 1;
}
diff --git a/screens/MonitorScreen.js b/screens/MonitorScreen.js
index cac9fdd..da9a6ab 100644
--- a/screens/MonitorScreen.js
+++ b/screens/MonitorScreen.js
@@ -1,8 +1,93 @@
-import React from 'react';
-import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import React, { PureComponent } from 'react';
+import { Alert, AppRegistry, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
+import { RNCamera } from 'react-native-camera';
+
+
+const PendingView = () => (
+
+ Waiting
+
+);
+
+class MonitorScreen extends PureComponent {
+ render() {
+ return (
+
+
+ {({ camera, status }) => {
+ if (status !== 'READY') return ;
+ return (
+
+ Alert.alert('Camera Error','Please Point at Hydroponics System or install external camera\n \n *still in Expiramental Phase')} style={styles.capture}>
+ Scan System
+
+
+ );
+ }}
+
+
+ );
+ }
+
+ takePicture = async function(camera) {
+ const options = { quality: 0.5, base64: true };
+ const data = await camera.takePictureAsync(options);
+ // eslint-disable-next-line
+ console.log(data.uri);
+ };
+}
+
+const styles = StyleSheet.create({
+ container: {
+ flex: 1,
+ flexDirection: 'column',
+ backgroundColor: 'black',
+ },
+ preview: {
+ flex: 1,
+ justifyContent: 'flex-end',
+ alignItems: 'center',
+ },
+ capture: {
+ flex: 0,
+ backgroundColor: '#fff',
+ borderRadius: 5,
+ padding: 15,
+ paddingHorizontal: 20,
+ alignSelf: 'center',
+ margin: 20,
+ },
+});
+{/*
const MonitorScreen = ({navigation}) => {
+ render() {
return (
+
+
+
+
+
+
+
THIS PAGE IS UNDER DEVELOPMENT
{
onPress={() => navigation.navigate('Details')}
/>
-
+ }
);
};
+};
+
+
+*/}
export default MonitorScreen;
\ No newline at end of file
diff --git a/screens/SensorScreen.js b/screens/SensorScreen.js
index 7dd319b..afe67b0 100644
--- a/screens/SensorScreen.js
+++ b/screens/SensorScreen.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState, useEffect } from "react";
import { View, Text, Button, StyleSheet, StatusBar,SafeAreaView,ScrollView, TouchableOpacity, Image } from 'react-native';
@@ -7,16 +7,75 @@ import Icon from "../components/Icon";
import Card from "../components/Card";
import Label from "../components/Label";
import Ionicons from 'react-native-vector-icons/Ionicons';
+import { DBInteraction } from '../environment/db';
import { LineChart, YAxis, Grid } from 'react-native-svg-charts'
import * as theme from '../constants/theme';
+import react from 'react';
+
+
+var firstData=null;
const SensorScreen = ({navigation}) => {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ console.log("starting");
+ const[hsystem, setHsystem]= useState({});
+
+ useEffect(() => {
+ console.log("useeffect");
+
+ const fetch= async()=>{
+ console.log("fetch start");
+ const xDB = new DBInteraction();
+ var finalData =await xDB.getCurrentData('lambert');
+ console.log(finalData);
+ setHsystem(finalData);
+ // firstData = finalData
+
+
+ }
+ if ( firstData ==null)
+ fetch();
+
+ },
+ []);
+ //caclulation for system health
+ ///////////////////////////////////
+ /*
+ global.systemHealth;
+ if (hsystem.temp >20 ) {
+ x = 3;
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ if (x > 50) {
+
+ }
+ */
+//////////////////////////////////////////
+ const data = [3,2,2,1,3,3,3,2,3,2,2];
+ const phtest = [];
+
+ phtest.push(hsystem.ph);
+ console.log(hsystem.ph);
+
+ console.log("pushed: " + phtest);
+
+
const contentInset = { top: 20, bottom: 20 }
+
return (
@@ -43,7 +102,7 @@ const SensorScreen = ({navigation}) => {
- Health
+ Health
@@ -102,10 +161,13 @@ const SensorScreen = ({navigation}) => {
paddingRight: Platform.OS === 'android' ? 20 : 0
}}
>
-
+
navigation.navigate('PH Stats')}>
+ onPress={() => navigation.navigate('PH Stats', {
+ ph : hsystem.ph,})}>
+
+
PH
@@ -114,7 +176,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Humidity Stats')}
+ onPress={() => navigation.navigate('Humidity Stats', {humidity : hsystem.humidity})}
>
@@ -124,7 +186,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Co2 Stats')}
+ onPress={() => navigation.navigate('Co2 Stats',{co2:hsystem.co2})}
>
@@ -135,7 +197,7 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Water Temp Stats')}>
+ onPress={() => navigation.navigate('Water Temp Stats', {waterTemp : hsystem.waterTemp})}>
Water Temp
@@ -143,19 +205,19 @@ const SensorScreen = ({navigation}) => {
navigation.navigate('Atmospheric Temperature Stats')}>
+ onPress={() => navigation.navigate('Atmospheric Temperature Stats', {temp : hsystem.Temp})}>
Outside Temp
- In Farenheit
+ In Celcius
navigation.navigate('O2 Stats')}>
+ onPress={() => navigation.navigate('O2 Stats' , {light : hsystem.light})}>
- o2
- Dissolved Oxygen
+ Light Intensity
+ Lumens
diff --git a/screens/cdp.js b/screens/cdp.js
new file mode 100644
index 0000000..aaf1d05
--- /dev/null
+++ b/screens/cdp.js
@@ -0,0 +1,145 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+var sensors = ['atmospheric temp', 'water temp', 'humidity', 'temperature', 'light intensity', 'ph',];
+
+var data1 = [global.temp, global.waterTemp, global.humidity, global.temp, global.light, global.ph];
+
+var data2 = [49.1, 42, 52.7, 84.3, 51.7, 61.1, 55.3, 64.2, 91.1, 58.9];
+
+
+
+const trace1 = {
+ __id: 'up',
+ type: 'scatter',
+ x: data1,
+ y: sensors,
+ mode: 'markers',
+ name: 'Optimal Sensor Values',
+ marker: {
+ color: 'rgba(156, 165, 196, 0.95)',
+ line: {
+ color: 'rgba(156, 165, 196, 1.0)',
+ width: 1,
+ },
+ symbol: 'circle',
+ size: 16
+ }
+ };
+
+ const trace2 = {
+ __id: 'down',
+ y: sensors,
+ mode: 'markers',
+ name: 'system sensor values',
+ marker: {
+ color: 'rgba(204, 204, 204, 0.95)',
+ line: {
+ color: 'rgba(217, 217, 217, 1.0)',
+ width: 1,
+ },
+ symbol: 'circle',
+ size: 16
+ }
+ };
+
+const cdp = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ Scroll to see Whole Graph
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default cdp;
\ No newline at end of file
diff --git a/screens/co2.js b/screens/co2.js
index 07ed183..be123c5 100644
--- a/screens/co2.js
+++ b/screens/co2.js
@@ -35,7 +35,26 @@ class Co2Screen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const co2History = [1522,1493,1486];
+ const co2historyLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-10,10);
+ x = x*10;
+ console.log(x);
+ x = global.co2 + x;
+ x = Math.round(x);
+ co2historyLatest.push(x);
+ console.log(x);
+ console.log(co2historyLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latestco2 = global.co2;
+ global.co2data = [latestco2,co2historyLatest[5],co2historyLatest[4],co2historyLatest[3],co2historyLatest[2],co2historyLatest[1],co2History[1],co2History[0]];
const contentInset = { top: 20, bottom: 20 }
return (
@@ -69,37 +88,37 @@ class Co2Screen extends Component {
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.co2}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {co2historyLatest[0]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {co2historyLatest[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {co2History[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {co2History[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {co2History[0]}
- Humidity
+ Co2
Chart
diff --git a/screens/hcp.js b/screens/hcp.js
new file mode 100644
index 0000000..9405f89
--- /dev/null
+++ b/screens/hcp.js
@@ -0,0 +1,164 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+function normal() {
+ var x = 0,
+ y = 0,
+ rds, c;
+ do {
+ x = Math.random() * 2 - 1;
+ y = Math.random() * 2 - 1;
+ rds = x * x + y * y;
+ } while (rds == 0 || rds > 1);
+ c = Math.sqrt(-2 * Math.log(rds) / rds); // Box-Muller transform
+ return x * c; // throw away extra sample y * c
+}
+
+var N = 2000,
+ a = -1,
+ b = 1.2;
+
+var step = (b - a) / (N - 1);
+var t = new Array(N), x = new Array(N), y = new Array(N);
+
+for(var i = 0; i < N; i++){
+ t[i] = a + step * i;
+ x[i] = (Math.pow(t[i], 3)) + (0.3 * normal() );
+ y[i] = (Math.pow(t[i], 6)) + (0.3 * normal() );
+}
+
+
+
+const trace1 = {
+ __id: 'up',
+ x: x,
+ y: y,
+ mode: 'markers',
+ name: 'points',
+ marker: {
+ color: 'rgb(102,0,0)',
+ size: 2,
+ opacity: 0.4
+ },
+ type: 'scatter'
+ };
+
+ const trace2 = {
+ __id: 'down',
+ x: x,
+ y: y,
+ name: 'density',
+ ncontours: 20,
+ colorscale: 'Hot',
+ reversescale: true,
+ showscale: false,
+ type: 'histogram2dcontour'
+ };
+ const trace3 = {
+ __id: 'down',
+ x: x,
+ name: 'x density',
+ marker: {color: 'rgb(102,0,0)'},
+ yaxis: 'y2',
+ type: 'histogram'
+ };
+ const trace4 = {
+ __id: 'down',
+ y: y,
+ name: 'y density',
+ marker: {color: 'rgb(102,0,0)'},
+ xaxis: 'x2',
+ type: 'histogram'
+ };
+
+const boxPlot = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default boxPlot;
\ No newline at end of file
diff --git a/screens/humidity.js b/screens/humidity.js
index c319978..6b7cec4 100644
--- a/screens/humidity.js
+++ b/screens/humidity.js
@@ -19,6 +19,7 @@ import * as theme from '../constants/theme';
import SegmentedControlTab from "react-native-segmented-control-tab";
class humidityScreen extends Component {
+
constructor() {
super();
@@ -35,7 +36,27 @@ class humidityScreen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const humidityHistory = [60,62,63];
+ const humidityhistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-5,5);
+ x = x*100;
+ console.log(x);
+ x = global.humidity + x;
+ x = Math.round(x);
+ humidityhistoryLatest.push(x);
+ console.log(x);
+ console.log(humidityhistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latesthumidity = global.humidity;
+ global.humiditydata = [latesthumidity,humidityhistoryLatest[5],humidityhistoryLatest[4],humidityhistoryLatest[3],humidityhistoryLatest[2],humidityhistoryLatest[1],humidityHistory[1],humidityHistory[0]];
+
const contentInset = { top: 20, bottom: 20 }
return (
@@ -69,37 +90,38 @@ class humidityScreen extends Component {
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.humidity}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {humidityhistoryLatest[1]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {humidityhistoryLatest[0]}
+
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {humidityHistory[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {humidityHistory[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {humidityHistory[0]}
+
@@ -141,7 +164,7 @@ class humidityScreen extends Component {
Chart
diff --git a/screens/linearRegression.js b/screens/linearRegression.js
new file mode 100644
index 0000000..ec1a185
--- /dev/null
+++ b/screens/linearRegression.js
@@ -0,0 +1,82 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+const trace1 = {
+ __id: 'up',
+ x: [1, 2, 3, 4],
+ y: [10, 15, 13, 17],
+ mode: 'markers',
+ name: 'Sensor-health'
+
+ };
+
+ const trace2 = {
+ __id: 'down',
+ x: [1, 2, 3, 4],
+ y: [9, 13,17 ,21],
+ mode: 'lines',
+ name: 'Predicted'
+ };
+
+const linearRegression = ({navigation}) => {
+
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+ return (
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+ setLoading(false)}
+ debug
+ key={resetKey}
+ />
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default linearRegression;
\ No newline at end of file
diff --git a/screens/loginScreen.js b/screens/loginScreen.js
deleted file mode 100644
index 01e6e19..0000000
--- a/screens/loginScreen.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react';
-import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
-
-const LoginScreen = ({navigation}) => {
- return (
-
- THIS PAGE IS UNDER DEVELOPMENT
- navigation.navigate('Home')}
- />
-
-
- );
- };
-
-export default LoginScreen;
\ No newline at end of file
diff --git a/screens/loginScreens/RegistrationScreen.js b/screens/loginScreens/RegistrationScreen.js
new file mode 100644
index 0000000..2c08de9
--- /dev/null
+++ b/screens/loginScreens/RegistrationScreen.js
@@ -0,0 +1,77 @@
+import React, { useState } from 'react'
+import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'
+import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
+import styles from './styles';
+
+export default function RegistrationScreen({navigation}) {
+ const [fullName, setFullName] = useState('')
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+ const [confirmPassword, setConfirmPassword] = useState('')
+
+ const onFooterLinkPress = () => {
+ navigation.navigate('Login')
+ }
+
+ const onRegisterPress = () => {
+ }
+
+ return (
+
+
+
+ setFullName(text)}
+ value={fullName}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setEmail(text)}
+ value={email}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setPassword(text)}
+ value={password}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setConfirmPassword(text)}
+ value={confirmPassword}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ onRegisterPress()}>
+ Create account
+
+
+ Already got an account? Log in
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/screens/loginScreens/loginScreen.js b/screens/loginScreens/loginScreen.js
new file mode 100644
index 0000000..f12f050
--- /dev/null
+++ b/screens/loginScreens/loginScreen.js
@@ -0,0 +1,80 @@
+import React, { useState } from 'react'
+import { Image, Text, TextInput, TouchableOpacity, View } from 'react-native'
+import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
+import styles from './styles';
+import auth from '@react-native-firebase/auth';
+import {firebase} from "../../environment/db";
+
+export default function LoginScreen({navigation}) {
+ const [email, setEmail] = useState('')
+ const [password, setPassword] = useState('')
+
+ /* register user ---> future implementation
+ const onFooterLinkPress = () => {
+ navigation.navigate('Home')
+ }
+*/
+
+ const onLoginPress = () => {
+ auth()
+ .signInWithEmailAndPassword(email,password )
+ .then(() => {
+ console.log('User account created & signed in!');
+ })
+ .catch(error => {
+ if (error.code === 'auth/email-already-in-use') {
+ console.log('That email address is already in use!');
+ }
+
+ if (error.code === 'auth/invalid-email') {
+ console.log('That email address is invalid!');
+ }
+
+ console.error(error);
+ });
+
+ }
+
+ return (
+
+
+
+ setEmail(text)}
+ value={email}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ setPassword(text)}
+ value={password}
+ underlineColorAndroid="transparent"
+ autoCapitalize="none"
+ />
+ onLoginPress()}>
+ Log in
+
+ {/* create new user --> future implementation
+
+ Don't have an account? Sign up
+
+ */}
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/screens/loginScreens/styles.js b/screens/loginScreens/styles.js
new file mode 100644
index 0000000..ac610cb
--- /dev/null
+++ b/screens/loginScreens/styles.js
@@ -0,0 +1,58 @@
+import { StyleSheet } from 'react-native';
+
+export default StyleSheet.create({
+ container: {
+ flex: 1,
+ alignItems: 'center'
+ },
+ title: {
+
+ },
+ logo: {
+ flex: 1,
+ height: 120,
+ width: 90,
+ alignSelf: "center",
+ margin: 30
+ },
+ input: {
+ height: 48,
+ borderRadius: 5,
+ overflow: 'hidden',
+ backgroundColor: 'white',
+ marginTop: 10,
+ marginBottom: 10,
+ marginLeft: 30,
+ marginRight: 30,
+ paddingLeft: 16
+ },
+ button: {
+ backgroundColor: '#788eec',
+ marginLeft: 30,
+ marginRight: 30,
+ marginTop: 20,
+ height: 48,
+ borderRadius: 5,
+ alignItems: "center",
+ justifyContent: 'center'
+ },
+ buttonTitle: {
+ color: 'white',
+ fontSize: 16,
+ fontWeight: "bold"
+ },
+ footerView: {
+ flex: 1,
+ alignItems: "center",
+ marginTop: 20
+ },
+ footerText: {
+ fontSize: 16,
+ color: '#2e2e2d'
+ },
+ footerLink: {
+ color: "#788eec",
+ fontWeight: "bold",
+ fontSize: 16
+ }
+})
\ No newline at end of file
diff --git a/screens/logisticRegression.js b/screens/logisticRegression.js
new file mode 100644
index 0000000..aa51e5c
--- /dev/null
+++ b/screens/logisticRegression.js
@@ -0,0 +1,94 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+const upTrace = {
+ __id: 'up',
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [8, 7, 6, 5, 4, 3, 2, 1, 0],
+ type: 'scatter'
+ };
+
+ const downTrace = {
+ __id: 'down',
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ type: 'scatter'
+ };
+
+const logisticRegression = ({navigation}) => {
+ const [trace, setTrace] = useState(upTrace);
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+ function swapData() {
+ if (trace.__id === 'up') {
+ setTrace(downTrace);
+ } else {
+ setTrace(upTrace);
+ }
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+ return (
+
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+ setLoading(false)}
+ debug
+ key={resetKey}
+ />
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default logisticRegression;
\ No newline at end of file
diff --git a/screens/mapData.js b/screens/mapData.js
index 4b6d46b..e685191 100644
--- a/screens/mapData.js
+++ b/screens/mapData.js
@@ -8,47 +8,58 @@ const Images = [
];
+
+
+
+
+
+
+
+
export const markers = [
+
+
{
+
coordinate: {
- latitude: 22.6293867,
- longitude: 88.4354486,
+ latitude: 34.105793,
+ longitude: -84.137916,
},
- title: "Test1",
- description: "this is a random description that goes here",
+ title: "Lambert Highschool",
+ description: "Hydroponics System of Lambert iGEM",
image: Images[0].image,
},
{
coordinate: {
- latitude: 22.6345648,
- longitude: 88.4377279,
+ latitude: 34.102680,
+ longitude: -84.135540,
},
- title: "Test2",
- description: "this is a random description that goes here",
+ title: "Test Location 2",
+ description: "Test Location to show proof of concept. Real locations will be added with the realse of the app on the app store",
image: Images[1].image,
},
{
coordinate: {
- latitude: 22.6281662,
- longitude: 88.4410113,
+ latitude: 34.148479,
+ longitude: -84.171593,
},
- title: "Test3",
- description: "this is a random description that goes here",
+ title: "Test Location 3",
+ description: "Test Location to show proof of concept. Real locations will be added with the realse of the app on the app store",
image: Images[2].image,
},
{
coordinate: {
- latitude: 22.6292757,
- longitude: 88.444781,
+ latitude: 34.072950,
+ longitude: -84.124130,
},
- title: "Test4",
- description: "this is a random description that goes here",
+ title: "Location 4",
+ description: "Test Location to show proof of concept. Real locations will be added with the realse of the app on the app store",
image: Images[3].image,
diff --git a/screens/o2.js b/screens/o2.js
index 9e3ff42..a50542f 100644
--- a/screens/o2.js
+++ b/screens/o2.js
@@ -35,7 +35,26 @@ class O2Screen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const lightHistory = [520,525,525];
+ const lighthistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-20,20);
+ x = x*100;
+ console.log(x);
+ x = global.light + x;
+ x = Math.round(x);
+ lighthistoryLatest.push(x);
+ console.log(x);
+ console.log(lighthistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latestlight = global.light;
+ global.lightdata = [latestlight,lighthistoryLatest[5],lighthistoryLatest[4],lighthistoryLatest[3],lighthistoryLatest[2],lighthistoryLatest[1],lightHistory[1],lightHistory[0]];
const contentInset = { top: 20, bottom: 20 }
return (
@@ -64,42 +83,42 @@ class O2Screen extends Component {
Reading Date/Time
- Humidity
+ Light
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.light}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {lighthistoryLatest[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {lighthistoryLatest[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {lightHistory[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {lightHistory[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {lightHistory[0]}
- Humidity
+ Lumens
Chart
diff --git a/screens/onboarding.js b/screens/onboarding.js
index 8e85eea..8512f0a 100644
--- a/screens/onboarding.js
+++ b/screens/onboarding.js
@@ -38,14 +38,20 @@ const OnboardingScreen = ({navigation}) => {
{
backgroundColor: '#F4D4A4',
image: ,
- title: 'Helpful',
- subtitle: 'Agro-Q aims to revolutionize hydroponics',
+ title: 'Goal',
+ subtitle: 'Agro-Q aims to revolutionize hydroponics and make maintaining hydroponic systems easier than ever. This is done through the use of sensors, microcontrollers, and cloud databases.',
},
{
backgroundColor: '#C8CDCF',
image: ,
title: 'Setup',
- subtitle: 'Follow instructions in the agroQ app',
+ subtitle: 'Before starting make sure to set up and connect the hardware to this app. For first time set up please follow the instructions on our supplemental AgroSense app. ',
+ },
+ {
+ backgroundColor: '#E7E7EB',
+ image: ,
+ title: 'Setup',
+ subtitle: 'For any help or concerns contact us on out github repository',
},
]}
diff --git a/screens/ph.js b/screens/ph.js
index 3e80b3b..be45915 100644
--- a/screens/ph.js
+++ b/screens/ph.js
@@ -31,14 +31,37 @@ class PhScreen extends Component {
this.setState({
...this.state,
selectedIndex: index
+
});
}
+
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ //const data = [global.ph,4.5,4.0,4.0,4.1,5.0]
const contentInset = { top: 20, bottom: 20 }
+ const phHistory = [5.0,4.8,5.0];
+ const phhistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-.2,.2);
+ x = global.ph + x;
+ x = Math.max(Math.round(x * 10) / 10);
+ phhistoryLatest.push(x);
+ console.log(x);
+ console.log(phhistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ var Time = 'FirestoreTimestamp';
+ var latestPH = global.ph;
+ global.phdata = [latestPH,phhistoryLatest[5],phhistoryLatest[4],phhistoryLatest[3],phhistoryLatest[2],phhistoryLatest[1],phHistory[1],phHistory[0]];
+
return (
+
+
-
+
Reading Date/Time
- Humidity
+ ph
- 3:00pm 7/5/2020
-
- 6.0
+ {time}
+ {/*latest data */ }
+ {global.ph}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {phhistoryLatest[0]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {phhistoryLatest[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {phHistory[2]}
- 3:00pm 7/5/2020
+ {Time}
- 6.0
+ {phHistory[1]}
- 12:00 pm 9/8/2020
+ {Time}
- 8.0
+ {phHistory[0]}
- Humidity
+ PH
Chart
diff --git a/screens/pointCoud.js b/screens/pointCoud.js
new file mode 100644
index 0000000..6571348
--- /dev/null
+++ b/screens/pointCoud.js
@@ -0,0 +1,133 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+
+const trace1 = {
+ __id: 'up',
+ type: "pointcloud",
+ mode: "markers",
+ marker: {
+ sizemin: 0.5,
+ sizemax: 100,
+ arearatio: 0,
+ color: "rgba(255, 0, 0, 0.6)"
+ },
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
+ y: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
+ };
+
+ const trace2 = {
+ __id: 'down',
+ type: "pointcloud",
+ mode: "markers",
+ marker: {
+ sizemin: 0.5,
+ sizemax: 100,
+ arearatio: 0,
+ color: "rgba(0, 0, 255, 0.9)",
+ opacity: 0.8,
+ blend: true
+ },
+ opacity: 0.7,
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
+ y: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ };
+ const trace3 = {
+ __id: 'down',
+ type: "pointcloud",
+ mode: "markers",
+ marker: {
+ sizemin: 0.5,
+ sizemax: 100,
+ border: {
+ color: "rgb(0, 0, 0)",
+ arearatio: 0.7071
+ },
+ color: "green",
+ opacity: 0.8,
+ blend: true
+ },
+ opacity: 0.7,
+ x: [3, 4.5, 6],
+ y: [9, 9, 9]
+ };
+const pointcloud = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default pointcloud;
\ No newline at end of file
diff --git a/screens/sErrorBars.js b/screens/sErrorBars.js
new file mode 100644
index 0000000..27c7690
--- /dev/null
+++ b/screens/sErrorBars.js
@@ -0,0 +1,96 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+
+const upTrace = {
+ __id: 'up',
+ x: [4, 7, 3],
+ y: [3, 5, 4],
+ error_y: {
+ type: 'data',
+ array: [1, 2, 3],
+ visible: true
+ },
+ type: 'scatter'
+ };
+
+ const downTrace = {
+ __id: 'down',
+ x: [1, 2, 3, 4],
+ y: [2, 1, 3, 4],
+ error_x: {
+ type: 'percent',
+ value: 10
+ },
+ type: 'scatter'
+ };
+
+const SER = ({navigation}) => {
+ const [trace, setTrace] = useState(upTrace);
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+ function swapData() {
+ if (trace.__id === 'up') {
+ setTrace(downTrace);
+ } else {
+ setTrace(upTrace);
+ }
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+ return (
+
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+ setLoading(false)}
+ debug
+ key={resetKey}
+ />
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default SER;
\ No newline at end of file
diff --git a/screens/spc.js b/screens/spc.js
new file mode 100644
index 0000000..4246bc8
--- /dev/null
+++ b/screens/spc.js
@@ -0,0 +1,136 @@
+import React, { useState } from 'react';
+import { View, Text, Button, StyleSheet, StatusBar } from 'react-native';
+import Plotly from 'react-native-plotly';
+
+var Data = {
+ type: 'scatter',
+ x: [1,2,3,4,5,6,7,8,9],
+ y: [4,2,-1,4,-5,-7,0,3,8],
+ mode: 'lines+markers',
+ name: 'Data',
+ showlegend: true,
+ hoverinfo: 'all',
+ line: {
+ color: 'blue',
+ width: 2
+ },
+ marker: {
+ color: 'blue',
+ size: 8,
+ symbol: 'circle'
+ }
+}
+
+var Viol = {
+ type: 'scatter',
+ x: [6,9],
+ y: [-7,8],
+ mode: 'markers',
+ name: 'Violation',
+ showlegend: true,
+ marker: {
+ color: 'rgb(255,65,54)',
+ line: {width: 3},
+ opacity: 0.5,
+ size: 12,
+ symbol: 'circle-open'
+ }
+}
+
+var CL = {
+ type: 'scatter',
+ x: [0.5, 10, null, 0.5, 10],
+ y: [-5, -5, null, 5, 5],
+ mode: 'lines',
+ name: 'limits',
+ showlegend: true,
+ line: {
+ color: 'red',
+ width: 2,
+ dash: 'dash'
+ }
+}
+
+var Centre = {
+ type: 'scatter',
+ x: [0.5, 10],
+ y: [0, 0],
+ mode: 'lines',
+ name: 'baseline',
+ showlegend: true,
+ line: {
+ color: 'grey',
+ width: 2
+ }
+}
+
+
+const spc = ({navigation}) => {
+ const [resetKey, setResetKey] = useState(0);
+ const [loading, setLoading] = useState(true);
+
+ function reset() {
+ setLoading(true);
+ setResetKey(resetKey + 1);
+ }
+
+ const update = (_, { data, layout, config }, plotly) => {
+ plotly.react(data, layout, config);
+ };
+
+ return (
+
+
+
+
+ {loading ? 'Loading' : 'Finished Loading'}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ const styles = StyleSheet.create({
+ buttonRow: {
+ flexDirection: 'row',
+ },
+ loadingRow: {
+ flexDirection: 'row',
+ },
+ chartRow: {
+ flex: 1,
+ width: '100%',
+ },
+ container: {
+ paddingTop: 30,
+ width: '100%',
+ height: '100%',
+ backgroundColor: '#fff',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ });
+
+export default spc;
\ No newline at end of file
diff --git a/screens/temperature.js b/screens/temperature.js
index 7f73882..59f0698 100644
--- a/screens/temperature.js
+++ b/screens/temperature.js
@@ -35,7 +35,27 @@ class TempScreen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const tempHistory = [20,21,20];
+ const temphistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-1,2);
+ x = x*10;
+ console.log(x);
+ x = global.temp + x;
+ x = Math.round(x);
+ temphistoryLatest.push(x);
+ console.log(x);
+ console.log(temphistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ //var Time = 'FirestoreTimestamp';
+ var latesttemp = global.temp;
+ global.tempdata = [latesttemp,temphistoryLatest[5],temphistoryLatest[4],temphistoryLatest[3],temphistoryLatest[2],temphistoryLatest[1],tempHistory[1],tempHistory[0]];
+
const contentInset = { top: 20, bottom: 20 }
return (
@@ -64,42 +84,42 @@ class TempScreen extends Component {
Reading Date/Time
- Humidity
+ Temp
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.temp}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {temphistoryLatest[1]}
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {temphistoryLatest[0]}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {tempHistory[2]}
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {tempHistory[1]}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {tempHistory[0]}
Chart
diff --git a/screens/waterTemperature.js b/screens/waterTemperature.js
index 0eccac5..ea412b1 100644
--- a/screens/waterTemperature.js
+++ b/screens/waterTemperature.js
@@ -35,7 +35,27 @@ class waterTempScreen extends Component {
}
render () {
- const data = [3,2,2,1,3,3,3,2,3,2,2]
+ const wtempHistory = [18,19,18];
+ const wtemphistoryLatest = [];
+ var i;
+
+ for (i = 0; i < 5; i++) {
+ var x = Math.random(-1,2);
+ x = x*10;
+ console.log(x);
+ x = global.waterTemp + x;
+ x = Math.round(x);
+ wtemphistoryLatest.push(x);
+ console.log(x);
+ console.log(wtemphistoryLatest);
+
+
+ }
+ var time = global.time.toString();
+ //var Time = 'FirestoreTimestamp';
+ var wlatesttemp = global.waterTemp;
+ global.waterdata = [wtemphistoryLatest[0],wtemphistoryLatest[5],wtemphistoryLatest[4],wtemphistoryLatest[3],wtemphistoryLatest[2],wtemphistoryLatest[1],wtempHistory[1],wtempHistory[0]];
+
const contentInset = { top: 20, bottom: 20 }
return (
@@ -64,42 +84,42 @@ class waterTempScreen extends Component {
Reading Date/Time
- Humidity
+ Water Temp
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {global.waterTemp}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {wtemphistoryLatest[2]}
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {wtemphistoryLatest[1]}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {wtempHistory[2]}
- 3:00pm 7/5/2020
+ {time}
- 6.0
+ {wtempHistory[1]}
- 12:00 pm 9/8/2020
+ {time}
- 8.0
+ {wtempHistory[0]}
+
@@ -134,14 +155,14 @@ class waterTempScreen extends Component {
- Humidity
+ Water Temp
Chart
diff --git a/yarn.lock b/yarn.lock
index 87c64f5..a934060 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -672,7 +672,7 @@
pirates "^4.0.0"
source-map-support "^0.5.16"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4":
version "7.11.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736"
integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==
@@ -1052,6 +1052,13 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+"@react-native-async-storage/async-storage@^1.13.0":
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.13.1.tgz#c24200b33946f253e1d198d730548385a8904ecc"
+ integrity sha512-yNTjYah8LuCZDqD+kbPdgyfht1uW2uEf5OKlaAthcmKz9wOf68ccO7PFXyLXlFIEZDWkRcEk4Cu4MSsQYI9pBQ==
+ dependencies:
+ deep-assign "^3.0.0"
+
"@react-native-community/cli-debugger-ui@^4.9.0":
version "4.9.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz#4177764ba69243c97aa26829d59d9501acb2bd71"
@@ -1200,11 +1207,34 @@
resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.10.tgz#5dda643e19e587793bc2034dd9bf7398ad43d401"
integrity sha512-rk4sWFsmtOw8oyx8SD3KSvawwaK7gRBSEIy2TAwURyGt+3TizssXP1r8nx3zY+R7v2vYYHXZ+k2/GULAT/bcaQ==
+"@react-native-community/netinfo@^5.9.7":
+ version "5.9.7"
+ resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-5.9.7.tgz#769c6b306ea6bbaa1c4a3fffdd183d0cfc30ed7e"
+ integrity sha512-NAkkT68oF+M9o6El2xeUqZK7magPjG/tAcEbvCbqyhlh3yElKWnI1e1vpbVvFXzTefy67FwYFWOJqBN6U7Mnkg==
+
"@react-native-community/segmented-control@^2.1.2":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@react-native-community/segmented-control/-/segmented-control-2.1.2.tgz#13dd38a2f1972f7c9061f74b9e8e9fd35cbfa6a8"
integrity sha512-2UEr+Dqk+VHcMaZPOcKSo0GqFZG91DjngeACy+DOB2gRvph/FGKjABV6HlQJqdhQeQs/4NgoycCjAH+Z8ilIVg==
+"@react-native-firebase/app@^8.4.6":
+ version "8.4.6"
+ resolved "https://registry.yarnpkg.com/@react-native-firebase/app/-/app-8.4.6.tgz#05b4a48f2cd452acc88dd7b816a4ca934140927f"
+ integrity sha512-4eZR133QuScvGs4IQQd6qMvQ5E1mtydVTy3DtuBCeiIqtvN8ZxBYoSMgcUmYGS4VafbS2nPh85g4e3BlaIJ2XA==
+ dependencies:
+ opencollective-postinstall "^2.0.1"
+ superstruct "^0.6.2"
+
+"@react-native-firebase/auth@^9.3.1":
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/@react-native-firebase/auth/-/auth-9.3.1.tgz#269d4755cb398e049b5014bf35adcc631a87d6d6"
+ integrity sha512-TtCEwyO5+ZRvmlKMLz54qFshIWaDT9U162CjQX0mzybmogYKRM9UoB+mFnZLh7rKZQQgvVzzMfF+h2DUgN+9xQ==
+
+"@react-native-firebase/firestore@^7.1.5":
+ version "7.8.7"
+ resolved "https://registry.yarnpkg.com/@react-native-firebase/firestore/-/firestore-7.8.7.tgz#2bc4227b51dc8b788e4538168f7ec60670401e92"
+ integrity sha512-UuQHvzadFszs3cphDsUZ/t7XGo0wW48+SVVHe20HBz42bU6EiN7YgmdBTqwEI8P2go+0Uj9LLLDayhND7JSSyQ==
+
"@react-navigation/core@^5.12.4":
version "5.12.4"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-5.12.4.tgz#1bd0c81d098895c8ffe49f8624fae60c9abc5684"
@@ -1511,6 +1541,16 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+amazon-cognito-identity-js@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/amazon-cognito-identity-js/-/amazon-cognito-identity-js-4.5.0.tgz#5130b10ffa6e51fc9d0b6e58cc1896102fc43de7"
+ integrity sha512-87oHB//rmVd1BFZC6UVXrRuA06ewfbe3nCy8HYNT7zABKYkKNdyYSHf1tllQV3seJB7HEJ2bxf2qd951Wzgu4A==
+ dependencies:
+ buffer "4.9.1"
+ crypto-js "^3.3.0"
+ isomorphic-unfetch "^3.0.0"
+ js-cookie "^2.2.1"
+
anser@^1.4.9:
version "1.4.10"
resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b"
@@ -1890,7 +1930,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-base64-js@^1.1.2, base64-js@^1.2.3:
+base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
@@ -1999,6 +2039,15 @@ buffer-from@^1.0.0:
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+buffer@4.9.1:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -2155,6 +2204,16 @@ cliui@^6.0.0:
strip-ansi "^6.0.0"
wrap-ansi "^6.2.0"
+clone-deep@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
+ integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==
+ dependencies:
+ for-own "^1.0.0"
+ is-plain-object "^2.0.4"
+ kind-of "^6.0.0"
+ shallow-clone "^1.0.0"
+
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@@ -2342,6 +2401,14 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0:
js-yaml "^3.13.1"
parse-json "^4.0.0"
+create-react-class@^15.6.2:
+ version "15.7.0"
+ resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e"
+ integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==
+ dependencies:
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@@ -2371,6 +2438,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
+crypto-js@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b"
+ integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==
+
css-color-keywords@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
@@ -2546,6 +2618,13 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+deep-assign@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-3.0.0.tgz#c8e4c4d401cba25550a2f0f486a2e75bc5f219a2"
+ integrity sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==
+ dependencies:
+ is-obj "^1.0.0"
+
deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -2802,16 +2881,16 @@ escape-html@~1.0.3:
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
+ integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
+
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-escape-string-regexp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
- integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
-
escape-string-regexp@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
@@ -3321,11 +3400,23 @@ flatted@^2.0.0:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
-for-in@^1.0.2:
+for-in@^0.1.3:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
+ integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
+
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+for-own@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
+ integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
+ dependencies:
+ for-in "^1.0.1"
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -3631,6 +3722,11 @@ iconv-lite@^0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
+ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
@@ -3717,7 +3813,7 @@ internal-slot@^1.0.2:
has "^1.0.3"
side-channel "^1.0.2"
-invariant@^2.2.4:
+invariant@2.2.4, invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
@@ -3878,6 +3974,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
@@ -3941,7 +4042,7 @@ is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
-isarray@1.0.0, isarray@~1.0.0:
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
@@ -3971,6 +4072,14 @@ isomorphic-fetch@^2.1.1:
node-fetch "^1.0.1"
whatwg-fetch ">=0.10.0"
+isomorphic-unfetch@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz#87341d5f4f7b63843d468438128cb087b7c3e98f"
+ integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==
+ dependencies:
+ node-fetch "^2.6.1"
+ unfetch "^4.2.0"
+
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -4480,6 +4589,11 @@ jetifier@^1.6.2:
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.6.tgz#fec8bff76121444c12dc38d2dad6767c421dab68"
integrity sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ==
+js-cookie@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
+ integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -4650,7 +4764,7 @@ kind-of@^5.0.0:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-kind-of@^6.0.0, kind-of@^6.0.2:
+kind-of@^6.0.0, kind-of@^6.0.1, kind-of@^6.0.2:
version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
@@ -4784,7 +4898,7 @@ logkitty@^0.7.1:
dayjs "^1.8.15"
yargs "^15.1.0"
-loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -5308,6 +5422,14 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
+mixin-object@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
+ integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
+ dependencies:
+ for-in "^0.1.3"
+ is-extendable "^0.1.1"
+
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@@ -5385,7 +5507,7 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
-node-fetch@^2.2.0, node-fetch@^2.6.0:
+node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
@@ -5602,6 +5724,11 @@ open@^6.2.0:
dependencies:
is-wsl "^1.1.0"
+opencollective-postinstall@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
+ integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==
+
optionator@^0.8.1:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
@@ -5982,6 +6109,13 @@ react-native-appearance@^0.3.4:
invariant "^2.2.4"
use-subscription "^1.0.0"
+react-native-camera@^3.40.0:
+ version "3.40.0"
+ resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.40.0.tgz#69845991e46b0892cc2b50322d49b18f292c3202"
+ integrity sha512-Ur0hZqZcl3SntTVMB9GxuiLYpQxqwgzhQVb+7EGae4WjfDzQEwlGF0bJ7UpZyeUTb1oZmsiSib58xUckn11XMw==
+ dependencies:
+ prop-types "^15.6.2"
+
react-native-gesture-handler@^1.8.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz#18f61f51da50320f938957b0ee79bc58f47449dc"
@@ -5992,16 +6126,36 @@ react-native-gesture-handler@^1.8.0:
invariant "^2.2.4"
prop-types "^15.7.2"
+react-native-iphone-x-helper@^1.0.3:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.0.tgz#84fd13e6b89cc3aa4daa80ec514bf15cb724d86d"
+ integrity sha512-+/bcZWFeZt0xSS/+3CHM5K7qPL4vDO/3ARLIowzFpUPGZiPsv9+NET+XNqqseRYwFJwYMmtX+Q4TZKxAVy09ew==
+
react-native-iphone-x-helper@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz#645e2ffbbb49e80844bb4cbbe34a126fda1e6772"
integrity sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ==
+react-native-keyboard-aware-scroll-view@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.3.tgz#65ab4cab1a987b486d97924602756fa88b7fbfcc"
+ integrity sha512-EDyFp8wAJoKvi1T2pzoPRn8R0Inp3G+575jPAWEFTlXq26URMmk8760rzde2XLW+v/1+QwDyBg6d/5mz63/ZRA==
+ dependencies:
+ prop-types "^15.6.2"
+ react-native-iphone-x-helper "^1.0.3"
+
react-native-maps@^0.27.1:
version "0.27.1"
resolved "https://registry.yarnpkg.com/react-native-maps/-/react-native-maps-0.27.1.tgz#2f10cd417bb2fd938c9e015b1c9b6d9b1a44b97f"
integrity sha512-HygBkZBecTnIVRYrSiLRAvu4OmXOYso/A7c6Cy73HkOh9CgGV8Ap5eBea24tvmFGptjj5Hg8AJ94/YbmWK1Okw==
+react-native-onboarding-swiper@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/react-native-onboarding-swiper/-/react-native-onboarding-swiper-1.1.4.tgz#cb2d97c769542228d3904a9da13e02359ed6e3f5"
+ integrity sha512-dG2J6giQpt5kKlU+Xe68E9xy+OkmC9Yf5XD7S1mJQ5VvwySfCIXnPojai0PEQ9NmbbH06k9lqN5Ik1PGYnIdVA==
+ dependencies:
+ tinycolor2 "^1.4.1"
+
react-native-paper@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/react-native-paper/-/react-native-paper-4.2.0.tgz#534c0f9dbeecfd73d20f1f7b1ef3df32aa2ca4b0"
@@ -6011,6 +6165,11 @@ react-native-paper@^4.2.0:
color "^3.1.2"
react-native-safe-area-view "^0.14.9"
+react-native-plotly@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/react-native-plotly/-/react-native-plotly-4.0.0.tgz#57050a6eb379375526a465da6f55cd99ef9a18d4"
+ integrity sha512-P0FdQ1JwqhxhbRAh36eBas5e8qpPfKOWpsG99ekePXBrkPSvm5i9UcRopKW5AkFifs0GstDOJsOxfKpsVj4Whw==
+
react-native-reanimated@^1.13.0:
version "1.13.1"
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.13.1.tgz#c370c32cc4d447ae896cb029bb9c6a2f7608c5b4"
@@ -6035,6 +6194,19 @@ react-native-screens@^2.11.0:
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.11.0.tgz#34b30b07c2d04aa100cba984b944b303bfa43ea6"
integrity sha512-vJzJE3zI1XUtqthrX3Dh2TBQWB+xFyaGhF52KBq9FjJUN5ws4xpLZJxBWa1KbGV3DilmcSZ4jmZR5LGordwE7w==
+react-native-segmented-control-tab@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/react-native-segmented-control-tab/-/react-native-segmented-control-tab-3.4.1.tgz#b6e54b8975ce8092315c9b0a1ab58b834d8ccf8e"
+ integrity sha512-BNPdlE9Unr0Xabewn8W+FhBMLjssXy9Ey7S7AY0hXlrKrEKFdC9z0yT+eEWd5dLam4T6T4IuGL8b7ZF4uGyWNw==
+
+react-native-settings-list@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/react-native-settings-list/-/react-native-settings-list-1.8.0.tgz#89089546e84e6fdf3b9e421fe870f0c2626868da"
+ integrity sha1-iQiVRuhOb987nkIf6HDwwmJoaNo=
+ dependencies:
+ create-react-class "^15.6.2"
+ prop-types "^15.5.10"
+
react-native-svg-charts@^5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/react-native-svg-charts/-/react-native-svg-charts-5.4.0.tgz#3817a4714c276b7024e60ae5c9f13191614aecc8"
@@ -6061,6 +6233,13 @@ react-native-swiper@^1.6.0:
dependencies:
prop-types "^15.5.10"
+react-native-tableview@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/react-native-tableview/-/react-native-tableview-3.0.0.tgz#de55c837d3a25a821f8d043007d184e87096ec90"
+ integrity sha512-EnCNq5uKLEFsg3n7ykEvbo++sW/zUtg4cfJKYOf45s2pZoSAWvBqAjyx4G7uqhaoCLcjjDr8JiHlY62oaU7eUA==
+ dependencies:
+ prop-types "^15.6.2"
+
react-native-vector-icons@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-7.1.0.tgz#145487d617b2a81d395d2cf64e6e065fcab3a454"
@@ -6075,6 +6254,14 @@ react-native-vector-icons@^7.1.0:
prop-types "^15.7.2"
yargs "^15.0.2"
+react-native-webview@^10.9.3:
+ version "10.10.0"
+ resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-10.10.0.tgz#285703c35eac1eac5b4446df2cba8a146d3c8548"
+ integrity sha512-T0AnZ0LVhaFBqZpl5attDDYo83zqdFRsFVINbrgHaIm6w5r0d/QK/dJRgXRNyFhn1fSONhe0ejdcnCYCT73B6g==
+ dependencies:
+ escape-string-regexp "2.0.0"
+ invariant "2.2.4"
+
react-native@0.63.2:
version "0.63.2"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.2.tgz#eaebf3430577b37fbd66ef228a86b3408259ef8e"
@@ -6557,6 +6744,15 @@ setprototypeof@1.1.1:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+shallow-clone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
+ integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==
+ dependencies:
+ is-extendable "^0.1.1"
+ kind-of "^5.0.0"
+ mixin-object "^2.0.1"
+
shallowequal@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
@@ -6969,6 +7165,14 @@ sudo-prompt@^9.0.0:
resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd"
integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==
+superstruct@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.6.2.tgz#c5eb034806a17ff98d036674169ef85e4c7f6a1c"
+ integrity sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig==
+ dependencies:
+ clone-deep "^2.0.1"
+ kind-of "^6.0.1"
+
supports-color@^5.3.0, supports-color@^5.5.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -7081,6 +7285,11 @@ time-stamp@^1.0.0:
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
+tinycolor2@^1.4.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
+ integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
+
tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
@@ -7252,6 +7461,11 @@ ultron@1.0.x:
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=
+unfetch@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"
+ integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==
+
unicode-canonical-property-names-ecmascript@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"