diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..cfac840
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+squarenotsquare/ios/squarenotsquare.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+squarenotsquare/ios/squarenotsquare.xcworkspace/contents.xcworkspacedata
+squarenotsquare/ios/squarenotsquare.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
+.DS_Store
diff --git a/README.md b/README.md
index a328e9d..62d8dd2 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,32 @@
# squarenotsquare
+## Dependencies
+- Node version 18
+
+## Running the app
+- Clone the repo
+- Navigate to the directory in a cli with node accessible
+- Run the command **npm install**
+- Wait for the installation to complete
+- Start an Android or iOS simulator (or connect a device with USB debugging configured)
+- In the cli, pass the command **npm run android** or **npm run ios**
+- Wait for the build to complete and install on the device
+
+## Coding Conventions
+- Lower-case single-word folder names
+- Upper-case single-word file names
+- Upper-case exports IF export is an object or reference
+- Lower-case exports IF export is a function
+
+## Testing Scripts
+- "npm run **test**": run all tests with minimal console output
+- "npm run **testVerbose**": run all tests with all console output
+- "npm run **testCoverage**": produce coverage report for all project code
+- "npm run **testActionCreators**": only test action creators
+- "npm run **testApp**": only test app screens and components
+- "npm run **testMigrations**": only test database migrations
+- "npm run **testRepos**": only test database repositories
+- "npm run **testDB**": only test database setup and API calls
+- "npm run **testNav**": only test navigation
+- "npm run **testThemes**": only test app theming and styles setup
+- "npm run **testServices**": only test app services
\ No newline at end of file
diff --git a/squarenotsquare/.gitignore b/squarenotsquare/.gitignore
index 0574a1a..ff0a04c 100644
--- a/squarenotsquare/.gitignore
+++ b/squarenotsquare/.gitignore
@@ -63,8 +63,7 @@ buck-out/
/vendor/bundle/
#VScode
-launch.json
-settings.json
+/.vscode/
#jest
coverage/
\ No newline at end of file
diff --git a/squarenotsquare/Launcher.js b/squarenotsquare/SquareNotSquare.js
similarity index 100%
rename from squarenotsquare/Launcher.js
rename to squarenotsquare/SquareNotSquare.js
diff --git a/squarenotsquare/__mock__/mockKeyStore.js b/squarenotsquare/__mock__/mockKeyStore.js
index 4f681f4..60369e3 100644
--- a/squarenotsquare/__mock__/mockKeyStore.js
+++ b/squarenotsquare/__mock__/mockKeyStore.js
@@ -1,32 +1,29 @@
-class MockKeyStore {
- async remove(key) {
- if (key === 'notakey') {
- throw ('Key not found');
- }
- return true;
+
+export async function resetInternetCredentials(key) {
+ if (key === 'notakey') {
+ throw ('Key not found');
}
+ return true;
+}
- async set(key, value) {
- if (key === 'savefailed'){
- throw ('Failed to save key');
- }
- return true;
+export async function setInternetCredentials(key, value, placeholder) {
+ if (key === 'savefailed'){
+ throw ('Failed to save key');
}
-
- async get(key) {
- if (key === 'isNull'){
- return null;
- } else if (key === 'negTest') {
- return '-1';
- } else if (key === 'notakey') {
- throw ('Key not found');
- } else {
- return '1234567890';
- }
- }
+ return true;
}
-export default RNSecureKeyStore = new MockKeyStore();
+export async function getInternetCredentials(key) {
+ if (key === 'isNull'){
+ return false;
+ } else if (key === 'negTest') {
+ return {username: '-1'};
+ } else if (key === 'notakey') {
+ throw ('Key not found');
+ } else {
+ return {username: '1234567890'};
+ }
+}
export const ACCESSIBLE = {
AFTER_FIRST_UNLOCK :'AccessibleAfterFirstUnlock',
diff --git a/squarenotsquare/__mock__/mockMaterialIcons.js b/squarenotsquare/__mock__/mockMaterialIcons.js
new file mode 100644
index 0000000..7a1dc3a
--- /dev/null
+++ b/squarenotsquare/__mock__/mockMaterialIcons.js
@@ -0,0 +1,16 @@
+import React from "react";
+import { View } from "react-native";
+
+function MaterialIcon (props) {
+ function loadFont(){
+ return true;
+ }
+
+ return (
+
+
+
+ )
+}
+
+export default MaterialIcon;
\ No newline at end of file
diff --git a/squarenotsquare/__mock__/mockRealm.js b/squarenotsquare/__mock__/mockRealm.js
deleted file mode 100644
index e9fe715..0000000
--- a/squarenotsquare/__mock__/mockRealm.js
+++ /dev/null
@@ -1,135 +0,0 @@
-// https://github.com/realm/realm-js/issues/370#issuecomment-270849466
-export default class MockRealm {
- constructor(params) {
- this.schema = {};
- this.schemaVersion = params.schemaVersion;
- this.callbackList = [];
- this.data = {};
- this.schemaCallbackList = {};
- params.schema.forEach((schema) => {
- this.data[schema.name] = {};
- });
- params.schema.forEach((schema) => {
- this.schema[schema.name] = schema;
- });
- this.lastLookedUpModel = null;
- }
-
- objects(schemaName) {
- this.lastLookedUpModel = schemaName;
- const objects = Object.values(this.data[schemaName]);
- objects.values = () => objects;
- objects.sorted = () => this.compareFunc ? objects.sort(this.compareFunc) : objects.sort();
- objects.addListener = (cb) => {
- if (this.schemaCallbackList[schemaName]) {
- this.schemaCallbackList[schemaName].push(cb);
- } else {
- this.schemaCallbackList[schemaName] = [cb];
- }
- };
- objects.removeListener = () => {};
- objects.filtered = this.filtered ? this.filtered.bind(this, schemaName) : () => objects;
- return objects;
- }
-
- write(fn) {
- this.writing = true;
- fn();
- this.writing = false;
- }
-
- create(schemaName, object) {
- const modelObject = object;
- const properties = this.schema[schemaName].schema.properties;
- Object.keys(properties).forEach((key) => {
- if (modelObject[key] && modelObject[key].model) {
- this.data[modelObject[key].model][modelObject[key].id] = this.create(
- modelObject[key].model, modelObject[key],
- );
- } else if (modelObject[key] && modelObject[key].length && modelObject[key][0].model) {
- modelObject[key].forEach((obj) => {
- this.data[modelObject[key][0].model][obj.id] = obj;
- });
- modelObject[key].filtered = this.filtered ? this.filtered : () => modelObject[key];
- modelObject[key].sorted = () => modelObject[key].sort();
- } else if (modelObject[key] === undefined) {
- if (typeof properties[key] === 'object' && properties[key].optional) {
- modelObject[key] = null;
- }
- if (typeof properties[key] === 'object' && ['list', 'linkingObjects'].includes(properties[key].type)) {
- modelObject[key] = [];
- modelObject[key].filtered = () => [];
- modelObject[key].sorted = () => [];
- }
- }
- });
-
- this.data[schemaName][modelObject.id] = modelObject;
- if (this.writing) {
- if (this.schemaCallbackList[schemaName]) {
- this.schemaCallbackList[schemaName].forEach(cb => cb(schemaName, {
- insertions: { length: 1 },
- modifications: { length: 0 },
- deletions: { length: 0 },
- }));
- }
- this.callbackList.forEach((cb) => { cb(); });
- }
- return modelObject;
- }
-
- objectForPrimaryKey(model, id) {
- this.lastLookedUpModel = model;
- return this.data[model][id];
- }
-
- delete(object) {
- if (this.lastLookedUpModel || object.model) {
- const model = object.model ? object.model : this.lastLookedUpModel
- if (Array.isArray(object)) {
- object.forEach((item) => {
- delete this.data[model][item.id];
- });
- }
- delete this.data[model][object.id];
- if (this.writing) {
- if (this.schemaCallbackList[model]) {
- this.schemaCallbackList[model].forEach(cb => cb(model, {
- insertions: { length: 0 },
- modifications: { length: 0 },
- deletions: { length: 1 },
- }));
- }
- this.callbackList.forEach((cb) => { cb(); });
- }
- }
- }
-
- deleteAll() {
- Object.keys(this.schema).forEach((key) => {
- if (this.writing && this.schemaCallbackList[this.schema[key].name]) {
- this.schemaCallbackList[this.schema[key].name].forEach(cb => cb(key, {
- insertions: { length: 0 },
- modifications: { length: 0 },
- deletions: { length: Object.values(this.data[this.schema[key].name]).length },
- }));
- }
- this.data[this.schema[key].name] = {};
- });
- if (this.writing) this.callbackList.forEach((cb) => { cb(); });
- }
-
- addListener(event, callback) {
- this.callbackList.push(callback);
- }
-
- prepareData(schemaName, objects) {
- objects.forEach((object) => {
- this.create(schemaName, object);
- });
- }
- }
-
- MockRealm.Object = class Object {
- isValid() { return true; }
- };
\ No newline at end of file
diff --git a/squarenotsquare/__mock__/mockRealmObject.js b/squarenotsquare/__mock__/mockRealmObject.js
index cebcc79..3337e6a 100644
--- a/squarenotsquare/__mock__/mockRealmObject.js
+++ b/squarenotsquare/__mock__/mockRealmObject.js
@@ -19,6 +19,7 @@ export default class MockRealm{
objects(repoName){
let objects = this[repoName];
objects.filtered = this.filtered ? this.filtered.bind(this, repoName) : () => objects;
+ objects.sorted = this.sorted ? this.sorted.bind(this, repoName) : () => objects;
return objects;
}
diff --git a/squarenotsquare/__tests__/App-test.js b/squarenotsquare/__tests__/App-test.js
index 6ecec53..ba745e2 100644
--- a/squarenotsquare/__tests__/App-test.js
+++ b/squarenotsquare/__tests__/App-test.js
@@ -1,5 +1,7 @@
import 'react-native';
import React from 'react';
+import { Provider } from 'react-redux';
+import ConfigStore from '../src/redux/CreateStore';
// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';
@@ -7,27 +9,38 @@ import SquareStack from '../src/navigation/SquareStack';
import Game from '../src/screens/Game';
import HighScore from '../src/screens/HighScore';
import Home from '../src/screens/Home';
-import Settings from '../src/screens/Settings';
import Splash from '../src/screens/Splash';
+jest.useFakeTimers()
it('renders square stack', () => {
- renderer.create();
+ const mockStore = ConfigStore;
+ renderer.create();
});
it('renders game component', () => {
- renderer.create();
+ const mockStore = ConfigStore;
+ renderer.create(
+
+
+ );
});
it('renders highscore component', () => {
- renderer.create();
+ const mockStore = ConfigStore;
+ renderer.create(
+
+
+
+ );
});
it('renders home component', () => {
- renderer.create();
-});
-
-it('renders settings component', () => {
- renderer.create();
+ const mockStore = ConfigStore;
+ renderer.create(
+
+
+
+ );
});
it('renders splash component', () => {
diff --git a/squarenotsquare/__tests__/DB-test.js b/squarenotsquare/__tests__/DB-test.js
index 09c6dbe..0907577 100644
--- a/squarenotsquare/__tests__/DB-test.js
+++ b/squarenotsquare/__tests__/DB-test.js
@@ -1,5 +1,5 @@
-import { initDB } from '../src/realm/dbInit';
-import dbAPI from '../src/realm/dbAPI';
+import { initDB } from '../src/realm/DbInit';
+import DbAPI from '../src/realm/DbAPI';
test('Realm DB inits', () => {
return initDB('negTest', 'negTest')
@@ -30,33 +30,33 @@ test('Realm DB returns null after exceptions', () => {
});
test('dbAPI calls system repo getAllSystemValues()', () => {
- return initDB('isNull', 'isNull')
+ return DbAPI.initDB('isNull', 'isNull')
.then( () => {
- let returned = dbAPI.getAllSystemValues();
+ let returned = DbAPI.getAllSystemValues();
expect(returned).toEqual({});
});
});
test('dbAPI calls system repo createSystemValue()', () => {
- return initDB('isNull', 'isNull')
+ return DbAPI.initDB('isNull', 'isNull')
.then( () => {
- let returned = dbAPI.createSystemValue();
+ let returned = DbAPI.createSystemValue();
expect(returned).toEqual(true);
});
});
test('dbAPI calls system repo deleteSystemValue()', () => {
- return initDB('isNull', 'isNull')
+ return DbAPI.initDB('isNull', 'isNull')
.then( () => {
- let returned = dbAPI.deleteSystemValue();
+ let returned = DbAPI.deleteSystemValue();
expect(returned).toEqual(true);
});
});
test('dbAPI calls system repo getSystemValue()', () => {
- return initDB('isNull', 'isNull')
+ return DbAPI.initDB('isNull', 'isNull')
.then( () => {
- let returned = dbAPI.getSystemValue('notakey');
+ let returned = DbAPI.getSystemValue('notakey');
expect(returned.id).toEqual(null);
});
});
\ No newline at end of file
diff --git a/squarenotsquare/__tests__/Migration-test.js b/squarenotsquare/__tests__/Migration-test.js
index 0448971..262e634 100644
--- a/squarenotsquare/__tests__/Migration-test.js
+++ b/squarenotsquare/__tests__/Migration-test.js
@@ -20,7 +20,7 @@ test('Realm migrates to V1', () => {
migratev1(oldRealm, newRealm);
expect(newRealm[SystemEntity.name][0].key).toBe('username');
- expect(newRealm[SystemEntity.name][0].value).toBe('changeme');
+ expect(newRealm[SystemEntity.name][0].value).toBe('noname');
})
test('Realm halts V1 migration when schema is V2+', () => {
diff --git a/squarenotsquare/__tests__/Nav-test.js b/squarenotsquare/__tests__/Nav-test.js
index aaf784a..72a9255 100644
--- a/squarenotsquare/__tests__/Nav-test.js
+++ b/squarenotsquare/__tests__/Nav-test.js
@@ -1,6 +1,6 @@
-import { squareRef, navigate } from "../src/navigation/SquareNav";
+import { squareRef, squareNav } from "../src/navigation/SquareNav";
test('SquareNav calls navigation ref', () => {
- let postNav = navigate('notascreen', {});
+ let postNav = squareNav('notascreen', {});
expect(postNav).toEqual(true);
});
\ No newline at end of file
diff --git a/squarenotsquare/__tests__/Redux-test.js b/squarenotsquare/__tests__/Redux-test.js
index 6a4d7d5..63139ed 100644
--- a/squarenotsquare/__tests__/Redux-test.js
+++ b/squarenotsquare/__tests__/Redux-test.js
@@ -1,5 +1,4 @@
import configStore from '../src/redux/CreateStore';
-import {navReducer} from '../src/redux/reducers/NavReducer';
import {systemReducer} from '../src/redux/reducers/SystemReducer';
import rootReducer from '../src/redux/reducers/RootReducer';
import { APP_INIT } from '../src/redux/types/SystemTypes';
@@ -13,11 +12,6 @@ test('rootReducer constructs', () => {
expect(rootReducer).toEqual(expect.anything());
})
-test('navReducer response to app-init', () => {
- let nextState = navReducer({}, {type: APP_INIT});
- expect(nextState).toEqual({});
-})
-
test('systemReducer response to app-init', () => {
let nextState = systemReducer.system({}, {type: APP_INIT, system: {value: 0}});
expect(nextState.value).toEqual(0);
diff --git a/squarenotsquare/android/app/build.gradle b/squarenotsquare/android/app/build.gradle
index 9117853..180c638 100644
--- a/squarenotsquare/android/app/build.gradle
+++ b/squarenotsquare/android/app/build.gradle
@@ -310,6 +310,7 @@ task copyDownloadableDepsToLibs(type: Copy) {
}
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
+apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
def isNewArchitectureEnabled() {
// To opt-in for the New Architecture, you can either:
diff --git a/squarenotsquare/android/app/src/main/assets/squarelogo.png b/squarenotsquare/android/app/src/main/assets/squarelogo.png
new file mode 100644
index 0000000..7f3925c
Binary files /dev/null and b/squarenotsquare/android/app/src/main/assets/squarelogo.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index a2f5908..385a506 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
index 1b52399..966a881 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/squarenotsquare/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index ff10afd..b8caae6 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
index 115a4c7..7bd6c44 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/squarenotsquare/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index dcd3cd8..0c8c603 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
index 459ca60..c4e9d13 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/squarenotsquare/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 8ca12fe..fd7f31c 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
index 8e19b41..da91d48 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/squarenotsquare/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index b824ebd..b9db5c3 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
index 4c19a13..f552dd6 100644
Binary files a/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/squarenotsquare/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/squarenotsquare/index.js b/squarenotsquare/index.js
index 16b4988..0b2853c 100644
--- a/squarenotsquare/index.js
+++ b/squarenotsquare/index.js
@@ -1,11 +1,14 @@
import React from 'react';
import {AppRegistry} from 'react-native';
import {name as appName} from './app.json';
-import SquareNotSquare from './Launcher';
-import configStore from './src/redux/CreateStore';
+import SquareNotSquare from './SquareNotSquare';
+import ConfigStore from './src/redux/CreateStore';
import { appInit } from './src/redux/actions/SystemActions';
+import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
-const squareStore = configStore;
+//fix vector icons bug
+MaterialIcon.loadFont();
+const squareStore = ConfigStore;
squareStore.dispatch(appInit());
const ProppedContainer = () => {
diff --git a/squarenotsquare/ios/Podfile.lock b/squarenotsquare/ios/Podfile.lock
new file mode 100644
index 0000000..83e107e
--- /dev/null
+++ b/squarenotsquare/ios/Podfile.lock
@@ -0,0 +1,604 @@
+PODS:
+ - boost (1.76.0)
+ - CocoaAsyncSocket (7.6.5)
+ - DoubleConversion (1.1.6)
+ - FBLazyVector (0.69.2)
+ - FBReactNativeSpec (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTRequired (= 0.69.2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Core (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - Flipper (0.125.0):
+ - Flipper-Folly (~> 2.6)
+ - Flipper-RSocket (~> 1.4)
+ - Flipper-Boost-iOSX (1.76.0.1.11)
+ - Flipper-DoubleConversion (3.2.0.1)
+ - Flipper-Fmt (7.1.7)
+ - Flipper-Folly (2.6.10):
+ - Flipper-Boost-iOSX
+ - Flipper-DoubleConversion
+ - Flipper-Fmt (= 7.1.7)
+ - Flipper-Glog
+ - libevent (~> 2.1.12)
+ - OpenSSL-Universal (= 1.1.1100)
+ - Flipper-Glog (0.5.0.5)
+ - Flipper-PeerTalk (0.0.4)
+ - Flipper-RSocket (1.4.3):
+ - Flipper-Folly (~> 2.6)
+ - FlipperKit (0.125.0):
+ - FlipperKit/Core (= 0.125.0)
+ - FlipperKit/Core (0.125.0):
+ - Flipper (~> 0.125.0)
+ - FlipperKit/CppBridge
+ - FlipperKit/FBCxxFollyDynamicConvert
+ - FlipperKit/FBDefines
+ - FlipperKit/FKPortForwarding
+ - SocketRocket (~> 0.6.0)
+ - FlipperKit/CppBridge (0.125.0):
+ - Flipper (~> 0.125.0)
+ - FlipperKit/FBCxxFollyDynamicConvert (0.125.0):
+ - Flipper-Folly (~> 2.6)
+ - FlipperKit/FBDefines (0.125.0)
+ - FlipperKit/FKPortForwarding (0.125.0):
+ - CocoaAsyncSocket (~> 7.6)
+ - Flipper-PeerTalk (~> 0.0.4)
+ - FlipperKit/FlipperKitHighlightOverlay (0.125.0)
+ - FlipperKit/FlipperKitLayoutHelpers (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitHighlightOverlay
+ - FlipperKit/FlipperKitLayoutTextSearchable
+ - FlipperKit/FlipperKitLayoutIOSDescriptors (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitHighlightOverlay
+ - FlipperKit/FlipperKitLayoutHelpers
+ - YogaKit (~> 1.18)
+ - FlipperKit/FlipperKitLayoutPlugin (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitHighlightOverlay
+ - FlipperKit/FlipperKitLayoutHelpers
+ - FlipperKit/FlipperKitLayoutIOSDescriptors
+ - FlipperKit/FlipperKitLayoutTextSearchable
+ - YogaKit (~> 1.18)
+ - FlipperKit/FlipperKitLayoutTextSearchable (0.125.0)
+ - FlipperKit/FlipperKitNetworkPlugin (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitReactPlugin (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitUserDefaultsPlugin (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/SKIOSNetworkPlugin (0.125.0):
+ - FlipperKit/Core
+ - FlipperKit/FlipperKitNetworkPlugin
+ - fmt (6.2.1)
+ - GCDWebServer (3.5.4):
+ - GCDWebServer/Core (= 3.5.4)
+ - GCDWebServer/Core (3.5.4)
+ - glog (0.3.5)
+ - libevent (2.1.12)
+ - OpenSSL-Universal (1.1.1100)
+ - RCT-Folly (2021.06.28.00-v2):
+ - boost
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - RCT-Folly/Default (= 2021.06.28.00-v2)
+ - RCT-Folly/Default (2021.06.28.00-v2):
+ - boost
+ - DoubleConversion
+ - fmt (~> 6.2.1)
+ - glog
+ - RCTRequired (0.69.2)
+ - RCTTypeSafety (0.69.2):
+ - FBLazyVector (= 0.69.2)
+ - RCTRequired (= 0.69.2)
+ - React-Core (= 0.69.2)
+ - React (0.69.2):
+ - React-Core (= 0.69.2)
+ - React-Core/DevSupport (= 0.69.2)
+ - React-Core/RCTWebSocket (= 0.69.2)
+ - React-RCTActionSheet (= 0.69.2)
+ - React-RCTAnimation (= 0.69.2)
+ - React-RCTBlob (= 0.69.2)
+ - React-RCTImage (= 0.69.2)
+ - React-RCTLinking (= 0.69.2)
+ - React-RCTNetwork (= 0.69.2)
+ - React-RCTSettings (= 0.69.2)
+ - React-RCTText (= 0.69.2)
+ - React-RCTVibration (= 0.69.2)
+ - React-bridging (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-jsi (= 0.69.2)
+ - React-callinvoker (0.69.2)
+ - React-Codegen (0.69.2):
+ - FBReactNativeSpec (= 0.69.2)
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTRequired (= 0.69.2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Core (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-Core (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default (= 0.69.2)
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/CoreModulesHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/Default (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/DevSupport (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default (= 0.69.2)
+ - React-Core/RCTWebSocket (= 0.69.2)
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-jsinspector (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTActionSheetHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTAnimationHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTBlobHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTImageHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTLinkingHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTNetworkHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTSettingsHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTTextHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTVibrationHeaders (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-Core/RCTWebSocket (0.69.2):
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Core/Default (= 0.69.2)
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsiexecutor (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - Yoga
+ - React-CoreModules (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/CoreModulesHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-RCTImage (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-cxxreact (0.69.2):
+ - boost (= 1.76.0)
+ - DoubleConversion
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-callinvoker (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-jsinspector (= 0.69.2)
+ - React-logger (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - React-runtimeexecutor (= 0.69.2)
+ - React-jsi (0.69.2):
+ - boost (= 1.76.0)
+ - DoubleConversion
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-jsi/Default (= 0.69.2)
+ - React-jsi/Default (0.69.2):
+ - boost (= 1.76.0)
+ - DoubleConversion
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-jsiexecutor (0.69.2):
+ - DoubleConversion
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - React-jsinspector (0.69.2)
+ - React-logger (0.69.2):
+ - glog
+ - react-native-get-random-values (1.8.0):
+ - React-Core
+ - react-native-safe-area-context (4.3.1):
+ - RCT-Folly
+ - RCTRequired
+ - RCTTypeSafety
+ - React
+ - ReactCommon/turbomodule/core
+ - React-perflogger (0.69.2)
+ - React-RCTActionSheet (0.69.2):
+ - React-Core/RCTActionSheetHeaders (= 0.69.2)
+ - React-RCTAnimation (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTAnimationHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-RCTBlob (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTBlobHeaders (= 0.69.2)
+ - React-Core/RCTWebSocket (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-RCTNetwork (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-RCTImage (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTImageHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-RCTNetwork (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-RCTLinking (0.69.2):
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTLinkingHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-RCTNetwork (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTNetworkHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-RCTSettings (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - RCTTypeSafety (= 0.69.2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTSettingsHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-RCTText (0.69.2):
+ - React-Core/RCTTextHeaders (= 0.69.2)
+ - React-RCTVibration (0.69.2):
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-Codegen (= 0.69.2)
+ - React-Core/RCTVibrationHeaders (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (= 0.69.2)
+ - React-runtimeexecutor (0.69.2):
+ - React-jsi (= 0.69.2)
+ - ReactCommon/turbomodule/core (0.69.2):
+ - DoubleConversion
+ - glog
+ - RCT-Folly (= 2021.06.28.00-v2)
+ - React-bridging (= 0.69.2)
+ - React-callinvoker (= 0.69.2)
+ - React-Core (= 0.69.2)
+ - React-cxxreact (= 0.69.2)
+ - React-jsi (= 0.69.2)
+ - React-logger (= 0.69.2)
+ - React-perflogger (= 0.69.2)
+ - RealmJS (10.19.5):
+ - GCDWebServer
+ - React
+ - RNGestureHandler (2.5.0):
+ - React-Core
+ - RNKeychain (8.1.1):
+ - React-Core
+ - RNScreens (3.15.0):
+ - React-Core
+ - React-RCTImage
+ - RNVectorIcons (9.2.0):
+ - React-Core
+ - SocketRocket (0.6.0)
+ - Yoga (1.14.0)
+ - YogaKit (1.18.1):
+ - Yoga (~> 1.14)
+
+DEPENDENCIES:
+ - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
+ - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
+ - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
+ - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
+ - Flipper (= 0.125.0)
+ - Flipper-Boost-iOSX (= 1.76.0.1.11)
+ - Flipper-DoubleConversion (= 3.2.0.1)
+ - Flipper-Fmt (= 7.1.7)
+ - Flipper-Folly (= 2.6.10)
+ - Flipper-Glog (= 0.5.0.5)
+ - Flipper-PeerTalk (= 0.0.4)
+ - Flipper-RSocket (= 1.4.3)
+ - FlipperKit (= 0.125.0)
+ - FlipperKit/Core (= 0.125.0)
+ - FlipperKit/CppBridge (= 0.125.0)
+ - FlipperKit/FBCxxFollyDynamicConvert (= 0.125.0)
+ - FlipperKit/FBDefines (= 0.125.0)
+ - FlipperKit/FKPortForwarding (= 0.125.0)
+ - FlipperKit/FlipperKitHighlightOverlay (= 0.125.0)
+ - FlipperKit/FlipperKitLayoutPlugin (= 0.125.0)
+ - FlipperKit/FlipperKitLayoutTextSearchable (= 0.125.0)
+ - FlipperKit/FlipperKitNetworkPlugin (= 0.125.0)
+ - FlipperKit/FlipperKitReactPlugin (= 0.125.0)
+ - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0)
+ - FlipperKit/SKIOSNetworkPlugin (= 0.125.0)
+ - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
+ - OpenSSL-Universal (= 1.1.1100)
+ - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
+ - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
+ - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
+ - React (from `../node_modules/react-native/`)
+ - React-bridging (from `../node_modules/react-native/ReactCommon`)
+ - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
+ - React-Codegen (from `build/generated/ios`)
+ - React-Core (from `../node_modules/react-native/`)
+ - React-Core/DevSupport (from `../node_modules/react-native/`)
+ - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
+ - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
+ - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
+ - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
+ - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
+ - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
+ - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
+ - react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
+ - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
+ - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
+ - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
+ - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
+ - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
+ - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
+ - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
+ - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
+ - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
+ - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
+ - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
+ - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
+ - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
+ - RealmJS (from `../node_modules/realm`)
+ - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
+ - RNKeychain (from `../node_modules/react-native-keychain`)
+ - RNScreens (from `../node_modules/react-native-screens`)
+ - RNVectorIcons (from `../node_modules/react-native-vector-icons`)
+ - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
+
+SPEC REPOS:
+ trunk:
+ - CocoaAsyncSocket
+ - Flipper
+ - Flipper-Boost-iOSX
+ - Flipper-DoubleConversion
+ - Flipper-Fmt
+ - Flipper-Folly
+ - Flipper-Glog
+ - Flipper-PeerTalk
+ - Flipper-RSocket
+ - FlipperKit
+ - fmt
+ - GCDWebServer
+ - libevent
+ - OpenSSL-Universal
+ - SocketRocket
+ - YogaKit
+
+EXTERNAL SOURCES:
+ boost:
+ :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
+ DoubleConversion:
+ :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
+ FBLazyVector:
+ :path: "../node_modules/react-native/Libraries/FBLazyVector"
+ FBReactNativeSpec:
+ :path: "../node_modules/react-native/React/FBReactNativeSpec"
+ glog:
+ :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
+ RCT-Folly:
+ :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
+ RCTRequired:
+ :path: "../node_modules/react-native/Libraries/RCTRequired"
+ RCTTypeSafety:
+ :path: "../node_modules/react-native/Libraries/TypeSafety"
+ React:
+ :path: "../node_modules/react-native/"
+ React-bridging:
+ :path: "../node_modules/react-native/ReactCommon"
+ React-callinvoker:
+ :path: "../node_modules/react-native/ReactCommon/callinvoker"
+ React-Codegen:
+ :path: build/generated/ios
+ React-Core:
+ :path: "../node_modules/react-native/"
+ React-CoreModules:
+ :path: "../node_modules/react-native/React/CoreModules"
+ React-cxxreact:
+ :path: "../node_modules/react-native/ReactCommon/cxxreact"
+ React-jsi:
+ :path: "../node_modules/react-native/ReactCommon/jsi"
+ React-jsiexecutor:
+ :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
+ React-jsinspector:
+ :path: "../node_modules/react-native/ReactCommon/jsinspector"
+ React-logger:
+ :path: "../node_modules/react-native/ReactCommon/logger"
+ react-native-get-random-values:
+ :path: "../node_modules/react-native-get-random-values"
+ react-native-safe-area-context:
+ :path: "../node_modules/react-native-safe-area-context"
+ React-perflogger:
+ :path: "../node_modules/react-native/ReactCommon/reactperflogger"
+ React-RCTActionSheet:
+ :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
+ React-RCTAnimation:
+ :path: "../node_modules/react-native/Libraries/NativeAnimation"
+ React-RCTBlob:
+ :path: "../node_modules/react-native/Libraries/Blob"
+ React-RCTImage:
+ :path: "../node_modules/react-native/Libraries/Image"
+ React-RCTLinking:
+ :path: "../node_modules/react-native/Libraries/LinkingIOS"
+ React-RCTNetwork:
+ :path: "../node_modules/react-native/Libraries/Network"
+ React-RCTSettings:
+ :path: "../node_modules/react-native/Libraries/Settings"
+ React-RCTText:
+ :path: "../node_modules/react-native/Libraries/Text"
+ React-RCTVibration:
+ :path: "../node_modules/react-native/Libraries/Vibration"
+ React-runtimeexecutor:
+ :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
+ ReactCommon:
+ :path: "../node_modules/react-native/ReactCommon"
+ RealmJS:
+ :path: "../node_modules/realm"
+ RNGestureHandler:
+ :path: "../node_modules/react-native-gesture-handler"
+ RNKeychain:
+ :path: "../node_modules/react-native-keychain"
+ RNScreens:
+ :path: "../node_modules/react-native-screens"
+ RNVectorIcons:
+ :path: "../node_modules/react-native-vector-icons"
+ Yoga:
+ :path: "../node_modules/react-native/ReactCommon/yoga"
+
+SPEC CHECKSUMS:
+ boost: a7c83b31436843459a1961bfd74b96033dc77234
+ CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
+ DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
+ FBLazyVector: e3c1479be506060131807f2f2435af5107c58410
+ FBReactNativeSpec: 1381e8c4230895b6c2d20cea6b216ac7096a95f0
+ Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0
+ Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
+ Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
+ Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
+ Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
+ Flipper-Glog: 70c50ce58ddaf67dc35180db05f191692570f446
+ Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
+ Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
+ FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86
+ fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
+ GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4
+ glog: 3d02b25ca00c2d456734d0bcff864cbc62f6ae1a
+ libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
+ OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
+ RCT-Folly: b9d9fe1fc70114b751c076104e52f3b1b5e5a95a
+ RCTRequired: b723d4d6da2795df58189a01f92856b6912cf256
+ RCTTypeSafety: 3973d2fcf39f43f7819e840d56ea6b2fe45996a0
+ React: 242d4ffb093ed57c4761307a69b23b2479930ae9
+ React-bridging: 66938204bc9d703b9c357201a40bf498aeb14412
+ React-callinvoker: bf0a87845bc3158eec32be848bd9546e79d6dd25
+ React-Codegen: e5c04fc987e909433915f247699402ece1955aa0
+ React-Core: 5acd5715010b56d23846859b3a68c316dad09d5b
+ React-CoreModules: 73db18e3aaf5e29f73e4b7c9ddf6ead823795d06
+ React-cxxreact: 0fc57a199d2d69c0e0401c9eab944be9b972bf1b
+ React-jsi: f845df5e8fd5688cab3cdaaa06f5413e791a01bd
+ React-jsiexecutor: 7c23e92591431ac925f430b3118de934cb816ac0
+ React-jsinspector: 31e53f048cc8f32605de36981903a7bbf9456892
+ React-logger: 9a6c684d5cd56c4129e0c2842dba75c4bfb1e981
+ react-native-get-random-values: a6ea6a8a65dc93e96e24a11105b1a9c8cfe1d72a
+ react-native-safe-area-context: 6c12e3859b6f27b25de4fee8201cfb858432d8de
+ React-perflogger: 281c34e42f13245c7a4d6932364d9182f8655e1a
+ React-RCTActionSheet: 92f4292754a1b4a0e42bf9b1489206a06f878929
+ React-RCTAnimation: 2a5bb5549758e4e594481633f3db649d11519f75
+ React-RCTBlob: cf573ac95fc612ed4440cad0b92161722430de87
+ React-RCTImage: af8b9a46a743937db396fcb43320f57b570661dc
+ React-RCTLinking: 81029ed5767d2a2c13c03caeed32f87b72e73838
+ React-RCTNetwork: 24c2b13acdcd43af39b2da90584c92e7799ee366
+ React-RCTSettings: 028b0e20ff60d2c7ba47cedec8e99e69b6691c40
+ React-RCTText: 6d17c2aead07b9de7ddc8765b580d0fb4b1d2e50
+ React-RCTVibration: 0d07f00705b5f11e88aaaaf9131f5e1785d4bd6e
+ React-runtimeexecutor: 8030b9cf9b9e87b878d92da680b55b5e74c58e70
+ ReactCommon: a9414b91f0d19de002b55d9f4f6cb176d6dd8452
+ RealmJS: 400aac2267a47b25fcc2b6321e8a419282719d16
+ RNGestureHandler: bad495418bcbd3ab47017a38d93d290ebd406f50
+ RNKeychain: ff836453cba46938e0e9e4c22e43d43fa2c90333
+ RNScreens: 4a1af06327774490d97342c00aee0c2bafb497b7
+ RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8
+ SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
+ Yoga: 236056dd74cda4d9d76c20306fd8c20bb087614d
+ YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
+
+PODFILE CHECKSUM: d581c290a90c94822dda89c7b1468491518584f1
+
+COCOAPODS: 1.11.3
diff --git a/squarenotsquare/ios/squarenotsquare.xcodeproj/project.pbxproj b/squarenotsquare/ios/squarenotsquare.xcodeproj/project.pbxproj
index c3505fb..c5e0267 100644
--- a/squarenotsquare/ios/squarenotsquare.xcodeproj/project.pbxproj
+++ b/squarenotsquare/ios/squarenotsquare.xcodeproj/project.pbxproj
@@ -14,6 +14,7 @@
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
7699B88040F8A987B510C191 /* libPods-squarenotsquare-squarenotsquareTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-squarenotsquare-squarenotsquareTests.a */; };
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
+ A00B4610289C8148008607EC /* squarelogo.png in Resources */ = {isa = PBXBuildFile; fileRef = A00B460F289C8148008607EC /* squarelogo.png */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -43,6 +44,7 @@
5DCACB8F33CDC322A6C60F78 /* libPods-squarenotsquare.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-squarenotsquare.a"; sourceTree = BUILT_PRODUCTS_DIR; };
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = squarenotsquare/LaunchScreen.storyboard; sourceTree = ""; };
89C6BE57DB24E9ADA2F236DE /* Pods-squarenotsquare-squarenotsquareTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-squarenotsquare-squarenotsquareTests.release.xcconfig"; path = "Target Support Files/Pods-squarenotsquare-squarenotsquareTests/Pods-squarenotsquare-squarenotsquareTests.release.xcconfig"; sourceTree = ""; };
+ A00B460F289C8148008607EC /* squarelogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = squarelogo.png; path = squarenotsquare/squarelogo.png; sourceTree = ""; };
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
@@ -89,6 +91,7 @@
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
+ A00B460F289C8148008607EC /* squarelogo.png */,
13B07FB61A68108700A75B9A /* Info.plist */,
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
13B07FB71A68108700A75B9A /* main.m */,
@@ -243,6 +246,7 @@
buildActionMask = 2147483647;
files = (
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
+ A00B4610289C8148008607EC /* squarelogo.png in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -596,6 +600,7 @@
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
);
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
};
name = Debug;
@@ -659,6 +664,7 @@
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
);
+ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
diff --git a/squarenotsquare/ios/squarenotsquare/squarelogo.png b/squarenotsquare/ios/squarenotsquare/squarelogo.png
new file mode 100644
index 0000000..7f3925c
Binary files /dev/null and b/squarenotsquare/ios/squarenotsquare/squarelogo.png differ
diff --git a/squarenotsquare/jest.config.js b/squarenotsquare/jest.config.js
index 9e0fac9..9a7b2dd 100644
--- a/squarenotsquare/jest.config.js
+++ b/squarenotsquare/jest.config.js
@@ -6,9 +6,10 @@ module.exports = {
moduleDirectories: ['node_modules', 'src'],
moduleNameMapper: {
// '@react-native-firebase/messaging: '/__mock__/mockFirebase.js',
- 'react-native-secure-key-store': '/__mock__/mockKeyStore.js',
+ 'react-native-keychain': '/__mock__/mockKeyStore.js',
'\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mock__/file.js',
- '^(realm)': '/__mock__/mockRealmObject'
+ '^(realm)': '/__mock__/mockRealmObject',
+ 'react-native-vector-icons/MaterialCommunityIcons': '/__mock__/mockMaterialIcons'
},
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
diff --git a/squarenotsquare/package-lock.json b/squarenotsquare/package-lock.json
index d2b1e74..986c99b 100644
--- a/squarenotsquare/package-lock.json
+++ b/squarenotsquare/package-lock.json
@@ -15,9 +15,9 @@
"react-native": "0.69.2",
"react-native-gesture-handler": "^2.5.0",
"react-native-get-random-values": "^1.8.0",
+ "react-native-keychain": "^8.1.1",
"react-native-safe-area-context": "^4.3.1",
"react-native-screens": "^3.15.0",
- "react-native-secure-key-store": "^2.0.9",
"react-native-vector-icons": "^9.2.0",
"react-redux": "^8.0.2",
"realm": "^10.19.5",
@@ -28,11 +28,14 @@
"devDependencies": {
"@babel/core": "^7.12.9",
"@babel/runtime": "^7.12.5",
+ "@react-native-community/cli": "^8.0.1",
+ "@react-native-community/cli-platform-ios": "^7.0.1",
"@react-native-community/eslint-config": "^2.0.0",
"babel-jest": "^28.0.0",
"eslint": "^7.32.0",
"jest": "^28.0.0",
"metro-react-native-babel-preset": "^0.70.3",
+ "react-native-cli": "^2.0.1",
"react-test-renderer": "18.0.0",
"redux-logger": "^3.0.6",
"redux-mock-store": "^1.5.4",
@@ -3288,15 +3291,16 @@
}
},
"node_modules/@react-native-community/cli": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.3.tgz",
- "integrity": "sha512-7gY7QCEdpYDbvbdZBt6w64YPExLoiUpH/lVRaR4tKl6JalqXzrUotOJnBOS/qEC4q0nk0WXsiC5EkuiSliKS5Q==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.1.tgz",
+ "integrity": "sha512-0bZ2x2MPQPdVOxv80WsD22pvMqcs9MnKwfWbQ+vavEr5OEd4H60r4rgl/LaiSq+f22+RHm9CAe9r4EDlLMC/Ag==",
+ "dev": true,
"dependencies": {
"@react-native-community/cli-clean": "^8.0.0",
- "@react-native-community/cli-config": "^8.0.3",
+ "@react-native-community/cli-config": "^8.0.1",
"@react-native-community/cli-debugger-ui": "^8.0.0",
- "@react-native-community/cli-doctor": "^8.0.3",
- "@react-native-community/cli-hermes": "^8.0.2",
+ "@react-native-community/cli-doctor": "^8.0.1",
+ "@react-native-community/cli-hermes": "^8.0.0",
"@react-native-community/cli-plugin-metro": "^8.0.0",
"@react-native-community/cli-server-api": "^8.0.0",
"@react-native-community/cli-tools": "^8.0.0",
@@ -3324,11 +3328,11 @@
}
},
"node_modules/@react-native-community/cli-clean": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-8.0.0.tgz",
- "integrity": "sha512-VY/kwyH5xp6oXiB9bcwa+I9W5k6WR/nX3s85FuMW76hSlgG1UVAGL04uZPwYlSmMZuSOSuoXOaIjJ7wAvQMBpg==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-8.0.4.tgz",
+ "integrity": "sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ==",
"dependencies": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"execa": "^1.0.0",
"prompts": "^2.4.0"
@@ -3507,11 +3511,11 @@
}
},
"node_modules/@react-native-community/cli-config": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-8.0.3.tgz",
- "integrity": "sha512-QhLU6QZywkoO4FzpeEkdoYml0nE9tBwhmOUI/c5iYPOtKhhXiW8kNCLiX96TJDiZonalzptkkNiRZkipdz/8hw==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-8.0.4.tgz",
+ "integrity": "sha512-0vcrIETka1Tr0blr0AjVkoP/1yynvarJQXi8Yry/XB3BLenrkUFxolqqA3Ff55KFQ7t1IzAuFtfuVZs25LvyDQ==",
"dependencies": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"cosmiconfig": "^5.1.0",
"deepmerge": "^3.2.0",
"glob": "^7.1.3",
@@ -3535,13 +3539,13 @@
}
},
"node_modules/@react-native-community/cli-doctor": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-8.0.3.tgz",
- "integrity": "sha512-ndISZhZqOoeSuQCm5KLwJNkckk14Bqn1N8LHJbC6l4zAyDU0nQRO1IVPoV5uyaANMzMqSNzS6k9N4M0PpcuhIQ==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-8.0.4.tgz",
+ "integrity": "sha512-Blw/66qwoEoKrtwn3O9iTtXbt4YWlwqNse5BJeRDzlSdutWTX4PgJu/34gyvOHGysNlrf+GYkeyqqxI/y0s07A==",
"dependencies": {
- "@react-native-community/cli-config": "^8.0.3",
- "@react-native-community/cli-platform-ios": "^8.0.2",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-config": "^8.0.4",
+ "@react-native-community/cli-platform-ios": "^8.0.4",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"command-exists": "^1.2.8",
"envinfo": "^7.7.2",
@@ -3557,6 +3561,21 @@
"wcwidth": "^1.0.1"
}
},
+ "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-ios": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.4.tgz",
+ "integrity": "sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w==",
+ "dependencies": {
+ "@react-native-community/cli-tools": "^8.0.4",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "glob": "^7.1.3",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "ora": "^5.4.1",
+ "plist": "^3.0.2"
+ }
+ },
"node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
@@ -3749,12 +3768,12 @@
}
},
"node_modules/@react-native-community/cli-hermes": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-8.0.2.tgz",
- "integrity": "sha512-RZ9uHTf3UFtGTYxq88uENJEdaDB8ab+YPBDn+Li1u78IKwNeL04F0A1A3ab3hYUkG4PEPnL2rkYSlzzNFLOSPQ==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-8.0.5.tgz",
+ "integrity": "sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g==",
"dependencies": {
- "@react-native-community/cli-platform-android": "^8.0.2",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-platform-android": "^8.0.5",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5"
@@ -3825,11 +3844,11 @@
}
},
"node_modules/@react-native-community/cli-platform-android": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.2.tgz",
- "integrity": "sha512-pAEkt+GULesr8FphTpaNYSmu+O1CPQ2zCXkAg4kRd0WXpq3BsVqomyDWd/eMXTkY/yYQMGl6KilU2p9r/hnfhA==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.5.tgz",
+ "integrity": "sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA==",
"dependencies": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"execa": "^1.0.0",
"fs-extra": "^8.1.0",
@@ -4013,24 +4032,53 @@
}
},
"node_modules/@react-native-community/cli-platform-ios": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.2.tgz",
- "integrity": "sha512-LxWzj6jIZr5Ot893TKFbt0/T3WkVe6pbc/FSTo+TDQq1FQr/Urv16Uqn0AcL4IX2O1g3Qd13d0vtR/Cdpn3VNw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-7.0.1.tgz",
+ "integrity": "sha512-PLRIbzrCzSedmpjuFtQqcqUD45G8q7sEciI1lf5zUbVMXqjIBwJWS7iz8235PyWwj8J4MNHohLC+oyRueFtbGg==",
+ "dev": true,
"dependencies": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^7.0.1",
"chalk": "^4.1.2",
"execa": "^1.0.0",
"glob": "^7.1.3",
"js-yaml": "^3.13.1",
"lodash": "^4.17.15",
"ora": "^5.4.1",
- "plist": "^3.0.2"
+ "plist": "^3.0.2",
+ "xcode": "^3.0.0"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/@react-native-community/cli-tools": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-7.0.1.tgz",
+ "integrity": "sha512-0xra4hKNA5PR2zYVXsDMNiXMGaDNoNRYMY6eTP2aVIxQbqIcVMDWSyCA8wMWX5iOpMWg0cZGaQ6a77f3Rlb34g==",
+ "dev": true,
+ "dependencies": {
+ "appdirsjs": "^1.2.4",
+ "chalk": "^4.1.2",
+ "lodash": "^4.17.15",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.6.0",
+ "open": "^6.2.0",
+ "ora": "^5.4.1",
+ "semver": "^6.3.0",
+ "shell-quote": "^1.7.3"
+ }
+ },
+ "node_modules/@react-native-community/cli-platform-ios/node_modules/@react-native-community/cli-tools/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
}
},
"node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -4045,6 +4093,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -4060,6 +4109,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -4070,12 +4120,14 @@
"node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"node_modules/@react-native-community/cli-platform-ios/node_modules/cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
"dependencies": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
@@ -4091,6 +4143,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
"dependencies": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
@@ -4108,6 +4161,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
"dependencies": {
"pump": "^3.0.0"
},
@@ -4119,6 +4173,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -4127,6 +4182,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4135,6 +4191,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
"dependencies": {
"path-key": "^2.0.0"
},
@@ -4146,6 +4203,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -4154,6 +4212,7 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
"bin": {
"semver": "bin/semver"
}
@@ -4162,6 +4221,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
"dependencies": {
"shebang-regex": "^1.0.0"
},
@@ -4173,6 +4233,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4181,6 +4242,7 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -4192,6 +4254,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -4200,12 +4263,12 @@
}
},
"node_modules/@react-native-community/cli-plugin-metro": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.0.tgz",
- "integrity": "sha512-eIowV2ZRbzIWL3RIKVUUSahntXTuAeKzBSsFuhffLZphsV+UdKdtg5ATR9zbq7nsKap4ZseO5DkVqZngUkC7iQ==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.4.tgz",
+ "integrity": "sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ==",
"dependencies": {
- "@react-native-community/cli-server-api": "^8.0.0",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-server-api": "^8.0.4",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"metro": "^0.70.1",
"metro-config": "^0.70.1",
@@ -4281,12 +4344,12 @@
}
},
"node_modules/@react-native-community/cli-server-api": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-8.0.0.tgz",
- "integrity": "sha512-TxUs3sMl9clt7sdv30XETc6VRzyaEli2vDrk3TB5W5o5nSd1PmQdP4ccdGLO/nDRXwOy72QmmXlYWMg1XGU0Gg==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-8.0.4.tgz",
+ "integrity": "sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A==",
"dependencies": {
"@react-native-community/cli-debugger-ui": "^8.0.0",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"compression": "^1.7.1",
"connect": "^3.6.5",
"errorhandler": "^1.5.0",
@@ -4297,12 +4360,13 @@
}
},
"node_modules/@react-native-community/cli-tools": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-8.0.0.tgz",
- "integrity": "sha512-jA4y8CebrRZaOJFjc5zMOnls4KfHkBl2FUtBZV2vcWuedQHa6JVwo+KO88ta3Ysby3uY0+mrZagZfXk7c0mrBw==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-8.0.4.tgz",
+ "integrity": "sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q==",
"dependencies": {
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
+ "find-up": "^5.0.0",
"lodash": "^4.17.15",
"mime": "^2.4.1",
"node-fetch": "^2.6.0",
@@ -4357,6 +4421,21 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "node_modules/@react-native-community/cli-tools/node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@react-native-community/cli-tools/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4365,6 +4444,48 @@
"node": ">=8"
}
},
+ "node_modules/@react-native-community/cli-tools/node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@react-native-community/cli-tools/node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/@react-native-community/cli-tools/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -4388,6 +4509,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -4402,6 +4524,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -4417,6 +4540,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@@ -4427,12 +4551,14 @@
"node_modules/@react-native-community/cli/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"node_modules/@react-native-community/cli/node_modules/cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
"dependencies": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
@@ -4448,6 +4574,7 @@
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
"bin": {
"semver": "bin/semver"
}
@@ -4456,6 +4583,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
"dependencies": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
@@ -4473,6 +4601,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
"dependencies": {
"pump": "^3.0.0"
},
@@ -4484,6 +4613,7 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
"engines": {
"node": ">=8"
}
@@ -4492,6 +4622,7 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4500,6 +4631,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
"dependencies": {
"path-key": "^2.0.0"
},
@@ -4511,6 +4643,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
"engines": {
"node": ">=4"
}
@@ -4519,6 +4652,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
"dependencies": {
"shebang-regex": "^1.0.0"
},
@@ -4530,6 +4664,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -4538,6 +4673,7 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -4549,6 +4685,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
"dependencies": {
"isexe": "^2.0.0"
},
@@ -5401,6 +5538,18 @@
"node": ">= 4.5.0"
}
},
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -5750,6 +5899,15 @@
"tweetnacl": "^0.14.3"
}
},
+ "node_modules/big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
"node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -5768,6 +5926,27 @@
"readable-stream": "^3.4.0"
}
},
+ "node_modules/bplist-creator": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
+ "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
+ "dev": true,
+ "dependencies": {
+ "stream-buffers": "2.2.x"
+ }
+ },
+ "node_modules/bplist-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz",
+ "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==",
+ "dev": true,
+ "dependencies": {
+ "big-integer": "1.6.x"
+ },
+ "engines": {
+ "node": ">= 5.10.0"
+ }
+ },
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -6262,6 +6441,15 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
"integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="
},
+ "node_modules/colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -6511,6 +6699,15 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
"integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
},
+ "node_modules/cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -6593,6 +6790,38 @@
"integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==",
"dev": true
},
+ "node_modules/deep-equal": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
+ "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "es-get-iterator": "^1.1.1",
+ "get-intrinsic": "^1.0.1",
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.2",
+ "is-regex": "^1.1.1",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.4",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "regexp.prototype.flags": "^1.3.0",
+ "side-channel": "^1.0.3",
+ "which-boxed-primitive": "^1.0.1",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/deep-equal/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
"node_modules/deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -6859,6 +7088,31 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-get-iterator": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
+ "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.0",
+ "has-symbols": "^1.0.1",
+ "is-arguments": "^1.1.0",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.5",
+ "isarray": "^2.0.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-get-iterator/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
"node_modules/es-shim-unscopables": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
@@ -7671,6 +7925,15 @@
"node >=0.6.0"
]
},
+ "node_modules/eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==",
+ "dev": true,
+ "engines": {
+ "node": "> 0.1.90"
+ }
+ },
"node_modules/fast-base64-decode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz",
@@ -7930,6 +8193,15 @@
"node": ">=0.4.0"
}
},
+ "node_modules/for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.3"
+ }
+ },
"node_modules/for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -8233,6 +8505,27 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/has-bigints": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -8467,6 +8760,15 @@
"node": ">=10.17.0"
}
},
+ "node_modules/i": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz",
+ "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -8624,6 +8926,22 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -8789,6 +9107,15 @@
"node": ">=8"
}
},
+ "node_modules/is-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-negative-zero": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
@@ -8851,6 +9178,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-set": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-shared-array-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
@@ -8905,11 +9241,30 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
- },
+ "node_modules/is-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
+ "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ },
"node_modules/is-unicode-supported": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
@@ -8921,6 +9276,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-weakmap": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-weakref": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
@@ -8933,6 +9297,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-weakset": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -11283,6 +11660,18 @@
"node": ">=8"
}
},
+ "node_modules/jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "dependencies": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ },
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ }
+ },
"node_modules/jest-snapshot": {
"version": "28.1.3",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz",
@@ -12731,18 +13120,6 @@
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "node_modules/metro-core/node_modules/jest-serializer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
- "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
"node_modules/metro-core/node_modules/jest-util": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
@@ -13128,18 +13505,6 @@
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "node_modules/metro/node_modules/jest-serializer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
- "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
"node_modules/metro/node_modules/jest-util": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
@@ -13364,6 +13729,12 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
"node_modules/nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@@ -13407,6 +13778,15 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
+ "node_modules/ncp": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
+ "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==",
+ "dev": true,
+ "bin": {
+ "ncp": "bin/ncp"
+ }
+ },
"node_modules/negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -13690,6 +14070,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@@ -14135,6 +14531,15 @@
"node": ">=8"
}
},
+ "node_modules/pkginfo": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
+ "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/plist": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
@@ -14281,6 +14686,22 @@
"asap": "~2.0.6"
}
},
+ "node_modules/prompt": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
+ "integrity": "sha512-jDK5yEbAakJmNm+260gZG1+PuzX3jT5Jy0VZAUGrrW9RQ1JEWEDEVNnhO70mL3+U5r6bSJo02xsE34wOS/LnrA==",
+ "dev": true,
+ "dependencies": {
+ "pkginfo": "0.x.x",
+ "read": "1.0.x",
+ "revalidator": "0.1.x",
+ "utile": "0.2.x",
+ "winston": "0.8.x"
+ },
+ "engines": {
+ "node": ">= 0.6.6"
+ }
+ },
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -14464,6 +14885,88 @@
"react": "18.0.0"
}
},
+ "node_modules/react-native-cli": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/react-native-cli/-/react-native-cli-2.0.1.tgz",
+ "integrity": "sha512-QgkB1urUhGe9q1vcqQLIfNdCd/Qf3MdNQe19QO6lVjhIVKljlVMKtaK8RaZ8PCNB/cdXlO/G3tKUGk+ghMXE6w==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.1",
+ "minimist": "^1.2.0",
+ "prompt": "^0.2.14",
+ "semver": "^5.0.3"
+ },
+ "bin": {
+ "react-native": "index.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native-cli/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-cli/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-cli/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-cli/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/react-native-cli/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native-cli/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/react-native-codegen": {
"version": "0.69.1",
"resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.69.1.tgz",
@@ -14507,6 +15010,11 @@
"resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz",
"integrity": "sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g=="
},
+ "node_modules/react-native-keychain": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-8.1.1.tgz",
+ "integrity": "sha512-8fxgeHKwGcL657eAYpdBTkDIxNhbIHI+kyyO0Yac2dgVAN184JoIwQcW2z6snahwDaCObQOu0biLFHnsH+4KSg=="
+ },
"node_modules/react-native-safe-area-context": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.3.1.tgz",
@@ -14540,11 +15048,6 @@
"react": "^17.0.0"
}
},
- "node_modules/react-native-secure-key-store": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/react-native-secure-key-store/-/react-native-secure-key-store-2.0.9.tgz",
- "integrity": "sha512-9qi1rOlv4qNSpJIjqcIB7d0EQSwo2Yho8NVBT/Jc9NeYibDLHdArLXl8jn8H6nlf+8alk/bXqr4rPINrCTtmog=="
- },
"node_modules/react-native-vector-icons": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz",
@@ -14647,97 +15150,332 @@
"node": ">=10"
}
},
- "node_modules/react-native/node_modules/ws": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
- "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
- "dependencies": {
- "async-limiter": "~1.0.0"
- }
- },
- "node_modules/react-redux": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz",
- "integrity": "sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==",
+ "node_modules/react-native/node_modules/@react-native-community/cli": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.5.tgz",
+ "integrity": "sha512-X0AMNK+sKDJQX8eQRkqgddJsZPWlHgLryX7O9usj78UFEK8VqVYtpv08piWecfAhC2mZU4/Lww4bKu9uJ1rdyQ==",
"dependencies": {
- "@babel/runtime": "^7.12.1",
- "@types/hoist-non-react-statics": "^3.3.1",
- "@types/use-sync-external-store": "^0.0.3",
- "hoist-non-react-statics": "^3.3.2",
- "react-is": "^18.0.0",
- "use-sync-external-store": "^1.0.0"
+ "@react-native-community/cli-clean": "^8.0.4",
+ "@react-native-community/cli-config": "^8.0.4",
+ "@react-native-community/cli-debugger-ui": "^8.0.0",
+ "@react-native-community/cli-doctor": "^8.0.4",
+ "@react-native-community/cli-hermes": "^8.0.5",
+ "@react-native-community/cli-plugin-metro": "^8.0.4",
+ "@react-native-community/cli-server-api": "^8.0.4",
+ "@react-native-community/cli-tools": "^8.0.4",
+ "@react-native-community/cli-types": "^8.0.0",
+ "chalk": "^4.1.2",
+ "commander": "^2.19.0",
+ "execa": "^1.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "graceful-fs": "^4.1.3",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.15",
+ "minimist": "^1.2.0",
+ "prompts": "^2.4.0",
+ "semver": "^6.3.0"
},
- "peerDependencies": {
- "@types/react": "^16.8 || ^17.0 || ^18.0",
- "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
- "react": "^16.8 || ^17.0 || ^18.0",
- "react-dom": "^16.8 || ^17.0 || ^18.0",
- "react-native": ">=0.59",
- "redux": "^4"
+ "bin": {
+ "react-native": "build/bin.js"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- },
- "react-dom": {
- "optional": true
- },
- "react-native": {
- "optional": true
- },
- "redux": {
- "optional": true
- }
- }
- },
- "node_modules/react-redux/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
- },
- "node_modules/react-refresh": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
- "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-shallow-renderer": {
- "version": "16.15.0",
- "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
- "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
- "dependencies": {
- "object-assign": "^4.1.1",
- "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
+ "node": ">=12"
},
"peerDependencies": {
- "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
+ "react-native": "*"
}
},
- "node_modules/react-test-renderer": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.0.0.tgz",
- "integrity": "sha512-SyZTP/FSkwfiKOZuTZiISzsrC8A80KNlQ8PyyoGoOq+VzMAab6Em1POK/CiX3+XyXG6oiJa1C53zYDbdrJu9fw==",
- "dev": true,
+ "node_modules/react-native/node_modules/@react-native-community/cli-platform-ios": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.4.tgz",
+ "integrity": "sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w==",
"dependencies": {
- "react-is": "^18.0.0",
- "react-shallow-renderer": "^16.13.1",
- "scheduler": "^0.21.0"
- },
- "peerDependencies": {
- "react": "^18.0.0"
+ "@react-native-community/cli-tools": "^8.0.4",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "glob": "^7.1.3",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "ora": "^5.4.1",
+ "plist": "^3.0.2"
+ }
+ },
+ "node_modules/react-native/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/react-native/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/react-native/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/react-native/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/react-native/node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/react-native/node_modules/cross-spawn/node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/react-native/node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dependencies": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-native/node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/react-native/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-native/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native/node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/react-native/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-native/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/react-native/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/react-native/node_modules/ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/react-redux": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.2.tgz",
+ "integrity": "sha512-nBwiscMw3NoP59NFCXFf02f8xdo+vSHT/uZ1ldDwF7XaTpzm+Phk97VT4urYBl5TYAPNVaFm12UHAEyzkpNzRA==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/use-sync-external-store": "^0.0.3",
+ "hoist-non-react-statics": "^3.3.2",
+ "react-is": "^18.0.0",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8 || ^17.0 || ^18.0",
+ "@types/react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react": "^16.8 || ^17.0 || ^18.0",
+ "react-dom": "^16.8 || ^17.0 || ^18.0",
+ "react-native": ">=0.59",
+ "redux": "^4"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ },
+ "redux": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-redux/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ },
+ "node_modules/react-refresh": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz",
+ "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-shallow-renderer": {
+ "version": "16.15.0",
+ "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
+ "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/react-test-renderer": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.0.0.tgz",
+ "integrity": "sha512-SyZTP/FSkwfiKOZuTZiISzsrC8A80KNlQ8PyyoGoOq+VzMAab6Em1POK/CiX3+XyXG6oiJa1C53zYDbdrJu9fw==",
+ "dev": true,
+ "dependencies": {
+ "react-is": "^18.0.0",
+ "react-shallow-renderer": "^16.13.1",
+ "scheduler": "^0.21.0"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0"
+ }
+ },
+ "node_modules/react-test-renderer/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true
+ },
+ "node_modules/read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "dev": true,
+ "dependencies": {
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
}
},
- "node_modules/react-test-renderer/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
"node_modules/readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -15184,6 +15922,15 @@
"node": ">=0.12"
}
},
+ "node_modules/revalidator": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
+ "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -15468,6 +16215,17 @@
"simple-concat": "^1.0.0"
}
},
+ "node_modules/simple-plist": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz",
+ "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==",
+ "dev": true,
+ "dependencies": {
+ "bplist-creator": "0.1.0",
+ "bplist-parser": "0.3.1",
+ "plist": "^3.0.5"
+ }
+ },
"node_modules/simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -15771,6 +16529,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/stack-utils": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
@@ -15912,6 +16679,15 @@
"node": ">= 0.6"
}
},
+ "node_modules/stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
"node_modules/stream-counter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-1.0.0.tgz",
@@ -16910,6 +17686,41 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
+ "node_modules/utile": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz",
+ "integrity": "sha512-ltfvuCJNa/JFOhKBBiQ9qDyyFwLstoMMO1ru0Yg/Mcl8dp1Z3IBaL7n+5dHpyma+d3lCogkgBQnWKtGxzNyqhg==",
+ "dev": true,
+ "dependencies": {
+ "async": "~0.2.9",
+ "deep-equal": "*",
+ "i": "0.3.x",
+ "mkdirp": "0.x.x",
+ "ncp": "0.4.x",
+ "rimraf": "2.x.x"
+ },
+ "engines": {
+ "node": ">= 0.6.4"
+ }
+ },
+ "node_modules/utile/node_modules/async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==",
+ "dev": true
+ },
+ "node_modules/utile/node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
"node_modules/utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -17026,26 +17837,94 @@
"node": ">= 8"
}
},
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+ "dev": true,
+ "dependencies": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
+ },
+ "node_modules/which-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
+ "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
+ "dev": true,
+ "dependencies": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/winston": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz",
+ "integrity": "sha512-fPoamsHq8leJ62D1M9V/f15mjQ1UHe4+7j1wpAT3fqgA5JqhJkk4aIfPEjfMTI9x6ZTjaLOpMAjluLtmgO5b6g==",
"dev": true,
"dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
+ "async": "0.2.x",
+ "colors": "0.6.x",
+ "cycle": "1.0.x",
+ "eyes": "0.1.x",
+ "isstream": "0.1.x",
+ "pkginfo": "0.3.x",
+ "stack-trace": "0.0.x"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 0.6.0"
}
},
- "node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
+ "node_modules/winston/node_modules/async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==",
+ "dev": true
+ },
+ "node_modules/winston/node_modules/pkginfo": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
+ "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
},
"node_modules/word-wrap": {
"version": "1.2.3",
@@ -17137,6 +18016,28 @@
}
}
},
+ "node_modules/xcode": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
+ "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
+ "dev": true,
+ "dependencies": {
+ "simple-plist": "^1.1.0",
+ "uuid": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/xcode/node_modules/uuid": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
"node_modules/xmlbuilder": {
"version": "15.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
@@ -17200,7 +18101,6 @@
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
"engines": {
"node": ">=10"
},
@@ -19541,15 +20441,16 @@
}
},
"@react-native-community/cli": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.3.tgz",
- "integrity": "sha512-7gY7QCEdpYDbvbdZBt6w64YPExLoiUpH/lVRaR4tKl6JalqXzrUotOJnBOS/qEC4q0nk0WXsiC5EkuiSliKS5Q==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.1.tgz",
+ "integrity": "sha512-0bZ2x2MPQPdVOxv80WsD22pvMqcs9MnKwfWbQ+vavEr5OEd4H60r4rgl/LaiSq+f22+RHm9CAe9r4EDlLMC/Ag==",
+ "dev": true,
"requires": {
"@react-native-community/cli-clean": "^8.0.0",
- "@react-native-community/cli-config": "^8.0.3",
+ "@react-native-community/cli-config": "^8.0.1",
"@react-native-community/cli-debugger-ui": "^8.0.0",
- "@react-native-community/cli-doctor": "^8.0.3",
- "@react-native-community/cli-hermes": "^8.0.2",
+ "@react-native-community/cli-doctor": "^8.0.1",
+ "@react-native-community/cli-hermes": "^8.0.0",
"@react-native-community/cli-plugin-metro": "^8.0.0",
"@react-native-community/cli-server-api": "^8.0.0",
"@react-native-community/cli-tools": "^8.0.0",
@@ -19571,6 +20472,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"requires": {
"color-convert": "^2.0.1"
}
@@ -19579,6 +20481,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -19588,6 +20491,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"requires": {
"color-name": "~1.1.4"
}
@@ -19595,12 +20499,14 @@
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
@@ -19612,7 +20518,8 @@
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
}
}
},
@@ -19620,6 +20527,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
"requires": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
@@ -19634,6 +20542,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
"requires": {
"pump": "^3.0.0"
}
@@ -19641,17 +20550,20 @@
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
"requires": {
"path-key": "^2.0.0"
}
@@ -19659,12 +20571,14 @@
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
"requires": {
"shebang-regex": "^1.0.0"
}
@@ -19672,12 +20586,14 @@
"shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -19686,6 +20602,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
"requires": {
"isexe": "^2.0.0"
}
@@ -19693,11 +20610,11 @@
}
},
"@react-native-community/cli-clean": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-8.0.0.tgz",
- "integrity": "sha512-VY/kwyH5xp6oXiB9bcwa+I9W5k6WR/nX3s85FuMW76hSlgG1UVAGL04uZPwYlSmMZuSOSuoXOaIjJ7wAvQMBpg==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-8.0.4.tgz",
+ "integrity": "sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ==",
"requires": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"execa": "^1.0.0",
"prompts": "^2.4.0"
@@ -19827,11 +20744,11 @@
}
},
"@react-native-community/cli-config": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-8.0.3.tgz",
- "integrity": "sha512-QhLU6QZywkoO4FzpeEkdoYml0nE9tBwhmOUI/c5iYPOtKhhXiW8kNCLiX96TJDiZonalzptkkNiRZkipdz/8hw==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-8.0.4.tgz",
+ "integrity": "sha512-0vcrIETka1Tr0blr0AjVkoP/1yynvarJQXi8Yry/XB3BLenrkUFxolqqA3Ff55KFQ7t1IzAuFtfuVZs25LvyDQ==",
"requires": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"cosmiconfig": "^5.1.0",
"deepmerge": "^3.2.0",
"glob": "^7.1.3",
@@ -19854,13 +20771,13 @@
}
},
"@react-native-community/cli-doctor": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-8.0.3.tgz",
- "integrity": "sha512-ndISZhZqOoeSuQCm5KLwJNkckk14Bqn1N8LHJbC6l4zAyDU0nQRO1IVPoV5uyaANMzMqSNzS6k9N4M0PpcuhIQ==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-8.0.4.tgz",
+ "integrity": "sha512-Blw/66qwoEoKrtwn3O9iTtXbt4YWlwqNse5BJeRDzlSdutWTX4PgJu/34gyvOHGysNlrf+GYkeyqqxI/y0s07A==",
"requires": {
- "@react-native-community/cli-config": "^8.0.3",
- "@react-native-community/cli-platform-ios": "^8.0.2",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-config": "^8.0.4",
+ "@react-native-community/cli-platform-ios": "^8.0.4",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"command-exists": "^1.2.8",
"envinfo": "^7.7.2",
@@ -19876,6 +20793,21 @@
"wcwidth": "^1.0.1"
},
"dependencies": {
+ "@react-native-community/cli-platform-ios": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.4.tgz",
+ "integrity": "sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w==",
+ "requires": {
+ "@react-native-community/cli-tools": "^8.0.4",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "glob": "^7.1.3",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "ora": "^5.4.1",
+ "plist": "^3.0.2"
+ }
+ },
"ansi-regex": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
@@ -20015,12 +20947,12 @@
}
},
"@react-native-community/cli-hermes": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-8.0.2.tgz",
- "integrity": "sha512-RZ9uHTf3UFtGTYxq88uENJEdaDB8ab+YPBDn+Li1u78IKwNeL04F0A1A3ab3hYUkG4PEPnL2rkYSlzzNFLOSPQ==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-8.0.5.tgz",
+ "integrity": "sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g==",
"requires": {
- "@react-native-community/cli-platform-android": "^8.0.2",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-platform-android": "^8.0.5",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"hermes-profile-transformer": "^0.0.6",
"ip": "^1.1.5"
@@ -20072,11 +21004,11 @@
}
},
"@react-native-community/cli-platform-android": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.2.tgz",
- "integrity": "sha512-pAEkt+GULesr8FphTpaNYSmu+O1CPQ2zCXkAg4kRd0WXpq3BsVqomyDWd/eMXTkY/yYQMGl6KilU2p9r/hnfhA==",
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.5.tgz",
+ "integrity": "sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA==",
"requires": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"execa": "^1.0.0",
"fs-extra": "^8.1.0",
@@ -20211,24 +21143,52 @@
}
},
"@react-native-community/cli-platform-ios": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.2.tgz",
- "integrity": "sha512-LxWzj6jIZr5Ot893TKFbt0/T3WkVe6pbc/FSTo+TDQq1FQr/Urv16Uqn0AcL4IX2O1g3Qd13d0vtR/Cdpn3VNw==",
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-7.0.1.tgz",
+ "integrity": "sha512-PLRIbzrCzSedmpjuFtQqcqUD45G8q7sEciI1lf5zUbVMXqjIBwJWS7iz8235PyWwj8J4MNHohLC+oyRueFtbGg==",
+ "dev": true,
"requires": {
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^7.0.1",
"chalk": "^4.1.2",
"execa": "^1.0.0",
"glob": "^7.1.3",
"js-yaml": "^3.13.1",
"lodash": "^4.17.15",
"ora": "^5.4.1",
- "plist": "^3.0.2"
+ "plist": "^3.0.2",
+ "xcode": "^3.0.0"
},
"dependencies": {
+ "@react-native-community/cli-tools": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-7.0.1.tgz",
+ "integrity": "sha512-0xra4hKNA5PR2zYVXsDMNiXMGaDNoNRYMY6eTP2aVIxQbqIcVMDWSyCA8wMWX5iOpMWg0cZGaQ6a77f3Rlb34g==",
+ "dev": true,
+ "requires": {
+ "appdirsjs": "^1.2.4",
+ "chalk": "^4.1.2",
+ "lodash": "^4.17.15",
+ "mime": "^2.4.1",
+ "node-fetch": "^2.6.0",
+ "open": "^6.2.0",
+ "ora": "^5.4.1",
+ "semver": "^6.3.0",
+ "shell-quote": "^1.7.3"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
"requires": {
"color-convert": "^2.0.1"
}
@@ -20237,6 +21197,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -20246,6 +21207,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
"requires": {
"color-name": "~1.1.4"
}
@@ -20253,12 +21215,14 @@
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
@@ -20271,6 +21235,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
"requires": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
@@ -20285,6 +21250,7 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
"requires": {
"pump": "^3.0.0"
}
@@ -20292,17 +21258,20 @@
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
"requires": {
"path-key": "^2.0.0"
}
@@ -20310,17 +21279,20 @@
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
"requires": {
"shebang-regex": "^1.0.0"
}
@@ -20328,12 +21300,14 @@
"shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
"requires": {
"has-flag": "^4.0.0"
}
@@ -20342,6 +21316,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
"requires": {
"isexe": "^2.0.0"
}
@@ -20349,12 +21324,12 @@
}
},
"@react-native-community/cli-plugin-metro": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.0.tgz",
- "integrity": "sha512-eIowV2ZRbzIWL3RIKVUUSahntXTuAeKzBSsFuhffLZphsV+UdKdtg5ATR9zbq7nsKap4ZseO5DkVqZngUkC7iQ==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.4.tgz",
+ "integrity": "sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ==",
"requires": {
- "@react-native-community/cli-server-api": "^8.0.0",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-server-api": "^8.0.4",
+ "@react-native-community/cli-tools": "^8.0.4",
"chalk": "^4.1.2",
"metro": "^0.70.1",
"metro-config": "^0.70.1",
@@ -20411,12 +21386,12 @@
}
},
"@react-native-community/cli-server-api": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-8.0.0.tgz",
- "integrity": "sha512-TxUs3sMl9clt7sdv30XETc6VRzyaEli2vDrk3TB5W5o5nSd1PmQdP4ccdGLO/nDRXwOy72QmmXlYWMg1XGU0Gg==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-8.0.4.tgz",
+ "integrity": "sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A==",
"requires": {
"@react-native-community/cli-debugger-ui": "^8.0.0",
- "@react-native-community/cli-tools": "^8.0.0",
+ "@react-native-community/cli-tools": "^8.0.4",
"compression": "^1.7.1",
"connect": "^3.6.5",
"errorhandler": "^1.5.0",
@@ -20427,12 +21402,13 @@
}
},
"@react-native-community/cli-tools": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-8.0.0.tgz",
- "integrity": "sha512-jA4y8CebrRZaOJFjc5zMOnls4KfHkBl2FUtBZV2vcWuedQHa6JVwo+KO88ta3Ysby3uY0+mrZagZfXk7c0mrBw==",
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-8.0.4.tgz",
+ "integrity": "sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q==",
"requires": {
"appdirsjs": "^1.2.4",
"chalk": "^4.1.2",
+ "find-up": "^5.0.0",
"lodash": "^4.17.15",
"mime": "^2.4.1",
"node-fetch": "^2.6.0",
@@ -20472,11 +21448,44 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -21137,6 +22146,12 @@
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
+ "dev": true
+ },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -21404,6 +22419,12 @@
"tweetnacl": "^0.14.3"
}
},
+ "big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
+ "dev": true
+ },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
@@ -21422,6 +22443,24 @@
"readable-stream": "^3.4.0"
}
},
+ "bplist-creator": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
+ "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
+ "dev": true,
+ "requires": {
+ "stream-buffers": "2.2.x"
+ }
+ },
+ "bplist-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz",
+ "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==",
+ "dev": true,
+ "requires": {
+ "big-integer": "1.6.x"
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -21787,6 +22826,12 @@
"resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
"integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g=="
},
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==",
+ "dev": true
+ },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -22006,6 +23051,12 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
"integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
},
+ "cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==",
+ "dev": true
+ },
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -22062,6 +23113,37 @@
"integrity": "sha512-yVn6RZmHiGnxRKR9sJb3iVV2XTF1Ghh2DiWRZ3dMnGc43yUdWWF/kX6lQyk3+P84iprfWKU/8zFTrlkvtFm1ug==",
"dev": true
},
+ "deep-equal": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
+ "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "es-get-iterator": "^1.1.1",
+ "get-intrinsic": "^1.0.1",
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.2",
+ "is-regex": "^1.1.1",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.4",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "regexp.prototype.flags": "^1.3.0",
+ "side-channel": "^1.0.3",
+ "which-boxed-primitive": "^1.0.1",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ }
+ }
+ },
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -22264,6 +23346,30 @@
"unbox-primitive": "^1.0.2"
}
},
+ "es-get-iterator": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
+ "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.0",
+ "has-symbols": "^1.0.1",
+ "is-arguments": "^1.1.0",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.5",
+ "isarray": "^2.0.5"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ }
+ }
+ },
"es-shim-unscopables": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz",
@@ -22857,6 +23963,12 @@
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
},
+ "eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==",
+ "dev": true
+ },
"fast-base64-decode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz",
@@ -23059,6 +24171,15 @@
"resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz",
"integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg=="
},
+ "for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -23273,6 +24394,23 @@
"function-bind": "^1.1.1"
}
},
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ }
+ }
+ },
"has-bigints": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -23464,6 +24602,12 @@
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true
},
+ "i": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz",
+ "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==",
+ "dev": true
+ },
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
@@ -23569,6 +24713,16 @@
"kind-of": "^6.0.0"
}
},
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
@@ -23683,6 +24837,12 @@
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
"integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="
},
+ "is-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
+ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
+ "dev": true
+ },
"is-negative-zero": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
@@ -23721,6 +24881,12 @@
"has-tostringtag": "^1.0.0"
}
},
+ "is-set": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
+ "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
+ "dev": true
+ },
"is-shared-array-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
@@ -23754,6 +24920,19 @@
"has-symbols": "^1.0.2"
}
},
+ "is-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
+ "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -23764,6 +24943,12 @@
"resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
"integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="
},
+ "is-weakmap": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+ "dev": true
+ },
"is-weakref": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
@@ -23773,6 +24958,16 @@
"call-bind": "^1.0.2"
}
},
+ "is-weakset": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
+ "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -25558,6 +26753,15 @@
}
}
},
+ "jest-serializer": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
+ "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
+ "requires": {
+ "@types/node": "*",
+ "graceful-fs": "^4.2.9"
+ }
+ },
"jest-snapshot": {
"version": "28.1.3",
"resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz",
@@ -26660,15 +27864,6 @@
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
"integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg=="
},
- "jest-serializer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
- "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- }
- },
"jest-util": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz",
@@ -26885,17 +28080,8 @@
},
"jest-regex-util": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
- "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg=="
- },
- "jest-serializer": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz",
- "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==",
- "requires": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- }
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz",
+ "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg=="
},
"jest-util": {
"version": "27.5.1",
@@ -27223,6 +28409,12 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
"nanoid": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@@ -27257,6 +28449,12 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
+ "ncp": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz",
+ "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==",
+ "dev": true
+ },
"negotiator": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
@@ -27463,6 +28661,16 @@
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
"dev": true
},
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@@ -27777,6 +28985,12 @@
"find-up": "^4.0.0"
}
},
+ "pkginfo": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
+ "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==",
+ "dev": true
+ },
"plist": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
@@ -27883,6 +29097,19 @@
"asap": "~2.0.6"
}
},
+ "prompt": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
+ "integrity": "sha512-jDK5yEbAakJmNm+260gZG1+PuzX3jT5Jy0VZAUGrrW9RQ1JEWEDEVNnhO70mL3+U5r6bSJo02xsE34wOS/LnrA==",
+ "dev": true,
+ "requires": {
+ "pkginfo": "0.x.x",
+ "read": "1.0.x",
+ "revalidator": "0.1.x",
+ "utile": "0.2.x",
+ "winston": "0.8.x"
+ }
+ },
"prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -28034,6 +29261,171 @@
"ws": "^6.1.4"
},
"dependencies": {
+ "@react-native-community/cli": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-8.0.5.tgz",
+ "integrity": "sha512-X0AMNK+sKDJQX8eQRkqgddJsZPWlHgLryX7O9usj78UFEK8VqVYtpv08piWecfAhC2mZU4/Lww4bKu9uJ1rdyQ==",
+ "requires": {
+ "@react-native-community/cli-clean": "^8.0.4",
+ "@react-native-community/cli-config": "^8.0.4",
+ "@react-native-community/cli-debugger-ui": "^8.0.0",
+ "@react-native-community/cli-doctor": "^8.0.4",
+ "@react-native-community/cli-hermes": "^8.0.5",
+ "@react-native-community/cli-plugin-metro": "^8.0.4",
+ "@react-native-community/cli-server-api": "^8.0.4",
+ "@react-native-community/cli-tools": "^8.0.4",
+ "@react-native-community/cli-types": "^8.0.0",
+ "chalk": "^4.1.2",
+ "commander": "^2.19.0",
+ "execa": "^1.0.0",
+ "find-up": "^4.1.0",
+ "fs-extra": "^8.1.0",
+ "graceful-fs": "^4.1.3",
+ "leven": "^3.1.0",
+ "lodash": "^4.17.15",
+ "minimist": "^1.2.0",
+ "prompts": "^2.4.0",
+ "semver": "^6.3.0"
+ }
+ },
+ "@react-native-community/cli-platform-ios": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.4.tgz",
+ "integrity": "sha512-7Jdptedfg/J0Xo2rQbJ4jmo+PMYOiIiRcNDCSI5dBcNkQfSq4MMYUnKQx5DdZHgrfxE0O1vE4iNmJdd4wePz8w==",
+ "requires": {
+ "@react-native-community/cli-tools": "^8.0.4",
+ "chalk": "^4.1.2",
+ "execa": "^1.0.0",
+ "glob": "^7.1.3",
+ "js-yaml": "^3.13.1",
+ "lodash": "^4.17.15",
+ "ora": "^5.4.1",
+ "plist": "^3.0.2"
+ }
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ }
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw=="
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ=="
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
"ws": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz",
@@ -28044,6 +29436,66 @@
}
}
},
+ "react-native-cli": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/react-native-cli/-/react-native-cli-2.0.1.tgz",
+ "integrity": "sha512-QgkB1urUhGe9q1vcqQLIfNdCd/Qf3MdNQe19QO6lVjhIVKljlVMKtaK8RaZ8PCNB/cdXlO/G3tKUGk+ghMXE6w==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "minimist": "^1.2.0",
+ "prompt": "^0.2.14",
+ "semver": "^5.0.3"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true
+ }
+ }
+ },
"react-native-codegen": {
"version": "0.69.1",
"resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.69.1.tgz",
@@ -28080,6 +29532,11 @@
"resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz",
"integrity": "sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g=="
},
+ "react-native-keychain": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/react-native-keychain/-/react-native-keychain-8.1.1.tgz",
+ "integrity": "sha512-8fxgeHKwGcL657eAYpdBTkDIxNhbIHI+kyyO0Yac2dgVAN184JoIwQcW2z6snahwDaCObQOu0biLFHnsH+4KSg=="
+ },
"react-native-safe-area-context": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.3.1.tgz",
@@ -28103,11 +29560,6 @@
}
}
},
- "react-native-secure-key-store": {
- "version": "2.0.9",
- "resolved": "https://registry.npmjs.org/react-native-secure-key-store/-/react-native-secure-key-store-2.0.9.tgz",
- "integrity": "sha512-9qi1rOlv4qNSpJIjqcIB7d0EQSwo2Yho8NVBT/Jc9NeYibDLHdArLXl8jn8H6nlf+8alk/bXqr4rPINrCTtmog=="
- },
"react-native-vector-icons": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-9.2.0.tgz",
@@ -28237,6 +29689,15 @@
}
}
},
+ "read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "dev": true,
+ "requires": {
+ "mute-stream": "~0.0.4"
+ }
+ },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -28583,6 +30044,12 @@
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
+ "revalidator": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz",
+ "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==",
+ "dev": true
+ },
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -28794,6 +30261,17 @@
"simple-concat": "^1.0.0"
}
},
+ "simple-plist": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz",
+ "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==",
+ "dev": true,
+ "requires": {
+ "bplist-creator": "0.1.0",
+ "bplist-parser": "0.3.1",
+ "plist": "^3.0.5"
+ }
+ },
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -29039,6 +30517,12 @@
"tweetnacl": "~0.14.0"
}
},
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+ "dev": true
+ },
"stack-utils": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
@@ -29151,6 +30635,12 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
},
+ "stream-buffers": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
+ "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==",
+ "dev": true
+ },
"stream-counter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-1.0.0.tgz",
@@ -29896,6 +31386,37 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
+ "utile": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz",
+ "integrity": "sha512-ltfvuCJNa/JFOhKBBiQ9qDyyFwLstoMMO1ru0Yg/Mcl8dp1Z3IBaL7n+5dHpyma+d3lCogkgBQnWKtGxzNyqhg==",
+ "dev": true,
+ "requires": {
+ "async": "~0.2.9",
+ "deep-equal": "*",
+ "i": "0.3.x",
+ "mkdirp": "0.x.x",
+ "ncp": "0.4.x",
+ "rimraf": "2.x.x"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -30003,11 +31524,66 @@
"is-symbol": "^1.0.3"
}
},
+ "which-collection": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+ "dev": true,
+ "requires": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ }
+ },
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
},
+ "which-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
+ "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.9"
+ }
+ },
+ "winston": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz",
+ "integrity": "sha512-fPoamsHq8leJ62D1M9V/f15mjQ1UHe4+7j1wpAT3fqgA5JqhJkk4aIfPEjfMTI9x6ZTjaLOpMAjluLtmgO5b6g==",
+ "dev": true,
+ "requires": {
+ "async": "0.2.x",
+ "colors": "0.6.x",
+ "cycle": "1.0.x",
+ "eyes": "0.1.x",
+ "isstream": "0.1.x",
+ "pkginfo": "0.3.x",
+ "stack-trace": "0.0.x"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==",
+ "dev": true
+ },
+ "pkginfo": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz",
+ "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==",
+ "dev": true
+ }
+ }
+ },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -30068,6 +31644,24 @@
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"requires": {}
},
+ "xcode": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz",
+ "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==",
+ "dev": true,
+ "requires": {
+ "simple-plist": "^1.1.0",
+ "uuid": "^7.0.3"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
+ "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
+ "dev": true
+ }
+ }
+ },
"xmlbuilder": {
"version": "15.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
@@ -30118,8 +31712,7 @@
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
}
}
}
diff --git a/squarenotsquare/package.json b/squarenotsquare/package.json
index e479f83..3707151 100644
--- a/squarenotsquare/package.json
+++ b/squarenotsquare/package.json
@@ -26,9 +26,9 @@
"react-native": "0.69.2",
"react-native-gesture-handler": "^2.5.0",
"react-native-get-random-values": "^1.8.0",
+ "react-native-keychain": "^8.1.1",
"react-native-safe-area-context": "^4.3.1",
"react-native-screens": "^3.15.0",
- "react-native-secure-key-store": "^2.0.9",
"react-native-vector-icons": "^9.2.0",
"react-redux": "^8.0.2",
"realm": "^10.19.5",
@@ -39,11 +39,14 @@
"devDependencies": {
"@babel/core": "^7.12.9",
"@babel/runtime": "^7.12.5",
+ "@react-native-community/cli": "^8.0.1",
+ "@react-native-community/cli-platform-ios": "^7.0.1",
"@react-native-community/eslint-config": "^2.0.0",
"babel-jest": "^28.0.0",
"eslint": "^7.32.0",
"jest": "^28.0.0",
"metro-react-native-babel-preset": "^0.70.3",
+ "react-native-cli": "^2.0.1",
"react-test-renderer": "18.0.0",
"redux-logger": "^3.0.6",
"redux-mock-store": "^1.5.4",
diff --git a/squarenotsquare/src/assets/squarelogo.png b/squarenotsquare/src/assets/squarelogo.png
new file mode 100644
index 0000000..7f3925c
Binary files /dev/null and b/squarenotsquare/src/assets/squarelogo.png differ
diff --git a/squarenotsquare/src/components/Autoscroll.js b/squarenotsquare/src/components/Autoscroll.js
new file mode 100644
index 0000000..7652d02
--- /dev/null
+++ b/squarenotsquare/src/components/Autoscroll.js
@@ -0,0 +1,25 @@
+import React from "react";
+import { Animated, Easing} from "react-native";
+import { useEffect, useRef } from "react";
+import Metrics from "../themes/Metrics";
+
+function Autoscroll(props){
+ const yPosition = useRef(new Animated.Value(props.origin));
+
+ useEffect(() => {
+ Animated.timing(yPosition.current, {
+ toValue: props.destination - Metrics.animated.gameScrollInterval,
+ duration: props.duration,
+ useNativeDriver: true
+ }).start();
+ }, [props.origin])
+
+
+ return (
+
+ {props.children}
+
+ )
+}
+
+export default Autoscroll;
\ No newline at end of file
diff --git a/squarenotsquare/src/components/Fade.js b/squarenotsquare/src/components/Fade.js
new file mode 100644
index 0000000..1b3fe46
--- /dev/null
+++ b/squarenotsquare/src/components/Fade.js
@@ -0,0 +1,38 @@
+import React from "react";
+import { Animated} from "react-native";
+import { useEffect, useRef } from "react";
+
+function Fade(props){
+ const faded = useRef(new Animated.Value(0.1));
+
+ useEffect(() => {
+ if (props.faded) {
+ Animated.timing(
+ faded.current,
+ {
+ toValue: 0.1,
+ duration: props.duration,
+ useNativeDriver: true
+ }
+ ).start();
+ } else {
+ Animated.timing(
+ faded.current,
+ {
+ toValue: 1,
+ duration: props.duration,
+ useNativeDriver: true
+ }
+ ).start();
+ }
+ }, [props.faded])
+
+
+ return (
+
+ {props.children}
+
+ )
+}
+
+export default Fade;
\ No newline at end of file
diff --git a/squarenotsquare/src/components/NineKey.js b/squarenotsquare/src/components/NineKey.js
new file mode 100644
index 0000000..7231da1
--- /dev/null
+++ b/squarenotsquare/src/components/NineKey.js
@@ -0,0 +1,47 @@
+import React from "react";
+import { Text, View } from "react-native";
+import { TouchableOpacity } from "react-native-gesture-handler";
+import { styles } from "../screens/styles/AppStyles";
+
+function NineKey(props){
+
+ function generateKey(value){
+ return (
+ props.onPress(value)}
+ >
+
+ {value}
+
+
+ );
+ }
+
+ return (
+
+
+ {generateKey(7)}
+ {generateKey(8)}
+ {generateKey(9)}
+
+
+ {generateKey(4)}
+ {generateKey(5)}
+ {generateKey(6)}
+
+
+ {generateKey(1)}
+ {generateKey(2)}
+ {generateKey(3)}
+
+
+
+ {generateKey(0)}
+
+
+
+ );
+}
+
+export default NineKey;
\ No newline at end of file
diff --git a/squarenotsquare/src/components/ScrollingPicker.js b/squarenotsquare/src/components/ScrollingPicker.js
new file mode 100644
index 0000000..624d7de
--- /dev/null
+++ b/squarenotsquare/src/components/ScrollingPicker.js
@@ -0,0 +1,63 @@
+import React, { useRef, useState } from "react";
+import {
+ ScrollView,
+ Animated,
+} from "react-native";
+import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
+import Icons from '../themes/Icons';
+import Colors from "../themes/Colors";
+import Metrics from "../themes/Metrics";
+import { styles } from "../screens/styles/AppStyles";
+import Fade from "./Fade";
+
+function ScrollingPicker(props) {
+ const scrollX = useRef(new Animated.Value(0)).current;
+
+ function onScroll(event){
+ let rounded = Math.round(event.nativeEvent.contentOffset.x);
+ if (rounded === 0) {
+ props.modeSetter('square');
+ } else if (rounded === (Metrics.icons.buttonIcon * 2)) {
+ props.modeSetter('addition');
+ }
+ Animated.event([
+ {
+ nativeEvent: {
+ contentOffset: {
+ x: scrollX
+ }
+ }
+ }
+ ], {useNativeDriver: true})
+ }
+
+ return (
+
+
+
+
+
+
+
+
+ );
+}
+
+export default ScrollingPicker;
\ No newline at end of file
diff --git a/squarenotsquare/src/components/Slider.js b/squarenotsquare/src/components/Slider.js
new file mode 100644
index 0000000..bc95f15
--- /dev/null
+++ b/squarenotsquare/src/components/Slider.js
@@ -0,0 +1,27 @@
+import React from "react";
+import { Animated, Easing} from "react-native";
+import { useEffect, useState } from "react";
+
+function Slider(props){
+ const [xPosition, setXPosition] = useState(new Animated.Value(props.origin));
+
+ useEffect(() => {
+ Animated.sequence([
+ Animated.delay(props.delay),
+ Animated.timing(xPosition, {
+ toValue: 0,
+ duration: props.duration,
+ useNativeDriver: true
+ })
+ ]).start();
+ }, []);
+
+
+ return (
+
+ {props.children}
+
+ )
+}
+
+export default Slider;
\ No newline at end of file
diff --git a/squarenotsquare/src/components/Spinner.js b/squarenotsquare/src/components/Spinner.js
new file mode 100644
index 0000000..0f23561
--- /dev/null
+++ b/squarenotsquare/src/components/Spinner.js
@@ -0,0 +1,39 @@
+import React from "react";
+import { Animated, Easing} from "react-native";
+import { useEffect } from "react";
+import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
+import Icons from '../themes/Icons';
+import Colors from "../themes/Colors";
+import Metrics from "../themes/Metrics";
+
+const spinValue = new Animated.Value(0);
+
+function Spinner(){
+
+ useEffect(() => {
+ Animated.loop(
+ Animated.timing(spinValue, {
+ toValue: 1,
+ duration: 3000,
+ easing: Easing.linear,
+ useNativeDriver: true,
+ })).start();
+ }, []);
+
+ const spin = spinValue.interpolate({
+ inputRange: [0, 1],
+ outputRange: ['0deg', '360deg'],
+ });
+
+ return (
+
+
+
+ )
+}
+
+export default Spinner;
\ No newline at end of file
diff --git a/squarenotsquare/src/libs/CalculateScore.js b/squarenotsquare/src/libs/CalculateScore.js
new file mode 100644
index 0000000..0dfc6c0
--- /dev/null
+++ b/squarenotsquare/src/libs/CalculateScore.js
@@ -0,0 +1,6 @@
+export function calculateSquareScore (answers, finalTime) {
+ let timeScore = Math.round((60 - finalTime) * 1000);
+ let answerScore = answers * 1000;
+ let finalScore = timeScore + answerScore;
+ return finalScore;
+}
\ No newline at end of file
diff --git a/squarenotsquare/src/libs/Random.js b/squarenotsquare/src/libs/Random.js
index aeea885..fc3717d 100644
--- a/squarenotsquare/src/libs/Random.js
+++ b/squarenotsquare/src/libs/Random.js
@@ -1,13 +1,57 @@
+import 'react-native-get-random-values';
+
export function generateKey() {
let result = [];
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let charactersLength = characters.length;
+
+ let uintArray = new Uint8Array(64);
+ let newKey = crypto.getRandomValues(uintArray);
for (let i = 0; i < 64; i++) {
+ let newCharIndex = newKey[i];
+ while(newCharIndex > charactersLength){
+ newCharIndex -= charactersLength;
+ }
result.push(
- characters.charAt(Math.floor(Math.random() * charactersLength)),
+ characters.charAt(newCharIndex),
);
}
return result.join('');
+}
+
+export function genSquareChallenge(){
+ let result = [];
+ let uintArray = new Uint8Array(20);
+ let squares = crypto.getRandomValues(uintArray);
+ let shapes = crypto.getRandomValues(uintArray);
+
+ for(let i = 0; i < 20; ++i){
+ let squarePos = squares[i] % 2;
+ let shapeType = shapes[i] % 6;
+ result.push({
+ squarePos: squarePos,
+ shapeType: shapeType
+ });
+ }
+
+ return result;
+}
+
+export function generateAdditionChallenge(){
+ let result = [];
+ for (let i = 0; i < 20; ++i) {
+ let left = 0;
+ let right = 0;
+
+ do {
+ left = Math.round(Math.random() * 10);
+ right = Math.round(Math.random() * 10);
+ } while (left + right >= 10);
+
+ result.push({left: left, right: right});
+ }
+
+ return result;
}
\ No newline at end of file
diff --git a/squarenotsquare/src/libs/ShapeEnum.js b/squarenotsquare/src/libs/ShapeEnum.js
new file mode 100644
index 0000000..7ed6f19
--- /dev/null
+++ b/squarenotsquare/src/libs/ShapeEnum.js
@@ -0,0 +1,10 @@
+import Icons from "../themes/Icons";
+
+export const shapes = {
+ '0': Icons.wrongShapes.rectangle,
+ '1': Icons.wrongShapes.triangle,
+ '2': Icons.wrongShapes.circle,
+ '3': Icons.wrongShapes.hexagon,
+ '4': Icons.wrongShapes.pentagon,
+ '5': Icons.wrongShapes.octagon
+}
\ No newline at end of file
diff --git a/squarenotsquare/src/navigation/SquareNav.js b/squarenotsquare/src/navigation/SquareNav.js
index 9030f3a..7b22de2 100644
--- a/squarenotsquare/src/navigation/SquareNav.js
+++ b/squarenotsquare/src/navigation/SquareNav.js
@@ -1,8 +1,8 @@
import { createRef } from "react";
-export const squareRef = createRef();
+export const SquareRef = createRef();
-export function navigate(name, params) {
- squareRef.current?.navigate(name, params);
+export function squareNav(name, params) {
+ SquareRef.current?.navigate(name, params);
return true;
}
\ No newline at end of file
diff --git a/squarenotsquare/src/navigation/SquareStack.js b/squarenotsquare/src/navigation/SquareStack.js
index 28bce3f..ba56a1d 100644
--- a/squarenotsquare/src/navigation/SquareStack.js
+++ b/squarenotsquare/src/navigation/SquareStack.js
@@ -1,13 +1,14 @@
import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
-import {squareRef} from './SquareNav';
+import {SquareRef} from './SquareNav';
import Home from '../screens/Home';
import Game from '../screens/Game';
import HighScore from '../screens/HighScore';
-import Settings from '../screens/Settings';
import Splash from '../screens/Splash';
+import Score from '../screens/Score';
+import AdditionGame from '../screens/AdditionGame';
const SquareNav = createStackNavigator();
@@ -15,7 +16,7 @@ function SquareStack() {
let noHeader = {headerShown: false};
return (
-
+
+
diff --git a/squarenotsquare/src/realm/DbAPI.js b/squarenotsquare/src/realm/DbAPI.js
new file mode 100644
index 0000000..cf78b87
--- /dev/null
+++ b/squarenotsquare/src/realm/DbAPI.js
@@ -0,0 +1,48 @@
+import {initDB} from './DbInit';
+
+class DatabaseAPI {
+ constructor(){
+ this.systemRepo = null;
+ this.scoreRepo = null;
+ this.userRepo = null;
+ }
+
+ getAllSystemValues() {
+ return this.systemRepo.getAllSystemValues();
+ }
+
+ createSystemValue(key, value) {
+ this.systemRepo.createSystemValue(key, value);
+ return true;
+ }
+
+ deleteSystemValue(key) {
+ this.systemRepo.deleteSystemValue(key);
+ return true;
+ }
+
+ getSystemValue(key) {
+ return this.systemRepo.getSystemKeyValue(key);
+ }
+
+ createScore(user, score) {
+ this.scoreRepo.createScore(user, score);
+ return true;
+ }
+
+ getHighScores() {
+ return this.scoreRepo.getCachedScores();
+ }
+
+ async initDB() {
+ let repos = await initDB();
+ this.systemRepo = repos.systemRepo;
+ this.scoreRepo = repos.scoreRepo;
+ this.userRepo = repos.userRepo;
+
+ this.scoreRepo.loadCache();
+ }
+}
+
+const DbAPI = new DatabaseAPI();
+export default DbAPI;
\ No newline at end of file
diff --git a/squarenotsquare/src/realm/dbInit.js b/squarenotsquare/src/realm/DbInit.js
similarity index 94%
rename from squarenotsquare/src/realm/dbInit.js
rename to squarenotsquare/src/realm/DbInit.js
index d0ceb7a..d67ac30 100644
--- a/squarenotsquare/src/realm/dbInit.js
+++ b/squarenotsquare/src/realm/DbInit.js
@@ -22,14 +22,14 @@ export async function initDB(dbKeyRef = 'squareDB', dbLocation = Realm.defaultPa
try {
let fromStore = await KeyStore.getKey(dbKeyRef);
- if (fromStore === null) {
+ if (fromStore === false) {
let newKey = generateKey();
await KeyStore.setKey(dbKeyRef, newKey);
- fromStore = await KeyStore.getKey(dbKeyRef);
+ fromStore = newKey;
}
let dbKey = new Uint8Array(64);
- if (fromStore !== null){
+ if (fromStore !== false){
for (let i = 0; i < 64; ++i){
dbKey[i] = fromStore.charAt(i);
}
diff --git a/squarenotsquare/src/realm/dbAPI.js b/squarenotsquare/src/realm/dbAPI.js
deleted file mode 100644
index 91a398f..0000000
--- a/squarenotsquare/src/realm/dbAPI.js
+++ /dev/null
@@ -1,37 +0,0 @@
-import {initDB} from './dbInit';
-
-class DbAPI {
- constructor(){
- this.systemRepo = null;
- this.scoreRepo = null;
- this.userRepo = null;
- }
-
- getAllSystemValues() {
- return systemRepo.getAllSystemValues();
- }
-
- createSystemValue(key, value) {
- systemRepo.createSystemValue(key, value);
- return true;
- }
-
- deleteSystemValue(key) {
- systemRepo.deleteSystemValue(key);
- return true;
- }
-
- getSystemValue(key) {
- return systemRepo.getSystemKeyValue(key);
- }
-
- async initDB() {
- let repos = await initDB();
- this.systemRepo = repos.systemRepo;
- this.scoreRepo = repos.scoreRepo;
- this.userRepo = repos.userRepo;
- }
-}
-
-const dbAPI = new DbAPI();
-export default dbAPI;
\ No newline at end of file
diff --git a/squarenotsquare/src/realm/entities/Score.js b/squarenotsquare/src/realm/entities/Score.js
index 81425c2..449777e 100644
--- a/squarenotsquare/src/realm/entities/Score.js
+++ b/squarenotsquare/src/realm/entities/Score.js
@@ -4,6 +4,6 @@ export const ScoreEntity = {
properties: {
id: 'string',
user: 'string',
- value: 'string'
+ value: 'int'
}
};
\ No newline at end of file
diff --git a/squarenotsquare/src/realm/migrations/MigrateV1.js b/squarenotsquare/src/realm/migrations/MigrateV1.js
index f48dabe..49948c0 100644
--- a/squarenotsquare/src/realm/migrations/MigrateV1.js
+++ b/squarenotsquare/src/realm/migrations/MigrateV1.js
@@ -7,7 +7,7 @@ export function migratev1(oldRealm, newRealm) {
newRealm.create(SystemEntity.name, {
id: uuidv4(),
key: 'username',
- value: 'changeme'
+ value: 'noname'
});
}
}
diff --git a/squarenotsquare/src/realm/repos/ScoreRepo.js b/squarenotsquare/src/realm/repos/ScoreRepo.js
index 51c89c7..9138270 100644
--- a/squarenotsquare/src/realm/repos/ScoreRepo.js
+++ b/squarenotsquare/src/realm/repos/ScoreRepo.js
@@ -7,5 +7,52 @@ export default class ScoreRepo {
constructor(db) {
this.realmDB = db;
+ this.scoreCache = [];
+ }
+
+ updateScoreCache = (newScore) => {
+ this.scoreCache.push(newScore);
+ this.scoreCache.sort((a, b) => b.value - a.value);
+
+ if (this.scoreCache.length > 99) {
+ this.scoreCache = this.scoreCache.slice(99, this.scoreCache.length - 1);
+ }
+ }
+
+ createScore = (user, score) => {
+ let scoreID = uuidv4();
+
+ let newScore = {
+ id: scoreID,
+ user: user,
+ value: score
+ };
+
+ this.updateScoreCache(newScore);
+
+ this.realmDB.write(() => {
+ this.realmDB.create( ScoreEntity.name, newScore, true);
+ });
+ }
+
+ getHighScores = () => {
+ let score = this.realmDB.objects(ScoreEntity.name).sorted('value', true);
+ let highScores = [];
+ let i = 0;
+ score.forEach((row) => {
+ if (i > 99){
+ return highScores;
+ }
+ highScores.push({user: row.user, value: row.value});
+ });
+ return highScores;
+ }
+
+ loadCache = () => {
+ this.scoreCache = this.getHighScores();
+ }
+
+ getCachedScores = () => {
+ return this.scoreCache;
}
}
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/CreateStore.js b/squarenotsquare/src/redux/CreateStore.js
index baffac3..b82a733 100644
--- a/squarenotsquare/src/redux/CreateStore.js
+++ b/squarenotsquare/src/redux/CreateStore.js
@@ -1,8 +1,8 @@
import { configureStore } from '@reduxjs/toolkit';
import rootReducer from './reducers/RootReducer';
-const configStore = configureStore({
+const ConfigStore = configureStore({
reducer: rootReducer
});
-export default configStore;
\ No newline at end of file
+export default ConfigStore;
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/actions/SystemActions.js b/squarenotsquare/src/redux/actions/SystemActions.js
index a6108a7..3859b5d 100644
--- a/squarenotsquare/src/redux/actions/SystemActions.js
+++ b/squarenotsquare/src/redux/actions/SystemActions.js
@@ -1,21 +1,41 @@
-import { initDB } from "../../realm/dbInit";
-import dbAPI from "../../realm/dbAPI";
-import { APP_INIT } from "../types/SystemTypes";
+import DbAPI from "../../realm/DbAPI";
+import { APP_INIT, NAV_HOME, NAV_SCORES } from "../types/SystemTypes";
+import { squareNav } from "../../navigation/SquareNav";
export function appInit() {
return async (dispatch) => {
- await dbAPI.initDB();
- dispatch(onInit());
+ await DbAPI.initDB();
+ let lastUsername = DbAPI.getSystemValue('username').value;
+ dispatch(onInit(lastUsername));
+ squareNav('Home');
}
}
-function onInit() {
+export function goHome() {
return (dispatch) => {
+ squareNav('Home');
dispatch({
- type: APP_INIT
- //system: system
- //user: user
- //score: score
+ type: NAV_HOME
+ })
+ }
+}
+
+export function goToScores() {
+ return (dispatch) => {
+ squareNav('HighScore');
+ dispatch({
+ type: NAV_SCORES
+ })
+ }
+}
+
+function onInit(lastUsername) {
+ return (dispatch, getState) => {
+ let currentUser = {...getState().user};
+ currentUser.username = lastUsername;
+ dispatch({
+ type: APP_INIT,
+ user: currentUser
});
}
}
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/actions/UserActions.js b/squarenotsquare/src/redux/actions/UserActions.js
index e69de29..6729c11 100644
--- a/squarenotsquare/src/redux/actions/UserActions.js
+++ b/squarenotsquare/src/redux/actions/UserActions.js
@@ -0,0 +1,59 @@
+import { squareNav } from "../../navigation/SquareNav";
+import { ADDITION_FINISHED, ADDITION_START, SQUARE_FINISHED, SQUARE_START } from "../types/UserTypes";
+import { calculateSquareScore } from "../../libs/CalculateScore";
+import DbAPI from "../../realm/DbAPI";
+
+export function squareStartPressed(mode, username) {
+ return (dispatch, getState) => {
+ DbAPI.createSystemValue('username', username);
+ let userState = {...getState().user};
+ userState.username = username;
+ if (mode === 'square') {
+ squareNav('Game');
+ dispatch({
+ type: SQUARE_START,
+ user: userState
+ });
+ } else if (mode === 'addition') {
+ squareNav('AdditionGame');
+ dispatch({
+ type: ADDITION_START,
+ user: userState
+ })
+ }
+ }
+}
+
+export function squareFinished(answers, finalTime) {
+ return (dispatch, getState) => {
+ setTimeout(() => squareNav('Score'), 3000);
+ const userState = getState().user;
+ let newUser = {...userState};
+ newUser.lastGameTime = finalTime;
+ newUser.lastGameAnswers = answers;
+
+ let finalScore = calculateSquareScore(answers, finalTime);
+ DbAPI.createScore(userState.username, finalScore);
+ dispatch({
+ type: SQUARE_FINISHED,
+ user: newUser
+ });
+ }
+}
+
+export function addFinished(answers, finalTime) {
+ return (dispatch, getState) => {
+ setTimeout(() => squareNav('Score'), 3000);
+ const userState = getState().user;
+ let newUser = {...userState};
+ newUser.lastGameTime = finalTime;
+ newUser.lastGameAnswers = answers;
+
+ let finalScore = calculateSquareScore(answers, finalTime);
+ DbAPI.createScore(userState.username, finalScore);
+ dispatch({
+ type: ADDITION_FINISHED,
+ user: newUser
+ });
+ }
+}
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/reducers/NavReducer.js b/squarenotsquare/src/redux/reducers/NavReducer.js
deleted file mode 100644
index 16f162a..0000000
--- a/squarenotsquare/src/redux/reducers/NavReducer.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import * as SquareNav from '../../navigation/SquareNav';
-
-import { APP_INIT } from '../types/SystemTypes';
-
-export function navReducer(state = {}, action){
- switch (action.type) {
- case APP_INIT:
- //SquareNav.navigate('Home');
- break;
- default:
- break;
- }
-
- return state;
-}
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/reducers/RootReducer.js b/squarenotsquare/src/redux/reducers/RootReducer.js
index 8b54e1f..af7f207 100644
--- a/squarenotsquare/src/redux/reducers/RootReducer.js
+++ b/squarenotsquare/src/redux/reducers/RootReducer.js
@@ -1,10 +1,10 @@
import { combineReducers } from 'redux';
import { systemReducer } from './SystemReducer';
-import { navReducer } from './NavReducer';
+import { userReducer } from './UserReducer';
const rootReducer = combineReducers({
...systemReducer,
- navReducer
+ ...userReducer
});
export default rootReducer;
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/reducers/UserReducer.js b/squarenotsquare/src/redux/reducers/UserReducer.js
index e69de29..3c3a711 100644
--- a/squarenotsquare/src/redux/reducers/UserReducer.js
+++ b/squarenotsquare/src/redux/reducers/UserReducer.js
@@ -0,0 +1,31 @@
+import { APP_INIT } from "../types/SystemTypes";
+import {
+ SQUARE_START,
+ SQUARE_FINISHED,
+ ADDITION_FINISHED,
+ ADDITION_START
+} from '../types/UserTypes';
+
+const initialUserState = {
+ lastGameTime: null,
+ lastGameAnswers: null,
+ lastGameScore: null,
+ username: 'noname'
+}
+
+function usr(state = initialUserState, action) {
+ switch (action.type) {
+ case APP_INIT:
+ case SQUARE_START:
+ case ADDITION_START:
+ case SQUARE_FINISHED:
+ case ADDITION_FINISHED:
+ return {...state, ...action.user};
+ default:
+ return state;
+ }
+}
+
+export const userReducer = {
+ user: usr
+};
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/types/SystemTypes.js b/squarenotsquare/src/redux/types/SystemTypes.js
index a75ea52..0669679 100644
--- a/squarenotsquare/src/redux/types/SystemTypes.js
+++ b/squarenotsquare/src/redux/types/SystemTypes.js
@@ -1 +1,3 @@
-export const APP_INIT = 'app-init';
\ No newline at end of file
+export const APP_INIT = 'app-init';
+export const NAV_HOME = 'go-home';
+export const NAV_SCORES = 'nav-scores';
\ No newline at end of file
diff --git a/squarenotsquare/src/redux/types/UserTypes.js b/squarenotsquare/src/redux/types/UserTypes.js
new file mode 100644
index 0000000..bba52a3
--- /dev/null
+++ b/squarenotsquare/src/redux/types/UserTypes.js
@@ -0,0 +1,4 @@
+export const SQUARE_START = 'square-start';
+export const SQUARE_FINISHED = 'square-finished';
+export const ADDITION_START = 'addition-start';
+export const ADDITION_FINISHED = 'addition-finished';
\ No newline at end of file
diff --git a/squarenotsquare/src/screens/AdditionGame.js b/squarenotsquare/src/screens/AdditionGame.js
new file mode 100644
index 0000000..3750184
--- /dev/null
+++ b/squarenotsquare/src/screens/AdditionGame.js
@@ -0,0 +1,171 @@
+import React from "react";
+import { Text, TouchableOpacity, View, SafeAreaView } from "react-native";
+import { useState, useEffect, useRef, useMemo } from "react";
+import { useDispatch } from "react-redux";
+import {generateAdditionChallenge} from '../libs/Random';
+import { styles } from "./styles/AppStyles";
+import NineKey from "../components/NineKey";
+import Autoscroll from "../components/Autoscroll";
+import Fade from "../components/Fade";
+import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
+import Icons from '../themes/Icons';
+import Colors from "../themes/Colors";
+import Metrics from "../themes/Metrics";
+import { addFinished } from "../redux/actions/UserActions";
+
+function AdditionGame(props){
+
+ const [addChallenge, setAddChallenge]= useState(() => {return generateAdditionChallenge()});
+ const challengeState = useRef(-1);
+ const squareMemo = useMemo(renderPairs, [challengeState.current]);
+ const [timerState, setTimerState] = useState(0);
+ const localTimer = useRef(null);
+ const startTime = useRef(0);
+ const answers = useRef(0);
+ const [scrollOrigin, setScrollOrigin] = useState(0);
+ const scrollDestination = useRef(Metrics.animated.gameScrollInterval);
+ const [headerText, setHeaderText] = useState('Ready?');
+ const [headerColor, setHeaderColor] = useState(styles.green);
+ const [headerTextColor, setHeaderTextColor] = useState(styles.darkText);
+ const dispatch = useDispatch();
+
+ useEffect(() => {
+ let headerTimeout = null;
+
+ switch(timerState){
+ case 0:
+ headerTimeout = setTimeout(() => {
+ setHeaderColor(styles.yellow);
+ setHeaderText('Set');
+ setTimerState(1);
+ }, 1000);
+ break;
+ case 1:
+ headerTimeout = setTimeout(() => {
+ setHeaderColor(styles.red);
+ setHeaderTextColor(styles.lightText);
+ setHeaderText('Go!');
+ challengeState.current = 0;
+ setTimerState(2);
+ }, 1000);
+ break;
+ case 2:
+ headerTimeout = setTimeout(() => {
+ setHeaderColor(styles.dark);
+ startTime.current = (Date.now());
+ setHeaderText(0 + ' s');
+ setTimerState(3);
+ }, 1000);
+ break;
+ case 3:
+ headerTimeout = setInterval(() => {
+ let elapsed = Math.round((Date.now() - startTime.current) / (1000));
+ setHeaderText(elapsed + ' s');
+ }, 1000);
+ break;
+ default:
+ break;
+ }
+
+ localTimer.current = headerTimeout;
+
+ return () => {
+ clearTimeout(localTimer.current);
+ clearInterval(localTimer.current);
+ }
+ }, [timerState]);
+
+
+
+ function selectAnswer(answer){
+ let currentChallenge = addChallenge[challengeState.current];
+ let outcome = (
+ answer === (
+ currentChallenge.left + currentChallenge.right
+ )
+ );
+
+ if (outcome) {
+ answers.current = answers.current + 1;
+ }
+
+ let newOrigin = scrollDestination.current;
+ let newDestination = scrollDestination.current - Metrics.animated.gameScrollInterval;
+
+ scrollDestination.current = newDestination;
+ challengeState.current = challengeState.current + 1;
+ setScrollOrigin(newOrigin);
+
+ if (challengeState.current >= 20) {
+ completeChallenge();
+ }
+ }
+
+ function completeChallenge(){
+ let unformatted = (Date.now() - startTime.current) / (1000);
+ let finalTime = Number.parseFloat(unformatted).toFixed(3);
+ clearInterval(localTimer.current);
+ setHeaderColor(styles.darkGreen);
+ setHeaderText(finalTime + ' s');
+ setTimerState(4);
+ dispatch(addFinished(answers.current, finalTime));
+ }
+
+ function generateLine(left, right, pairIndex) {
+ return (
+
+
+
+ {left + ' + ' + right + ' = '}
+
+
+
+ );
+ }
+
+ function renderPairs(){
+ return addChallenge.map((pair, index) => {
+ return generateLine(pair.left, pair.right, index);
+ });
+ }
+
+ return (
+
+
+
+ {headerText}
+
+
+
+
+ {squareMemo}
+
+
+
+
+ Finish
+
+
+
+
+
+
+
+ {answers.current + ' / ' + addChallenge.length}
+
+
+
+
+ );
+}
+
+export default AdditionGame;
\ No newline at end of file
diff --git a/squarenotsquare/src/screens/Game.js b/squarenotsquare/src/screens/Game.js
index 106d1d5..6632002 100644
--- a/squarenotsquare/src/screens/Game.js
+++ b/squarenotsquare/src/screens/Game.js
@@ -1,13 +1,202 @@
import React from "react";
-import { Text, View } from "react-native";
-import { useState } from "react";
+import { Text, TouchableOpacity, View, SafeAreaView } from "react-native";
+import { useState, useEffect, useRef, useMemo } from "react";
+import { useDispatch } from "react-redux";
+import {genSquareChallenge} from '../libs/Random';
+import {shapes} from '../libs/ShapeEnum';
+import { styles } from "./styles/AppStyles";
+import { squareFinished } from "../redux/actions/UserActions";
+import Autoscroll from "../components/Autoscroll";
+import Fade from "../components/Fade";
+import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
+import Icons from '../themes/Icons';
+import Colors from "../themes/Colors";
+import Metrics from "../themes/Metrics";
function Game(props){
+ const [squareChallenge, setSquareChallenge] = useState(() => {return genSquareChallenge()});
+ const challengeState = useRef(-1);
+ const squareMemo = useMemo(renderPairs, [challengeState.current]);
+ const [timerState, setTimerState] = useState(0);
+ const localTimer = useRef(null);
+ const startTime = useRef(0);
+ const answers = useRef(0);
+ const [scrollOrigin, setScrollOrigin] = useState(0);
+ const scrollDestination = useRef(Metrics.animated.gameScrollInterval);
+ const [headerText, setHeaderText] = useState('Ready?');
+ const [headerColor, setHeaderColor] = useState(styles.green);
+ const [headerTextColor, setHeaderTextColor] = useState(styles.darkText);
+ const dispatch = useDispatch();
+
+ useEffect(() => {
+ let headerTimeout = null;
+
+ switch(timerState){
+ case 0:
+ headerTimeout = setTimeout(() => {
+ setHeaderColor(styles.yellow);
+ setHeaderText('Set');
+ setTimerState(1);
+ }, 1000);
+ break;
+ case 1:
+ headerTimeout = setTimeout(() => {
+ setHeaderColor(styles.red);
+ setHeaderTextColor(styles.lightText);
+ setHeaderText('Go!');
+ challengeState.current = 0;
+ setTimerState(2);
+ }, 1000);
+ break;
+ case 2:
+ headerTimeout = setTimeout(() => {
+ setHeaderColor(styles.dark);
+ startTime.current = (Date.now());
+ setHeaderText(0 + ' s');
+ setTimerState(3);
+ }, 1000);
+ break;
+ case 3:
+ headerTimeout = setInterval(() => {
+ let elapsed = Math.round((Date.now() - startTime.current) / (1000));
+ setHeaderText(elapsed + ' s');
+ }, 1000);
+ break;
+ default:
+ break;
+ }
+
+ localTimer.current = headerTimeout;
+
+ return () => {
+ clearTimeout(localTimer.current);
+ clearInterval(localTimer.current);
+ }
+ }, [timerState]);
+
+
+
+ function selectAnswer(pairIndex, correct){
+ if (pairIndex === challengeState.current){
+ if (correct) {
+ answers.current = answers.current + 1;
+ }
+
+ let newOrigin = scrollDestination.current;
+ let newDestination = scrollDestination.current - Metrics.animated.gameScrollInterval;
+
+ scrollDestination.current = newDestination;
+ challengeState.current = challengeState.current + 1;
+ setScrollOrigin(newOrigin);
+
+ if (challengeState.current >= 20) {
+ completeChallenge();
+ }
+ }
+ }
+
+ function completeChallenge(){
+ let unformatted = (Date.now() - startTime.current) / (1000);
+ let finalTime = Number.parseFloat(unformatted).toFixed(3);
+ clearInterval(localTimer.current);
+ setHeaderColor(styles.darkGreen);
+ setHeaderText(finalTime + ' s');
+ setTimerState(4);
+ dispatch(squareFinished(answers.current, finalTime));
+ }
+
+ function generateSquare(pairIndex){
+ return (
+ selectAnswer(pairIndex, true)}
+ style={[styles.darkGreen, styles.answerButton, styles.dropShadow, styles.centeredItems, styles.centeredJustify]}
+ >
+
+
+ )
+ }
+
+ function generateShape(index, pairIndex){
+ return (
+ selectAnswer(pairIndex, false)}
+ style={[styles.darkGreen, styles.answerButton, styles.dropShadow, styles.centeredItems, styles.centeredJustify]}
+ >
+
+
+ )
+ }
+
+ function generatePair(answer, shapeIndex, pairIndex) {
+ if (answer === 0) {
+ return (
+
+
+ {generateSquare(pairIndex)}
+ {generateShape(shapeIndex, pairIndex)}
+
+
+ );
+ } else {
+ return (
+
+
+ {generateShape(shapeIndex, pairIndex)}
+ {generateSquare(pairIndex)}
+
+
+ );
+ }
+ }
+
+ function renderPairs(){
+ return squareChallenge.map((pair, index) => {
+ return generatePair(pair.squarePos, pair.shapeType, index);
+ });
+ }
+
return (
-
- test
-
+
+
+
+ {headerText}
+
+
+
+
+
+ {squareMemo}
+
+
+
+ Finish
+
+
+
+
+
+
+ {answers.current + ' / ' + squareChallenge.length}
+
+
+
);
}
diff --git a/squarenotsquare/src/screens/HighScore.js b/squarenotsquare/src/screens/HighScore.js
index 4ec3a80..cf4ec72 100644
--- a/squarenotsquare/src/screens/HighScore.js
+++ b/squarenotsquare/src/screens/HighScore.js
@@ -1,14 +1,74 @@
-import React from "react";
-import { Text, View } from "react-native";
-import { useState } from "react";
+import React, { useEffect, useRef, useState } from "react";
+import { BackHandler, SafeAreaView, Text, TouchableOpacity, View } from "react-native";
+import { styles } from './styles/AppStyles';
+import Slider from "../components/Slider";
+import { useDispatch } from "react-redux";
+import {goHome} from '../redux/actions/SystemActions';
+import DbAPI from "../realm/DbAPI";
+import { ScrollView } from "react-native-gesture-handler";
-function HighScore(props){
+function HighScore(){
+ const dispatch = useDispatch();
+ const scores = useRef([]);
+ const [scoresLoaded, setScoresLoaded] = useState(false);
+
+ useEffect(() => {
+ BackHandler.addEventListener('hardwareBackPress', () => {return true});
+ }, [])
+
+ useEffect(() => {
+ if (!scoresLoaded) {
+ loadScores()
+ .then(() => {
+ setScoresLoaded(true);
+ });
+ }
+ }, [scoresLoaded])
+
+ function onPressMainMenu(){
+ dispatch(goHome());
+ }
+
+ async function loadScores(){
+ scores.current = DbAPI.getHighScores();
+ }
+
+ function renderScore(score, index){
+ return (
+
+ {(index+1) + '. '}
+
+ {score.value + ' - ' + score.user}
+
+
+ )
+ }
+
+ function renderScores(){
+ return scores.current.map((score, index) => {
+ return renderScore(score, index);
+ })
+ }
return (
-
- test
-
- );
+
+
+
+
+
+ Main Menu
+
+
+
+
+ {renderScores()}
+
+
+
+ )
}
export default HighScore;
\ No newline at end of file
diff --git a/squarenotsquare/src/screens/Home.js b/squarenotsquare/src/screens/Home.js
index e836d60..911fc96 100644
--- a/squarenotsquare/src/screens/Home.js
+++ b/squarenotsquare/src/screens/Home.js
@@ -1,14 +1,103 @@
-import React from "react";
-import { Text, View } from "react-native";
-import { useState } from "react";
+import React, { useEffect, useState } from "react";
+import { BackHandler, SafeAreaView, Text, TextInput, TouchableOpacity, View } from "react-native";
+import { styles } from './styles/AppStyles';
+import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
+import Icons from '../themes/Icons';
+import Colors from "../themes/Colors";
+import Metrics from "../themes/Metrics";
+import Slider from "../components/Slider";
+import { useDispatch, useSelector } from "react-redux";
+import {squareStartPressed} from '../redux/actions/UserActions';
+import { goToScores } from "../redux/actions/SystemActions";
+import ModePicker from '../components/ScrollingPicker';
-function Home(props){
+function Home(){
+ const dispatch = useDispatch();
+ const [mode, setMode] = useState('square');
+ const userRedux = useSelector((state) => state.user);
+ const [username, setUsername] = useState(() => {return userRedux.username})
+
+ useEffect(() => {
+ BackHandler.addEventListener('hardwareBackPress', () => {return true});
+ }, [])
+
+ function onPressStart(){
+ dispatch(squareStartPressed(mode, username));
+ }
+
+ function onPressHighScores(){
+ dispatch(goToScores());
+ }
+
+ function setGameMode(newMode) {
+ setMode(newMode);
+ }
+
+ const now = new Date(Date.now());
return (
-
- test
-
- );
+
+
+
+
+ Square
+
+ {' not '}
+
+
+ Square
+
+
+
+
+
+
+ {mode === 'square' ? 'Squares' : 'Addition'}
+
+
+
+
+
+
+
+ Start
+
+
+
+
+
+
+ High Scores
+
+
+
+
+
+
+ setUsername(updated)}
+ />
+
+
+
+ 0.0.1a Atonal Software Aug 10 2022
+
+
+
+ )
}
export default Home;
\ No newline at end of file
diff --git a/squarenotsquare/src/screens/Score.js b/squarenotsquare/src/screens/Score.js
new file mode 100644
index 0000000..acdfbe8
--- /dev/null
+++ b/squarenotsquare/src/screens/Score.js
@@ -0,0 +1,113 @@
+import React, { useEffect, useRef } from "react";
+import { useSelector } from "react-redux";
+import { BackHandler, SafeAreaView, Text, TouchableOpacity, View } from "react-native";
+import { styles } from './styles/AppStyles';
+import Slider from "../components/Slider";
+import { useDispatch } from "react-redux";
+import {goHome, goToScores} from '../redux/actions/SystemActions';
+
+function Score(props){
+ const dispatch = useDispatch();
+ const userRedux = useSelector((state) => state.user);
+ const timerScore = useRef(calculateTimerScore());
+ const answerScore = useRef(calculateAnswerScore());
+ const finalScore = useRef(calculateFinalScore(timerScore.current, answerScore.current));
+
+
+ useEffect(() => {
+ BackHandler.addEventListener('hardwareBackPress', () => {return true});
+ }, [])
+
+ function calculateTimerScore(user = userRedux){
+ if (user !== null){
+ let score = Math.round((60 - user.lastGameTime) * 1000);
+ if (score < 0) {
+ return 0;
+ } else {
+ return score;
+ }
+ } else {
+ return 0;
+ }
+ }
+
+ function calculateAnswerScore(user = userRedux) {
+ if (user !== null) {
+ let score = (user.lastGameAnswers * 1000);
+ return score;
+ } else {
+ return 0;
+ }
+ }
+
+ function calculateFinalScore(timerScore, answerScore) {
+ let score = timerScore + answerScore;
+ return score;
+ }
+
+ function onPressMainMenu(){
+ dispatch(goHome());
+ }
+
+ function onPressHighScores(){
+ dispatch(goToScores());
+ }
+
+ const now = new Date(Date.now());
+
+ return (
+
+
+
+
+ TIME
+
+
+ {'(60 - ' + userRedux.lastGameTime + ') X 1000 = ' + timerScore.current}
+
+
+
+
+ ANSWERS
+
+
+ {'('+ userRedux.lastGameAnswers + ') X 1000 = ' + answerScore.current}
+
+
+
+
+
+ TOTAL
+
+
+ {finalScore.current}
+
+
+
+
+
+
+
+ Main Menu
+
+
+
+
+
+
+ High Scores
+
+
+
+
+
+ )
+}
+
+export default Score;
\ No newline at end of file
diff --git a/squarenotsquare/src/screens/Settings.js b/squarenotsquare/src/screens/Settings.js
deleted file mode 100644
index a08d504..0000000
--- a/squarenotsquare/src/screens/Settings.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import React from "react";
-import { Text, View } from "react-native";
-import { useState } from "react";
-
-function Settings(props){
-
- return (
-
- test
-
- );
-}
-
-export default Settings;
\ No newline at end of file
diff --git a/squarenotsquare/src/screens/Splash.js b/squarenotsquare/src/screens/Splash.js
index fa261a7..7386c22 100644
--- a/squarenotsquare/src/screens/Splash.js
+++ b/squarenotsquare/src/screens/Splash.js
@@ -1,12 +1,21 @@
import React from "react";
-import { Text, View } from "react-native";
-import { useState } from "react";
+import { Image, Platform, View } from "react-native";
+import { styles } from './styles/AppStyles';
function Splash(props){
+ let splashLogo = null;
+ if (Platform.OS === 'android') {
+ splashLogo = {uri: 'asset:/squarelogo.png'};
+ } else {
+ splashLogo = {url: 'squarelogo'}
+ }
return (
-
- test
+
+
);
}
diff --git a/squarenotsquare/src/screens/styles/AppStyles.js b/squarenotsquare/src/screens/styles/AppStyles.js
index 1fee9d5..2f6240a 100644
--- a/squarenotsquare/src/screens/styles/AppStyles.js
+++ b/squarenotsquare/src/screens/styles/AppStyles.js
@@ -28,10 +28,19 @@ export const styles = StyleSheet.create({
stretch: {alignSelf: 'stretch'},
absolute: {
position: 'absolute',
- top: Metrics.screenSections.headerHeight,
- bottom: 0,
- left: 0,
- right: 0,
+ top: 0,
+ right: 0
+ },
+
+ dropShadow: {
+ elevation: Metrics.shadows.elevation,
+ shadowOffset: {
+ width: Metrics.shadows.offsetWidth,
+ height: Metrics.shadows.offsetHeight
+ },
+ shadowColor: Colors.material.dark,
+ shadowOpacity: Metrics.shadows.opacity,
+ shadowRadius: Metrics.shadows.radius
},
spaceBetween: {justifyContent: 'space-between'},
@@ -50,12 +59,84 @@ export const styles = StyleSheet.create({
subFont: {fontSize: Fonts.subFont.size},
italic: {fontStyle: 'italic'},
- greyText: {color: Colors.material.grey600},
+ darkText: {color: Colors.fonts.dark},
+ lightText: {color: Colors.fonts.light},
+ greyText: {color: Colors.fonts.grey},
redText: {color: Colors.material.red800},
blueText: {color: Colors.material.blue400},
boldText: {fontWeight: 'bold'},
- body: {
- backgroundColor: Colors.material.light,
+ body: {backgroundColor: Colors.material.grey400},
+ lightBackground: {backgroundColor: Colors.material.light},
+ green: {backgroundColor: Colors.material.green400},
+ yellow: {backgroundColor: Colors.material.yellow600},
+ red: {backgroundColor: Colors.material.red800},
+ darkGreen: {backgroundColor: Colors.material.green400dark},
+ dark: {backgroundColor: Colors.material.dark},
+
+ splashLogo: {
+ width: Metrics.images.splashLogo.width,
+ height: Metrics.images.splashLogo.height
+ },
+
+ smallMargin: {margin: Metrics.margins.default},
+ gameView: {margin: Metrics.margins.gameStartMargin},
+ buttonMargin: {
+ marginBottom: Metrics.margins.buttonMargin,
+ marginTop: Metrics.margins.buttonMargin
+ },
+ modePickerMargin: {
+ marginLeft: Metrics.icons.buttonIcon * 0.5,
+ marginRight: Metrics.icons.buttonIcon * 0.5
+ },
+
+ footer: {
+ margin: Metrics.margins.default,
+ height: Metrics.screenSections.footerHeight,
+ borderTopWidth: Metrics.borders.width,
+ borderTopColor: Colors.material.grey400
+ },
+
+ menuButton: {
+ borderRadius: Metrics.buttons.borderRadius,
+ width: Metrics.buttons.menuButton.width,
+ height: Metrics.buttons.menuButton.height
+ },
+
+ answerButton: {
+ borderRadius: Metrics.buttons.borderRadius,
+ width: Metrics.buttons.answerButton.width,
+ height: Metrics.buttons.answerButton.height
+ },
+
+ usernameInput: {
+ borderBottomWidth: Metrics.borders.width,
+ borderBottomColor: Colors.material.grey400
+ },
+
+ addQuestionHeight: {
+ height: Metrics.screenSections.addQuestionHeight
+ },
+
+ nineKeyButton: {
+ borderRadius: Metrics.buttons.borderRadius,
+ width: Metrics.buttons.nineKeyButton.width,
+ height: Metrics.buttons.nineKeyButton.height,
+ margin: Metrics.margins.nineKeyMargin
+ },
+
+ settingsContainer: {
+ zIndex: 1000,
+ width: Metrics.icons.buttonIcon,
+ height: Metrics.icons.buttonIcon
+ },
+
+ modePicker: {
+ width: Metrics.icons.buttonIcon * 2,
+ overflow: "visible"
+ },
+
+ timerView: {
+ height: Metrics.screenSections.timerHeight
}
})
\ No newline at end of file
diff --git a/squarenotsquare/src/services/Keystore.js b/squarenotsquare/src/services/Keystore.js
index 70cd3f3..32d4f37 100644
--- a/squarenotsquare/src/services/Keystore.js
+++ b/squarenotsquare/src/services/Keystore.js
@@ -1,8 +1,13 @@
-import RNSecureKeyStore, {ACCESSIBLE} from 'react-native-secure-key-store';
+import {
+ setInternetCredentials,
+ getInternetCredentials,
+ resetInternetCredentials,
+ ACCESSIBLE
+} from "react-native-keychain";
export async function removeKey(key) {
let outcome = null;
- await RNSecureKeyStore.remove(key).then(
+ await resetInternetCredentials(key).then(
(res) => {
outcome = true;
},
@@ -16,7 +21,7 @@ export async function removeKey(key) {
export async function setKey(key, value) {
let outcome = null;
- await RNSecureKeyStore.set(key, value, {
+ await setInternetCredentials(key, value, 'none', {
accessible: ACCESSIBLE.WHEN_UNLOCKED_THIS_DEVICE_ONLY,
}).then(
(res) => {
@@ -32,9 +37,13 @@ export async function setKey(key, value) {
export async function getKey(key) {
let value = null;
- await RNSecureKeyStore.get(key).then(
+ await getInternetCredentials(key).then(
(res) => {
- value = res;
+ if (res === false) {
+ value = false;
+ } else {
+ value = res.username;
+ }
},
(err) => {
value = null;
diff --git a/squarenotsquare/src/themes/Colors.js b/squarenotsquare/src/themes/Colors.js
index 157821a..a81f16c 100644
--- a/squarenotsquare/src/themes/Colors.js
+++ b/squarenotsquare/src/themes/Colors.js
@@ -5,13 +5,18 @@ class AppColors {
//200
blue200: '#90caf9',
+ grey200: '#eeeeee',
//400
blue400: '#5c6bc0',
grey400: '#bdbdbd',
+ green400: '#66bb6a',
+ green400light: '#98ee99',
+ green400dark: '#338a3e',
//600
grey600: '#757575',
+ yellow600: '#fdd835',
//700
grey700: '#616161',
@@ -28,6 +33,7 @@ class AppColors {
fonts = {
dark: '#000000',
+ grey: '#757575',
light: '#ffffff'
};
}
diff --git a/squarenotsquare/src/themes/Icons.js b/squarenotsquare/src/themes/Icons.js
index 6820b80..1e74f22 100644
--- a/squarenotsquare/src/themes/Icons.js
+++ b/squarenotsquare/src/themes/Icons.js
@@ -1,9 +1,22 @@
class AppIcons {
squareIcons = {
+ square: 'square',
settings: 'cog-outline',
toggleOn: 'toggle-switch-on',
- toggleOfff: 'toggle-switch-off'
+ toggleOff: 'toggle-switch-off',
+ check: 'check',
+ plus: 'plus',
+ edit: 'pencil'
};
+
+ wrongShapes = {
+ rectangle: 'rectangle',
+ triangle: 'triangle',
+ circle: 'circle',
+ hexagon: 'hexagon',
+ pentagon: 'pentagon',
+ octagon: 'octagon'
+ }
}
const Icons = new AppIcons();
diff --git a/squarenotsquare/src/themes/Metrics.js b/squarenotsquare/src/themes/Metrics.js
index 98fcf37..c2ef277 100644
--- a/squarenotsquare/src/themes/Metrics.js
+++ b/squarenotsquare/src/themes/Metrics.js
@@ -14,16 +14,74 @@ class AppMetrics {
this.screenWidth = width;
this.screenHeight = height;
}
+
+ this.shadows = {
+ elevation: 5,
+ offsetWidth: 5,
+ offsetHeight: 5,
+ opacity: 0.5,
+ radius: 5
+ }
+
+ this.icons = {
+ splashIcon: this.normalize(100),
+ buttonIcon: this.normalize(20),
+ inputIcon: this.normalize(15)
+ }
+
+ this.images = {
+ splashLogo: {
+ width: this.screenWidth * 0.33,
+ height: this.screenWidth * 0.33
+ }
+ }
+
+ this.margins = {
+ default: this.normalize(5),
+ buttonMargin: this.normalize(20),
+ gameStartMargin: this.normalize(30),
+ nineKeyMargin: this.normalize(2)
+ }
+
+ this.buttons = {
+ borderRadius: 10,
+ menuButton: {
+ height: this.normalize(30),
+ width: this.screenWidth * 0.7
+ },
+ answerButton: {
+ width: this.normalize(40),
+ height: this.normalize(40)
+ },
+ nineKeyButton: {
+ width: this.screenWidth * 0.28,
+ height: this.screenHeight * 0.08
+ }
+ }
+
+ this.animated = {
+ gameScrollInterval: (
+ this.buttons.answerButton.height +
+ (this.margins.buttonMargin * 2)
+ )
+ }
+
+ this.screenSections = {
+ headerHeight: this.normalize(20),
+ sectionWidth: this.screenWidth,
+ footerHeight: this.normalize(10),
+ timerHeight: this.normalize(20),
+ addQuestionHeight: this.buttons.answerButton.height
+ }
+
+ this.borders = {
+ width: 1
+ }
}
normalize(size){
return (size * this.scalar);
}
-
- screenSections = {
- headerHeight: this.normalize(20),
- sectionWidth: this.screenWidth
- }
}
const Metrics = new AppMetrics();