From d2fe25d3abd8efb2d22bfeedf84651b6d1ba8ef7 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Mon, 12 Apr 2021 15:59:49 -0300 Subject: [PATCH 01/43] feat: offline editors (#392) * feat: add react-native-zip-archive dependency * feat: download and extract offline editors * feat: use offline editor path as webview source * fix: change function name * fix: move deactivate editor to compose unmount * fix: add origin whitelist * fix: add read access url * fix: increase load end timeout to remove theme load flicker * fix: set online url on getOfflineEditor error * fix: set editor width and scale * fix: add timeout to remove download message flicker * fix: deactivate component when switching editors * fix: use online url if process is terminated --- ios/Podfile.lock | 14 ++++ package.json | 1 + src/screens/Compose/ComponentView.tsx | 116 +++++++++++++++++++++----- src/screens/Compose/Compose.styled.ts | 9 +- src/screens/Compose/Compose.tsx | 43 ++++++++-- yarn.lock | 5 ++ 6 files changed, 152 insertions(+), 36 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9cf557d6..0f5d1c38 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -291,10 +291,18 @@ PODS: - React - RNVectorIcons (7.1.0): - React + - RNZipArchive (6.0.2): + - React-Core + - RNZipArchive/Core (= 6.0.2) + - SSZipArchive (= 2.2.3) + - RNZipArchive/Core (6.0.2): + - React-Core + - SSZipArchive (= 2.2.3) - sn-textview (1.0.0): - React-Core - SNReactNative (1.0.0): - React-Core + - SSZipArchive (2.2.3) - TrustKit (1.6.5) - Yoga (1.14.0) @@ -349,6 +357,7 @@ DEPENDENCIES: - RNSearchBar (from `../node_modules/react-native-search-bar`) - RNStoreReview (from `../node_modules/react-native-store-review/ios`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) + - RNZipArchive (from `../node_modules/react-native-zip-archive`) - sn-textview (from `../node_modules/sn-textview`) - SNReactNative (from `../node_modules/standard-notes-rn`) - TrustKit (= 1.6.5) @@ -357,6 +366,7 @@ DEPENDENCIES: SPEC REPOS: trunk: - boost-for-react-native + - SSZipArchive - TrustKit EXTERNAL SOURCES: @@ -456,6 +466,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-store-review/ios" RNVectorIcons: :path: "../node_modules/react-native-vector-icons" + RNZipArchive: + :path: "../node_modules/react-native-zip-archive" sn-textview: :path: "../node_modules/sn-textview" SNReactNative: @@ -513,8 +525,10 @@ SPEC CHECKSUMS: RNSearchBar: 5ed8e13ba8a6c701fbd2afdfe4164493d24b2aee RNStoreReview: 62d6afd7c37db711a594bbffca6b0ea3a812b7a8 RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 + RNZipArchive: 3dd2de5b7f590d79e83270508b78870bf5a54f36 sn-textview: 43135d1feb6e97994b8475b6a1e6e3c902d6b189 SNReactNative: 3fa6096f78bea7dbd329c897ee854f73666d20db + SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 diff --git a/package.json b/package.json index 38c6c7cd..a6296d0e 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "react-native-vector-icons": "^7.1.0", "react-native-version-info": "^1.1.0", "react-native-webview": "^11.0.3", + "react-native-zip-archive": "^6.0.2", "react-navigation-header-buttons": "^6.0.2", "sn-textview": "standardnotes/sn-textview#3b56f5c2c87c24370f00ee5a0cee0da9a9fc66c3", "standard-notes-rn": "standardnotes/standard-notes-rn#996b016", diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 3976923a..749c0265 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -3,13 +3,7 @@ import { useFocusEffect, useNavigation } from '@react-navigation/native'; import { ApplicationContext } from '@Root/ApplicationContext'; import { AppStackNavigationProp } from '@Root/AppStack'; import { SCREEN_NOTES } from '@Screens/screens'; -import { - ButtonType, - ComponentArea, - LiveItem, - SNComponent, - SNNote, -} from '@standardnotes/snjs'; +import { ButtonType, LiveItem, SNComponent, SNNote } from '@standardnotes/snjs'; import React, { useCallback, useContext, @@ -18,11 +12,19 @@ import React, { useState, } from 'react'; import { Platform } from 'react-native'; +import { + DocumentDirectoryPath, + downloadFile, + exists, + readDir, + unlink, +} from 'react-native-fs'; import { WebView } from 'react-native-webview'; import { OnShouldStartLoadWithRequest, WebViewMessageEvent, } from 'react-native-webview/lib/WebViewTypes'; +import { unzip } from 'react-native-zip-archive'; import { FlexContainer, LockedContainer, @@ -37,12 +39,16 @@ type Props = { onLoadEnd: () => void; onLoadStart: () => void; onLoadError: () => void; + onDownloadEditorStart: () => void; + onDownloadEditorEnd: () => void; }; export const ComponentView = ({ onLoadEnd, onLoadError, onLoadStart, + onDownloadEditorStart, + onDownloadEditorEnd, componentUuid, }: Props) => { // Context @@ -54,6 +60,8 @@ export const ComponentView = ({ >(() => new LiveItem(componentUuid, application!)); const [url, setUrl] = useState(''); const [showWebView, setShowWebView] = useState(true); + const [offlineUrl, setOfflineUrl] = useState(''); + const [readAccessUrl, setReadAccessUrl] = useState(''); // Ref const webViewRef = useRef(null); @@ -69,7 +77,7 @@ export const ComponentView = ({ }); return removeBlurScreenListener; - }); + }, [navigation]); useFocusEffect(() => { setShowWebView(true); @@ -110,10 +118,60 @@ export const ComponentView = ({ } }, [application]); + const getOfflineEditorUrl = useCallback(async () => { + const { + identifier: editorIdentifier, + version: editorVersion, + download_url: downloadUrl, + } = liveComponent!.item.package_info; + const downloadPath = `${DocumentDirectoryPath}/${editorIdentifier}.zip`; + const editorDir = `${DocumentDirectoryPath}/editors/${editorIdentifier}`; + const versionDir = `${editorDir}/${editorVersion}`; + + setReadAccessUrl(versionDir); + + const shouldDownload = + !(await exists(versionDir)) || (await readDir(versionDir)).length === 0; + + if (shouldDownload) { + try { + onDownloadEditorStart(); + // Delete any previous versions downloads + if (await exists(editorDir)) { + await unlink(editorDir); + } + await downloadFile({ + fromUrl: downloadUrl, + toFile: downloadPath, + }).promise; + await unzip(downloadPath, versionDir); + // Delete zip after extraction + await unlink(downloadPath); + } finally { + onDownloadEditorEnd(); + } + } + + const packageDir = await readDir(versionDir); + const possibleIndexLocations = [ + `${packageDir[0].path}/dist/index.html`, + `${packageDir[0].path}/index.html`, + ]; + + for (const location of possibleIndexLocations) { + if (await exists(location)) { + return `file://${location}`; + } + } + + return ''; + }, [liveComponent, onDownloadEditorStart, onDownloadEditorEnd]); + useEffect(() => { - if (liveComponent) { + let mounted = true; + const setEditorUrl = async () => { const newUrl = application!.componentManager!.urlForComponent( - liveComponent.item + liveComponent!.item ); if (!newUrl) { application?.alertService!.alert( @@ -122,18 +180,28 @@ export const ComponentView = ({ 'OK' ); } else { - setUrl(newUrl); + try { + const offlineEditorUrl = await getOfflineEditorUrl(); + + if (mounted) { + setOfflineUrl(offlineEditorUrl); + } + } finally { + setUrl(newUrl); + } } + }; + if (liveComponent) { + setEditorUrl(); } // deinit return () => { - application?.componentGroup.deactivateComponentForArea( - ComponentArea.Editor - ); + mounted = false; + application?.componentManager.deactivateComponent(componentUuid); liveComponent?.deinit(); }; - }, [application, liveComponent]); + }, [application, componentUuid, getOfflineEditorUrl, liveComponent]); const onMessage = (event: WebViewMessageEvent) => { let data; @@ -174,7 +242,7 @@ export const ComponentView = ({ */ setTimeout(() => { onLoadEnd(); - }, 100); + }, 1000); }, [application, liveComponent, onLoadEnd]); const onLoadStartHandler = () => { @@ -185,6 +253,7 @@ export const ComponentView = ({ if (timeoutRef.current) { clearTimeout(timeoutRef.current); } + onLoadError(); }; @@ -217,6 +286,10 @@ export const ComponentView = ({ window.parent.postMessage = function(data) { window.parent.ReactNativeWebView.postMessage(data); }; + const meta = document.createElement('meta'); + meta.setAttribute('content', 'width=device-width, initial-scale=1, user-scalable=no'); + meta.setAttribute('name', 'viewport'); + document.getElementsByTagName('head')[0].appendChild(meta); return true; })()`; }; @@ -233,10 +306,13 @@ export const ComponentView = ({ )} - {Boolean(url) && ( + {(Boolean(url) || Boolean(offlineUrl)) && ( setOfflineUrl('')} /> )} diff --git a/src/screens/Compose/Compose.styled.ts b/src/screens/Compose/Compose.styled.ts index 8b6f1887..a0b1eb46 100644 --- a/src/screens/Compose/Compose.styled.ts +++ b/src/screens/Compose/Compose.styled.ts @@ -66,14 +66,7 @@ export const LoadingWebViewContainer = styled.View<{ locked?: boolean }>` justify-content: center; background-color: ${({ theme }) => theme.stylekitBackgroundColor}; `; -export const LoadingWebViewText = styled.Text` - padding-left: 0px; - color: ${({ theme }) => theme.stylekitForegroundColor}; - opacity: 0.7; - font-size: 22px; - font-weight: bold; -`; -export const LoadingWebViewSubtitle = styled.Text` +export const LoadingText = styled.Text` padding-left: 0px; color: ${({ theme }) => theme.stylekitForegroundColor}; opacity: 0.7; diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index fa2edbd9..4138a9fc 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -23,9 +23,8 @@ import { ThemeContext } from 'styled-components'; import { ComponentView } from './ComponentView'; import { Container, + LoadingText, LoadingWebViewContainer, - LoadingWebViewSubtitle, - LoadingWebViewText, LockedContainer, LockedText, NoteTitleInput, @@ -46,6 +45,7 @@ type State = { editorComponent: SNComponent | undefined; webViewError: boolean; loadingWebview: boolean; + downloadingEditor: boolean; }; export class Compose extends React.Component<{}, State> { @@ -55,6 +55,7 @@ export class Compose extends React.Component<{}, State> { saveTimeout: number | undefined; alreadySaved: boolean = false; statusTimeout: number | undefined; + downloadingMessageTimeout: number | undefined; removeEditorObserver?: () => void; removeEditorNoteValueChangeObserver?: () => void; removeComponentsObserver?: () => void; @@ -71,6 +72,7 @@ export class Compose extends React.Component<{}, State> { saveError: false, webViewError: false, loadingWebview: false, + downloadingEditor: false, }; componentDidMount() { @@ -228,6 +230,9 @@ export class Compose extends React.Component<{}, State> { if (this.statusTimeout) { clearTimeout(this.statusTimeout); } + if (this.downloadingMessageTimeout) { + clearTimeout(this.downloadingMessageTimeout); + } } /** @@ -401,6 +406,25 @@ export class Compose extends React.Component<{}, State> { this.saveNote(false, true, false, false, newNoteText); }; + onDownloadEditorStart = () => + this.setState({ + downloadingEditor: true, + }); + + onDownloadEditorEnd = () => { + if (this.downloadingMessageTimeout) { + clearTimeout(this.downloadingMessageTimeout); + } + + this.downloadingMessageTimeout = setTimeout( + () => + this.setState({ + downloadingEditor: false, + }), + 100 + ); + }; + render() { const shouldDisplayEditor = this.state.editorComponent && @@ -461,12 +485,15 @@ export class Compose extends React.Component<{}, State> { autoCapitalize={'sentences'} editable={!this.noteLocked} /> - {this.state.loadingWebview && ( + {(this.state.downloadingEditor || + this.state.loadingWebview) && ( - {'LOADING'} - - {this.state.editorComponent?.name} - + + {this.state.downloadingEditor + ? 'Downloading ' + : 'Loading '} + {this.state.editorComponent?.name}... + )} {/* setting webViewError to false on onLoadEnd will cause an infinite loop on Android upon webview error, so, don't do that. */} @@ -492,6 +519,8 @@ export class Compose extends React.Component<{}, State> { webViewError: true, }); }} + onDownloadEditorStart={this.onDownloadEditorStart} + onDownloadEditorEnd={this.onDownloadEditorEnd} /> )} {!shouldDisplayEditor && diff --git a/yarn.lock b/yarn.lock index 635bf6e7..4f2a238c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6944,6 +6944,11 @@ react-native-webview@^11.0.3: escape-string-regexp "2.0.0" invariant "2.2.4" +react-native-zip-archive@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/react-native-zip-archive/-/react-native-zip-archive-6.0.2.tgz#3594a3072f229c6e99b2121ab955b74ba422850d" + integrity sha512-TQVmUvbpVV2WryGaZs6HIzIYaGU55Sz3FmZA4ayqEhJDvkGQxlElXzanIIXsHWcOybrb+9572X0trLNbXIYrRQ== + react-native@0.63.4: version "0.63.4" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.4.tgz#2210fdd404c94a5fa6b423c6de86f8e48810ec36" From 439df5f14c63f20f6f16e27d58305bed8cdae977 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Mon, 12 Apr 2021 16:29:25 -0300 Subject: [PATCH 02/43] fix: check if component mounted before state update --- src/screens/Compose/ComponentView.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 749c0265..1e0d891e 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -187,7 +187,9 @@ export const ComponentView = ({ setOfflineUrl(offlineEditorUrl); } } finally { - setUrl(newUrl); + if (mounted) { + setUrl(newUrl); + } } } }; From 22e06c43af9421c19009d2dda6136822d945a052 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Mon, 12 Apr 2021 17:08:49 -0300 Subject: [PATCH 03/43] fix: typing quickly on search bar causes issues with input --- src/screens/Notes/NoteList.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/screens/Notes/NoteList.tsx b/src/screens/Notes/NoteList.tsx index 074920e5..bf69c6cd 100644 --- a/src/screens/Notes/NoteList.tsx +++ b/src/screens/Notes/NoteList.tsx @@ -209,7 +209,6 @@ export const NoteList = (props: Props) => { ref={iosSearchBarInputRef} keyboardAppearance={themeService?.keyboardColorForActiveTheme()} placeholder="Search" - text={searchText} hideBackground /** * keyboardColorForActiveTheme returns the same value as apperance From 5732930ad240f0a893379bf59b2b68e57a5b5704 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 13 Apr 2021 11:58:50 -0300 Subject: [PATCH 04/43] fix: set screenshot privacy on app launch --- src/lib/application_state.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/application_state.ts b/src/lib/application_state.ts index bc42dd27..ed9fd0c8 100644 --- a/src/lib/application_state.ts +++ b/src/lib/application_state.ts @@ -174,13 +174,13 @@ export class ApplicationState extends ApplicationService { ); await this.loadUnlockTiming(); - this.screenshotPrivacyEnabled = - (await this.getScreenshotPrivacyEnabled()) ?? true; - this.setAndroidScreenshotPrivacy(this.screenshotPrivacyEnabled); } async onAppLaunch() { MobileApplication.setPreviouslyLaunched(); + this.screenshotPrivacyEnabled = + (await this.getScreenshotPrivacyEnabled()) ?? true; + this.setAndroidScreenshotPrivacy(this.screenshotPrivacyEnabled); } /** From d57361745b55327691824a91057b2bb54d90d36e Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 14 Apr 2021 10:44:13 -0300 Subject: [PATCH 05/43] fix: decrease loading editor message timeout --- src/screens/Compose/ComponentView.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 1e0d891e..06c7a394 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -244,7 +244,7 @@ export const ComponentView = ({ */ setTimeout(() => { onLoadEnd(); - }, 1000); + }, 100); }, [application, liveComponent, onLoadEnd]); const onLoadStartHandler = () => { From c9c6db0ab2be2e23c2543b09ea7d828ed513d480 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 14 Apr 2021 10:53:24 -0300 Subject: [PATCH 06/43] chore(version): 3.6.7 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 90f177bb..bbfc08cf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "StandardNotes", - "version": "3.6.6", - "user-version": "3.6.6", + "version": "3.6.7", + "user-version": "3.6.7", "private": true, "license": "AGPL-3.0-or-later", "scripts": { From cbd2d1702abda73a4095dceaa76be785e8a8f65b Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 23 Apr 2021 15:43:15 +0200 Subject: [PATCH 07/43] fix: remember active tag on launch (#410) * chore: run pod install * fix: use 'application?' * fix: restore selected tag on launch --- ios/Podfile.lock | 8 +- ios/StandardNotes.xcodeproj/project.pbxproj | 172 ++++++------------ src/lib/application.ts | 2 +- src/lib/application_state.ts | 66 ++++--- src/screens/Compose/ComponentView.tsx | 4 +- src/screens/Notes/Notes.tsx | 18 +- .../Settings/Sections/OptionsSection.tsx | 6 +- .../Settings/Sections/PreferencesSection.tsx | 20 +- src/screens/SideMenu/MainSideMenu.tsx | 2 +- 9 files changed, 133 insertions(+), 165 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 0f5d1c38..9a34a6cc 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -299,9 +299,9 @@ PODS: - React-Core - SSZipArchive (= 2.2.3) - sn-textview (1.0.0): - - React-Core + - React - SNReactNative (1.0.0): - - React-Core + - React - SSZipArchive (2.2.3) - TrustKit (1.6.5) - Yoga (1.14.0) @@ -526,8 +526,8 @@ SPEC CHECKSUMS: RNStoreReview: 62d6afd7c37db711a594bbffca6b0ea3a812b7a8 RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 RNZipArchive: 3dd2de5b7f590d79e83270508b78870bf5a54f36 - sn-textview: 43135d1feb6e97994b8475b6a1e6e3c902d6b189 - SNReactNative: 3fa6096f78bea7dbd329c897ee854f73666d20db + sn-textview: f478ee79531da2c7b129c4ea3b20c665e75e1f4b + SNReactNative: c47c4fd6d310eea152cc52e23f4fd306491efee3 SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 diff --git a/ios/StandardNotes.xcodeproj/project.pbxproj b/ios/StandardNotes.xcodeproj/project.pbxproj index 8ad713d9..e4801350 100644 --- a/ios/StandardNotes.xcodeproj/project.pbxproj +++ b/ios/StandardNotes.xcodeproj/project.pbxproj @@ -25,7 +25,7 @@ 83DCC09F24C0A21200D58E1B /* Red@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8343BD69244F211C0020E9F0 /* Red@2x.png */; }; 83DCC0A024C0A21200D58E1B /* Red@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8343BD68244F211C0020E9F0 /* Red@3x.png */; }; 83F9431824C1EBC5007014C8 /* Dev.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 83F9431724C1EBC5007014C8 /* Dev.xcassets */; }; - 9472713467B26799E9270592 /* Pods_StandardNotes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 892691A10E7D83241BCA16C1 /* Pods_StandardNotes.framework */; }; + EC7C2A984CBC86DBCA44D3AF /* libPods-StandardNotes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D9673D75406FE1C6B945FF8 /* libPods-StandardNotes.a */; }; F1AF40B6D465714940D457A3 /* libPods-StandardNotesDev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 340672DE690D292C12CF8DF2 /* libPods-StandardNotesDev.a */; }; /* End PBXBuildFile section */ @@ -51,6 +51,7 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StandardNotes/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StandardNotes/main.m; sourceTree = ""; }; 340672DE690D292C12CF8DF2 /* libPods-StandardNotesDev.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-StandardNotesDev.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4D9673D75406FE1C6B945FF8 /* libPods-StandardNotes.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-StandardNotes.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 810594E7EAEF139BFC2FDD3B /* Pods-StandardNotes.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotes.release.xcconfig"; path = "Target Support Files/Pods-StandardNotes/Pods-StandardNotes.release.xcconfig"; sourceTree = ""; }; 8343BD67244F211C0020E9F0 /* Red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Red.png; sourceTree = ""; }; 8343BD68244F211C0020E9F0 /* Red@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Red@3x.png"; sourceTree = ""; }; @@ -61,7 +62,6 @@ 83E99B1D24EC4EC5007B8F21 /* SN Dev.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "SN Dev.entitlements"; sourceTree = ""; }; 83E99B1E24EC9953007B8F21 /* StandardNotes.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StandardNotes.entitlements; path = StandardNotes/StandardNotes.entitlements; sourceTree = ""; }; 83F9431724C1EBC5007014C8 /* Dev.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Dev.xcassets; sourceTree = ""; }; - 892691A10E7D83241BCA16C1 /* Pods_StandardNotes.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_StandardNotes.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 91D5BC0CD8D03CC85FE2AAD4 /* Pods-StandardNotesDev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotesDev.debug.xcconfig"; path = "Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev.debug.xcconfig"; sourceTree = ""; }; A905072699998C893CF2B50C /* Pods-StandardNotes.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotes.debug.xcconfig"; path = "Target Support Files/Pods-StandardNotes/Pods-StandardNotes.debug.xcconfig"; sourceTree = ""; }; CB9B9DBF83F519AB6584F5FE /* Pods-StandardNotesDev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StandardNotesDev.release.xcconfig"; path = "Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev.release.xcconfig"; sourceTree = ""; }; @@ -81,7 +81,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9472713467B26799E9270592 /* Pods_StandardNotes.framework in Frameworks */, + EC7C2A984CBC86DBCA44D3AF /* libPods-StandardNotes.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -138,7 +138,7 @@ ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, 340672DE690D292C12CF8DF2 /* libPods-StandardNotesDev.a */, - 892691A10E7D83241BCA16C1 /* Pods_StandardNotes.framework */, + 4D9673D75406FE1C6B945FF8 /* libPods-StandardNotes.a */, ); name = Frameworks; sourceTree = ""; @@ -220,7 +220,7 @@ 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 94C763DAAEF98E4BE76E8F53 /* [CP] Embed Pods Frameworks */, + 1DCF3C40742945E814110BC4 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -349,6 +349,56 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; + 1DCF3C40742945E814110BC4 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-StandardNotes/Pods-StandardNotes-resources.sh", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-StandardNotes/Pods-StandardNotes-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 22CF5F27C67390DA618B03A3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -394,7 +444,7 @@ "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core-library/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -454,116 +504,6 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 94C763DAAEF98E4BE76E8F53 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-StandardNotes/Pods-StandardNotes-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/TrustKit-framework/TrustKit.framework", - "${BUILT_PRODUCTS_DIR}/BugsnagReactNative-framework/Bugsnag.framework", - "${BUILT_PRODUCTS_DIR}/DoubleConversion-framework/DoubleConversion.framework", - "${BUILT_PRODUCTS_DIR}/FBReactNativeSpec-framework/FBReactNativeSpec.framework", - "${BUILT_PRODUCTS_DIR}/Folly-framework/folly.framework", - "${BUILT_PRODUCTS_DIR}/RCTTypeSafety-framework/RCTTypeSafety.framework", - "${BUILT_PRODUCTS_DIR}/RNCAsyncStorage-framework/RNCAsyncStorage.framework", - "${BUILT_PRODUCTS_DIR}/RNCMaskedView-framework/RNCMaskedView.framework", - "${BUILT_PRODUCTS_DIR}/RNDefaultPreference-framework/RNDefaultPreference.framework", - "${BUILT_PRODUCTS_DIR}/RNFS-framework/RNFS.framework", - "${BUILT_PRODUCTS_DIR}/RNFileViewer-framework/RNFileViewer.framework", - "${BUILT_PRODUCTS_DIR}/RNGestureHandler-framework/RNGestureHandler.framework", - "${BUILT_PRODUCTS_DIR}/RNKeychain-framework/RNKeychain.framework", - "${BUILT_PRODUCTS_DIR}/RNPrivacySnapshot-framework/RNPrivacySnapshot.framework", - "${BUILT_PRODUCTS_DIR}/RNReanimated-framework/RNReanimated.framework", - "${BUILT_PRODUCTS_DIR}/RNScreens-framework/RNScreens.framework", - "${BUILT_PRODUCTS_DIR}/RNSearchBar-framework/RNSearchBar.framework", - "${BUILT_PRODUCTS_DIR}/RNStoreReview-framework/RNStoreReview.framework", - "${BUILT_PRODUCTS_DIR}/RNVectorIcons-framework/RNVectorIcons.framework", - "${BUILT_PRODUCTS_DIR}/React-Core-framework/React.framework", - "${BUILT_PRODUCTS_DIR}/React-CoreModules-framework/CoreModules.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTAnimation-framework/RCTAnimation.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTBlob-framework/RCTBlob.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTImage-framework/RCTImage.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTLinking-framework/RCTLinking.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTNetwork-framework/RCTNetwork.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTSettings-framework/RCTSettings.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTText-framework/RCTText.framework", - "${BUILT_PRODUCTS_DIR}/React-RCTVibration-framework/RCTVibration.framework", - "${BUILT_PRODUCTS_DIR}/React-cxxreact-framework/cxxreact.framework", - "${BUILT_PRODUCTS_DIR}/React-jsi-framework/jsi.framework", - "${BUILT_PRODUCTS_DIR}/React-jsiexecutor-framework/jsireact.framework", - "${BUILT_PRODUCTS_DIR}/React-jsinspector-framework/jsinspector.framework", - "${BUILT_PRODUCTS_DIR}/ReactCommon-framework/ReactCommon.framework", - "${BUILT_PRODUCTS_DIR}/ReactNativeAlternateIcons-framework/ReactNativeAlternateIcons.framework", - "${BUILT_PRODUCTS_DIR}/SNReactNative-framework/SNReactNative.framework", - "${BUILT_PRODUCTS_DIR}/Yoga-framework/yoga.framework", - "${BUILT_PRODUCTS_DIR}/glog-framework/glog.framework", - "${BUILT_PRODUCTS_DIR}/react-native-aes-framework/react_native_aes.framework", - "${BUILT_PRODUCTS_DIR}/react-native-fingerprint-scanner-framework/react_native_fingerprint_scanner.framework", - "${BUILT_PRODUCTS_DIR}/react-native-mail-framework/react_native_mail.framework", - "${BUILT_PRODUCTS_DIR}/react-native-safe-area-context-framework/react_native_safe_area_context.framework", - "${BUILT_PRODUCTS_DIR}/react-native-segmented-control-framework/react_native_segmented_control.framework", - "${BUILT_PRODUCTS_DIR}/react-native-sodium-framework/react_native_sodium.framework", - "${BUILT_PRODUCTS_DIR}/react-native-version-info-framework/react_native_version_info.framework", - "${BUILT_PRODUCTS_DIR}/react-native-webview-framework/react_native_webview.framework", - "${BUILT_PRODUCTS_DIR}/sn-textview-framework/sn_textview.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TrustKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Bugsnag.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DoubleConversion.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBReactNativeSpec.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/folly.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTTypeSafety.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNCAsyncStorage.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNCMaskedView.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNDefaultPreference.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNFS.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNFileViewer.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNGestureHandler.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNKeychain.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNPrivacySnapshot.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNReanimated.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNScreens.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNSearchBar.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNStoreReview.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RNVectorIcons.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/React.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CoreModules.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTAnimation.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTBlob.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTImage.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTLinking.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTNetwork.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTSettings.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTText.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/RCTVibration.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/cxxreact.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsi.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsireact.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/jsinspector.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactCommon.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ReactNativeAlternateIcons.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SNReactNative.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/yoga.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_aes.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_fingerprint_scanner.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_mail.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_safe_area_context.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_segmented_control.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_sodium.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_version_info.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/react_native_webview.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sn_textview.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-StandardNotes/Pods-StandardNotes-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; E5E35654B81EF4E64AB5D97C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/src/lib/application.ts b/src/lib/application.ts index 54896215..716fcd7c 100644 --- a/src/lib/application.ts +++ b/src/lib/application.ts @@ -138,7 +138,7 @@ export class MobileApplication extends SNApplication { return this.MobileServices.backupsService; } - public getPrefsService() { + public getLocalPreferences() { return this.MobileServices.prefsService; } diff --git a/src/lib/application_state.ts b/src/lib/application_state.ts index ed9fd0c8..397e9bc5 100644 --- a/src/lib/application_state.ts +++ b/src/lib/application_state.ts @@ -102,6 +102,7 @@ export class ApplicationState extends ApplicationService { keyboardDidHideListener?: EmitterSubscription; keyboardHeight?: number; appEventObersever: any; + selectedTagRestored = false; selectedTag: SNTag = this.application.getSmartTags()[0]; userPreferences?: SNUserPrefs; tabletMode: boolean = false; @@ -152,24 +153,33 @@ export class ApplicationState extends ApplicationService { this.keyboardDidHideListener = undefined; } + restoreSelectedTag() { + if (this.selectedTagRestored) { + return; + } + const savedTagUuid: string | undefined = this.prefService.getValue( + PrefKey.SelectedTagUuid, + undefined + ); + + if (isNullOrUndefined(savedTagUuid)) { + this.selectedTagRestored = true; + return; + } + + const savedTag = + (this.application.findItem(savedTagUuid) as SNTag) || + this.application.getSmartTags().find(tag => tag.uuid === savedTagUuid); + if (savedTag) { + this.setSelectedTag(savedTag, false); + this.selectedTagRestored = true; + } + } + async onAppStart() { this.removePreferencesLoadedListener = this.prefService.addPreferencesLoadedObserver( () => { this.notifyOfStateChange(AppStateType.PreferencesChanged); - const savedTagUuid: string | undefined = this.prefService.getValue( - PrefKey.SelectedTagUuid, - undefined - ); - - const savedTag = !isNullOrUndefined(savedTagUuid) - ? (this.application.findItem(savedTagUuid) as SNTag) || - this.application - .getSmartTags() - .find(tag => tag.uuid === savedTagUuid) - : undefined; - if (savedTag) { - this.setSelectedTag(savedTag, false); - } } ); @@ -386,11 +396,21 @@ export class ApplicationState extends ApplicationService { private handleApplicationEvents() { this.appEventObersever = this.application.addEventObserver( async eventName => { - if (eventName === ApplicationEvent.Started) { - this.locked = true; - } else if (eventName === ApplicationEvent.Launched) { - this.locked = false; - this.notifyLockStateObservers(LockStateType.Unlocked); + switch (eventName) { + case ApplicationEvent.LocalDataIncrementalLoad: + case ApplicationEvent.LocalDataLoaded: { + this.restoreSelectedTag(); + break; + } + case ApplicationEvent.Started: { + this.locked = true; + break; + } + case ApplicationEvent.Launched: { + this.locked = false; + this.notifyLockStateObservers(LockStateType.Unlocked); + break; + } } } ); @@ -399,8 +419,8 @@ export class ApplicationState extends ApplicationService { /** * Set selected @SNTag */ - public setSelectedTag(tag: SNTag, saveSelection: boolean) { - if (this.selectedTag === tag) { + public setSelectedTag(tag: SNTag, saveSelection: boolean = true) { + if (this.selectedTag.uuid === tag.uuid) { return; } const previousTag = this.selectedTag; @@ -408,7 +428,7 @@ export class ApplicationState extends ApplicationService { if (saveSelection) { this.application - .getPrefsService() + .getLocalPreferences() .setUserPrefValue(PrefKey.SelectedTagUuid, tag.uuid); } @@ -681,7 +701,7 @@ export class ApplicationState extends ApplicationService { } private get prefService() { - return this.application.getPrefsService(); + return this.application.getLocalPreferences(); } public getEnvironment() { diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 06c7a394..f53fa8eb 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -92,7 +92,7 @@ export const ComponentView = ({ useEffect(() => { const warnUnsupportedEditors = async () => { const doNotShowAgainUnsupportedEditors = application - ?.getPrefsService() + ?.getLocalPreferences() .getValue(PrefKey.DoNotShowAgainUnsupportedEditors, false); if (!doNotShowAgainUnsupportedEditors) { const confirmed = await application?.alertService?.confirm( @@ -104,7 +104,7 @@ export const ComponentView = ({ ); if (confirmed) { application - ?.getPrefsService() + ?.getLocalPreferences() .setUserPrefValue(PrefKey.DoNotShowAgainUnsupportedEditors, true); } } diff --git a/src/screens/Notes/Notes.tsx b/src/screens/Notes/Notes.tsx index 266f5140..9dabe616 100644 --- a/src/screens/Notes/Notes.tsx +++ b/src/screens/Notes/Notes.tsx @@ -60,18 +60,20 @@ export const Notes = React.memo( // State const [sortBy, setSortBy] = useState(() => application! - .getPrefsService() + .getLocalPreferences() .getValue(PrefKey.SortNotesBy, CollectionSort.CreatedAt) ); const [sortReverse, setSortReverse] = useState(() => - application!.getPrefsService().getValue(PrefKey.SortNotesReverse, false) + application! + .getLocalPreferences() + .getValue(PrefKey.SortNotesReverse, false) ); const [hideDates, setHideDates] = useState(() => - application!.getPrefsService().getValue(PrefKey.NotesHideDate, false) + application!.getLocalPreferences().getValue(PrefKey.NotesHideDate, false) ); const [hidePreviews, setHidePreviews] = useState(() => application! - .getPrefsService() + .getLocalPreferences() .getValue(PrefKey.NotesHideNotePreview, false) ); const [notes, setNotes] = useState([]); @@ -485,18 +487,18 @@ export const Notes = React.memo( const reloadPreferences = useCallback(async () => { const newSortBy = application - ?.getPrefsService() + ?.getLocalPreferences() .getValue(PrefKey.SortNotesBy, CollectionSort.CreatedAt); let displayOptionsChanged = false; const newSortReverse = application - ?.getPrefsService() + ?.getLocalPreferences() .getValue(PrefKey.SortNotesReverse, false); const newHidePreview = application! - .getPrefsService() + .getLocalPreferences() .getValue(PrefKey.NotesHideNotePreview, false); const newHideDate = application! - .getPrefsService() + .getLocalPreferences() .getValue(PrefKey.NotesHideDate, false); if (sortBy !== newSortBy) { diff --git a/src/screens/Settings/Sections/OptionsSection.tsx b/src/screens/Settings/Sections/OptionsSection.tsx index dcd0245d..a733059f 100644 --- a/src/screens/Settings/Sections/OptionsSection.tsx +++ b/src/screens/Settings/Sections/OptionsSection.tsx @@ -29,7 +29,9 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => { // State const [exporting, setExporting] = useState(false); const [lastExportDate, setLastExportDate] = useState(() => - application?.getPrefsService().getValue(PrefKey.LastExportDate, undefined) + application + ?.getLocalPreferences() + .getValue(PrefKey.LastExportDate, undefined) ); const lastExportData = useMemo(() => { @@ -93,7 +95,7 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => { const exportDate = new Date(); setLastExportDate(exportDate); application - ?.getPrefsService() + ?.getLocalPreferences() .setUserPrefValue(PrefKey.LastExportDate, exportDate); } setExporting(false); diff --git a/src/screens/Settings/Sections/PreferencesSection.tsx b/src/screens/Settings/Sections/PreferencesSection.tsx index 1bc8713e..dc5e1dab 100644 --- a/src/screens/Settings/Sections/PreferencesSection.tsx +++ b/src/screens/Settings/Sections/PreferencesSection.tsx @@ -13,17 +13,19 @@ export const PreferencesSection = () => { // State const [sortBy, setSortBy] = useState(() => application! - .getPrefsService() + .getLocalPreferences() .getValue(PrefKey.SortNotesBy, CollectionSort.CreatedAt) ); const [sortReverse, setSortReverse] = useState(() => - application!.getPrefsService().getValue(PrefKey.SortNotesReverse, false) + application!.getLocalPreferences().getValue(PrefKey.SortNotesReverse, false) ); const [hideDates, setHideDates] = useState(() => - application!.getPrefsService().getValue(PrefKey.NotesHideDate, false) + application!.getLocalPreferences().getValue(PrefKey.NotesHideDate, false) ); const [hidePreviews, setHidePreviews] = useState(() => - application!.getPrefsService().getValue(PrefKey.NotesHideNotePreview, false) + application! + .getLocalPreferences() + .getValue(PrefKey.NotesHideNotePreview, false) ); const sortOptions = useMemo(() => { @@ -36,24 +38,26 @@ export const PreferencesSection = () => { const toggleReverseSort = () => { application - ?.getPrefsService() + ?.getLocalPreferences() .setUserPrefValue(PrefKey.SortNotesReverse, !sortReverse); setSortReverse(value => !value); }; const changeSortOption = (key: CollectionSort) => { - application?.getPrefsService().setUserPrefValue(PrefKey.SortNotesBy, key); + application + ?.getLocalPreferences() + .setUserPrefValue(PrefKey.SortNotesBy, key); setSortBy(key); }; const toggleNotesPreviewHidden = () => { application - ?.getPrefsService() + ?.getLocalPreferences() .setUserPrefValue(PrefKey.NotesHideNotePreview, !hidePreviews); setHidePreviews(value => !value); }; const toggleNotesDateHidden = () => { application - ?.getPrefsService() + ?.getLocalPreferences() .setUserPrefValue(PrefKey.NotesHideDate, !hideDates); setHideDates(value => !value); }; diff --git a/src/screens/SideMenu/MainSideMenu.tsx b/src/screens/SideMenu/MainSideMenu.tsx index 73561d77..77a3c9df 100644 --- a/src/screens/SideMenu/MainSideMenu.tsx +++ b/src/screens/SideMenu/MainSideMenu.tsx @@ -245,7 +245,7 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => { mutator.conflictOf = undefined; }); } - application!.getAppState().setSelectedTag(tag, true); + application?.getAppState().setSelectedTag(tag, true); drawerRef?.closeDrawer(); }; From e6ddd32f5871c87afaee612727642035fa685e52 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 23 Apr 2021 16:03:49 +0200 Subject: [PATCH 08/43] fix: do not display local data message when there are no items to decrypt (#411) * fix: do not display local data message when there are no items to decrypt * fix: use unicode ellipsis * feat: improve status messages for initial loading/syncing --- src/lib/snjs_helper_hooks.ts | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lib/snjs_helper_hooks.ts b/src/lib/snjs_helper_hooks.ts index 032c379e..a87a591d 100644 --- a/src/lib/snjs_helper_hooks.ts +++ b/src/lib/snjs_helper_hooks.ts @@ -157,10 +157,8 @@ export const useSyncStatus = () => { const [refreshing, setRefreshing] = React.useState(false); const setStatus = useCallback( - (status?: string, color?: string) => { - application - ?.getStatusManager() - .setMessage(SCREEN_NOTES, status ?? '', color); + (status = '', color?: string) => { + application?.getStatusManager().setMessage(SCREEN_NOTES, status, color); }, [application] ); @@ -172,11 +170,16 @@ export const useSyncStatus = () => { application!.isEncryptionAvailable() && application!.getStorageEncryptionPolicy() === StorageEncryptionPolicies.Default; - if (stats.localDataDone) { + + if ( + stats.localDataCurrent === 0 || + stats.localDataTotal === 0 || + stats.localDataDone + ) { setStatus(); return; } - const notesString = `${stats.localDataCurrent}/${stats.localDataTotal} items...`; + const notesString = `${stats.localDataCurrent}/${stats.localDataTotal} items…`; const loadingStatus = encryption ? `Decrypting ${notesString}` : `Loading ${notesString}`; @@ -212,7 +215,9 @@ export const useSyncStatus = () => { setStatus( `Syncing ${stats.uploadCompletionCount}/${stats.uploadTotalCount} items...` ); - } else if (!syncStatus.syncInProgress) { + } else if (syncStatus.syncInProgress) { + setStatus('Syncing…'); + } else { setStatus(); } }, [application, setStatus]); @@ -231,10 +236,6 @@ export const useSyncStatus = () => { setDecrypting(false); setLoading(false); updateLocalDataStatus(); - } else if (eventName === ApplicationEvent.WillSync) { - if (application.hasAccount() && !completedInitialSync) { - setStatus('Syncing...'); - } } else if (eventName === ApplicationEvent.CompletedFullSync) { if ( !completedInitialSync || From 52f3020aabd0e3013bde3f263d6e2b7b7d296d6d Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 23 Apr 2021 16:19:49 +0200 Subject: [PATCH 09/43] fix: use long commit hash for standard-notes-rn dependency --- ios/Podfile.lock | 4 ++-- package.json | 2 +- yarn.lock | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 9a34a6cc..fb134355 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -301,7 +301,7 @@ PODS: - sn-textview (1.0.0): - React - SNReactNative (1.0.0): - - React + - React-Core - SSZipArchive (2.2.3) - TrustKit (1.6.5) - Yoga (1.14.0) @@ -527,7 +527,7 @@ SPEC CHECKSUMS: RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 RNZipArchive: 3dd2de5b7f590d79e83270508b78870bf5a54f36 sn-textview: f478ee79531da2c7b129c4ea3b20c665e75e1f4b - SNReactNative: c47c4fd6d310eea152cc52e23f4fd306491efee3 + SNReactNative: 3fa6096f78bea7dbd329c897ee854f73666d20db SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 diff --git a/package.json b/package.json index bbfc08cf..a3b33b42 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "react-native-zip-archive": "^6.0.2", "react-navigation-header-buttons": "^6.0.2", "sn-textview": "standardnotes/sn-textview#3b56f5c2c87c24370f00ee5a0cee0da9a9fc66c3", - "standard-notes-rn": "standardnotes/standard-notes-rn#996b016", + "standard-notes-rn": "standardnotes/standard-notes-rn#996b016f5a63e0e36fb50a86f5ad41c0c072b41e", "styled-components": "^5.2.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 8b654203..b19691fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7829,7 +7829,7 @@ stacktrace-parser@^0.1.3: dependencies: type-fest "^0.7.1" -standard-notes-rn@standardnotes/standard-notes-rn#996b016: +standard-notes-rn@standardnotes/standard-notes-rn#996b016f5a63e0e36fb50a86f5ad41c0c072b41e: version "1.0.0" resolved "https://codeload.github.com/standardnotes/standard-notes-rn/tar.gz/996b016f5a63e0e36fb50a86f5ad41c0c072b41e" From b3cc8c724a097a9f594d2373c68c2ec1ba359d81 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 23 Apr 2021 16:32:47 +0200 Subject: [PATCH 10/43] chore(deps): update sn-textview & standard-notes-rn --- ios/Podfile.lock | 10 +++++----- package.json | 4 ++-- yarn.lock | 12 ++++++------ 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index fb134355..a172bad3 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -298,9 +298,9 @@ PODS: - RNZipArchive/Core (6.0.2): - React-Core - SSZipArchive (= 2.2.3) - - sn-textview (1.0.0): - - React - - SNReactNative (1.0.0): + - sn-textview (1.0.1): + - React-Core + - SNReactNative (1.0.1): - React-Core - SSZipArchive (2.2.3) - TrustKit (1.6.5) @@ -526,8 +526,8 @@ SPEC CHECKSUMS: RNStoreReview: 62d6afd7c37db711a594bbffca6b0ea3a812b7a8 RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 RNZipArchive: 3dd2de5b7f590d79e83270508b78870bf5a54f36 - sn-textview: f478ee79531da2c7b129c4ea3b20c665e75e1f4b - SNReactNative: 3fa6096f78bea7dbd329c897ee854f73666d20db + sn-textview: 0211237b3e0edeeb23aed2a9c47b78af35a81e95 + SNReactNative: b5e9e529c175c13f3a618e27c76cf3071213d5e1 SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 diff --git a/package.json b/package.json index a3b33b42..90bad54e 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,8 @@ "react-native-webview": "^11.0.3", "react-native-zip-archive": "^6.0.2", "react-navigation-header-buttons": "^6.0.2", - "sn-textview": "standardnotes/sn-textview#3b56f5c2c87c24370f00ee5a0cee0da9a9fc66c3", - "standard-notes-rn": "standardnotes/standard-notes-rn#996b016f5a63e0e36fb50a86f5ad41c0c072b41e", + "sn-textview": "standardnotes/sn-textview#14cd6fded5c746569a9c6c365d2edc41913811bb", + "standard-notes-rn": "standardnotes/standard-notes-rn#d8e5c21b049dd4b97006688617736efbdb7dc4e7", "styled-components": "^5.2.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index b19691fe..7d34ba9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7662,9 +7662,9 @@ slide@^1.1.5: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -sn-textview@standardnotes/sn-textview#3b56f5c2c87c24370f00ee5a0cee0da9a9fc66c3: - version "1.0.0" - resolved "https://codeload.github.com/standardnotes/sn-textview/tar.gz/3b56f5c2c87c24370f00ee5a0cee0da9a9fc66c3" +sn-textview@standardnotes/sn-textview#14cd6fded5c746569a9c6c365d2edc41913811bb: + version "1.0.1" + resolved "https://codeload.github.com/standardnotes/sn-textview/tar.gz/14cd6fded5c746569a9c6c365d2edc41913811bb" snapdragon-node@^2.0.1: version "2.1.1" @@ -7829,9 +7829,9 @@ stacktrace-parser@^0.1.3: dependencies: type-fest "^0.7.1" -standard-notes-rn@standardnotes/standard-notes-rn#996b016f5a63e0e36fb50a86f5ad41c0c072b41e: - version "1.0.0" - resolved "https://codeload.github.com/standardnotes/standard-notes-rn/tar.gz/996b016f5a63e0e36fb50a86f5ad41c0c072b41e" +standard-notes-rn@standardnotes/standard-notes-rn#d8e5c21b049dd4b97006688617736efbdb7dc4e7: + version "1.0.1" + resolved "https://codeload.github.com/standardnotes/standard-notes-rn/tar.gz/d8e5c21b049dd4b97006688617736efbdb7dc4e7" static-extend@^0.1.1: version "0.1.2" From 2ec7611b0a2e725f56737fed6478d2a6278ce073 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Mon, 26 Apr 2021 11:41:31 +0200 Subject: [PATCH 11/43] fix: close editor when unmounting compose component (#412) --- src/screens/Compose/Compose.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index 4138a9fc..60be4f84 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -222,6 +222,9 @@ export class Compose extends React.Component<{}, State> { this.removeComponentGroupObserver = undefined; this.removeEditorNoteChangeObserver = undefined; this.removeEditorNoteValueChangeObserver = undefined; + if (this.editor) { + this.context?.editorGroup?.closeEditor(this.editor); + } this.context?.getStatusManager()?.setMessage(SCREEN_COMPOSE, ''); if (this.saveTimeout) { From 19d535330d840e59b466ce0c3517059ad8b3edb4 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Mon, 26 Apr 2021 14:19:41 -0300 Subject: [PATCH 12/43] feat: remove editor loading message on ThemesActivated action (#415) * chore(version-snjs): 2.0.76 * feat: remove loading editor message on ActivateThemes action --- package.json | 2 +- src/screens/Compose/ComponentView.tsx | 2 +- src/screens/Compose/Compose.tsx | 19 +++++++++++++------ yarn.lock | 8 ++++---- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index f48b0889..1faea8f2 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@react-navigation/native": "^5.9.3", "@react-navigation/stack": "^5.14.3", "@standardnotes/sncrypto-common": "1.2.9", - "@standardnotes/snjs": "2.0.75", + "@standardnotes/snjs": "2.0.76", "js-base64": "^3.5.2", "moment": "^2.29.1", "react": "16.13.1", diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index f53fa8eb..f1d96fbb 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -244,7 +244,7 @@ export const ComponentView = ({ */ setTimeout(() => { onLoadEnd(); - }, 100); + }, 200); }, [application, liveComponent, onLoadEnd]); const onLoadStartHandler = () => { diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index ca072462..5e957039 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -181,11 +181,18 @@ export class Compose extends React.Component<{}, State> { identifier: 'component-view-' + Math.random(), areas: [ComponentArea.Editor], actionHandler: (currentComponent, action, data) => { - if (action === ComponentAction.SetSize) { - this.context?.componentManager!.handleSetSizeEvent( - currentComponent, - data - ); + switch (action) { + case ComponentAction.SetSize: + this.context?.componentManager!.handleSetSizeEvent( + currentComponent, + data + ); + break; + case ComponentAction.ThemesActivated: + this.setState({ + loadingWebview: false, + }); + break; } }, contextRequestHandler: () => this.note, @@ -432,7 +439,7 @@ export class Compose extends React.Component<{}, State> { this.setState({ downloadingEditor: false, }), - 100 + 200 ); }; diff --git a/yarn.lock b/yarn.lock index 70fd6b36..ae249d2d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1390,10 +1390,10 @@ resolved "https://registry.yarnpkg.com/@standardnotes/sncrypto-common/-/sncrypto-common-1.2.9.tgz#5212a959e4ec563584e42480bfd39ef129c3cbdf" integrity sha512-xJ5IUGOZztjSgNP/6XL+Ut5+q9UgSTv6xMtKkcQC5aJxCOkJy9u6RamPLdF00WQgwibxx2tu0e43bKUjTgzMig== -"@standardnotes/snjs@2.0.75": - version "2.0.75" - resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.0.75.tgz#aeb0ead927da63dc85e28f78da2362126bb16602" - integrity sha512-QL5YgDT0aN9t95gxgURqNudXr5dteVsc1ylsKKSw0DpEGiq0bACPxbI+sUFppoWTFmprxmDh3+vc+FFcFg7Lyw== +"@standardnotes/snjs@2.0.76": + version "2.0.76" + resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.0.76.tgz#69b007b83ef6dc8261a4368750e75db7ccbb3456" + integrity sha512-JY0PldVN7zHfN42JNd77jqqwDAaalwiWKg9Odib13ag3X/Vm8OWzyRMPa/4ggMWdwGV8dvraw9IxIYTU0VT+TA== dependencies: "@standardnotes/auth" "^2.0.0" "@standardnotes/sncrypto-common" "^1.2.9" From a93e82b722fce922f7ca7c1b6358b13c81e53c74 Mon Sep 17 00:00:00 2001 From: Johnny A <5891646+johnny243@users.noreply.github.com> Date: Tue, 27 Apr 2021 09:13:04 -0400 Subject: [PATCH 13/43] chore: codeql analysis action (#414) * Create codeql-analysis.yml * fix: custom codeql config * fix: ignore codeqldb Co-authored-by: Johnny Almonte --- .github/codeql/codeql-config.yml | 11 +++ .../custom-queries/javascript/qlpack.yml | 4 ++ .github/workflows/codeql-analysis.yml | 68 +++++++++++++++++++ .gitignore | 4 +- .prettierignore | 2 + 5 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 .github/codeql/codeql-config.yml create mode 100644 .github/codeql/custom-queries/javascript/qlpack.yml create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .prettierignore diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 00000000..c86731be --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,11 @@ +name: "Custom CodeQL Config" + +queries: +- uses: security-and-quality +- uses: ./.github/codeql/custom-queries/javascript + +paths: +- src + +paths-ignore: +- node_modules diff --git a/.github/codeql/custom-queries/javascript/qlpack.yml b/.github/codeql/custom-queries/javascript/qlpack.yml new file mode 100644 index 00000000..fcd24771 --- /dev/null +++ b/.github/codeql/custom-queries/javascript/qlpack.yml @@ -0,0 +1,4 @@ +name: custom-javascript-queries +version: 0.0.0 +libraryPathDependencies: +- codeql-javascript diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 00000000..accdfa15 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,68 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ develop ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ develop ] + schedule: + - cron: '16 21 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + config-file: ./.github/codeql/codeql-config.yml + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.gitignore b/.gitignore index 0503c21b..e75d0c54 100644 --- a/.gitignore +++ b/.gitignore @@ -68,4 +68,6 @@ ios-release.bundle.map /ios/StandardNotes.xcodeproj/project.xcworkspace # HProf -/android/*.hprof \ No newline at end of file +/android/*.hprof + +codeqldb diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..44174c5f --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +.github +codeqldb From 08930bdf737e0a8863bedc24e33de196e6e04892 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 27 Apr 2021 14:25:01 -0300 Subject: [PATCH 14/43] fix: offline editors issues (#416) * fix: read main from package.json * fix: reload editor when switching after editor load failure * fix: check offlineOnly before setting online url * fix: prevent editor download if another download is in progress --- src/screens/Compose/ComponentView.tsx | 93 +++++++++++++++++---------- src/screens/Compose/Compose.tsx | 6 ++ 2 files changed, 64 insertions(+), 35 deletions(-) diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index f1d96fbb..0062a1fd 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -12,13 +12,7 @@ import React, { useState, } from 'react'; import { Platform } from 'react-native'; -import { - DocumentDirectoryPath, - downloadFile, - exists, - readDir, - unlink, -} from 'react-native-fs'; +import RNFS, { DocumentDirectoryPath } from 'react-native-fs'; import { WebView } from 'react-native-webview'; import { OnShouldStartLoadWithRequest, @@ -41,6 +35,7 @@ type Props = { onLoadError: () => void; onDownloadEditorStart: () => void; onDownloadEditorEnd: () => void; + offlineOnly?: boolean; }; export const ComponentView = ({ @@ -50,6 +45,7 @@ export const ComponentView = ({ onDownloadEditorStart, onDownloadEditorEnd, componentUuid, + offlineOnly, }: Props) => { // Context const application = useContext(ApplicationContext); @@ -62,6 +58,10 @@ export const ComponentView = ({ const [showWebView, setShowWebView] = useState(true); const [offlineUrl, setOfflineUrl] = useState(''); const [readAccessUrl, setReadAccessUrl] = useState(''); + const [ + downloadingOfflineEditor, + setDownloadingOfflineEditor, + ] = useState(false); // Ref const webViewRef = useRef(null); @@ -131,41 +131,61 @@ export const ComponentView = ({ setReadAccessUrl(versionDir); const shouldDownload = - !(await exists(versionDir)) || (await readDir(versionDir)).length === 0; + !downloadingOfflineEditor && + (!(await RNFS.exists(versionDir)) || + (await RNFS.readDir(versionDir)).length === 0); if (shouldDownload) { + setDownloadingOfflineEditor(true); + onDownloadEditorStart(); try { - onDownloadEditorStart(); // Delete any previous versions downloads - if (await exists(editorDir)) { - await unlink(editorDir); + if (await RNFS.exists(editorDir)) { + await RNFS.unlink(editorDir); } - await downloadFile({ + await RNFS.downloadFile({ fromUrl: downloadUrl, toFile: downloadPath, }).promise; await unzip(downloadPath, versionDir); // Delete zip after extraction - await unlink(downloadPath); + await RNFS.unlink(downloadPath); } finally { onDownloadEditorEnd(); + setDownloadingOfflineEditor(false); } } - const packageDir = await readDir(versionDir); - const possibleIndexLocations = [ - `${packageDir[0].path}/dist/index.html`, - `${packageDir[0].path}/index.html`, - ]; + let mainFileName = 'index.html'; + const packageDir = await RNFS.readDir(versionDir); + const packageJsonPath = `${packageDir[0].path}/package.json`; + const packageJson = JSON.parse(await RNFS.readFile(packageJsonPath)); - for (const location of possibleIndexLocations) { - if (await exists(location)) { - return `file://${location}`; - } + if (packageJson?.sn?.main) { + mainFileName = packageJson.sn.main; + } + + const mainFilePath = `${packageDir[0].path}/${mainFileName}`; + + if (await RNFS.exists(mainFilePath)) { + return `file://${mainFilePath}`; } return ''; - }, [liveComponent, onDownloadEditorStart, onDownloadEditorEnd]); + }, [ + downloadingOfflineEditor, + liveComponent, + onDownloadEditorStart, + onDownloadEditorEnd, + ]); + + const onLoadErrorHandler = useCallback(() => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + } + + onLoadError(); + }, [onLoadError, timeoutRef]); useEffect(() => { let mounted = true; @@ -186,9 +206,13 @@ export const ComponentView = ({ if (mounted) { setOfflineUrl(offlineEditorUrl); } - } finally { + } catch (e) { if (mounted) { - setUrl(newUrl); + if (offlineOnly) { + onLoadErrorHandler(); + } else { + setUrl(newUrl); + } } } } @@ -203,7 +227,14 @@ export const ComponentView = ({ application?.componentManager.deactivateComponent(componentUuid); liveComponent?.deinit(); }; - }, [application, componentUuid, getOfflineEditorUrl, liveComponent]); + }, [ + application, + componentUuid, + getOfflineEditorUrl, + liveComponent, + offlineOnly, + onLoadErrorHandler, + ]); const onMessage = (event: WebViewMessageEvent) => { let data; @@ -251,14 +282,6 @@ export const ComponentView = ({ onLoadStart(); }; - const onLoadErrorHandler = () => { - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - - onLoadError(); - }; - const onShouldStartLoadWithRequest: OnShouldStartLoadWithRequest = request => { /** * We want to handle link clicks within an editor by opening the browser @@ -333,7 +356,7 @@ export const ComponentView = ({ false /* To prevent StatusBar from changing colors when focusing */ } injectedJavaScript={defaultInjectedJavaScript()} - onContentProcessDidTerminate={() => setOfflineUrl('')} + onContentProcessDidTerminate={onLoadErrorHandler} /> )} diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index 5e957039..d88b1065 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -316,6 +316,11 @@ export class Compose extends React.Component<{}, State> { }; reloadComponentEditorState = async () => { + this.setState({ + loadingWebview: false, + webViewError: false, + }); + const associatedEditor = this.context?.componentManager!.editorForNote( this.note! ); @@ -539,6 +544,7 @@ export class Compose extends React.Component<{}, State> { }} onDownloadEditorStart={this.onDownloadEditorStart} onDownloadEditorEnd={this.onDownloadEditorEnd} + offlineOnly={this.state.editorComponent?.offlineOnly} /> )} {!shouldDisplayEditor && From 5364366aa4db4977115054254482aa569844df3c Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 28 Apr 2021 17:14:09 +0200 Subject: [PATCH 15/43] feat: link new notes with default editor (#417) --- src/lib/application_state.ts | 16 +++++++++++++--- src/lib/component_group.ts | 11 ++--------- src/lib/component_manager.ts | 14 ++++++++++++++ src/lib/editor.ts | 12 ++---------- src/lib/editor_group.ts | 5 +++-- src/lib/snjs_helper_hooks.ts | 4 ++-- src/screens/Compose/Compose.tsx | 6 ++++++ src/screens/SideMenu/NoteSideMenu.tsx | 22 ++++++---------------- 8 files changed, 48 insertions(+), 42 deletions(-) diff --git a/src/lib/application_state.ts b/src/lib/application_state.ts index 397e9bc5..972693f9 100644 --- a/src/lib/application_state.ts +++ b/src/lib/application_state.ts @@ -30,6 +30,7 @@ import FlagSecure from 'react-native-flag-secure-android'; import { hide, show } from 'react-native-privacy-snapshot'; import VersionInfo from 'react-native-version-info'; import { MobileApplication } from './application'; +import { associateComponentWithNote } from './component_manager'; import { Editor } from './editor'; import { PrefKey } from './preferences_manager'; @@ -279,19 +280,28 @@ export class ApplicationState extends ApplicationService { * editor's note with an empty one. */ async createEditor(title?: string) { - const activeEditor = this.getActiveEditor(); + let activeEditor = this.getActiveEditor(); if (!activeEditor || this.multiEditorEnabled) { - this.application.editorGroup.createEditor(undefined, title); + await this.application.editorGroup.createEditor(undefined, title); + activeEditor = this.getActiveEditor(); } else { await activeEditor.reset(title); } + const defaultEditor = this.application.componentManager.getDefaultEditor(); + if (defaultEditor) { + await associateComponentWithNote( + this.application, + defaultEditor, + activeEditor.note! + ); + } } async openEditor(noteUuid: string) { const note = this.application.findItem(noteUuid) as SNNote; const activeEditor = this.getActiveEditor(); if (!activeEditor || this.multiEditorEnabled) { - this.application.editorGroup.createEditor(noteUuid); + await this.application.editorGroup.createEditor(noteUuid); } else { activeEditor.setNote(note); } diff --git a/src/lib/component_group.ts b/src/lib/component_group.ts index 5ec22ec0..12338104 100644 --- a/src/lib/component_group.ts +++ b/src/lib/component_group.ts @@ -1,7 +1,6 @@ import { addIfUnique, ComponentArea, - isNullOrUndefined, removeFromArray, SNComponent, UuidString, @@ -69,14 +68,8 @@ export class ComponentGroup { } } - activeComponentForArea(area: ComponentArea) { - return !isNullOrUndefined(this.activeComponentsForArea(area)) - ? this.activeComponentsForArea(area)[0] - : undefined; - } - - activeComponentsForArea(area: ComponentArea) { - return this.allActiveComponents()?.filter(c => c.area === area); + activeComponentForArea(area: ComponentArea): SNComponent | undefined { + return this.allActiveComponents()?.filter(c => c.area === area)?.[0]; } allComponentsForArea(area: ComponentArea) { diff --git a/src/lib/component_manager.ts b/src/lib/component_manager.ts index 410c4140..7faf8b3f 100644 --- a/src/lib/component_manager.ts +++ b/src/lib/component_manager.ts @@ -1,8 +1,11 @@ import { + ComponentMutator, PermissionDialog, SNAlertService, + SNApplication, SNComponent, SNComponentManager, + SNNote, } from '@standardnotes/snjs'; import { objectToCss } from '@Style/css_parser'; import { MobileTheme } from '@Style/theme_service'; @@ -49,3 +52,14 @@ export class ComponentManager extends SNComponentManager { } } } + +export async function associateComponentWithNote( + application: SNApplication, + component: SNComponent, + note: SNNote +) { + return application.changeItem(component.uuid, mutator => { + mutator.removeDisassociatedItemId(note.uuid); + mutator.associateWithItem(note.uuid); + }); +} diff --git a/src/lib/editor.ts b/src/lib/editor.ts index c9555712..8a5310b5 100644 --- a/src/lib/editor.ts +++ b/src/lib/editor.ts @@ -14,20 +14,12 @@ export type EditorNoteValueChangeObserver = ( export class Editor { public note?: SNNote; - private application?: MobileApplication; private noteChangeObservers: EditorNoteChangeObserver[] = []; private noteValueChangeObservers: EditorNoteValueChangeObserver[] = []; private removeStreamObserver?: () => void; public isTemplateNote = false; - constructor( - application: MobileApplication, - noteUuid?: string, - noteTitle?: string - ) { - this.application = application; - this.init(noteUuid, noteTitle); - } + constructor(private application: MobileApplication) {} async init(noteUuid?: string, noteTitle?: string) { if (noteUuid) { @@ -51,7 +43,7 @@ export class Editor { this.removeStreamObserver = undefined; this.noteChangeObservers.length = 0; this.noteValueChangeObservers.length = 0; - this.application = undefined; + (this.application as unknown) = undefined; } private handleNoteStream(notes: SNNote[], source?: PayloadSource) { diff --git a/src/lib/editor_group.ts b/src/lib/editor_group.ts index 348774ed..316f2052 100644 --- a/src/lib/editor_group.ts +++ b/src/lib/editor_group.ts @@ -20,9 +20,10 @@ export class EditorGroup { } } - createEditor(noteUuid?: string, noteTitle?: string) { + async createEditor(noteUuid?: string, noteTitle?: string) { if (this.application) { - const editor = new Editor(this.application, noteUuid, noteTitle); + const editor = new Editor(this.application); + await editor.init(noteUuid, noteTitle); this.editors.push(editor); this.notifyObservers(); } diff --git a/src/lib/snjs_helper_hooks.ts b/src/lib/snjs_helper_hooks.ts index a87a591d..6ff76a17 100644 --- a/src/lib/snjs_helper_hooks.ts +++ b/src/lib/snjs_helper_hooks.ts @@ -157,8 +157,8 @@ export const useSyncStatus = () => { const [refreshing, setRefreshing] = React.useState(false); const setStatus = useCallback( - (status = '', color?: string) => { - application?.getStatusManager().setMessage(SCREEN_NOTES, status, color); + (status = '') => { + application?.getStatusManager().setMessage(SCREEN_NOTES, status); }, [application] ); diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index d88b1065..23476129 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -238,6 +238,12 @@ export class Compose extends React.Component<{}, State> { if (this.editor) { this.context?.editorGroup?.closeEditor(this.editor); } + if (this.state.editorComponent) { + this.context?.componentGroup?.deactivateComponent( + this.state.editorComponent, + false + ); + } this.context?.getStatusManager()?.setMessage(SCREEN_COMPOSE, ''); if (this.saveTimeout) { diff --git a/src/screens/SideMenu/NoteSideMenu.tsx b/src/screens/SideMenu/NoteSideMenu.tsx index 62465e79..724c4e57 100644 --- a/src/screens/SideMenu/NoteSideMenu.tsx +++ b/src/screens/SideMenu/NoteSideMenu.tsx @@ -1,3 +1,4 @@ +import { associateComponentWithNote } from '@Lib/component_manager'; import { Editor } from '@Lib/editor'; import { useChangeNote, @@ -220,21 +221,11 @@ export const NoteSideMenu = React.memo((props: Props) => { [application, note] ); - const associateComponentWithCurrentNote = useCallback( - async (component: SNComponent) => { - if (note) { - return application?.changeItem(component.uuid, m => { - const mutator = m as ComponentMutator; - mutator.removeDisassociatedItemId(note.uuid); - mutator.associateWithItem(note.uuid); - }); - } - }, - [application, note] - ); - const onEditorPress = useCallback( async (selectedComponent?: SNComponent) => { + if (!note || !application) { + return; + } if (note?.locked) { application?.alertService.alert( "This note is locked. If you'd like to edit its options, unlock it, and try again." @@ -244,7 +235,7 @@ export const NoteSideMenu = React.memo((props: Props) => { if (editor?.isTemplateNote) { await editor?.insertTemplatedNote(); } - const activeEditorComponent = application?.componentManager!.editorForNote( + const activeEditorComponent = application.componentManager!.editorForNote( note! ); props.drawerRef?.closeDrawer(); @@ -273,14 +264,13 @@ export const NoteSideMenu = React.memo((props: Props) => { noteMutator.prefersPlainEditor = false; }); } - await associateComponentWithCurrentNote(selectedComponent); + await associateComponentWithNote(application, selectedComponent, note); } /** Dirtying can happen above */ application?.sync(); }, [ application, - associateComponentWithCurrentNote, disassociateComponentWithCurrentNote, editor, note, From f5adb1120227f8cab134cf55dccf941c7b563ca9 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 28 Apr 2021 17:15:43 +0200 Subject: [PATCH 16/43] feat: format file with prettier on save (#418) --- .vscode/settings.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 55712c19..3f5d681c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib", + "prettier.requireConfig": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true } \ No newline at end of file From f8a54df0c9d38e8150e779eefa714771fec733c3 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 28 Apr 2021 17:19:41 +0200 Subject: [PATCH 17/43] fix: show syncing status only once on startup (#419) --- src/lib/snjs_helper_hooks.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/lib/snjs_helper_hooks.ts b/src/lib/snjs_helper_hooks.ts index 6ff76a17..c30471a2 100644 --- a/src/lib/snjs_helper_hooks.ts +++ b/src/lib/snjs_helper_hooks.ts @@ -215,12 +215,12 @@ export const useSyncStatus = () => { setStatus( `Syncing ${stats.uploadCompletionCount}/${stats.uploadTotalCount} items...` ); - } else if (syncStatus.syncInProgress) { + } else if (syncStatus.syncInProgress && !completedInitialSync) { setStatus('Syncing…'); } else { setStatus(); } - }, [application, setStatus]); + }, [application, completedInitialSync, setStatus]); useEffect(() => { const unsubscribeAppEvents = application?.addEventObserver( @@ -237,18 +237,13 @@ export const useSyncStatus = () => { setLoading(false); updateLocalDataStatus(); } else if (eventName === ApplicationEvent.CompletedFullSync) { - if ( - !completedInitialSync || - !application?.getAppState().isInTabletMode - ) { - setStatus(); - } - if (!completedInitialSync) { + if (completedInitialSync) { + setRefreshing(false); + } else { setCompletedInitialSync(true); setLoading(false); - } else { - setRefreshing(false); } + updateSyncStatus(); } else if (eventName === ApplicationEvent.LocalDatabaseReadError) { application!.alertService!.alert( 'Unable to load local storage. Please restart the app and try again.' From fb58bfc3cad1f0cd3bbe77fc5401ae30cbc458ec Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 4 May 2021 12:13:50 -0300 Subject: [PATCH 18/43] fix: live item deinit called more than once (#423) --- src/screens/Compose/ComponentView.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 0062a1fd..bf2c482e 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -224,8 +224,6 @@ export const ComponentView = ({ // deinit return () => { mounted = false; - application?.componentManager.deactivateComponent(componentUuid); - liveComponent?.deinit(); }; }, [ application, @@ -236,6 +234,13 @@ export const ComponentView = ({ onLoadErrorHandler, ]); + useEffect(() => { + return () => { + application?.componentManager.deactivateComponent(componentUuid); + liveComponent?.deinit(); + }; + }, [application, componentUuid, liveComponent]); + const onMessage = (event: WebViewMessageEvent) => { let data; try { From 7565a36766a327b260e8d52fedbe613c77c2a23b Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 5 May 2021 11:35:20 +0200 Subject: [PATCH 19/43] fix: DrawerLayout warnings (#430) * fix: use FlatList in NoteSideMenu * fix: use FlatList in MainSideMenu --- src/screens/SideMenu/MainSideMenu.styled.ts | 25 ++++-- src/screens/SideMenu/MainSideMenu.tsx | 96 +++++++++++++-------- src/screens/SideMenu/NoteSideMenu.styled.ts | 17 +++- src/screens/SideMenu/NoteSideMenu.tsx | 64 ++++++++------ 4 files changed, 131 insertions(+), 71 deletions(-) diff --git a/src/screens/SideMenu/MainSideMenu.styled.ts b/src/screens/SideMenu/MainSideMenu.styled.ts index f0c7b0fb..a9e5c8c7 100644 --- a/src/screens/SideMenu/MainSideMenu.styled.ts +++ b/src/screens/SideMenu/MainSideMenu.styled.ts @@ -1,5 +1,6 @@ -import { Platform, SafeAreaView, ScrollView, StatusBar } from 'react-native'; -import styled, { css } from 'styled-components/native'; +import { useMemo } from 'react'; +import { Platform, SafeAreaView, StatusBar, StyleSheet } from 'react-native'; +import styled, { css, DefaultTheme } from 'styled-components/native'; // We want top color to be different from bottom color of safe area. // See https://stackoverflow.com/questions/47725607/react-native-safeareaview-background-color-how-to-assign-two-different-backgro @@ -16,8 +17,18 @@ export const MainSafeAreaView = styled(SafeAreaView)` background-color: ${({ theme }) => theme.stylekitBackgroundColor}; color: ${({ theme }) => theme.stylekitForegroundColor}; `; -export const SideMenuSectionContainer = styled(ScrollView)` - padding: 15px; - flex: 1; - background-color: ${({ theme }) => theme.stylekitBackgroundColor}; -`; + +/** Styled doesn't support FlatList types */ +export const useStyles = (theme: DefaultTheme) => { + return useMemo( + () => + StyleSheet.create({ + sections: { + padding: 15, + flex: 1, + backgroundColor: theme.stylekitBackgroundColor, + }, + }), + [theme.stylekitBackgroundColor] + ); +}; diff --git a/src/screens/SideMenu/MainSideMenu.tsx b/src/screens/SideMenu/MainSideMenu.tsx index 77a3c9df..023972c9 100644 --- a/src/screens/SideMenu/MainSideMenu.tsx +++ b/src/screens/SideMenu/MainSideMenu.tsx @@ -23,13 +23,14 @@ import React, { } from 'react'; import { Platform } from 'react-native'; import FAB from 'react-native-fab'; +import { FlatList } from 'react-native-gesture-handler'; import DrawerLayout from 'react-native-gesture-handler/DrawerLayout'; import Icon from 'react-native-vector-icons/Ionicons'; import { ThemeContext } from 'styled-components/native'; import { FirstSafeAreaView, MainSafeAreaView, - SideMenuSectionContainer, + useStyles, } from './MainSideMenu.styled'; import { SideMenuHero } from './SideMenuHero'; import { SideMenuOption, SideMenuSection } from './SideMenuSection'; @@ -51,6 +52,7 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => { application!.getAppState().getSelectedTag() ); const [themes, setThemes] = useState([]); + const styles = useStyles(theme); useEffect(() => { const removeTagChangeObserver = application! @@ -239,15 +241,18 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => { onThemeSelect, ]); - const onTagSelect = async (tag: SNTag) => { - if (tag.conflictOf) { - application!.changeAndSaveItem(tag.uuid, mutator => { - mutator.conflictOf = undefined; - }); - } - application?.getAppState().setSelectedTag(tag, true); - drawerRef?.closeDrawer(); - }; + const onTagSelect = useCallback( + async (tag: SNTag) => { + if (tag.conflictOf) { + application!.changeAndSaveItem(tag.uuid, mutator => { + mutator.conflictOf = undefined; + }); + } + application?.getAppState().setSelectedTag(tag, true); + drawerRef?.closeDrawer(); + }, + [application, drawerRef] + ); const openSettings = () => { drawerRef?.closeDrawer(); @@ -266,6 +271,10 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => { } }; + const selectedTags = useMemo(() => (selectedTag ? [selectedTag] : []), [ + selectedTag, + ]); + return ( @@ -275,33 +284,46 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => { onPress={openSettings} onOutOfSyncPress={outOfSyncPressed} /> - - - - - - - - - - + ({ + key, + themeOptions, + onTagSelect, + selectedTags, + }) + )} + renderItem={({ item, index }) => { + return index === 0 ? ( + + ) : index === 1 ? ( + + + + ) : index === 2 ? ( + + + + ) : null; + }} + /> theme.stylekitBackgroundColor}; `; + +export const useStyles = (theme: DefaultTheme) => { + return useMemo( + () => + StyleSheet.create({ + sections: { + padding: 15, + backgroundColor: theme.stylekitBackgroundColor, + }, + }), + [theme.stylekitBackgroundColor] + ); +}; diff --git a/src/screens/SideMenu/NoteSideMenu.tsx b/src/screens/SideMenu/NoteSideMenu.tsx index 724c4e57..f2b33805 100644 --- a/src/screens/SideMenu/NoteSideMenu.tsx +++ b/src/screens/SideMenu/NoteSideMenu.tsx @@ -47,10 +47,11 @@ import React, { } from 'react'; import { Platform, Share } from 'react-native'; import FAB from 'react-native-fab'; +import { FlatList } from 'react-native-gesture-handler'; import DrawerLayout from 'react-native-gesture-handler/DrawerLayout'; import Icon from 'react-native-vector-icons/Ionicons'; import { ThemeContext } from 'styled-components/native'; -import { SafeAreaContainer, StyledList } from './NoteSideMenu.styled'; +import { SafeAreaContainer, useStyles } from './NoteSideMenu.styled'; import { SideMenuOption, SideMenuSection } from './SideMenuSection'; import { TagSelectionList } from './TagSelectionList'; @@ -73,6 +74,7 @@ export const NoteSideMenu = React.memo((props: Props) => { AppStackNavigationProp['navigation'] >(); const { showActionSheet } = useCustomActionSheet(); + const styles = useStyles(theme); // State const [editor, setEditor] = useState(undefined); @@ -594,31 +596,41 @@ export const NoteSideMenu = React.memo((props: Props) => { return ( - - - - - - - + ({ + key, + noteOptions, + editorComponents, + onTagSelect, + selectedTags, + }) + )} + renderItem={({ item, index }) => + index === 0 ? ( + + ) : index === 1 ? ( + + ) : index === 2 ? ( + + + + ) : null + } + /> Date: Wed, 5 May 2021 11:36:50 +0200 Subject: [PATCH 20/43] feat(deps): upgrade to React Native v0.64 (#429) * chore(deps): upgrade React Native to v0.64 * chore(deps): upgrade react to v17 * fix: use FlatList in MainSideMenu * fix: use FlatList in NoteSideMenu * chore: run pod install * Revert "fix: use FlatList in NoteSideMenu" This reverts commit bd9a68626848bdbd25cfec08723f3eb7be8514bb. * Revert "fix: use FlatList in MainSideMenu" This reverts commit 116fdafbb92c3a5c0d2cacfbfa66180371268247. --- ios/Podfile | 10 +- ios/Podfile.lock | 498 +++--- ios/StandardNotes.xcodeproj/project.pbxproj | 73 +- package.json | 4 +- yarn.lock | 1728 +++++++++---------- 5 files changed, 1146 insertions(+), 1167 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index 7e9a3c84..c5bf346f 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -15,10 +15,16 @@ pod 'TrustKit', '1.6.5' target 'StandardNotes' do config = use_native_modules! - use_react_native!(:path => config["reactNativePath"]) + use_react_native!( + :path => config["reactNativePath"], + :hermes_enabled => false, + ) end target "StandardNotesDev" do config = use_native_modules! - use_react_native!(:path => config["reactNativePath"]) + use_react_native!( + :path => config["reactNativePath"], + :hermes_enabled => true, + ) end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index a172bad3..b0fa1d3e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3,190 +3,225 @@ PODS: - BugsnagReactNative (7.5.6): - React - DoubleConversion (1.1.6) - - FBLazyVector (0.63.4) - - FBReactNativeSpec (0.63.4): - - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.4) - - RCTTypeSafety (= 0.63.4) - - React-Core (= 0.63.4) - - React-jsi (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - Folly (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - Folly/Default (= 2020.01.13.00) - - glog - - Folly/Default (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - glog + - FBLazyVector (0.64.0) + - FBReactNativeSpec (0.64.0): + - RCT-Folly (= 2020.01.13.00) + - RCTRequired (= 0.64.0) + - RCTTypeSafety (= 0.64.0) + - React-Core (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) - glog (0.3.5) - - RCTRequired (0.63.4) - - RCTTypeSafety (0.63.4): - - FBLazyVector (= 0.63.4) - - Folly (= 2020.01.13.00) - - RCTRequired (= 0.63.4) - - React-Core (= 0.63.4) - - React (0.63.4): - - React-Core (= 0.63.4) - - React-Core/DevSupport (= 0.63.4) - - React-Core/RCTWebSocket (= 0.63.4) - - React-RCTActionSheet (= 0.63.4) - - React-RCTAnimation (= 0.63.4) - - React-RCTBlob (= 0.63.4) - - React-RCTImage (= 0.63.4) - - React-RCTLinking (= 0.63.4) - - React-RCTNetwork (= 0.63.4) - - React-RCTSettings (= 0.63.4) - - React-RCTText (= 0.63.4) - - React-RCTVibration (= 0.63.4) - - React-callinvoker (0.63.4) - - React-Core (0.63.4): - - Folly (= 2020.01.13.00) + - hermes-engine (0.7.2) + - libevent (2.1.12) + - RCT-Folly (2020.01.13.00): + - boost-for-react-native + - DoubleConversion - glog - - React-Core/Default (= 0.63.4) - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - RCT-Folly/Default (= 2020.01.13.00) + - RCT-Folly/Default (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - RCT-Folly/Futures (2020.01.13.00): + - boost-for-react-native + - DoubleConversion + - glog + - libevent + - RCTRequired (0.64.0) + - RCTTypeSafety (0.64.0): + - FBLazyVector (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTRequired (= 0.64.0) + - React-Core (= 0.64.0) + - React (0.64.0): + - React-Core (= 0.64.0) + - React-Core/DevSupport (= 0.64.0) + - React-Core/RCTWebSocket (= 0.64.0) + - React-RCTActionSheet (= 0.64.0) + - React-RCTAnimation (= 0.64.0) + - React-RCTBlob (= 0.64.0) + - React-RCTImage (= 0.64.0) + - React-RCTLinking (= 0.64.0) + - React-RCTNetwork (= 0.64.0) + - React-RCTSettings (= 0.64.0) + - React-RCTText (= 0.64.0) + - React-RCTVibration (= 0.64.0) + - React-callinvoker (0.64.0) + - React-Core (0.64.0): + - glog + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/CoreModulesHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/CoreModulesHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/Default (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/Default (0.64.0): - glog - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - RCT-Folly (= 2020.01.13.00) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/DevSupport (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/DevSupport (0.64.0): - glog - - React-Core/Default (= 0.63.4) - - React-Core/RCTWebSocket (= 0.63.4) - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) - - React-jsinspector (= 0.63.4) + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.0) + - React-Core/RCTWebSocket (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-jsinspector (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTActionSheetHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/Hermes (0.64.0): - glog + - hermes-engine + - RCT-Folly (= 2020.01.13.00) + - RCT-Folly/Futures + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) + - Yoga + - React-Core/RCTActionSheetHeaders (0.64.0): + - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTAnimationHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTAnimationHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTBlobHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTImageHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTImageHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTLinkingHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTLinkingHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTNetworkHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTNetworkHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTSettingsHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTSettingsHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTTextHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTTextHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTVibrationHeaders (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (0.64.0): - glog + - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-Core/RCTWebSocket (0.63.4): - - Folly (= 2020.01.13.00) + - React-Core/RCTWebSocket (0.64.0): - glog - - React-Core/Default (= 0.63.4) - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsiexecutor (= 0.63.4) + - RCT-Folly (= 2020.01.13.00) + - React-Core/Default (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsiexecutor (= 0.64.0) + - React-perflogger (= 0.64.0) - Yoga - - React-CoreModules (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.4) - - React-Core/CoreModulesHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - React-RCTImage (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-cxxreact (0.63.4): + - React-CoreModules (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/CoreModulesHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - React-RCTImage (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-cxxreact (0.64.0): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-callinvoker (= 0.63.4) - - React-jsinspector (= 0.63.4) - - React-jsi (0.63.4): + - RCT-Folly (= 2020.01.13.00) + - React-callinvoker (= 0.64.0) + - React-jsi (= 0.64.0) + - React-jsinspector (= 0.64.0) + - React-perflogger (= 0.64.0) + - React-runtimeexecutor (= 0.64.0) + - React-jsi (0.64.0): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-jsi/Default (= 0.63.4) - - React-jsi/Default (0.63.4): + - RCT-Folly (= 2020.01.13.00) + - React-jsi/Default (= 0.64.0) + - React-jsi/Default (0.64.0): - boost-for-react-native (= 1.63.0) - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-jsiexecutor (0.63.4): + - RCT-Folly (= 2020.01.13.00) + - React-jsiexecutor (0.64.0): - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) - - React-jsinspector (0.63.4) + - RCT-Folly (= 2020.01.13.00) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-perflogger (= 0.64.0) + - React-jsinspector (0.64.0) - react-native-aes (1.3.9): - React-Core - react-native-fingerprint-scanner (5.0.0): @@ -203,66 +238,70 @@ PODS: - React-Core - react-native-webview (11.0.3): - React-Core - - React-RCTActionSheet (0.63.4): - - React-Core/RCTActionSheetHeaders (= 0.63.4) - - React-RCTAnimation (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.4) - - React-Core/RCTAnimationHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-RCTBlob (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.63.4) - - React-Core/RCTWebSocket (= 0.63.4) - - React-jsi (= 0.63.4) - - React-RCTNetwork (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-RCTImage (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.4) - - React-Core/RCTImageHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - React-RCTNetwork (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-RCTLinking (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - React-Core/RCTLinkingHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-RCTNetwork (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.4) - - React-Core/RCTNetworkHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-RCTSettings (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.63.4) - - React-Core/RCTSettingsHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - React-RCTText (0.63.4): - - React-Core/RCTTextHeaders (= 0.63.4) - - React-RCTVibration (0.63.4): - - FBReactNativeSpec (= 0.63.4) - - Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.63.4) - - React-jsi (= 0.63.4) - - ReactCommon/turbomodule/core (= 0.63.4) - - ReactCommon/turbomodule/core (0.63.4): + - React-perflogger (0.64.0) + - React-RCTActionSheet (0.64.0): + - React-Core/RCTActionSheetHeaders (= 0.64.0) + - React-RCTAnimation (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTAnimationHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTBlob (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - React-Core/RCTBlobHeaders (= 0.64.0) + - React-Core/RCTWebSocket (= 0.64.0) + - React-jsi (= 0.64.0) + - React-RCTNetwork (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTImage (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTImageHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - React-RCTNetwork (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTLinking (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - React-Core/RCTLinkingHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTNetwork (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTNetworkHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTSettings (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - RCTTypeSafety (= 0.64.0) + - React-Core/RCTSettingsHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-RCTText (0.64.0): + - React-Core/RCTTextHeaders (= 0.64.0) + - React-RCTVibration (0.64.0): + - FBReactNativeSpec (= 0.64.0) + - RCT-Folly (= 2020.01.13.00) + - React-Core/RCTVibrationHeaders (= 0.64.0) + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (= 0.64.0) + - React-runtimeexecutor (0.64.0): + - React-jsi (= 0.64.0) + - ReactCommon/turbomodule/core (0.64.0): - DoubleConversion - - Folly (= 2020.01.13.00) - glog - - React-callinvoker (= 0.63.4) - - React-Core (= 0.63.4) - - React-cxxreact (= 0.63.4) - - React-jsi (= 0.63.4) + - RCT-Folly (= 2020.01.13.00) + - React-callinvoker (= 0.64.0) + - React-Core (= 0.64.0) + - React-cxxreact (= 0.64.0) + - React-jsi (= 0.64.0) + - React-perflogger (= 0.64.0) - ReactNativeAlternateIcons (0.3.0): - React - RNCAsyncStorage (1.12.1): @@ -310,15 +349,18 @@ DEPENDENCIES: - "BugsnagReactNative (from `../node_modules/@bugsnag/react-native`)" - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) + - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (~> 0.7.2) + - libevent (~> 2.1.12) + - 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-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - React-Core (from `../node_modules/react-native/`) - React-Core/DevSupport (from `../node_modules/react-native/`) + - React-Core/Hermes (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`) @@ -333,6 +375,7 @@ DEPENDENCIES: - react-native-sodium (from `../node_modules/react-native-sodium`) - react-native-version-info (from `../node_modules/react-native-version-info`) - react-native-webview (from `../node_modules/react-native-webview`) + - 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`) @@ -342,6 +385,7 @@ DEPENDENCIES: - 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`) - ReactNativeAlternateIcons (from `../node_modules/react-native-alternate-icons`) - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" @@ -366,6 +410,8 @@ DEPENDENCIES: SPEC REPOS: trunk: - boost-for-react-native + - hermes-engine + - libevent - SSZipArchive - TrustKit @@ -377,11 +423,11 @@ EXTERNAL SOURCES: FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: - :path: "../node_modules/react-native/Libraries/FBReactNativeSpec" - Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" + :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: @@ -418,6 +464,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-version-info" react-native-webview: :path: "../node_modules/react-native-webview" + React-perflogger: + :path: "../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -436,6 +484,8 @@ EXTERNAL SOURCES: :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" ReactNativeAlternateIcons: @@ -479,20 +529,22 @@ SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c BugsnagReactNative: 1ac1129bdf95273df07cfe4d89750dc3d9d888a3 DoubleConversion: cde416483dac037923206447da6e1454df403714 - FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e - FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e - Folly: b73c3869541e86821df3c387eb0af5f65addfab4 + FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5 + FBReactNativeSpec: 8f58d68656d7e0e23b86dddc4d223fa4ffe4dce2 glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e - RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b - React: b0a957a2c44da4113b0c4c9853d8387f8e64e615 - React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe - React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b - React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60 - React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3 - React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31 - React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949 - React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a + hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f + libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 + RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c + RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a + RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b + React: 98eac01574128a790f0bbbafe2d1a8607291ac24 + React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc + React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a + React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8 + React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab + React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 + React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b + React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 react-native-aes: a13199300208e4eda1df14506a276415561e02bd react-native-fingerprint-scanner: be63e626b31fb951780a5fac5328b065a61a3d6e react-native-mail: 5fe7239a5b5c1e858d425501c03d1ab977434122 @@ -501,16 +553,18 @@ SPEC CHECKSUMS: react-native-sodium: 6cc4c4c1ea331f9f2b478076e983e09827a7b23f react-native-version-info: 36490da17d2c6b5cc21321c70e433784dee7ed0b react-native-webview: 21fdfbdd5a2268195ca013174f8f656f3509de50 - React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336 - React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b - React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0 - React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0 - React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2 - React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae - React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a - React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c - React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d - ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b + React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af + React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 + React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f + React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed + React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16 + React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c + React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28 + React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070 + React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2 + React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a + React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0 + ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05 ReactNativeAlternateIcons: b2a8a729d9d9756ed0652c352694f190407f297f RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398 RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f @@ -530,8 +584,8 @@ SPEC CHECKSUMS: SNReactNative: b5e9e529c175c13f3a618e27c76cf3071213d5e1 SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 - Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6 + Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf -PODFILE CHECKSUM: 5f6066efbcc06032bd833f9e21b5c400c0a572eb +PODFILE CHECKSUM: 7ea48a19f7a698239d5daccd2bcd17eded2758c9 COCOAPODS: 1.10.1 diff --git a/ios/StandardNotes.xcodeproj/project.pbxproj b/ios/StandardNotes.xcodeproj/project.pbxproj index 7572136d..77677099 100644 --- a/ios/StandardNotes.xcodeproj/project.pbxproj +++ b/ios/StandardNotes.xcodeproj/project.pbxproj @@ -242,6 +242,7 @@ 83DCC09B24C0A21200D58E1B /* Resources */, 83DCC0A124C0A21200D58E1B /* Bundle React Native code and images */, 3D5DE5334A130ACABFE38AF3 /* [CP] Copy Pods Resources */, + 9621906727564E51BAEBE9BB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -349,56 +350,6 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; }; - 1DCF3C40742945E814110BC4 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-StandardNotes/Pods-StandardNotes-resources.sh", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-StandardNotes/Pods-StandardNotes-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 22CF5F27C67390DA618B03A3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -444,7 +395,7 @@ "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core.common-Hermes/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -494,7 +445,7 @@ "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core.common/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -554,6 +505,24 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; + 9621906727564E51BAEBE9BB /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev-frameworks.sh", + "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; E5E35654B81EF4E64AB5D97C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/package.json b/package.json index ab00f426..85cfd60f 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "@standardnotes/snjs": "2.0.76", "js-base64": "^3.5.2", "moment": "^2.29.1", - "react": "16.13.1", - "react-native": "0.63.4", + "react": "^17.0.2", + "react-native": "^0.64.0", "react-native-aes-crypto": "standardnotes/react-native-aes#6430299", "react-native-alternate-icons": "standardnotes/react-native-alternate-icons#1d335d", "react-native-default-preference": "^1.4.3", diff --git a/yarn.lock b/yarn.lock index ae249d2d..df188519 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,18 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.13.15": + version "7.13.15" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" + integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== + "@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.7.5": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" @@ -31,6 +43,27 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.1.6": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.16.tgz#7756ab24396cc9675f1c3fcd5b79fcce192ea96a" + integrity sha512-sXHpixBiWWFti0AV2Zq7avpTasr6sIAu7Y396c608541qAU2ui4a193m0KSQmfPSKFZLnQ3cvlKDOm3XkuXm3Q== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.16" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.13.14" + "@babel/helpers" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.15" + "@babel/types" "^7.13.16" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + "@babel/generator@^7.12.1", "@babel/generator@^7.5.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" @@ -40,6 +73,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14" + integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg== + dependencies: + "@babel/types" "^7.13.16" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -72,6 +114,16 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-compilation-targets@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" + integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== + dependencies: + "@babel/compat-data" "^7.13.15" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" @@ -84,6 +136,17 @@ "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4" +"@babel/helper-create-class-features-plugin@^7.13.0": + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6" + integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.0" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.0" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-create-regexp-features-plugin@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" @@ -118,6 +181,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/helper-get-function-arity@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" @@ -125,6 +197,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-member-expression-to-functions@^7.10.5", "@babel/helper-member-expression-to-functions@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" @@ -132,6 +211,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" @@ -139,6 +225,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" @@ -154,6 +247,20 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14": + version "7.13.14" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef" + integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.13" + "@babel/types" "^7.13.14" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -161,11 +268,23 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== +"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + "@babel/helper-regex@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" @@ -173,16 +292,6 @@ dependencies: lodash "^4.17.19" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" - integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-replace-supers@^7.10.4", "@babel/helper-replace-supers@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" @@ -193,6 +302,16 @@ "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" +"@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" + integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.12" + "@babel/helper-simple-access@^7.10.4", "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" @@ -200,6 +319,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== + dependencies: + "@babel/types" "^7.13.12" + "@babel/helper-skip-transparent-expression-wrappers@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" @@ -207,6 +333,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -214,20 +347,27 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== -"@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== - dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== "@babel/helpers@^7.12.1": version "7.12.1" @@ -238,6 +378,15 @@ "@babel/traverse" "^7.12.1" "@babel/types" "^7.12.1" +"@babel/helpers@^7.13.16": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.17.tgz#b497c7a00e9719d5b613b8982bda6ed3ee94caf6" + integrity sha512-Eal4Gce4kGijo1/TGJdqp3WuhllaMLSrW6XcL0ulyUAQOuxHcCafZE8KHg9857gcTehsm/v7RcOx2+jp0Ryjsg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.13.17" + "@babel/types" "^7.13.17" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -247,17 +396,24 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": version "7.12.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== -"@babel/plugin-external-helpers@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.10.4.tgz#40d38e8e48a1fa3766ab43496253266ca26783ce" - integrity sha512-5mASqSthmRNYVXOphYzlqmR3Y8yp5SZMZhtKDh2DGV3R2PWGLEmP7qOahw66//6m4hjhlpV1bVM7xIJHt1F77Q== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" +"@babel/parser@^7.1.6", "@babel/parser@^7.12.13", "@babel/parser@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37" + integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw== "@babel/plugin-proposal-class-properties@^7.0.0": version "7.10.4" @@ -267,6 +423,14 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-proposal-class-properties@^7.1.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" + integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-proposal-export-default-from@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz#08f66eef0067cbf6a7bc036977dcdccecaf0c6c5" @@ -283,6 +447,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.1.0": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3" + integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" @@ -309,6 +481,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" +"@babel/plugin-proposal-optional-chaining@^7.1.0": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866" + integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -351,6 +532,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-flow@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -428,6 +616,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-arrow-functions@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" @@ -435,15 +630,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" @@ -502,6 +688,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-flow" "^7.10.4" +"@babel/plugin-transform-flow-strip-types@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz#58177a48c209971e8234e99906cb6bd1122addd3" + integrity sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-flow" "^7.12.13" + "@babel/plugin-transform-for-of@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" @@ -541,6 +735,16 @@ "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.1.0": + version "7.13.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" + integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== + dependencies: + "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-object-assign@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.4.tgz#f7c8f54ce8052ccd8b9da9b3358848423221c338" @@ -652,6 +856,15 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-typescript@^7.13.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz#4a498e1f3600342d2a9e61f60131018f55774853" + integrity sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.13.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-typescript" "^7.12.13" + "@babel/plugin-transform-typescript@^7.5.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" @@ -669,6 +882,24 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" +"@babel/preset-flow@^7.0.0": + version "7.13.13" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.13.13.tgz#a61a1c149b3f77589d795287744393444d5cdd9e" + integrity sha512-MDtwtamMifqq3R2mC7l3A3uFalUb3NH5TIBQWjN/epEPlZktcLq4se3J+ivckKrLMGsR7H9LW8+pYuIUN9tsKg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-flow-strip-types" "^7.13.0" + +"@babel/preset-typescript@^7.1.0": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.13.0.tgz#ab107e5f050609d806fbb039bec553b33462c60a" + integrity sha512-LXJwxrHy0N3f6gIJlYbLta1D9BDtHpQeqwzM0LIfjDlr6UE/D5Mc7W4iDiQzaE+ks0sTjT26ArcHWnJVt0QiHw== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-transform-typescript" "^7.13.0" + "@babel/register@^7.0.0": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.11.5.tgz#79becf89e0ddd0fba8b92bc279bc0f5d2d7ce2ea" @@ -680,7 +911,7 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== @@ -696,7 +927,16 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4": +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== @@ -711,6 +951,20 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13", "@babel/traverse@^7.13.15", "@babel/traverse@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.17.tgz#c85415e0c7d50ac053d758baec98b28b2ecfeea3" + integrity sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.16" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.16" + "@babel/types" "^7.13.17" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" @@ -720,6 +974,14 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.13.16", "@babel/types@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4" + integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -875,37 +1137,17 @@ "@types/hoist-non-react-statics" "^3.3.1" hoist-non-react-statics "^3.3.0" -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== +"@hapi/hoek@^9.0.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" + integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.0.3": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" + "@hapi/hoek" "^9.0.0" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -923,15 +1165,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - "@jest/console@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" @@ -978,6 +1211,13 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/create-cache-key-function@^26.5.0": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-26.6.2.tgz#04cf439207a4fd12418d8aee551cddc86f9ac5f5" + integrity sha512-LgEuqU1f/7WEIPYqwLPIvvHuc1sB6gMVbT6zWhin3txYUNYK/kGQrC1F2WR4gR34YlI9bBtViTm5z98RqVZAaw== + dependencies: + "@jest/types" "^26.6.2" + "@jest/environment@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" @@ -988,15 +1228,6 @@ "@types/node" "*" jest-mock "^26.6.2" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - "@jest/fake-timers@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" @@ -1050,15 +1281,6 @@ optionalDependencies: node-notifier "^8.0.0" -"@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - "@jest/source-map@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" @@ -1068,15 +1290,6 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@jest/test-result@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" @@ -1119,15 +1332,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" @@ -1177,30 +1381,30 @@ dependencies: deep-assign "^3.0.0" -"@react-native-community/cli-debugger-ui@^4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.13.1.tgz#07de6d4dab80ec49231de1f1fbf658b4ad39b32c" - integrity sha512-UFnkg5RTq3s2X15fSkrWY9+5BKOFjihNSnJjTV2H5PtTUFbd55qnxxPw8CxSfK0bXb1IrSvCESprk2LEpqr5cg== +"@react-native-community/cli-debugger-ui@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-5.0.1-alpha.1.tgz#09a856ccd2954cf16eea59b14dd26ae66720e4e6" + integrity sha512-o6msDywXU7q0dPKhCTo8IrpmJ+7o+kVghyHlrAndnb30p6vnm4pID5Yi7lHXGfs6bQXorKUWX8oD5xYwWkN8qw== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-hermes@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-4.13.0.tgz#6243ed9c709dad5e523f1ccd7d21066b32f2899d" - integrity sha512-oG+w0Uby6rSGsUkJGLvMQctZ5eVRLLfhf84lLyz942OEDxFRa9U19YJxOe9FmgCKtotbYiM3P/XhK+SVCuerPQ== +"@react-native-community/cli-hermes@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-5.0.1-alpha.1.tgz#3c3836d6e537baa7615618262f8da1686052667f" + integrity sha512-7FNhqeZCbON4vhzZpV8nx4gB3COJy2KGbVku376CnIAjMncxJhupqORWdMukP8jNuuvUZ1R0vj0L0+W/M5rY1w== dependencies: - "@react-native-community/cli-platform-android" "^4.13.0" - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-platform-android" "^5.0.1-alpha.1" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" chalk "^3.0.0" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@^4.10.0", "@react-native-community/cli-platform-android@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-4.13.0.tgz#922681ec82ee1aadd993598b814df1152118be02" - integrity sha512-3i8sX8GklEytUZwPnojuoFbCjIRzMugCdzDIdZ9UNmi/OhD4/8mLGO0dgXfT4sMWjZwu3qjy45sFfk2zOAgHbA== +"@react-native-community/cli-platform-android@^5.0.1-alpha.0", "@react-native-community/cli-platform-android@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-5.0.1-alpha.1.tgz#343ea5b469ac696268ecc1961ee44b91d1367cd1" + integrity sha512-Fx9Tm0Z9sl5CD/VS8XWIY1gTgf28MMnAvyx0oj7yO4IzWuOpJPyWxTJITc80GAK6tlyijORv5kriYpXnquxQLg== dependencies: - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" chalk "^3.0.0" execa "^1.0.0" fs-extra "^8.1.0" @@ -1211,12 +1415,12 @@ slash "^3.0.0" xmldoc "^1.1.2" -"@react-native-community/cli-platform-ios@^4.10.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-4.13.0.tgz#a738915c68cac86df54e578b59a1311ea62b1aef" - integrity sha512-6THlTu8zp62efkzimfGr3VIuQJ2514o+vScZERJCV1xgEi8XtV7mb/ZKt9o6Y9WGxKKkc0E0b/aVAtgy+L27CA== +"@react-native-community/cli-platform-ios@^5.0.1-alpha.0": + version "5.0.1-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-5.0.1-alpha.2.tgz#58ab0641355cbe68a0d1737dde8c7d66eb0c0e39" + integrity sha512-W15A75j+4bx6qbcapFia1A0M+W3JAt7Bc4VgEYvxDDRI62EsSHk1k6ZBNxs/j0cDPSYF9ZXHlRI+CWi3r9bTbQ== dependencies: - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" chalk "^3.0.0" glob "^7.1.3" js-yaml "^3.13.1" @@ -1224,25 +1428,25 @@ plist "^3.0.1" xcode "^2.0.0" -"@react-native-community/cli-server-api@^4.13.1": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-4.13.1.tgz#bee7ee9702afce848e9d6ca3dcd5669b99b125bd" - integrity sha512-vQzsFKD9CjHthA2ehTQX8c7uIzlI9A7ejaIow1I9RlEnLraPH2QqVDmzIdbdh5Od47UPbRzamCgAP8Bnqv3qwQ== +"@react-native-community/cli-server-api@^5.0.1-alpha.2": + version "5.0.1-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-5.0.1-alpha.2.tgz#a82557273bad99d188682169892aaa4b283ba149" + integrity sha512-qzjoLF51GmvUHQrcJZE+wD3bTmgnTNOnGBU6z4terKmPdt/EBBSUkdXc6ScWWRF6oWP+xpxLZ//tKic2v2f+ag== dependencies: - "@react-native-community/cli-debugger-ui" "^4.13.1" - "@react-native-community/cli-tools" "^4.13.0" + "@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.0" nocache "^2.1.0" - pretty-format "^25.1.0" + pretty-format "^26.6.2" serve-static "^1.13.1" ws "^1.1.0" -"@react-native-community/cli-tools@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-4.13.0.tgz#b406463d33af16cedc4305a9a9257ed32845cf1b" - integrity sha512-s4f489h5+EJksn4CfheLgv5PGOM0CDmK1UEBLw2t/ncWs3cW2VI7vXzndcd/WJHTv3GntJhXDcJMuL+Z2IAOgg== +"@react-native-community/cli-tools@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-5.0.1-alpha.1.tgz#b8ceed3ee5f1c2c7d860518da3dd919dc5953870" + integrity sha512-TwQxtfEOxGf8n5+UYKVO5exm56TwEAsWjYcoWkUKcSsIBl6VwCR4s3qGB8Y63uLUN2wf9MKnzvsaX337GjMVTA== dependencies: chalk "^3.0.0" lodash "^4.17.15" @@ -1251,22 +1455,24 @@ open "^6.2.0" shell-quote "1.6.1" -"@react-native-community/cli-types@^4.10.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-4.10.1.tgz#d68a2dcd1649d3b3774823c64e5e9ce55bfbe1c9" - integrity sha512-ael2f1onoPF3vF7YqHGWy7NnafzGu+yp88BbFbP0ydoCP2xGSUzmZVw0zakPTC040Id+JQ9WeFczujMkDy6jYQ== - -"@react-native-community/cli@^4.10.0": - version "4.13.1" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-4.13.1.tgz#60148723e77cafe3ae260317d6bffe91853a2d20" - integrity sha512-+/TeRVToADpQPSprsPkwi9KY8x64YcuJpjzMBVISwWP+aWzsIDuWJmyMXTADlCg2EBMJqJR7bn1W/IkfzVRCWA== +"@react-native-community/cli-types@^5.0.1-alpha.1": + version "5.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-5.0.1-alpha.1.tgz#e8cf69966cf4e0fb5dda9bc708a52980ed1f8896" + integrity sha512-RdsLU0Jf3HodFnAY+oxCJt3VlhaN4MxGhfISvjGzqdjq3kpzmxex3+7fi6QvS97Kd6G2cheOJAdgP5wcwxp3Ng== dependencies: - "@hapi/joi" "^15.0.3" - "@react-native-community/cli-debugger-ui" "^4.13.1" - "@react-native-community/cli-hermes" "^4.13.0" - "@react-native-community/cli-server-api" "^4.13.1" - "@react-native-community/cli-tools" "^4.13.0" - "@react-native-community/cli-types" "^4.10.1" + ora "^3.4.0" + +"@react-native-community/cli@^5.0.1-alpha.0": + version "5.0.1-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-5.0.1-alpha.2.tgz#7e78378120fd4e264e4b577cbcf5e52b5beaa53b" + integrity sha512-PP22TVV2VyELXhAX4PcBisasssastSEx23XDklfPoCPIXD2QgGC7y39n/b5I9tOzKi2qYswCEAcDpwXYwevGOg== + dependencies: + "@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" + "@react-native-community/cli-hermes" "^5.0.1-alpha.1" + "@react-native-community/cli-server-api" "^5.0.1-alpha.2" + "@react-native-community/cli-tools" "^5.0.1-alpha.1" + "@react-native-community/cli-types" "^5.0.1-alpha.1" + appdirsjs "^1.2.4" chalk "^3.0.0" command-exists "^1.2.8" commander "^2.19.0" @@ -1278,19 +1484,21 @@ fs-extra "^8.1.0" glob "^7.1.3" graceful-fs "^4.1.3" - inquirer "^3.0.6" + joi "^17.2.1" leven "^3.1.0" lodash "^4.17.15" - metro "^0.58.0" - metro-config "^0.58.0" - metro-core "^0.58.0" - metro-react-native-babel-transformer "^0.58.0" - metro-resolver "^0.58.0" + metro "^0.64.0" + metro-config "^0.64.0" + metro-core "^0.64.0" + metro-react-native-babel-transformer "^0.64.0" + metro-resolver "^0.64.0" + metro-runtime "^0.64.0" minimist "^1.2.0" mkdirp "^0.5.1" node-stream-zip "^1.9.1" ora "^3.4.0" - pretty-format "^25.2.0" + pretty-format "^26.6.2" + prompts "^2.4.0" semver "^6.3.0" serve-static "^1.13.1" strip-ansi "^5.2.0" @@ -1331,6 +1539,21 @@ resolved "https://registry.yarnpkg.com/@react-native-community/segmented-control/-/segmented-control-2.2.2.tgz#4014256819ab8f40f6bc3a3929ff14a9d149cf04" integrity sha512-14+4HnGVrg3USqMzcHCPCqPmPmaEj0ogQH4pHRFXjoVvJokzidXBcYyXl5yrwFcKGW6zTXI6Fx9Qgt4ydtS6tw== +"@react-native/assets@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" + integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== + +"@react-native/normalize-color@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-1.0.0.tgz#c52a99d4fe01049102d47dc45d40cbde4f720ab6" + integrity sha512-xUNRvNmCl3UGCPbbHvfyFMnpvLPoOjDCcp5bT9m2k+TF/ZBklEQwhPZlkrxRx2NhgFh1X3a5uL7mJ7ZR+8G7Qg== + +"@react-native/polyfills@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-1.0.0.tgz#05bb0031533598f9458cf65a502b8df0eecae780" + integrity sha512-0jbp4RxjYopTsIdLl+/Fy2TiwVYHy4mgeu07DG4b/LyM0OS/+lPP5c9sbnt/AMlnF6qz2JRZpPpGw1eMNS6A4w== + "@react-navigation/core@^5.15.2": version "5.15.2" resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-5.15.2.tgz#6aa374c7bcb6ffcaac8e2a7f8bdb2f9aba469b31" @@ -1366,6 +1589,23 @@ color "^3.1.3" react-native-iphone-x-helper "^1.3.0" +"@sideway/address@^4.1.0": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.1.tgz#9e321e74310963fdf8eebfbee09c7bd69972de4d" + integrity sha512-+I5aaQr3m0OAmMr7RQ3fR9zx55sejEYR2BFJaxL+zT3VM2611X0SHvPWIbAUBZVTn/YzYKbV8gJ2oT/QELknfQ== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinonjs/commons@^1.7.0": version "1.8.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" @@ -1566,11 +1806,6 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" @@ -1591,13 +1826,6 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== -"@types/yargs@^13.0.0": - version "13.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1" - integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^15.0.0": version "15.0.7" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.7.tgz#dad50a7a234a35ef9460737a56024287a3de1d2b" @@ -1752,7 +1980,7 @@ absolute-path@^0.0.0: resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" integrity sha1-p4di+9rftSl76ZsV01p4Wy8JW/c= -accepts@~1.3.5, accepts@~1.3.7: +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -1798,30 +2026,11 @@ anser@^1.4.9: resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" - integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= - dependencies: - ansi-wrap "0.1.0" - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-escapes@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -1838,26 +2047,7 @@ ansi-fragments@^0.2.1: slice-ansi "^2.0.0" strip-ansi "^5.0.0" -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= - dependencies: - ansi-wrap "0.1.0" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -1882,11 +2072,6 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1903,6 +2088,11 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +appdirsjs@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.4.tgz#3ab582acc9fdfaaa0c1f81b3a25422ad4d95f9d4" + integrity sha512-WO5StDORR6JF/xYnXk/Fm0yu+iULaV5ULKuUw0Tu+jbgiTlSquaWBCgbpnsHLMXldf+fM3Gxn5p7vjond7He6w== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1910,29 +2100,16 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" - integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= - dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -arr-union@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" - integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" @@ -1967,11 +2144,6 @@ array-reduce@~0.0.0: resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -2013,6 +2185,13 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -2050,6 +2229,11 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -2142,7 +2326,7 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-fbjs@^3.2.0, babel-preset-fbjs@^3.3.0: +babel-preset-fbjs@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== @@ -2223,13 +2407,6 @@ big-integer@^1.6.44: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bluebird@^3.5.4: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -2285,6 +2462,17 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browserslist@^4.14.5: + version "4.16.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.5.tgz#952825440bca8913c62d0021334cbe928ef062ae" + integrity sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A== + dependencies: + caniuse-lite "^1.0.30001214" + colorette "^1.2.2" + electron-to-chromium "^1.3.719" + escalade "^3.1.1" + node-releases "^1.1.71" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -2292,11 +2480,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2408,6 +2591,11 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= +caniuse-lite@^1.0.30001214: + version "1.0.30001219" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001219.tgz#5bfa5d0519f41f993618bd318f606a4c4c16156b" + integrity sha512-c0yixVG4v9KBc/tQ2rlbB3A/bgBFRvl8h8M4IeUbqCca4gsiCfvtaheUssbnux/Mb66Vjz7x8yYjDgYcNQOhyQ== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2450,11 +2638,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - child-process-promise@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/child-process-promise/-/child-process-promise-2.2.1.tgz#4730a11ef610fad450b8f223c79d31d7bdad8074" @@ -2496,11 +2679,6 @@ cli-spinners@^2.0.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2574,11 +2752,6 @@ color-string@^1.5.4: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - color@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" @@ -2592,7 +2765,12 @@ colorette@^1.0.7: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -colors@^1.0.3: +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +colors@^1.0.3, colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -2654,16 +2832,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concat-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" @@ -2711,7 +2879,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.2.2, core-js@^2.4.1: +core-js@^2.4.1: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== @@ -2746,15 +2914,6 @@ cross-spawn@^4.0.2: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3054,6 +3213,11 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-to-chromium@^1.3.719: + version "1.3.723" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.723.tgz#52769a75635342a4db29af5f1e40bd3dad02c877" + integrity sha512-L+WXyXI7c7+G1V8ANzRsPI5giiimLAUDC6Zs1ojHHPhYXb3k/iTABFmWjivEtsWrRQymjnO66/rO2ZTABGdmWg== + emittery@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" @@ -3107,7 +3271,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.3: +error-stack-parser@^2.0.3, error-stack-parser@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== @@ -3166,6 +3330,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3351,7 +3520,7 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -3395,11 +3564,6 @@ event-target-shim@^5.0.0, event-target-shim@^5.0.1: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter3@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - exception-formatter@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/exception-formatter/-/exception-formatter-1.0.7.tgz#3291616b86fceabefa97aee6a4708032c6e3b96d" @@ -3470,13 +3634,6 @@ expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" -extend-shallow@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" - integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= - dependencies: - kind-of "^1.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3497,15 +3654,6 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.0.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3535,16 +3683,6 @@ faker@^5.1.0: resolved "https://registry.yarnpkg.com/faker/-/faker-5.1.0.tgz#e10fa1dec4502551aee0eb771617a7e7b94692e8" integrity sha512-RrWKFSSA/aNLP0g3o2WW1Zez7/MnMr7xkiZmoCfAGZmdkDQZ6l2KtuXHN5XjdvpRjDl8+3vf+Rrtl06Z352+Mw== -fancy-log@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -3596,22 +3734,6 @@ fbjs-css-vars@^1.0.0: resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== -fbjs-scripts@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz#069a0c0634242d10031c6460ef1fccefcdae8b27" - integrity sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ== - dependencies: - "@babel/core" "^7.0.0" - ansi-colors "^1.0.1" - babel-preset-fbjs "^3.2.0" - core-js "^2.4.1" - cross-spawn "^5.1.0" - fancy-log "^1.3.2" - object-assign "^4.0.1" - plugin-error "^0.1.2" - semver "^5.1.0" - through2 "^2.0.0" - fbjs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" @@ -3639,13 +3761,6 @@ fbjs@^3.0.0: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -3653,11 +3768,6 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3748,6 +3858,16 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flow-parser@0.*: + version "0.149.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.149.0.tgz#6e5749ad832ba211968429accdb6a3858706e4f8" + integrity sha512-ruUVkZuM9oFQjhSsLO/OJYRYpGnuXJpTnIZmgzna6DyLFb3CLpeO27oJbWyeXaa830hmKf0JRzpcdFsFS8lmpg== + +flow-parser@^0.121.0: + version "0.121.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" + integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3820,14 +3940,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" @@ -3853,6 +3965,11 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -3924,7 +4041,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3960,7 +4077,7 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -4036,10 +4153,10 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hermes-engine@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.5.1.tgz#601115e4b1e0a17d9aa91243b96277de4e926e09" - integrity sha512-hLwqh8dejHayjlpvZY40e1aDCDvyP98cWx/L5DhAjSJLH8g4z9Tp08D7y4+3vErDsncPOdf1bxm+zUWpx0/Fxg== +hermes-engine@~0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.7.2.tgz#303cd99d23f68e708b223aec2d49d5872985388b" + integrity sha512-E2DkRaO97gwL98LPhgfkMqhHiNsrAjIfEk3wWYn2Y31xdkdWn0572H7RnVcGujMJVqZNJvtknxlpsUb8Wzc3KA== hermes-profile-transformer@^0.0.6: version "0.0.6" @@ -4097,7 +4214,7 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -iconv-lite@0.4.24, iconv-lite@^0.4.17: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4180,26 +4297,6 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@^3.0.6: - version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" - integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - internal-slot@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" @@ -4209,6 +4306,11 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + invariant@2.2.4, invariant@>=2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -4279,6 +4381,13 @@ is-core-module@^2.0.0: dependencies: has "^1.0.3" +is-core-module@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" + integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4688,11 +4797,6 @@ jest-environment-node@^26.6.2: jest-mock "^26.6.2" jest-util "^26.6.2" -jest-get-type@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" - integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== - jest-get-type@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" @@ -4703,26 +4807,7 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^24.7.1: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - -jest-haste-map@^26.6.2: +jest-haste-map@^26.5.2, jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== @@ -4785,20 +4870,6 @@ jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - jest-message-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" @@ -4814,13 +4885,6 @@ jest-message-util@^26.6.2: slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - jest-mock@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" @@ -4921,11 +4985,6 @@ jest-runtime@^26.6.3: strip-bom "^4.0.0" yargs "^15.4.1" -jest-serializer@^24.4.0, jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -4956,24 +5015,6 @@ jest-snapshot@^26.6.2: pretty-format "^26.6.2" semver "^7.3.2" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - jest-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" @@ -4986,19 +5027,7 @@ jest-util@^26.6.2: is-ci "^2.0.0" micromatch "^4.0.2" -jest-validate@^24.7.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" - integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== - dependencies: - "@jest/types" "^24.9.0" - camelcase "^5.3.1" - chalk "^2.0.1" - jest-get-type "^24.9.0" - leven "^3.1.0" - pretty-format "^24.9.0" - -jest-validate@^26.6.2: +jest-validate@^26.5.2, jest-validate@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== @@ -5023,15 +5052,7 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^24.6.0, jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.6.2: +jest-worker@^26.0.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== @@ -5054,6 +5075,17 @@ jetifier@^1.6.2: resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.6.tgz#fec8bff76121444c12dc38d2dad6767c421dab68" integrity sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ== +joi@^17.2.1: + version "17.4.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.0.tgz#b5c2277c8519e016316e49ababd41a1908d9ef20" + integrity sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + js-base64@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.5.2.tgz#3cc800e4f10812b55fb5ec53e7cabaef35dc6d3c" @@ -5082,6 +5114,31 @@ jsc-android@^245459.0.0: resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-245459.0.0.tgz#e584258dd0b04c9159a27fb104cd5d491fd202c9" integrity sha512-wkjURqwaB1daNkDi2OYYbsLnIdC/lUM2nPXQKRs5pqEU9chDg435bjvo+LSaHotDENygHQDHe+ntUkkw2gwMtg== +jscodeshift@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.11.0.tgz#4f95039408f3f06b0e39bb4d53bc3139f5330e2f" + integrity sha512-SdRK2C7jjs4k/kT2mwtO07KJN9RnjxtKn03d9JVj6c3j9WwaLcFYsICYDnLAzY0hp+wG2nxl+Cm2jWLiNVYb8g== + dependencies: + "@babel/core" "^7.1.6" + "@babel/parser" "^7.1.6" + "@babel/plugin-proposal-class-properties" "^7.1.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.1.0" + "@babel/plugin-proposal-optional-chaining" "^7.1.0" + "@babel/plugin-transform-modules-commonjs" "^7.1.0" + "@babel/preset-flow" "^7.0.0" + "@babel/preset-typescript" "^7.1.0" + "@babel/register" "^7.0.0" + babel-core "^7.0.0-bridge.0" + colors "^1.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.3" + temp "^0.8.1" + write-file-atomic "^2.3.0" + jsdom@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" @@ -5149,13 +5206,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5205,11 +5255,6 @@ jsx-ast-utils@^2.4.1: array-includes "^3.1.1" object.assign "^4.1.0" -kind-of@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" - integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5381,7 +5426,7 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@4.x.x, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@^4.3.0: +lodash@4.x.x, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -5492,13 +5537,6 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -5509,28 +5547,10 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -metro-babel-register@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.58.0.tgz#5c44786d49a044048df56cf476a2263491d4f53a" - integrity sha512-P5+G3ufhSYL6cA3a7xkbSJzzFBvtivj/PhWvGXFXnuFssDlMAX1CTktff+0gpka5Cd6B6QLt0UAMWulUAAE4Eg== - dependencies: - "@babel/core" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/register" "^7.0.0" - core-js "^2.2.2" - escape-string-regexp "^1.0.5" - -metro-babel-register@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.59.0.tgz#2bcff65641b36794cf083ba732fbc46cf870fb43" - integrity sha512-JtWc29erdsXO/V3loenXKw+aHUXgj7lt0QPaZKPpctLLy8kcEpI/8pfXXgVK9weXICCpCnYtYncIosAyzh0xjg== +metro-babel-register@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.64.0.tgz#1a2d23f68da8b8ee42e78dca37ad21a5f4d3647d" + integrity sha512-Kf6YvE3kIRumGnjK0Q9LqGDIdnsX9eFGtNBmBuCVDuB9wGGA/5CgX8We8W7Y44dz1RGTcHJRhfw5iGg+pwC3aQ== dependencies: "@babel/core" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" @@ -5541,118 +5561,78 @@ metro-babel-register@0.59.0: "@babel/register" "^7.0.0" escape-string-regexp "^1.0.5" -metro-babel-transformer@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.58.0.tgz#317c83b863cceb0573943815f1711fbcbe69b106" - integrity sha512-yBX3BkRhw2TCNPhe+pmLSgsAEA3huMvnX08UwjFqSXXI1aiqzRQobn92uKd1U5MM1Vx8EtXVomlJb95ZHNAv6A== +metro-babel-transformer@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.64.0.tgz#a21f8a989a5ea60c1109456e21bd4d9374194ea0" + integrity sha512-itZaxKTgmKGEZWxNzbSZBc22NngrMZzoUNuU92aHSTGkYi2WH4XlvzEHsstmIKHMsRVKl75cA+mNmgk4gBFJKw== dependencies: "@babel/core" "^7.0.0" - metro-source-map "0.58.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" -metro-babel-transformer@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.59.0.tgz#dda99c75d831b00142c42c020c51c103b29f199d" - integrity sha512-fdZJl8rs54GVFXokxRdD7ZrQ1TJjxWzOi/xSP25VR3E8tbm3nBZqS+/ylu643qSr/IueABR+jrlqAyACwGEf6w== - dependencies: - "@babel/core" "^7.0.0" - metro-source-map "0.59.0" +metro-cache-key@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.64.0.tgz#98d0a94332453c4c52b74f72c07cc62a5c264c4f" + integrity sha512-O9B65G8L/fopck45ZhdRosyVZdMtUQuX5mBWEC1NRj02iWBIUPLmYMjrunqIe8vHipCMp3DtTCm/65IlBmO8jg== -metro-cache@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.58.0.tgz#630ea0a4626dfb9591c71fdb85dce14b5e9a04ec" - integrity sha512-jjW9zCTKxhgKcVkyQ6LHyna9Zdf4TK/45vvT1fPyyTk1RY82ZYjU1qs+84ycKEd08Ka4YcK9xcUew9SIDJYI8Q== +metro-cache@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.64.0.tgz#a769503e12521d9e9d95ce5840ffb2efdb4e8703" + integrity sha512-QvGfxe/1QQYM9XOlR8W1xqE9eHDw/AgJIgYGn/TxZxBu9Zga+Rgs1omeSZju45D8w5VWgMr83ma5kACgzvOecg== dependencies: - jest-serializer "^24.4.0" - metro-core "0.58.0" + metro-core "0.64.0" mkdirp "^0.5.1" rimraf "^2.5.4" -metro-config@0.58.0, metro-config@^0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.58.0.tgz#1e24b43a5a00971d75662b1a0d3c04a13d4a1746" - integrity sha512-4vgBliXwL56vjUlYplvGMVSNrJJpkHuLcD+O20trV3FvPxKg4ZsvuOcNSxqDSMU26FCtIEJ15ojcuCbRL7KY0w== +metro-config@0.64.0, metro-config@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.64.0.tgz#b634fa05cffd06b1e50e4339c200f90a42924afb" + integrity sha512-QhM4asnX5KhlRWaugwVGNNXhX0Z85u5nK0UQ/A90bBb4xWyXqUe20e788VtdA75rkQiiI6wXTCIHWT0afbnjwQ== dependencies: cosmiconfig "^5.0.5" - jest-validate "^24.7.0" - metro "0.58.0" - metro-cache "0.58.0" - metro-core "0.58.0" - pretty-format "^24.7.0" + jest-validate "^26.5.2" + metro "0.64.0" + metro-cache "0.64.0" + metro-core "0.64.0" + metro-runtime "0.64.0" -metro-core@0.58.0, metro-core@^0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.58.0.tgz#ad9f6645a2b439a3fbce7ce4e19b01b00375768a" - integrity sha512-RzXUjGFmCLOyzUqcKDvr91AldGtIOxnzNZrWUIiG8uC3kerVLo0mQp4YH3+XVm6fMNiLMg6iER7HLqD+MbpUjQ== +metro-core@0.64.0, metro-core@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.64.0.tgz#7616b27acfe7baa476f6cd6bd9e70ae64fa62541" + integrity sha512-v8ZQ5j72EaUwamQ8pLfHlOHTyp7SbdazvHPzFGDpHnwIQqIT0Bw3Syg8R4regTlVG3ngpeSEAi005UITljmMcQ== dependencies: - jest-haste-map "^24.7.1" + jest-haste-map "^26.5.2" lodash.throttle "^4.1.1" - metro-resolver "0.58.0" - wordwrap "^1.0.0" + metro-resolver "0.64.0" -metro-inspector-proxy@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.58.0.tgz#6fefb0cdf25655919d56c82ebe09cd26eb00e636" - integrity sha512-oFqTyNTJdCdvcw1Ha6SKE7ITbSaoTbO4xpYownIoJR+WZ0ZfxbWpp225JkHuBJm9UcBAnG9c0CME924m3uBbaw== +metro-hermes-compiler@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.64.0.tgz#e6043d7aa924e5b2be99bd3f602e693685d15386" + integrity sha512-CLAjVDWGAoGhbi2ZyPHnH5YDdfrDIx6+tzFWfHGIMTZkYBXsYta9IfYXBV8lFb6BIbrXLjlXZAOoosknetMPOA== + +metro-inspector-proxy@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.64.0.tgz#9a481b3f49773d5418e028178efec68f861bec88" + integrity sha512-KywbH3GNSz9Iqw4UH3smgaV2dBHHYMISeN7ORntDL/G+xfgPc6vt13d+zFb907YpUcXj5N0vdoiAHI5V/0y8IA== dependencies: connect "^3.6.5" debug "^2.2.0" - rxjs "^5.4.3" ws "^1.1.5" - yargs "^14.2.0" + yargs "^15.3.1" -metro-minify-uglify@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.58.0.tgz#7e1066954bfd4f767ba6aca7feef676ca44c68b8" - integrity sha512-vRHsA7bCi7eCn3LXLm20EfY2NoWDyYOnmWaq/N8LB0OxL2L5DXRqMYAQK+prWGJ5S1yvVnDuuNVP+peQ9851TA== +metro-minify-uglify@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.64.0.tgz#da6ab4dda030e3211f5924e7f41ed308d466068f" + integrity sha512-DRwRstqXR5qfte9Nuwoov5dRXxL7fJeVlO5fGyOajWeO3+AgPjvjXh/UcLJqftkMWTPGUFuzAD5/7JC5v5FLWw== dependencies: uglify-es "^3.1.9" -metro-react-native-babel-preset@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz#18f48d33fe124280ffabc000ab8b42c488d762a2" - integrity sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.0.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-exponentiation-operator" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-assign" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-regenerator" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - react-refresh "^0.4.0" - -metro-react-native-babel-preset@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.59.0.tgz#20e020bc6ac9849e1477de1333d303ed42aba225" - integrity sha512-BoO6ncPfceIDReIH8pQ5tQptcGo5yRWQXJGVXfANbiKLq4tfgdZB1C1e2rMUJ6iypmeJU9dzl+EhPmIFKtgREg== +metro-react-native-babel-preset@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz#76861408681dfda3c1d962eb31a8994918c976f8" + integrity sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ== dependencies: + "@babel/core" "^7.0.0" "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" @@ -5736,144 +5716,142 @@ metro-react-native-babel-preset@^0.60.0: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-transformer@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.59.0.tgz#9b3dfd6ad35c6ef37fc4ce4d20a2eb67fabbb4be" - integrity sha512-1O3wrnMq4NcPQ1asEcl9lRDn/t+F1Oef6S9WaYVIKEhg9m/EQRGVrrTVP+R6B5Eeaj3+zNKbzM8Dx/NWy1hUbQ== +metro-react-native-babel-transformer@0.64.0, metro-react-native-babel-transformer@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.64.0.tgz#eafef756972f20efdc51bd5361d55f8598355623" + integrity sha512-K1sHO3ODBFCr7uEiCQ4RvVr+cQg0EHQF8ChVPnecGh/WDD8udrTq9ECwB0dRfMjAvlsHtRUlJm6ZSI8UPgum2w== dependencies: "@babel/core" "^7.0.0" babel-preset-fbjs "^3.3.0" - metro-babel-transformer "0.59.0" - metro-react-native-babel-preset "0.59.0" - metro-source-map "0.59.0" + metro-babel-transformer "0.64.0" + metro-react-native-babel-preset "0.64.0" + metro-source-map "0.64.0" + nullthrows "^1.1.1" -metro-react-native-babel-transformer@^0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.58.0.tgz#5da0e5a1b83c01d11626905fa59f34fda53a21a5" - integrity sha512-3A73+cRq1eUPQ8g+hPNGgMUMCGmtQjwqHfoG1DwinAoJ/kr4WOXWWbGZo0xHJNBe/zdHGl0uHcDCp2knPglTdQ== - dependencies: - "@babel/core" "^7.0.0" - babel-preset-fbjs "^3.3.0" - metro-babel-transformer "0.58.0" - metro-react-native-babel-preset "0.58.0" - metro-source-map "0.58.0" - -metro-resolver@0.58.0, metro-resolver@^0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.58.0.tgz#4d03edc52e2e25d45f16688adf3b3f268ea60df9" - integrity sha512-XFbAKvCHN2iWqKeiRARzEXn69eTDdJVJC7lu16S4dPQJ+Dy82dZBr5Es12iN+NmbJuFgrAuIHbpWrdnA9tOf6Q== +metro-resolver@0.64.0, metro-resolver@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.64.0.tgz#21126b44f31346ac2ce0b06b77ef65e8c9e2294a" + integrity sha512-cJ26Id8Zf+HmS/1vFwu71K3u7ep/+HeXXAJIeVDYf+niE7AWB9FijyMtAlQgbD8elWqv1leJCnQ/xHRFBfGKYA== dependencies: absolute-path "^0.0.0" -metro-source-map@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.58.0.tgz#e951b99f4c653239ce9323bb08339c6f1978a112" - integrity sha512-yvN1YPmejmgiiS7T1aKBiiUTHPw2Vcm3r2TZ+DY92z/9PR4alysIywrCs/fTHs8rbDcKM5VfPCKGLpkBrbKeOw== +metro-runtime@0.64.0, metro-runtime@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.64.0.tgz#cdaa1121d91041bf6345f2a69eb7c2fb289eff7b" + integrity sha512-m7XbWOaIOeFX7YcxUhmnOi6Pg8EaeL89xyZ+quZyZVF1aNoTr4w8FfbKxvijpjsytKHIZtd+43m2Wt5JrqyQmQ== + +metro-source-map@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.64.0.tgz#4310e17c3d4539c6369688022494ad66fa4d39a1" + integrity sha512-OCG2rtcp5cLEGYvAbfkl6mEc0J2FPRP4/UCEly+juBk7hawS9bCBMBfhJm/HIsvY1frk6nT2Vsl1O8YBbwyx2g== dependencies: "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" invariant "^2.2.4" - metro-symbolicate "0.58.0" - ob1 "0.58.0" + metro-symbolicate "0.64.0" + nullthrows "^1.1.1" + ob1 "0.64.0" source-map "^0.5.6" vlq "^1.0.0" -metro-source-map@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.59.0.tgz#e9beb9fc51bfb4e060f95820cf1508fc122d23f7" - integrity sha512-0w5CmCM+ybSqXIjqU4RiK40t4bvANL6lafabQ2GP2XD3vSwkLY+StWzCtsb4mPuyi9R/SgoLBel+ZOXHXAH0eQ== +metro-symbolicate@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.64.0.tgz#405c21438ab553c29f6841da52ca76ee87bb06ac" + integrity sha512-qIi+YRrDWnLVmydj6gwidYLPaBsakZRibGWSspuXgHAxOI3UuLwlo4dpQ73Et0gyHjI7ZvRMRY8JPiOntf9AQQ== dependencies: + invariant "^2.2.4" + metro-source-map "0.64.0" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.64.0.tgz#41d3dce0f2966bbd79fea1ecff61bcc8a00e4665" + integrity sha512-iTIRBD/wBI98plfxj8jAoNUUXfXLNlyvcjPtshhpGvdwu9pzQilGfnDnOaaK+vbITcOk9w5oQectXyJwAqTr1A== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.64.0.tgz#f94429b2c42b13cb1c93be4c2e25e97f2d27ca60" + integrity sha512-wegRtK8GyLF6IPZRBJp+zsORgA4iX0h1DRpknyAMDCtSbJ4VU2xV/AojteOgAsDvY3ucAGsvfuZLNDJHUdUNHQ== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" "@babel/types" "^7.0.0" - invariant "^2.2.4" - metro-symbolicate "0.59.0" - ob1 "0.59.0" - source-map "^0.5.6" - vlq "^1.0.0" + babel-preset-fbjs "^3.3.0" + metro "0.64.0" + metro-babel-transformer "0.64.0" + metro-cache "0.64.0" + metro-cache-key "0.64.0" + metro-hermes-compiler "0.64.0" + metro-source-map "0.64.0" + metro-transform-plugins "0.64.0" + nullthrows "^1.1.1" -metro-symbolicate@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.58.0.tgz#ba9fd52549c41fc1b656adaad7c8875726dd5abe" - integrity sha512-uIVxUQC1E26qOMj13dKROhwAa2FmZk5eR0NcBqej/aXmQhpr8LjJg2sondkoLKUp827Tf/Fm9+pS4icb5XiqCw== - dependencies: - invariant "^2.2.4" - metro-source-map "0.58.0" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro-symbolicate@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.59.0.tgz#fc7f93957a42b02c2bfc57ed1e8f393f5f636a54" - integrity sha512-asLaF2A7rndrToGFIknL13aiohwPJ95RKHf0NM3hP/nipiLDoMzXT6ZnQvBqDxkUKyP+51AI75DMtb+Wcyw4Bw== - dependencies: - invariant "^2.2.4" - metro-source-map "0.59.0" - source-map "^0.5.6" - through2 "^2.0.1" - vlq "^1.0.0" - -metro@0.58.0, metro@^0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.58.0.tgz#c037318c112f80dc96199780c8b401ab72cfd142" - integrity sha512-yi/REXX+/s4r7RjzXht+E+qE6nzvFIrEXO5Q61h+70Q7RODMU8EnlpXx04JYk7DevHuMhFaX+NWhCtRINzR4zA== +metro@0.64.0, metro@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.64.0.tgz#0091a856cfbcc94dd576da563eee466e96186195" + integrity sha512-G2OC08Rzfs0kqnSEuKo2yZxR+/eNUpA93Ru45c60uN0Dw3HPrDi+ZBipgFftC6iLE0l+6hu8roFFIofotWxybw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.0.0" "@babel/generator" "^7.5.0" "@babel/parser" "^7.0.0" - "@babel/plugin-external-helpers" "^7.0.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.0.0" "@babel/types" "^7.0.0" absolute-path "^0.0.0" + accepts "^1.3.7" async "^2.4.0" - babel-preset-fbjs "^3.3.0" - buffer-crc32 "^0.2.13" - chalk "^2.4.1" + chalk "^4.0.0" ci-info "^2.0.0" - concat-stream "^1.6.0" connect "^3.6.5" debug "^2.2.0" denodeify "^1.2.1" - eventemitter3 "^3.0.0" - fbjs "^1.0.0" + error-stack-parser "^2.0.6" fs-extra "^1.0.0" graceful-fs "^4.1.3" image-size "^0.6.0" invariant "^2.2.4" - jest-haste-map "^24.7.1" - jest-worker "^24.6.0" - json-stable-stringify "^1.0.1" + jest-haste-map "^26.5.2" + jest-worker "^26.0.0" lodash.throttle "^4.1.1" - merge-stream "^1.0.1" - metro-babel-register "0.58.0" - metro-babel-transformer "0.58.0" - metro-cache "0.58.0" - metro-config "0.58.0" - metro-core "0.58.0" - metro-inspector-proxy "0.58.0" - metro-minify-uglify "0.58.0" - metro-react-native-babel-preset "0.58.0" - metro-resolver "0.58.0" - metro-source-map "0.58.0" - metro-symbolicate "0.58.0" - mime-types "2.1.11" + metro-babel-register "0.64.0" + metro-babel-transformer "0.64.0" + metro-cache "0.64.0" + metro-cache-key "0.64.0" + metro-config "0.64.0" + metro-core "0.64.0" + metro-hermes-compiler "0.64.0" + metro-inspector-proxy "0.64.0" + metro-minify-uglify "0.64.0" + metro-react-native-babel-preset "0.64.0" + metro-resolver "0.64.0" + metro-runtime "0.64.0" + metro-source-map "0.64.0" + metro-symbolicate "0.64.0" + metro-transform-plugins "0.64.0" + metro-transform-worker "0.64.0" + mime-types "^2.1.27" mkdirp "^0.5.1" node-fetch "^2.2.0" nullthrows "^1.1.1" - resolve "^1.5.0" rimraf "^2.5.4" serialize-error "^2.1.0" source-map "^0.5.6" - strip-ansi "^4.0.0" + strip-ansi "^6.0.0" temp "0.8.3" - throat "^4.1.0" - wordwrap "^1.0.0" - write-file-atomic "^1.2.0" + throat "^5.0.0" ws "^1.1.5" - xpipe "^1.0.5" - yargs "^14.2.0" + yargs "^15.3.1" micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -5907,23 +5885,16 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + "mime-db@>= 1.43.0 < 2": version "1.45.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== -mime-db@~1.23.0: - version "1.23.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" - integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk= - -mime-types@2.1.11: - version "2.1.11" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" - integrity sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw= - dependencies: - mime-db "~1.23.0" - mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" @@ -5931,6 +5902,13 @@ mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.44.0" +mime-types@^2.1.27: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + dependencies: + mime-db "1.47.0" + mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -5951,7 +5929,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -"minimatch@2 || 3", minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5998,11 +5976,6 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - mv@~2: version "2.1.1" resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" @@ -6012,7 +5985,7 @@ mv@~2: ncp "~2.0.0" rimraf "~2.4.0" -nan@^2.12.1, nan@^2.14.0: +nan@^2.14.0: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== @@ -6054,6 +6027,11 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -6064,6 +6042,13 @@ nocache@^2.1.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= + dependencies: + minimatch "^3.0.2" + node-fetch@2.6.1, node-fetch@^2.2.0, node-fetch@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -6099,6 +6084,11 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" +node-releases@^1.1.71: + version "1.1.71" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" + integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== + node-stream-zip@^1.9.1: version "1.11.3" resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.11.3.tgz#223892620b4889bce9782b256a76682631c507be" @@ -6175,15 +6165,10 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -ob1@0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.58.0.tgz#484a1e9a63a8b79d9ea6f3a83b2a42110faac973" - integrity sha512-uZP44cbowAfHafP1k4skpWItk5iHCoRevMfrnUvYCfyNNPPJd3rfDCyj0exklWi2gDXvjlj2ObsfiqP/bs/J7Q== - -ob1@0.59.0: - version "0.59.0" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.59.0.tgz#ee103619ef5cb697f2866e3577da6f0ecd565a36" - integrity sha512-opXMTxyWJ9m68ZglCxwo0OPRESIC/iGmKFPXEXzMZqsVIrgoRXOHmoMDkQzz4y3irVjbyPJRAh5pI9fd0MJTFQ== +ob1@0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.64.0.tgz#f254a55a53ca395c4f9090e28a85483eac5eba19" + integrity sha512-CO1N+5dhvy+MoAwxz8+fymEUcwsT4a+wHhrHFb02LppcJdHxgcBWviwEhUwKOD2kLMQ7ijrrzybOqpGcqEtvpQ== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -6343,7 +6328,7 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -6435,11 +6420,6 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" @@ -6592,17 +6572,6 @@ plist@^3.0.1: xmlbuilder "^9.0.7" xmldom "0.1.x" -plugin-error@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" - integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= - dependencies: - ansi-cyan "^0.1.1" - ansi-red "^0.1.1" - arr-diff "^1.0.1" - arr-union "^2.0.1" - extend-shallow "^1.1.2" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -6650,17 +6619,7 @@ prettier@^2.2.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== -pretty-format@^24.7.0, pretty-format@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^25.1.0, pretty-format@^25.2.0, pretty-format@^25.2.1, pretty-format@^25.5.0: +pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== @@ -6670,7 +6629,7 @@ pretty-format@^25.1.0, pretty-format@^25.2.0, pretty-format@^25.2.1, pretty-form ansi-styles "^4.0.0" react-is "^16.12.0" -pretty-format@^26.6.2: +pretty-format@^26.5.2, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -6717,6 +6676,14 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" +prompts@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61" + integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -6795,7 +6762,7 @@ react-devtools-core@^4.6.0: shell-quote "^1.6.1" ws "^7" -react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: +react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -6813,6 +6780,15 @@ react-native-alternate-icons@standardnotes/react-native-alternate-icons#1d335d: version "0.3.0" resolved "https://codeload.github.com/standardnotes/react-native-alternate-icons/tar.gz/1d335d13bb518ed4d26cb00bcd1f6b1c4d60a052" +react-native-codegen@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.0.6.tgz#b3173faa879cf71bfade8d030f9c4698388f6909" + integrity sha512-cMvrUelD81wiPitEPiwE/TCNscIVauXxmt4NTGcy18HrUd0WRWXfYzAQGXm0eI87u3NMudNhqFj2NISJenxQHg== + dependencies: + flow-parser "^0.121.0" + jscodeshift "^0.11.0" + nullthrows "^1.1.1" + react-native-default-preference@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/react-native-default-preference/-/react-native-default-preference-1.4.3.tgz#3c6411d32ea4ebc5286fbf5915546fc57a6014f6" @@ -6949,38 +6925,43 @@ react-native-zip-archive@^6.0.2: resolved "https://registry.yarnpkg.com/react-native-zip-archive/-/react-native-zip-archive-6.0.2.tgz#3594a3072f229c6e99b2121ab955b74ba422850d" integrity sha512-TQVmUvbpVV2WryGaZs6HIzIYaGU55Sz3FmZA4ayqEhJDvkGQxlElXzanIIXsHWcOybrb+9572X0trLNbXIYrRQ== -react-native@0.63.4: - version "0.63.4" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.63.4.tgz#2210fdd404c94a5fa6b423c6de86f8e48810ec36" - integrity sha512-I4kM8kYO2mWEYUFITMcpRulcy4/jd+j9T6PbIzR0FuMcz/xwd+JwHoLPa1HmCesvR1RDOw9o4D+OFLwuXXfmGw== +react-native@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.64.0.tgz#c3bde5b638bf8bcf12bae6e094930d39cb942ab7" + integrity sha512-8dhSHBthgGwAjU+OjqUEA49229ThPMQH7URH0u8L0xoQFCnZO2sZ9Wc6KcbxI0x9KSmjCMFFZqRe3w3QsRv64g== dependencies: - "@babel/runtime" "^7.0.0" - "@react-native-community/cli" "^4.10.0" - "@react-native-community/cli-platform-android" "^4.10.0" - "@react-native-community/cli-platform-ios" "^4.10.0" + "@jest/create-cache-key-function" "^26.5.0" + "@react-native-community/cli" "^5.0.1-alpha.0" + "@react-native-community/cli-platform-android" "^5.0.1-alpha.0" + "@react-native-community/cli-platform-ios" "^5.0.1-alpha.0" + "@react-native/assets" "1.0.0" + "@react-native/normalize-color" "1.0.0" + "@react-native/polyfills" "1.0.0" abort-controller "^3.0.0" anser "^1.4.9" base64-js "^1.1.2" event-target-shim "^5.0.1" - fbjs "^1.0.0" - fbjs-scripts "^1.1.0" - hermes-engine "~0.5.0" + hermes-engine "~0.7.0" invariant "^2.2.4" jsc-android "^245459.0.0" - metro-babel-register "0.59.0" - metro-react-native-babel-transformer "0.59.0" - metro-source-map "0.59.0" + metro-babel-register "0.64.0" + metro-react-native-babel-transformer "0.64.0" + metro-runtime "0.64.0" + metro-source-map "0.64.0" nullthrows "^1.1.1" - pretty-format "^24.9.0" + pretty-format "^26.5.2" promise "^8.0.3" prop-types "^15.7.2" react-devtools-core "^4.6.0" + react-native-codegen "^0.0.6" react-refresh "^0.4.0" regenerator-runtime "^0.13.2" - scheduler "0.19.1" + scheduler "^0.20.1" + shelljs "^0.8.4" stacktrace-parser "^0.1.3" use-subscription "^1.0.0" whatwg-fetch "^3.0.0" + ws "^6.1.4" react-navigation-header-buttons@^6.0.2: version "6.0.2" @@ -7004,14 +6985,13 @@ react-test-renderer@16.13.1: react-is "^16.8.6" scheduler "^0.19.1" -react@16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" read-pkg-up@^1.0.1: version "1.0.1" @@ -7084,7 +7064,16 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^3.0.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7097,14 +7086,22 @@ readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.2: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +recast@^0.20.3: + version "0.20.4" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.4.tgz#db55983eac70c46b3fff96c8e467d65ffb4a7abc" + integrity sha512-6qLIBGGRcwjrTZGIiBpJVC/NeuXpogXNyRQpqU1zWPUigCphvApoCs9KIwDYh1eDuJ6dAFlQoi/QUyE5KQ6RBQ== dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" redent@^1.0.0: version "1.0.0" @@ -7293,7 +7290,15 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: +resolve@^1.1.6: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1: version "1.18.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== @@ -7324,7 +7329,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2.6.3: +rimraf@2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -7362,11 +7367,6 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel-limit@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.0.5.tgz#c29a4fd17b4df358cb52a8a697811a63c984f1b7" @@ -7377,25 +7377,6 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= - -rxjs@^5.4.3: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - rxjs@^6.5.2: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" @@ -7464,7 +7445,7 @@ saxes@^5.0.0: dependencies: xmlchars "^2.2.0" -scheduler@0.19.1, scheduler@^0.19.1: +scheduler@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== @@ -7472,7 +7453,15 @@ scheduler@0.19.1, scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +scheduler@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -7599,6 +7588,15 @@ shell-utils@^1.0.9: dependencies: lodash "4.x.x" +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -7633,16 +7631,11 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.4: +sisteransi@^1.0.4, sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -7657,11 +7650,6 @@ slice-ansi@^2.0.0, slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - sn-textview@standardnotes/sn-textview#14cd6fded5c746569a9c6c365d2edc41913811bb: version "1.0.1" resolved "https://codeload.github.com/standardnotes/sn-textview/tar.gz/14cd6fded5c746569a9c6c365d2edc41913811bb" @@ -7805,11 +7793,6 @@ stack-generator@^2.0.3: dependencies: stackframe "^1.1.1" -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - stack-utils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" @@ -7869,14 +7852,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -7945,13 +7920,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -8060,11 +8028,6 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -8105,6 +8068,13 @@ temp@0.8.3: os-tmpdir "^1.0.0" rimraf "~2.2.6" +temp@^0.8.1: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + tempfile@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" @@ -8135,17 +8105,12 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= - throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through2@^2.0.0, through2@^2.0.1: +through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -8153,23 +8118,6 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -8263,6 +8211,11 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -8595,11 +8548,6 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -8623,14 +8571,14 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" - slide "^1.1.5" + signal-exit "^3.0.2" write-file-atomic@^3.0.0: version "3.0.3" @@ -8666,6 +8614,13 @@ ws@^3.3.1: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^6.1.4: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + ws@^7, ws@^7.2.3: version "7.3.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" @@ -8706,11 +8661,6 @@ xmldom@0.1.x: resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== -xpipe@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" - integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98= - xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -8782,7 +8732,7 @@ yargs@^13.0.0, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^14.2.0, yargs@^14.2.3: +yargs@^14.2.3: version "14.2.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== From 91626b0d13b5815cedb7a130287c3a69500c3676 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 5 May 2021 12:20:06 +0200 Subject: [PATCH 21/43] fix: replace YellowBox with LogBox --- src/screens/NoteHistory/NoteHistoryPreview.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/screens/NoteHistory/NoteHistoryPreview.tsx b/src/screens/NoteHistory/NoteHistoryPreview.tsx index 8291ac97..c1dd80b5 100644 --- a/src/screens/NoteHistory/NoteHistoryPreview.tsx +++ b/src/screens/NoteHistory/NoteHistoryPreview.tsx @@ -11,7 +11,7 @@ import { useCustomActionSheet } from '@Style/custom_action_sheet'; import { ELIPSIS } from '@Style/icons'; import { ThemeService } from '@Style/theme_service'; import React, { useCallback, useContext, useLayoutEffect } from 'react'; -import { YellowBox } from 'react-native'; +import { LogBox } from 'react-native'; import { HeaderButtons, Item } from 'react-navigation-header-buttons'; import { Container, @@ -21,7 +21,7 @@ import { TitleContainer, } from './NoteHistoryPreview.styled'; -YellowBox.ignoreWarnings([ +LogBox.ignoreLogs([ 'Non-serializable values were found in the navigation state', ]); From 890de8504bdf071f6f79861aed50fd00965dfed5 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 5 May 2021 12:21:01 +0200 Subject: [PATCH 22/43] chore(deps): update fastlane --- Gemfile.lock | 63 ++++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 75ea260b..d2bfecb1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,21 +6,21 @@ GEM public_suffix (>= 2.0.2, < 5.0) artifactory (3.0.15) atomos (0.1.3) - aws-eventstream (1.1.0) - aws-partitions (1.422.0) - aws-sdk-core (3.111.2) + aws-eventstream (1.1.1) + aws-partitions (1.451.0) + aws-sdk-core (3.114.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.41.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-kms (1.43.0) + aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.87.0) - aws-sdk-core (~> 3, >= 3.109.0) + aws-sdk-s3 (1.94.1) + aws-sdk-core (~> 3, >= 3.112.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1) - aws-sigv4 (1.2.2) + aws-sigv4 (1.2.3) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.0.3) @@ -29,26 +29,29 @@ GEM commander-fastlane (4.4.6) highline (~> 1.7.2) declarative (0.0.20) - declarative-option (0.1.0) digest-crc (0.6.3) rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) dotenv (2.7.6) - emoji_regex (3.2.1) - excon (0.79.0) - faraday (1.3.0) + emoji_regex (3.2.2) + excon (0.81.0) + faraday (1.4.1) + faraday-excon (~> 1.1) faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) multipart-post (>= 1.2, < 3) - ruby2_keywords + ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) http-cookie (~> 1.0.0) + faraday-excon (1.1.0) faraday-net_http (1.0.1) + faraday-net_http_persistent (1.1.0) faraday_middleware (1.0.0) faraday (~> 1.0) - fastimage (2.2.2) - fastlane (2.172.0) + fastimage (2.2.3) + fastlane (2.181.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.3, < 3.0.0) artifactory (~> 3.0) @@ -72,6 +75,7 @@ GEM jwt (>= 2.1.0, < 3) mini_magick (>= 4.9.4, < 5.0.0) multipart-post (~> 2.0.0) + naturally (~> 2.2) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) @@ -100,7 +104,7 @@ GEM representable (~> 3.0) retriable (>= 2.0, < 4.0) signet (~> 0.12) - google-apis-core (0.2.1) + google-apis-core (0.3.0) addressable (~> 2.5, >= 2.5.1) googleauth (~> 0.14) httpclient (>= 2.8.1, < 3.0) @@ -110,17 +114,17 @@ GEM rexml signet (~> 0.14) webrick - google-apis-iamcredentials_v1 (0.1.0) + google-apis-iamcredentials_v1 (0.3.0) google-apis-core (~> 0.1) - google-apis-storage_v1 (0.1.0) + google-apis-storage_v1 (0.3.0) google-apis-core (~> 0.1) - google-cloud-core (1.5.0) + google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) - google-cloud-env (1.4.0) + google-cloud-env (1.5.0) faraday (>= 0.17.3, < 2.0) - google-cloud-errors (1.0.1) - google-cloud-storage (1.30.0) + google-cloud-errors (1.1.0) + google-cloud-storage (1.31.0) addressable (~> 2.5) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) @@ -128,7 +132,7 @@ GEM google-cloud-core (~> 1.2) googleauth (~> 0.9) mini_mime (~> 1.0) - googleauth (0.15.0) + googleauth (0.16.2) faraday (>= 0.17.3, < 2.0) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -141,10 +145,10 @@ GEM httpclient (2.8.3) jmespath (1.4.0) json (2.5.1) - jwt (2.2.2) + jwt (2.2.3) memoist (0.16.2) mini_magick (4.11.0) - mini_mime (1.0.2) + mini_mime (1.1.0) multi_json (1.15.0) multipart-post (2.0.0) nanaimo (0.3.0) @@ -154,17 +158,17 @@ GEM public_suffix (4.0.6) rake (13.0.3) rchardet (1.8.0) - representable (3.0.4) + representable (3.1.1) declarative (< 0.1.0) - declarative-option (< 0.2.0) + trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.4) + rexml (3.2.5) rouge (2.0.7) ruby2_keywords (0.0.4) rubyzip (2.3.0) security (0.1.3) - signet (0.14.1) + signet (0.15.0) addressable (~> 2.3) faraday (>= 0.17.3, < 2.0) jwt (>= 1.5, < 3.0) @@ -176,6 +180,7 @@ GEM terminal-notifier (2.0.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.1) tty-cursor (0.7.1) tty-screen (0.8.1) tty-spinner (0.9.3) From be2d6d7f026f598466cbe7c3be76d8f7258f7581 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 5 May 2021 12:55:55 +0200 Subject: [PATCH 23/43] chore(deps): update fastlane --- fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 544bd909..a3c6b217 100755 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,4 +1,4 @@ -fastlane_version "2.158.0" +fastlane_version "2.181.0" platform :ios do def sign_ios(type = 'appstore') From 7420dfa6db83c3abfc4620e2257be1d3ee247778 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 5 May 2021 13:11:30 +0200 Subject: [PATCH 24/43] feat(deps): upgrade to React Native v0.64.1 --- ios/Podfile | 4 +- ios/Podfile.lock | 430 +++++++++----------- ios/StandardNotes.xcodeproj/project.pbxproj | 23 +- package.json | 2 +- yarn.lock | 8 +- 5 files changed, 213 insertions(+), 254 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index c5bf346f..6998a8bc 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -25,6 +25,8 @@ target "StandardNotesDev" do config = use_native_modules! use_react_native!( :path => config["reactNativePath"], - :hermes_enabled => true, + + # Enabling hermes breaks fastlane build (at time of commit) + :hermes_enabled => false, ) end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b0fa1d3e..b59b069b 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3,17 +3,15 @@ PODS: - BugsnagReactNative (7.5.6): - React - DoubleConversion (1.1.6) - - FBLazyVector (0.64.0) - - FBReactNativeSpec (0.64.0): + - FBLazyVector (0.64.1) + - FBReactNativeSpec (0.64.1): - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.0) - - RCTTypeSafety (= 0.64.0) - - React-Core (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) + - RCTRequired (= 0.64.1) + - RCTTypeSafety (= 0.64.1) + - React-Core (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) - glog (0.3.5) - - hermes-engine (0.7.2) - - libevent (2.1.12) - RCT-Folly (2020.01.13.00): - boost-for-react-native - DoubleConversion @@ -23,205 +21,190 @@ PODS: - boost-for-react-native - DoubleConversion - glog - - RCT-Folly/Futures (2020.01.13.00): - - boost-for-react-native - - DoubleConversion - - glog - - libevent - - RCTRequired (0.64.0) - - RCTTypeSafety (0.64.0): - - FBLazyVector (= 0.64.0) + - RCTRequired (0.64.1) + - RCTTypeSafety (0.64.1): + - FBLazyVector (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - RCTRequired (= 0.64.0) - - React-Core (= 0.64.0) - - React (0.64.0): - - React-Core (= 0.64.0) - - React-Core/DevSupport (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-RCTActionSheet (= 0.64.0) - - React-RCTAnimation (= 0.64.0) - - React-RCTBlob (= 0.64.0) - - React-RCTImage (= 0.64.0) - - React-RCTLinking (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - React-RCTSettings (= 0.64.0) - - React-RCTText (= 0.64.0) - - React-RCTVibration (= 0.64.0) - - React-callinvoker (0.64.0) - - React-Core (0.64.0): + - RCTRequired (= 0.64.1) + - React-Core (= 0.64.1) + - React (0.64.1): + - React-Core (= 0.64.1) + - React-Core/DevSupport (= 0.64.1) + - React-Core/RCTWebSocket (= 0.64.1) + - React-RCTActionSheet (= 0.64.1) + - React-RCTAnimation (= 0.64.1) + - React-RCTBlob (= 0.64.1) + - React-RCTImage (= 0.64.1) + - React-RCTLinking (= 0.64.1) + - React-RCTNetwork (= 0.64.1) + - React-RCTSettings (= 0.64.1) + - React-RCTText (= 0.64.1) + - React-RCTVibration (= 0.64.1) + - React-callinvoker (0.64.1) + - React-Core (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-Core/Default (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/CoreModulesHeaders (0.64.0): + - React-Core/CoreModulesHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/Default (0.64.0): + - React-Core/Default (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/DevSupport (0.64.0): + - React-Core/DevSupport (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-jsinspector (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-Core/Default (= 0.64.1) + - React-Core/RCTWebSocket (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-jsinspector (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/Hermes (0.64.0): - - glog - - hermes-engine - - RCT-Folly (= 2020.01.13.00) - - RCT-Folly/Futures - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) - - Yoga - - React-Core/RCTActionSheetHeaders (0.64.0): + - React-Core/RCTActionSheetHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTAnimationHeaders (0.64.0): + - React-Core/RCTAnimationHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTBlobHeaders (0.64.0): + - React-Core/RCTBlobHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTImageHeaders (0.64.0): + - React-Core/RCTImageHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTLinkingHeaders (0.64.0): + - React-Core/RCTLinkingHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTNetworkHeaders (0.64.0): + - React-Core/RCTNetworkHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTSettingsHeaders (0.64.0): + - React-Core/RCTSettingsHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTTextHeaders (0.64.0): + - React-Core/RCTTextHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTVibrationHeaders (0.64.0): + - React-Core/RCTVibrationHeaders (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - React-Core/Default - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-Core/RCTWebSocket (0.64.0): + - React-Core/RCTWebSocket (0.64.1): - glog - RCT-Folly (= 2020.01.13.00) - - React-Core/Default (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsiexecutor (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-Core/Default (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsiexecutor (= 0.64.1) + - React-perflogger (= 0.64.1) - Yoga - - React-CoreModules (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - React-CoreModules (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/CoreModulesHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTImage (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-cxxreact (0.64.0): + - RCTTypeSafety (= 0.64.1) + - React-Core/CoreModulesHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - React-RCTImage (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-cxxreact (0.64.1): - boost-for-react-native (= 1.63.0) - DoubleConversion - glog - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.0) - - React-jsi (= 0.64.0) - - React-jsinspector (= 0.64.0) - - React-perflogger (= 0.64.0) - - React-runtimeexecutor (= 0.64.0) - - React-jsi (0.64.0): + - React-callinvoker (= 0.64.1) + - React-jsi (= 0.64.1) + - React-jsinspector (= 0.64.1) + - React-perflogger (= 0.64.1) + - React-runtimeexecutor (= 0.64.1) + - React-jsi (0.64.1): - boost-for-react-native (= 1.63.0) - DoubleConversion - glog - RCT-Folly (= 2020.01.13.00) - - React-jsi/Default (= 0.64.0) - - React-jsi/Default (0.64.0): + - React-jsi/Default (= 0.64.1) + - React-jsi/Default (0.64.1): - boost-for-react-native (= 1.63.0) - DoubleConversion - glog - RCT-Folly (= 2020.01.13.00) - - React-jsiexecutor (0.64.0): + - React-jsiexecutor (0.64.1): - DoubleConversion - glog - RCT-Folly (= 2020.01.13.00) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-perflogger (= 0.64.0) - - React-jsinspector (0.64.0) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-perflogger (= 0.64.1) + - React-jsinspector (0.64.1) - react-native-aes (1.3.9): - React-Core - react-native-fingerprint-scanner (5.0.0): @@ -238,70 +221,70 @@ PODS: - React-Core - react-native-webview (11.0.3): - React-Core - - React-perflogger (0.64.0) - - React-RCTActionSheet (0.64.0): - - React-Core/RCTActionSheetHeaders (= 0.64.0) - - React-RCTAnimation (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - React-perflogger (0.64.1) + - React-RCTActionSheet (0.64.1): + - React-Core/RCTActionSheetHeaders (= 0.64.1) + - React-RCTAnimation (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTAnimationHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTBlob (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTAnimationHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTBlob (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTBlobHeaders (= 0.64.0) - - React-Core/RCTWebSocket (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTImage (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - React-Core/RCTBlobHeaders (= 0.64.1) + - React-Core/RCTWebSocket (= 0.64.1) + - React-jsi (= 0.64.1) + - React-RCTNetwork (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTImage (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTImageHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - React-RCTNetwork (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTLinking (0.64.0): - - FBReactNativeSpec (= 0.64.0) - - React-Core/RCTLinkingHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTNetwork (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTImageHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - React-RCTNetwork (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTLinking (0.64.1): + - FBReactNativeSpec (= 0.64.1) + - React-Core/RCTLinkingHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTNetwork (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTNetworkHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTSettings (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTNetworkHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTSettings (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - RCTTypeSafety (= 0.64.0) - - React-Core/RCTSettingsHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-RCTText (0.64.0): - - React-Core/RCTTextHeaders (= 0.64.0) - - React-RCTVibration (0.64.0): - - FBReactNativeSpec (= 0.64.0) + - RCTTypeSafety (= 0.64.1) + - React-Core/RCTSettingsHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-RCTText (0.64.1): + - React-Core/RCTTextHeaders (= 0.64.1) + - React-RCTVibration (0.64.1): + - FBReactNativeSpec (= 0.64.1) - RCT-Folly (= 2020.01.13.00) - - React-Core/RCTVibrationHeaders (= 0.64.0) - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (= 0.64.0) - - React-runtimeexecutor (0.64.0): - - React-jsi (= 0.64.0) - - ReactCommon/turbomodule/core (0.64.0): + - React-Core/RCTVibrationHeaders (= 0.64.1) + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (= 0.64.1) + - React-runtimeexecutor (0.64.1): + - React-jsi (= 0.64.1) + - ReactCommon/turbomodule/core (0.64.1): - DoubleConversion - glog - RCT-Folly (= 2020.01.13.00) - - React-callinvoker (= 0.64.0) - - React-Core (= 0.64.0) - - React-cxxreact (= 0.64.0) - - React-jsi (= 0.64.0) - - React-perflogger (= 0.64.0) + - React-callinvoker (= 0.64.1) + - React-Core (= 0.64.1) + - React-cxxreact (= 0.64.1) + - React-jsi (= 0.64.1) + - React-perflogger (= 0.64.1) - ReactNativeAlternateIcons (0.3.0): - React - RNCAsyncStorage (1.12.1): @@ -351,8 +334,6 @@ DEPENDENCIES: - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - hermes-engine (~> 0.7.2) - - libevent (~> 2.1.12) - 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`) @@ -360,7 +341,6 @@ DEPENDENCIES: - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - React-Core (from `../node_modules/react-native/`) - React-Core/DevSupport (from `../node_modules/react-native/`) - - React-Core/Hermes (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`) @@ -410,8 +390,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - boost-for-react-native - - hermes-engine - - libevent - SSZipArchive - TrustKit @@ -529,22 +507,20 @@ SPEC CHECKSUMS: boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c BugsnagReactNative: 1ac1129bdf95273df07cfe4d89750dc3d9d888a3 DoubleConversion: cde416483dac037923206447da6e1454df403714 - FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5 - FBReactNativeSpec: 8f58d68656d7e0e23b86dddc4d223fa4ffe4dce2 + FBLazyVector: 7b423f9e248eae65987838148c36eec1dbfe0b53 + FBReactNativeSpec: 016334cbf24e61c86998bb3d8550a3742040247d glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 - hermes-engine: 7d97ba46a1e29bacf3e3c61ecb2804a5ddd02d4f - libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c - RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a - RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b - React: 98eac01574128a790f0bbbafe2d1a8607291ac24 - React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc - React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a - React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8 - React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab - React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 - React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b - React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 + RCTRequired: ec2ebc96b7bfba3ca5c32740f5a0c6a014a274d2 + RCTTypeSafety: 22567f31e67c3e088c7ac23ea46ab6d4779c0ea5 + React: a241e3dbb1e91d06332f1dbd2b3ab26e1a4c4b9d + React-callinvoker: da4d1c6141696a00163960906bc8a55b985e4ce4 + React-Core: 46ba164c437d7dac607b470c83c8308b05799748 + React-CoreModules: 217bd14904491c7b9940ff8b34a3fe08013c2f14 + React-cxxreact: 0090588ae6660c4615d3629fdd5c768d0983add4 + React-jsi: 5de8204706bd872b78ea646aee5d2561ca1214b6 + React-jsiexecutor: 124e8f99992490d0d13e0649d950d3e1aae06fe9 + React-jsinspector: 500a59626037be5b3b3d89c5151bc3baa9abf1a9 react-native-aes: a13199300208e4eda1df14506a276415561e02bd react-native-fingerprint-scanner: be63e626b31fb951780a5fac5328b065a61a3d6e react-native-mail: 5fe7239a5b5c1e858d425501c03d1ab977434122 @@ -553,18 +529,18 @@ SPEC CHECKSUMS: react-native-sodium: 6cc4c4c1ea331f9f2b478076e983e09827a7b23f react-native-version-info: 36490da17d2c6b5cc21321c70e433784dee7ed0b react-native-webview: 21fdfbdd5a2268195ca013174f8f656f3509de50 - React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af - React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 - React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f - React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed - React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16 - React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c - React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28 - React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070 - React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2 - React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a - React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0 - ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05 + React-perflogger: aad6d4b4a267936b3667260d1f649b6f6069a675 + React-RCTActionSheet: fc376be462c9c8d6ad82c0905442fd77f82a9d2a + React-RCTAnimation: ba0a1c3a2738be224a08092fa7f1b444ab77d309 + React-RCTBlob: f758d4403fc5828a326dc69e27b41e1a92f34947 + React-RCTImage: ce57088705f4a8d03f6594b066a59c29143ba73e + React-RCTLinking: 852a3a95c65fa63f657a4b4e2d3d83a815e00a7c + React-RCTNetwork: 9d7ccb8a08d522d71700b4fb677d9fa28cccd118 + React-RCTSettings: d8aaf4389ff06114dee8c42ef5f0f2915946011e + React-RCTText: 809c12ed6b261796ba056c04fcd20d8b90bcc81d + React-RCTVibration: 4b99a7f5c6c0abbc5256410cc5425fb8531986e1 + React-runtimeexecutor: ff951a0c241bfaefc4940a3f1f1a229e7cb32fa6 + ReactCommon: bedc99ed4dae329c4fcf128d0c31b9115e5365ca ReactNativeAlternateIcons: b2a8a729d9d9756ed0652c352694f190407f297f RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398 RNCMaskedView: 5a8ec07677aa885546a0d98da336457e2bea557f @@ -584,8 +560,8 @@ SPEC CHECKSUMS: SNReactNative: b5e9e529c175c13f3a618e27c76cf3071213d5e1 SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 - Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf + Yoga: a7de31c64fe738607e7a3803e3f591a4b1df7393 -PODFILE CHECKSUM: 7ea48a19f7a698239d5daccd2bcd17eded2758c9 +PODFILE CHECKSUM: 3f737e1e00a82037a88b8818c81a7c17327450dc COCOAPODS: 1.10.1 diff --git a/ios/StandardNotes.xcodeproj/project.pbxproj b/ios/StandardNotes.xcodeproj/project.pbxproj index 77677099..64ad6009 100644 --- a/ios/StandardNotes.xcodeproj/project.pbxproj +++ b/ios/StandardNotes.xcodeproj/project.pbxproj @@ -242,7 +242,6 @@ 83DCC09B24C0A21200D58E1B /* Resources */, 83DCC0A124C0A21200D58E1B /* Bundle React Native code and images */, 3D5DE5334A130ACABFE38AF3 /* [CP] Copy Pods Resources */, - 9621906727564E51BAEBE9BB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -395,7 +394,7 @@ "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core.common-Hermes/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -445,7 +444,7 @@ "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core.common/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( @@ -505,24 +504,6 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 9621906727564E51BAEBE9BB /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev-frameworks.sh", - "${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-StandardNotesDev/Pods-StandardNotesDev-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; E5E35654B81EF4E64AB5D97C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/package.json b/package.json index 85cfd60f..4da00af6 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "js-base64": "^3.5.2", "moment": "^2.29.1", "react": "^17.0.2", - "react-native": "^0.64.0", + "react-native": "0.64.1", "react-native-aes-crypto": "standardnotes/react-native-aes#6430299", "react-native-alternate-icons": "standardnotes/react-native-alternate-icons#1d335d", "react-native-default-preference": "^1.4.3", diff --git a/yarn.lock b/yarn.lock index df188519..89ed51ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6925,10 +6925,10 @@ react-native-zip-archive@^6.0.2: resolved "https://registry.yarnpkg.com/react-native-zip-archive/-/react-native-zip-archive-6.0.2.tgz#3594a3072f229c6e99b2121ab955b74ba422850d" integrity sha512-TQVmUvbpVV2WryGaZs6HIzIYaGU55Sz3FmZA4ayqEhJDvkGQxlElXzanIIXsHWcOybrb+9572X0trLNbXIYrRQ== -react-native@^0.64.0: - version "0.64.0" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.64.0.tgz#c3bde5b638bf8bcf12bae6e094930d39cb942ab7" - integrity sha512-8dhSHBthgGwAjU+OjqUEA49229ThPMQH7URH0u8L0xoQFCnZO2sZ9Wc6KcbxI0x9KSmjCMFFZqRe3w3QsRv64g== +react-native@0.64.1: + version "0.64.1" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.64.1.tgz#cd38f5b47b085549686f34eb0c9dcd466f307635" + integrity sha512-jvSj+hNAfwvhaSmxd5KHJ5HidtG0pDXzoH6DaqNpU74g3CmAiA8vuk58B5yx/DYuffGq6PeMniAcwuh3Xp4biQ== dependencies: "@jest/create-cache-key-function" "^26.5.0" "@react-native-community/cli" "^5.0.1-alpha.0" From bbb253f88f15104451dab7d14e9a78c9fbe7c3c5 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Tue, 11 May 2021 17:31:51 +0200 Subject: [PATCH 25/43] fix: immediately show editor change in note side menu --- src/screens/SideMenu/NoteSideMenu.tsx | 70 +++++++++++++-------------- 1 file changed, 33 insertions(+), 37 deletions(-) diff --git a/src/screens/SideMenu/NoteSideMenu.tsx b/src/screens/SideMenu/NoteSideMenu.tsx index f2b33805..5ca59cfe 100644 --- a/src/screens/SideMenu/NoteSideMenu.tsx +++ b/src/screens/SideMenu/NoteSideMenu.tsx @@ -66,6 +66,32 @@ type Props = { drawerOpen: boolean; }; +function useEditorComponents(): SNComponent[] { + const application = useContext(ApplicationContext); + const [components, setComponents] = useState([]); + useEffect(() => { + if (!application) { + return; + } + const removeComponentsObserver = application.streamItems( + ContentType.Component, + () => { + const displayComponents = sortAlphabetically( + application.componentManager.componentsForArea(ComponentArea.Editor) + ); + setComponents(displayComponents); + } + ); + return () => { + if (application) { + removeComponentsObserver(); + } + }; + }, [application]); + + return components; +} + export const NoteSideMenu = React.memo((props: Props) => { // Context const theme = useContext(ThemeContext); @@ -80,7 +106,7 @@ export const NoteSideMenu = React.memo((props: Props) => { const [editor, setEditor] = useState(undefined); const [note, setNote] = useState(undefined); const [selectedTags, setSelectedTags] = useState([]); - const [components, setComponents] = useState([]); + const components = useEditorComponents(); const [changeNote] = useChangeNote(note, editor); const [protectOrUnprotectNote] = useProtectOrUnprotectNote(note, editor); @@ -171,29 +197,6 @@ export const NoteSideMenu = React.memo((props: Props) => { }; }, [editor, note?.uuid, props.drawerOpen, reloadTags]); - useEffect(() => { - let isMounted = true; - const removeComponentsObserver = application?.streamItems( - ContentType.Component, - async () => { - if (!note) { - return; - } - const displayComponents = sortAlphabetically( - application!.componentManager!.componentsForArea(ComponentArea.Editor) - ); - if (isMounted && props.drawerOpen) { - setComponents(displayComponents); - } - } - ); - - return () => { - isMounted = false; - removeComponentsObserver && removeComponentsObserver(); - }; - }, [application, note, props.drawerOpen]); - useEffect(() => { let isMounted = true; const removeTagsObserver = application?.streamItems(ContentType.Tag, () => { @@ -347,11 +350,11 @@ export const NoteSideMenu = React.memo((props: Props) => { [application, showActionSheet] ); - const editorComponents = useMemo(() => { - if (!note) { + const editors = useMemo(() => { + if (!note || !application) { return []; } - const componentEditor = application?.componentManager!.editorForNote(note); + const componentEditor = application.componentManager.editorForNote(note); const options: SideMenuOption[] = [ { text: 'Plain Editor', @@ -370,7 +373,7 @@ export const NoteSideMenu = React.memo((props: Props) => { text: component.name, subtext: component.isMobileDefault ? 'Mobile Default' : undefined, key: component.uuid || component.name, - selected: component === componentEditor, + selected: component.uuid === componentEditor?.uuid, onSelect: () => { onEditorPress(component); }, @@ -397,14 +400,7 @@ export const NoteSideMenu = React.memo((props: Props) => { }); } return options; - }, [ - note, - application?.componentManager, - application?.deviceInterface, - components, - onEditorPress, - onEdtiorLongPress, - ]); + }, [note, application, components, onEditorPress, onEdtiorLongPress]); useFocusEffect( useCallback(() => { @@ -602,7 +598,7 @@ export const NoteSideMenu = React.memo((props: Props) => { key => ({ key, noteOptions, - editorComponents, + editorComponents: editors, onTagSelect, selectedTags, }) From 58b3e9974c853a8002dbbe277f10f27b1b5f3b77 Mon Sep 17 00:00:00 2001 From: Radek Czemerys <7029942+radko93@users.noreply.github.com> Date: Wed, 12 May 2021 10:40:59 +0100 Subject: [PATCH 26/43] fix: downgrade react to officially supported version (#435) * fix: downgrade react to officially supported version * Update gradle bulld tools --- android/build.gradle | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index c739c87e..a633e1ac 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -16,7 +16,7 @@ buildscript { jcenter() } dependencies { - classpath('com.android.tools.build:gradle:3.5.3') + classpath('com.android.tools.build:gradle:4.1.3') classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // NOTE: Do not place your application dependencies here; they belong diff --git a/package.json b/package.json index 4da00af6..363b2123 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "@standardnotes/snjs": "2.0.76", "js-base64": "^3.5.2", "moment": "^2.29.1", - "react": "^17.0.2", + "react": "17.0.1", "react-native": "0.64.1", "react-native-aes-crypto": "standardnotes/react-native-aes#6430299", "react-native-alternate-icons": "standardnotes/react-native-alternate-icons#1d335d", diff --git a/yarn.lock b/yarn.lock index 89ed51ca..6fb2cdd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6985,10 +6985,10 @@ react-test-renderer@16.13.1: react-is "^16.8.6" scheduler "^0.19.1" -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== +react@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" From 7c9906d1f69daa946d595e33bc43174c41bcacdd Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 12 May 2021 12:32:27 +0200 Subject: [PATCH 27/43] chore(deps): update gradle to v6.5 --- android/gradle/wrapper/gradle-wrapper.properties | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 7578b974..70f1a9ae 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Wed May 12 12:27:41 CEST 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists \ No newline at end of file +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip From 391f507ddd8ee7b35d3df03f92cffc3d4314bcc3 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Wed, 12 May 2021 12:44:27 +0200 Subject: [PATCH 28/43] fix: revert gradle update --- android/build.gradle | 2 +- android/gradle/wrapper/gradle-wrapper.properties | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index a633e1ac..c739c87e 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -16,7 +16,7 @@ buildscript { jcenter() } dependencies { - classpath('com.android.tools.build:gradle:4.1.3') + classpath('com.android.tools.build:gradle:3.5.3') classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" // NOTE: Do not place your application dependencies here; they belong diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 70f1a9ae..7578b974 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed May 12 12:27:41 CEST 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +zipStorePath=wrapper/dists \ No newline at end of file From bce7218a4b330d16ec6e96f4259c29540dfc6940 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Thu, 13 May 2021 16:28:45 +0200 Subject: [PATCH 29/43] feat: check for and download editor updates --- src/screens/Compose/ComponentView.tsx | 55 +++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index bf2c482e..2588c385 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -3,7 +3,15 @@ import { useFocusEffect, useNavigation } from '@react-navigation/native'; import { ApplicationContext } from '@Root/ApplicationContext'; import { AppStackNavigationProp } from '@Root/AppStack'; import { SCREEN_NOTES } from '@Screens/screens'; -import { ButtonType, LiveItem, SNComponent, SNNote } from '@standardnotes/snjs'; +import { + ButtonType, + ComponentMutator, + LiveItem, + SNApplication, + SNComponent, + SNLog, + SNNote, +} from '@standardnotes/snjs'; import React, { useCallback, useContext, @@ -38,6 +46,33 @@ type Props = { offlineOnly?: boolean; }; +async function checkForComponentUpdate( + application: SNApplication, + component: SNComponent +) { + const { latest_url: latestUrl } = component.package_info; + if (!latestUrl) { + return; + } + try { + const packageInfo = await fetch(latestUrl).then(r => r.json()); + if ( + packageInfo && + packageInfo.version !== component.package_info.version && + application.isStarted() + ) { + application.changeAndSaveItem( + component.uuid, + mutator => { + mutator.package_info = packageInfo; + } + ); + } + } catch (error) { + SNLog.error(error); + } +} + export const ComponentView = ({ onLoadEnd, onLoadError, @@ -119,11 +154,15 @@ export const ComponentView = ({ }, [application]); const getOfflineEditorUrl = useCallback(async () => { + if (!liveComponent) { + return undefined; + } + const { identifier: editorIdentifier, version: editorVersion, download_url: downloadUrl, - } = liveComponent!.item.package_info; + } = liveComponent.item.package_info; const downloadPath = `${DocumentDirectoryPath}/${editorIdentifier}.zip`; const editorDir = `${DocumentDirectoryPath}/editors/${editorIdentifier}`; const versionDir = `${editorDir}/${editorVersion}`; @@ -135,6 +174,10 @@ export const ComponentView = ({ (!(await RNFS.exists(versionDir)) || (await RNFS.readDir(versionDir)).length === 0); + if (application) { + checkForComponentUpdate(application, liveComponent.item); + } + if (shouldDownload) { setDownloadingOfflineEditor(true); onDownloadEditorStart(); @@ -156,14 +199,11 @@ export const ComponentView = ({ } } - let mainFileName = 'index.html'; const packageDir = await RNFS.readDir(versionDir); const packageJsonPath = `${packageDir[0].path}/package.json`; const packageJson = JSON.parse(await RNFS.readFile(packageJsonPath)); - if (packageJson?.sn?.main) { - mainFileName = packageJson.sn.main; - } + const mainFileName = packageJson?.sn?.main || 'index.html'; const mainFilePath = `${packageDir[0].path}/${mainFileName}`; @@ -173,6 +213,7 @@ export const ComponentView = ({ return ''; }, [ + application, downloadingOfflineEditor, liveComponent, onDownloadEditorStart, @@ -203,7 +244,7 @@ export const ComponentView = ({ try { const offlineEditorUrl = await getOfflineEditorUrl(); - if (mounted) { + if (mounted && offlineEditorUrl) { setOfflineUrl(offlineEditorUrl); } } catch (e) { From f171308aa664e05cc4b3a8b1ca3b246156cf6d12 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 14 May 2021 13:54:58 +0200 Subject: [PATCH 30/43] fix: access denied webview errors on Android 10 --- src/screens/Compose/ComponentView.tsx | 36 ++++++++++++++++++++------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 2588c385..480da9bf 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -20,7 +20,10 @@ import React, { useState, } from 'react'; import { Platform } from 'react-native'; -import RNFS, { DocumentDirectoryPath } from 'react-native-fs'; +import RNFS, { + DocumentDirectoryPath, + ExternalDirectoryPath, +} from 'react-native-fs'; import { WebView } from 'react-native-webview'; import { OnShouldStartLoadWithRequest, @@ -97,6 +100,7 @@ export const ComponentView = ({ downloadingOfflineEditor, setDownloadingOfflineEditor, ] = useState(false); + const [loadedOnce, setLoadedOnce] = useState(false); // Ref const webViewRef = useRef(null); @@ -131,7 +135,9 @@ export const ComponentView = ({ .getValue(PrefKey.DoNotShowAgainUnsupportedEditors, false); if (!doNotShowAgainUnsupportedEditors) { const confirmed = await application?.alertService?.confirm( - 'Web editors require Android 7.0 or greater. Your version does not support web editors. Changes you make may not be properly saved. Please switch to the Plain Editor for the best experience.', + 'Web editors require Android 7.0 or greater. Your version does ' + + 'not support web editors. Changes you make may not be properly ' + + 'saved. Please switch to the Plain Editor for the best experience.', 'Editors Not Supported', "Don't show again", ButtonType.Info, @@ -155,7 +161,7 @@ export const ComponentView = ({ const getOfflineEditorUrl = useCallback(async () => { if (!liveComponent) { - return undefined; + return ''; } const { @@ -163,8 +169,10 @@ export const ComponentView = ({ version: editorVersion, download_url: downloadUrl, } = liveComponent.item.package_info; - const downloadPath = `${DocumentDirectoryPath}/${editorIdentifier}.zip`; - const editorDir = `${DocumentDirectoryPath}/editors/${editorIdentifier}`; + const basePath = + Platform.OS === 'android' ? ExternalDirectoryPath : DocumentDirectoryPath; + const downloadPath = `${basePath}/${editorIdentifier}.zip`; + const editorDir = `${basePath}/editors/${editorIdentifier}`; const versionDir = `${editorDir}/${editorVersion}`; setReadAccessUrl(versionDir); @@ -237,14 +245,15 @@ export const ComponentView = ({ if (!newUrl) { application?.alertService!.alert( 'Re-install Extension', - 'This extension is not installed correctly. Please use the web or desktop application to reinstall, then try again.', + 'This extension is not installed correctly. Please use the web ' + + 'or desktop application to reinstall, then try again.', 'OK' ); } else { try { const offlineEditorUrl = await getOfflineEditorUrl(); - if (mounted && offlineEditorUrl) { + if (mounted) { setOfflineUrl(offlineEditorUrl); } } catch (e) { @@ -294,6 +303,8 @@ export const ComponentView = ({ }; const onFrameLoad = useCallback(() => { + setLoadedOnce(true); + /** * We have no way of knowing if the webview load is successful or not. We * have to wait to see if the error event is fired. Looking at the code, @@ -301,7 +312,8 @@ export const ComponentView = ({ * to see if the error event is fired before registering the component * window. Otherwise, on error, this component will be dealloced, and a * pending postMessage will cause a memory leak crash on Android in the - * form of "react native attempt to invoke virtual method double java.lang.double.doublevalue() on a null object reference" + * form of "react native attempt to invoke virtual method + * double java.lang.double.doublevalue() on a null object reference" */ if (timeoutRef.current) { clearTimeout(timeoutRef.current); @@ -383,7 +395,13 @@ export const ComponentView = ({ allowingReadAccessToURL={readAccessUrl} originWhitelist={['*']} showWebView={showWebView} - source={{ uri: offlineUrl ? offlineUrl : url }} + source={ + /** + * Android 10 workaround to avoid access denied errors + * https://github.com/react-native-webview/react-native-webview/issues/656#issuecomment-551312436 + */ + loadedOnce ? { uri: offlineUrl ? offlineUrl : url } : undefined + } key={liveComponent?.item.uuid} ref={webViewRef} /** From 38bd12ad4232736adcf5c55f6f8f8f71d118b04a Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Fri, 14 May 2021 14:30:25 +0200 Subject: [PATCH 31/43] feat: don't include archived and trashed in search options defaults --- src/screens/Notes/Notes.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/screens/Notes/Notes.tsx b/src/screens/Notes/Notes.tsx index 9dabe616..9bd0b03f 100644 --- a/src/screens/Notes/Notes.tsx +++ b/src/screens/Notes/Notes.tsx @@ -92,10 +92,10 @@ export const Notes = React.memo( ) ); const [includeArchivedNotes, setIncludeArchivedNotes] = useState( - true + false ); const [includeTrashedNotes, setIncludeTrashedNotes] = useState( - true + false ); const [ includeProtectedStarted, From 61db86ca17888c6f082dec56cc38d759aad736b3 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Mon, 17 May 2021 14:58:39 +0200 Subject: [PATCH 32/43] chore(version): 3.6.9 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 363b2123..ae9264d7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "StandardNotes", - "version": "3.6.8", - "user-version": "3.6.8", + "version": "3.6.9", + "user-version": "3.6.9", "private": true, "license": "AGPL-3.0-or-later", "scripts": { From 4b511b9e4db68a89e9623ac1a58ee6445b8ce511 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Mon, 24 May 2021 11:59:07 +0200 Subject: [PATCH 33/43] fix: typo --- src/screens/SideMenu/MainSideMenu.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/screens/SideMenu/MainSideMenu.tsx b/src/screens/SideMenu/MainSideMenu.tsx index 023972c9..88412184 100644 --- a/src/screens/SideMenu/MainSideMenu.tsx +++ b/src/screens/SideMenu/MainSideMenu.tsx @@ -261,7 +261,12 @@ export const MainSideMenu = React.memo(({ drawerRef }: Props) => { const outOfSyncPressed = async () => { const confirmed = await application!.alertService!.confirm( - "We've detected that the data in the current application session may not match the data on the server. This can happen due to poor network conditions, or if a large note fails to download on your device. To resolve this issue, we recommend first creating a backup of your data in the Settings screen, the signing out of your account and signing back in.", + "We've detected that the data in the current application session may " + + 'not match the data on the server. This can happen due to poor' + + 'network conditions, or if a large note fails to download on your ' + + 'device. To resolve this issue, we recommend first creating a backup ' + + 'of your data in the Settings screen, then signing out of your account ' + + 'and signing back in.', 'Potentially Out of Sync', 'Open Settings', undefined From d83ee62573b34b75209685e14d1b3e9c7874aeb2 Mon Sep 17 00:00:00 2001 From: Baptiste Grob <60621355+baptiste-grob@users.noreply.github.com> Date: Tue, 25 May 2021 16:28:00 +0200 Subject: [PATCH 34/43] chore(deps): update snjs --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ae9264d7..c3dcce6c 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@react-navigation/native": "^5.9.3", "@react-navigation/stack": "^5.14.3", "@standardnotes/sncrypto-common": "1.2.9", - "@standardnotes/snjs": "2.0.76", + "@standardnotes/snjs": "2.4.1", "js-base64": "^3.5.2", "moment": "^2.29.1", "react": "17.0.1", diff --git a/yarn.lock b/yarn.lock index 6fb2cdd0..07e4f2fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1630,10 +1630,10 @@ resolved "https://registry.yarnpkg.com/@standardnotes/sncrypto-common/-/sncrypto-common-1.2.9.tgz#5212a959e4ec563584e42480bfd39ef129c3cbdf" integrity sha512-xJ5IUGOZztjSgNP/6XL+Ut5+q9UgSTv6xMtKkcQC5aJxCOkJy9u6RamPLdF00WQgwibxx2tu0e43bKUjTgzMig== -"@standardnotes/snjs@2.0.76": - version "2.0.76" - resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.0.76.tgz#69b007b83ef6dc8261a4368750e75db7ccbb3456" - integrity sha512-JY0PldVN7zHfN42JNd77jqqwDAaalwiWKg9Odib13ag3X/Vm8OWzyRMPa/4ggMWdwGV8dvraw9IxIYTU0VT+TA== +"@standardnotes/snjs@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.4.1.tgz#dc5d9358b7d7996ba56fbc5a76453ab2facbf238" + integrity sha512-kTgTZ5Hima3dqA5e4e0opPemHOkDaa3D76Wx9QmUPDibM7hBGxWNUYXAZQ0MvOdG2yjtwPp3ZbWfUwCm4fTADw== dependencies: "@standardnotes/auth" "^2.0.0" "@standardnotes/sncrypto-common" "^1.2.9" From da9f67316e299e77962f084f32142a24fbf2cc38 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 26 May 2021 12:43:58 -0300 Subject: [PATCH 35/43] chore(version-snjs): 2.4.2 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c3dcce6c..61e42c1d 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@react-navigation/native": "^5.9.3", "@react-navigation/stack": "^5.14.3", "@standardnotes/sncrypto-common": "1.2.9", - "@standardnotes/snjs": "2.4.1", + "@standardnotes/snjs": "2.4.2", "js-base64": "^3.5.2", "moment": "^2.29.1", "react": "17.0.1", diff --git a/yarn.lock b/yarn.lock index 07e4f2fd..2113e6ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1630,10 +1630,10 @@ resolved "https://registry.yarnpkg.com/@standardnotes/sncrypto-common/-/sncrypto-common-1.2.9.tgz#5212a959e4ec563584e42480bfd39ef129c3cbdf" integrity sha512-xJ5IUGOZztjSgNP/6XL+Ut5+q9UgSTv6xMtKkcQC5aJxCOkJy9u6RamPLdF00WQgwibxx2tu0e43bKUjTgzMig== -"@standardnotes/snjs@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.4.1.tgz#dc5d9358b7d7996ba56fbc5a76453ab2facbf238" - integrity sha512-kTgTZ5Hima3dqA5e4e0opPemHOkDaa3D76Wx9QmUPDibM7hBGxWNUYXAZQ0MvOdG2yjtwPp3ZbWfUwCm4fTADw== +"@standardnotes/snjs@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.4.2.tgz#5d3dfd6ae5f40984e0d28b776684561b5818eadf" + integrity sha512-/R8Lsbo9NqQ2FZKe4N4V4ZQxUbfmzU5jA6FtW0wE+g6c5MtHPO9fRoWK81PJXumc+t9VI8q2nswkthyqIGgEgA== dependencies: "@standardnotes/auth" "^2.0.0" "@standardnotes/sncrypto-common" "^1.2.9" From 740ad3e4645be2bd0d671bc2ab0b8ab85fb0caa9 Mon Sep 17 00:00:00 2001 From: Johnny A <5891646+johnny243@users.noreply.github.com> Date: Tue, 1 Jun 2021 10:17:05 -0400 Subject: [PATCH 36/43] feat: remote debugging for WebViews (#438) * feat: remote debugging for WebViews * fix: get application context Co-authored-by: Johnny Almonte --- .../src/main/java/com/standardnotes/MainApplication.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/app/src/main/java/com/standardnotes/MainApplication.java b/android/app/src/main/java/com/standardnotes/MainApplication.java index fe96c133..8f8efb7a 100644 --- a/android/app/src/main/java/com/standardnotes/MainApplication.java +++ b/android/app/src/main/java/com/standardnotes/MainApplication.java @@ -3,6 +3,7 @@ package com.standardnotes; import android.app.Application; import android.app.Activity; import android.content.Context; +import android.webkit.WebView; import com.bugsnag.android.BreadcrumbType; import com.bugsnag.android.Configuration; @@ -65,6 +66,12 @@ public class MainApplication extends Application implements ReactApplication { public void onCreate() { super.onCreate(); + // Enable Remote debugging for WebViews + String packageName = getApplicationContext().getPackageName(); + if (packageName.equals("com.standardnotes.dev")) { + WebView.setWebContentsDebuggingEnabled(true); + } + rebuildOkHtttp(); Configuration config = Configuration.load(this); From c69dd302d7016edb9b2d502da23ec6dc9e413fcd Mon Sep 17 00:00:00 2001 From: Johnny A <5891646+johnny243@users.noreply.github.com> Date: Fri, 4 Jun 2021 10:35:45 -0400 Subject: [PATCH 37/43] fix: usage description for camera and photos (iOS) (#439) * fix: usage description for camera and photos (iOS) * Update ios/StandardNotes/Info.plist Co-authored-by: Mo Bitar * Update ios/StandardNotes/Info.plist Co-authored-by: Mo Bitar Co-authored-by: Johnny Almonte Co-authored-by: Mo Bitar --- ios/StandardNotes/Info.plist | 4 ++++ ios/StandardNotesDev-Info.plist | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ios/StandardNotes/Info.plist b/ios/StandardNotes/Info.plist index 0bedb82f..c4e7d6eb 100644 --- a/ios/StandardNotes/Info.plist +++ b/ios/StandardNotes/Info.plist @@ -88,12 +88,16 @@ + NSCameraUsageDescription + Camera is optionally used to upload images and scan QR codes using the TokenVault extension. NSFaceIDUsageDescription Face ID is required to unlock your notes. NSLocationAlwaysUsageDescription Not used by application; required in configuration because API exists in build dependencies. NSLocationWhenInUseUsageDescription Not used by application; required in configuration because API exists in build dependencies. + NSPhotoLibraryUsageDescription + Photo library is optionally used to select files to upload or QR code images from your photo library. UIAppFonts AntDesign.ttf diff --git a/ios/StandardNotesDev-Info.plist b/ios/StandardNotesDev-Info.plist index db65b794..e7600674 100644 --- a/ios/StandardNotesDev-Info.plist +++ b/ios/StandardNotesDev-Info.plist @@ -66,12 +66,16 @@ + NSCameraUsageDescription + Camera is required to scan QR codes with the TokenVault extension. NSFaceIDUsageDescription Face ID is required to unlock your notes. NSLocationAlwaysUsageDescription Not used by application; required in configuration because API exists in build dependencies. NSLocationWhenInUseUsageDescription Not used by application; required in configuration because API exists in build dependencies. + NSPhotoLibraryUsageDescription + Photo library is required to select QR code images from your photo library. UIAppFonts AntDesign.ttf From 21a2cb66a10d4efdbabc7a494b7440a431242abd Mon Sep 17 00:00:00 2001 From: Johnny A <5891646+johnny243@users.noreply.github.com> Date: Mon, 7 Jun 2021 10:48:34 -0400 Subject: [PATCH 38/43] feat: make error reporting opt-in (disabled by default) (#440) Co-authored-by: Johnny Almonte --- .../src/main/java/com/standardnotes/MainActivity.java | 3 +-- .../main/java/com/standardnotes/MainApplication.java | 2 +- src/lib/interface.ts | 11 +++++++++-- src/screens/Settings/Sections/CompanySection.tsx | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/android/app/src/main/java/com/standardnotes/MainActivity.java b/android/app/src/main/java/com/standardnotes/MainActivity.java index 79c701cf..a3577f8e 100644 --- a/android/app/src/main/java/com/standardnotes/MainActivity.java +++ b/android/app/src/main/java/com/standardnotes/MainActivity.java @@ -22,13 +22,12 @@ public class MainActivity extends ReactActivity { super(activity, mainComponentName); } - @Override protected Bundle getLaunchOptions() { String packageName = this.getContext().getPackageName(); Bundle props = new Bundle(); SharedPreferences settings = this.getContext().getSharedPreferences("react-native", Context.MODE_PRIVATE); - String bugsnagOptOut = settings.getString("bugsnagoptout", "false"); + String bugsnagOptOut = settings.getString("bugsnagoptout", "true"); props.putBoolean("bugsnagOptOut", bugsnagOptOut.equals("true")); if (packageName.equals("com.standardnotes.dev")) { props.putString("env", "dev"); diff --git a/android/app/src/main/java/com/standardnotes/MainApplication.java b/android/app/src/main/java/com/standardnotes/MainApplication.java index 8f8efb7a..69c40851 100644 --- a/android/app/src/main/java/com/standardnotes/MainApplication.java +++ b/android/app/src/main/java/com/standardnotes/MainApplication.java @@ -86,7 +86,7 @@ public class MainApplication extends Application implements ReactApplication { }}); SharedPreferences settings = getApplicationContext().getSharedPreferences("react-native", Context.MODE_PRIVATE); - String bugsnagOptOut = settings.getString("bugsnagoptout", "false"); + String bugsnagOptOut = settings.getString("bugsnagoptout", "true"); if (!bugsnagOptOut.equals("true")) { Bugsnag.start(this, config); diff --git a/src/lib/interface.ts b/src/lib/interface.ts index bd377178..7d20717a 100644 --- a/src/lib/interface.ts +++ b/src/lib/interface.ts @@ -289,9 +289,16 @@ export class MobileDeviceInterface extends DeviceInterface { async getBugsnagOptedOut() { try { - return (await DefaultPreference.get(BUGSNAG_OPT_OUT_KEY)) === 'true'; + /** + * Checking the absense of the 'bugsnagoptout' preference. + * If the value is absent, then error reporting is opt-in by default. + */ + const bugsnagOptedOut = + (await DefaultPreference.get(BUGSNAG_OPT_OUT_KEY)) ?? 'true'; + + return bugsnagOptedOut === 'true'; } catch { - return false; + return true; } } diff --git a/src/screens/Settings/Sections/CompanySection.tsx b/src/screens/Settings/Sections/CompanySection.tsx index f1f27ec7..8ea01e67 100644 --- a/src/screens/Settings/Sections/CompanySection.tsx +++ b/src/screens/Settings/Sections/CompanySection.tsx @@ -28,7 +28,7 @@ type Props = { export const CompanySection = (props: Props) => { const application = useContext(ApplicationContext); - const [bugsnagOptOut, setBugsnagOptOut] = useState(false); + const [bugsnagOptOut, setBugsnagOptOut] = useState(true); const storeName = Platform.OS === 'android' ? 'Play Store' : 'App Store'; const openUrl = (action: keyof typeof URLS) => { From ac4bc342f8a2803803a9afe5f72fe99f527d0c44 Mon Sep 17 00:00:00 2001 From: Johnny A <5891646+johnny243@users.noreply.github.com> Date: Mon, 7 Jun 2021 21:59:47 -0400 Subject: [PATCH 39/43] feat: option to import backups (#441) * feat: option to import backups * fix: remove catch block * fix: long strings * fix: 'first' prop to Import Data button Co-authored-by: Johnny Almonte --- package.json | 1 + .../Settings/Sections/OptionsSection.tsx | 71 ++++++++++++++++++- yarn.lock | 5 ++ 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 61e42c1d..1bdf504d 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "postinstall-postinstall": "^2.1.0", "prettier": "^2.2.1", "prettier-plugin-organize-imports": "^1.1.1", + "react-native-document-picker": "^5.0.4", "react-test-renderer": "16.13.1", "replace-in-file": "^6.1.0", "typescript": "^3.9.4" diff --git a/src/screens/Settings/Sections/OptionsSection.tsx b/src/screens/Settings/Sections/OptionsSection.tsx index a733059f..07e966bb 100644 --- a/src/screens/Settings/Sections/OptionsSection.tsx +++ b/src/screens/Settings/Sections/OptionsSection.tsx @@ -12,6 +12,8 @@ import { SCREEN_MANAGE_SESSIONS, SCREEN_SETTINGS } from '@Screens/screens'; import { ButtonType } from '@standardnotes/snjs'; import moment from 'moment'; import React, { useCallback, useContext, useMemo, useState } from 'react'; +import DocumentPicker from 'react-native-document-picker'; +import RNFS from 'react-native-fs'; type Props = { title: string; @@ -27,6 +29,7 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => { >(); // State + const [importing, setImporting] = useState(false); const [exporting, setExporting] = useState(false); const [lastExportDate, setLastExportDate] = useState(() => application @@ -103,6 +106,65 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => { [application] ); + const readImportFile = async (fileUri: string): Promise => { + return RNFS.readFile(fileUri) + .then(result => JSON.parse(result)) + .catch(() => { + application!.alertService!.alert( + 'Unable to open file. Ensure it is a proper JSON file and try again.' + ); + }); + }; + + const performImport = async (data: any) => { + const result = await application!.importData(data); + if (!result) { + return; + } else if ('error' in result) { + application!.alertService!.alert(result.error); + } else if (result.errorCount) { + application!.alertService!.alert( + `Import complete. ${result.errorCount} items were not imported because ` + + 'there was an error decrypting them. Make sure the password is correct and try again.' + ); + } else { + application!.alertService!.alert( + 'Your data has been successfully imported.' + ); + } + }; + + const onImportPress = async () => { + try { + const selectedFile = await DocumentPicker.pick({ + type: [DocumentPicker.types.plainText], + }); + const data = await readImportFile(selectedFile.uri); + if (!data) { + return; + } + setImporting(true); + if (data.version || data.auth_params || data.keyParams) { + const version = + data.version || data.keyParams?.version || data.auth_params?.version; + if ( + application!.protocolService.supportedVersions().includes(version) + ) { + await performImport(data); + } else { + application!.alertService.alert( + 'This backup file was created using an unsupported version of the application ' + + 'and cannot be imported here. Please update your application and try again.' + ); + } + } else { + await performImport(data); + } + } finally { + setImporting(false); + } + }; + const onExportPress = useCallback( async (option: { key: string }) => { let encrypted = option.key === 'encrypted'; @@ -154,9 +216,16 @@ export const OptionsSection = ({ title, encryptionAvailable }: Props) => { )} + + Date: Tue, 8 Jun 2021 16:16:13 +0200 Subject: [PATCH 40/43] feat: switch sign out to API v1 (#442) --- package.json | 2 +- src/lib/application.ts | 5 ++++- yarn.lock | 8 ++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 1bdf504d..a416d6d5 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@react-navigation/native": "^5.9.3", "@react-navigation/stack": "^5.14.3", "@standardnotes/sncrypto-common": "1.2.9", - "@standardnotes/snjs": "2.4.2", + "@standardnotes/snjs": "2.5.0", "js-base64": "^3.5.2", "moment": "^2.29.1", "react": "17.0.1", diff --git a/src/lib/application.ts b/src/lib/application.ts index 716fcd7c..2800c7b6 100644 --- a/src/lib/application.ts +++ b/src/lib/application.ts @@ -60,7 +60,10 @@ export class MobileApplication extends SNApplication { ], VersionInfo.bundleIdentifier?.includes('dev') ? 'https://syncing-server-dev.standardnotes.org/' - : 'https://sync.standardnotes.org' + : 'https://sync.standardnotes.org', + VersionInfo.bundleIdentifier?.includes('dev') + ? 'https://api-dev.standardnotes.com/' + : 'https://api.standardnotes.com' ); this.Uuid = Math.random().toString(); this.editorGroup = new EditorGroup(this); diff --git a/yarn.lock b/yarn.lock index 3062bae5..368d7cb6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1630,10 +1630,10 @@ resolved "https://registry.yarnpkg.com/@standardnotes/sncrypto-common/-/sncrypto-common-1.2.9.tgz#5212a959e4ec563584e42480bfd39ef129c3cbdf" integrity sha512-xJ5IUGOZztjSgNP/6XL+Ut5+q9UgSTv6xMtKkcQC5aJxCOkJy9u6RamPLdF00WQgwibxx2tu0e43bKUjTgzMig== -"@standardnotes/snjs@2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.4.2.tgz#5d3dfd6ae5f40984e0d28b776684561b5818eadf" - integrity sha512-/R8Lsbo9NqQ2FZKe4N4V4ZQxUbfmzU5jA6FtW0wE+g6c5MtHPO9fRoWK81PJXumc+t9VI8q2nswkthyqIGgEgA== +"@standardnotes/snjs@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@standardnotes/snjs/-/snjs-2.5.0.tgz#fcd45f8c6884fcc204633be33366b59ede71c5b1" + integrity sha512-VWThoZhymoCOqRkZjXj3vDhQGAPMt+KUrB/FyYZkl+9jVCMX6NIGziLb8fThFaZzoyC/qp5BuoceZlbyrggOnw== dependencies: "@standardnotes/auth" "^2.0.0" "@standardnotes/sncrypto-common" "^1.2.9" From 2590a02a853ed521aa4af7e780a0a562aba71d16 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Tue, 8 Jun 2021 17:38:27 -0300 Subject: [PATCH 41/43] feat: revert offline editors (#443) * Revert "fix: access denied webview errors on Android 10" This reverts commit f171308aa664e05cc4b3a8b1ca3b246156cf6d12. * Revert "feat: check for and download editor updates" This reverts commit bce7218a4b330d16ec6e96f4259c29540dfc6940. * Revert "fix: live item deinit called more than once (#423)" This reverts commit fb58bfc3cad1f0cd3bbe77fc5401ae30cbc458ec. * Revert "fix: offline editors issues (#416)" This reverts commit 08930bdf737e0a8863bedc24e33de196e6e04892. * Revert "feat: remove editor loading message on ThemesActivated action (#415)" This reverts commit 19d535330d840e59b466ce0c3517059ad8b3edb4. * Revert "fix: decrease loading editor message timeout" This reverts commit d57361745b55327691824a91057b2bb54d90d36e. * Revert "fix: check if component mounted before state update" This reverts commit 439df5f14c63f20f6f16e27d58305bed8cdae977. * Revert "feat: offline editors (#392)" This reverts commit d2fe25d3abd8efb2d22bfeedf84651b6d1ba8ef7. --- ios/Podfile.lock | 14 -- package.json | 1 - src/screens/Compose/ComponentView.tsx | 213 +++----------------------- src/screens/Compose/Compose.styled.ts | 9 +- src/screens/Compose/Compose.tsx | 66 ++------ yarn.lock | 5 - 6 files changed, 45 insertions(+), 263 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b59b069b..e0adefe2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -313,18 +313,10 @@ PODS: - React - RNVectorIcons (7.1.0): - React - - RNZipArchive (6.0.2): - - React-Core - - RNZipArchive/Core (= 6.0.2) - - SSZipArchive (= 2.2.3) - - RNZipArchive/Core (6.0.2): - - React-Core - - SSZipArchive (= 2.2.3) - sn-textview (1.0.1): - React-Core - SNReactNative (1.0.1): - React-Core - - SSZipArchive (2.2.3) - TrustKit (1.6.5) - Yoga (1.14.0) @@ -381,7 +373,6 @@ DEPENDENCIES: - RNSearchBar (from `../node_modules/react-native-search-bar`) - RNStoreReview (from `../node_modules/react-native-store-review/ios`) - RNVectorIcons (from `../node_modules/react-native-vector-icons`) - - RNZipArchive (from `../node_modules/react-native-zip-archive`) - sn-textview (from `../node_modules/sn-textview`) - SNReactNative (from `../node_modules/standard-notes-rn`) - TrustKit (= 1.6.5) @@ -390,7 +381,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - boost-for-react-native - - SSZipArchive - TrustKit EXTERNAL SOURCES: @@ -494,8 +484,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-store-review/ios" RNVectorIcons: :path: "../node_modules/react-native-vector-icons" - RNZipArchive: - :path: "../node_modules/react-native-zip-archive" sn-textview: :path: "../node_modules/sn-textview" SNReactNative: @@ -555,10 +543,8 @@ SPEC CHECKSUMS: RNSearchBar: 5ed8e13ba8a6c701fbd2afdfe4164493d24b2aee RNStoreReview: 62d6afd7c37db711a594bbffca6b0ea3a812b7a8 RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59 - RNZipArchive: 3dd2de5b7f590d79e83270508b78870bf5a54f36 sn-textview: 0211237b3e0edeeb23aed2a9c47b78af35a81e95 SNReactNative: b5e9e529c175c13f3a618e27c76cf3071213d5e1 - SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 TrustKit: 073855e3adecd317417bda4ac9e9ac54a2e3b9f2 Yoga: a7de31c64fe738607e7a3803e3f591a4b1df7393 diff --git a/package.json b/package.json index a416d6d5..9a5b4622 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "react-native-vector-icons": "^7.1.0", "react-native-version-info": "^1.1.0", "react-native-webview": "^11.0.3", - "react-native-zip-archive": "^6.0.2", "react-navigation-header-buttons": "^6.0.2", "sn-textview": "standardnotes/sn-textview#14cd6fded5c746569a9c6c365d2edc41913811bb", "standard-notes-rn": "standardnotes/standard-notes-rn#d8e5c21b049dd4b97006688617736efbdb7dc4e7", diff --git a/src/screens/Compose/ComponentView.tsx b/src/screens/Compose/ComponentView.tsx index 480da9bf..e98adf41 100644 --- a/src/screens/Compose/ComponentView.tsx +++ b/src/screens/Compose/ComponentView.tsx @@ -5,11 +5,9 @@ import { AppStackNavigationProp } from '@Root/AppStack'; import { SCREEN_NOTES } from '@Screens/screens'; import { ButtonType, - ComponentMutator, + ComponentArea, LiveItem, - SNApplication, SNComponent, - SNLog, SNNote, } from '@standardnotes/snjs'; import React, { @@ -20,16 +18,11 @@ import React, { useState, } from 'react'; import { Platform } from 'react-native'; -import RNFS, { - DocumentDirectoryPath, - ExternalDirectoryPath, -} from 'react-native-fs'; import { WebView } from 'react-native-webview'; import { OnShouldStartLoadWithRequest, WebViewMessageEvent, } from 'react-native-webview/lib/WebViewTypes'; -import { unzip } from 'react-native-zip-archive'; import { FlexContainer, LockedContainer, @@ -44,46 +37,13 @@ type Props = { onLoadEnd: () => void; onLoadStart: () => void; onLoadError: () => void; - onDownloadEditorStart: () => void; - onDownloadEditorEnd: () => void; - offlineOnly?: boolean; }; -async function checkForComponentUpdate( - application: SNApplication, - component: SNComponent -) { - const { latest_url: latestUrl } = component.package_info; - if (!latestUrl) { - return; - } - try { - const packageInfo = await fetch(latestUrl).then(r => r.json()); - if ( - packageInfo && - packageInfo.version !== component.package_info.version && - application.isStarted() - ) { - application.changeAndSaveItem( - component.uuid, - mutator => { - mutator.package_info = packageInfo; - } - ); - } - } catch (error) { - SNLog.error(error); - } -} - export const ComponentView = ({ onLoadEnd, onLoadError, onLoadStart, - onDownloadEditorStart, - onDownloadEditorEnd, componentUuid, - offlineOnly, }: Props) => { // Context const application = useContext(ApplicationContext); @@ -94,13 +54,6 @@ export const ComponentView = ({ >(() => new LiveItem(componentUuid, application!)); const [url, setUrl] = useState(''); const [showWebView, setShowWebView] = useState(true); - const [offlineUrl, setOfflineUrl] = useState(''); - const [readAccessUrl, setReadAccessUrl] = useState(''); - const [ - downloadingOfflineEditor, - setDownloadingOfflineEditor, - ] = useState(false); - const [loadedOnce, setLoadedOnce] = useState(false); // Ref const webViewRef = useRef(null); @@ -116,7 +69,7 @@ export const ComponentView = ({ }); return removeBlurScreenListener; - }, [navigation]); + }); useFocusEffect(() => { setShowWebView(true); @@ -135,9 +88,7 @@ export const ComponentView = ({ .getValue(PrefKey.DoNotShowAgainUnsupportedEditors, false); if (!doNotShowAgainUnsupportedEditors) { const confirmed = await application?.alertService?.confirm( - 'Web editors require Android 7.0 or greater. Your version does ' + - 'not support web editors. Changes you make may not be properly ' + - 'saved. Please switch to the Plain Editor for the best experience.', + 'Web editors require Android 7.0 or greater. Your version does not support web editors. Changes you make may not be properly saved. Please switch to the Plain Editor for the best experience.', 'Editors Not Supported', "Don't show again", ButtonType.Info, @@ -159,137 +110,30 @@ export const ComponentView = ({ } }, [application]); - const getOfflineEditorUrl = useCallback(async () => { - if (!liveComponent) { - return ''; - } - - const { - identifier: editorIdentifier, - version: editorVersion, - download_url: downloadUrl, - } = liveComponent.item.package_info; - const basePath = - Platform.OS === 'android' ? ExternalDirectoryPath : DocumentDirectoryPath; - const downloadPath = `${basePath}/${editorIdentifier}.zip`; - const editorDir = `${basePath}/editors/${editorIdentifier}`; - const versionDir = `${editorDir}/${editorVersion}`; - - setReadAccessUrl(versionDir); - - const shouldDownload = - !downloadingOfflineEditor && - (!(await RNFS.exists(versionDir)) || - (await RNFS.readDir(versionDir)).length === 0); - - if (application) { - checkForComponentUpdate(application, liveComponent.item); - } - - if (shouldDownload) { - setDownloadingOfflineEditor(true); - onDownloadEditorStart(); - try { - // Delete any previous versions downloads - if (await RNFS.exists(editorDir)) { - await RNFS.unlink(editorDir); - } - await RNFS.downloadFile({ - fromUrl: downloadUrl, - toFile: downloadPath, - }).promise; - await unzip(downloadPath, versionDir); - // Delete zip after extraction - await RNFS.unlink(downloadPath); - } finally { - onDownloadEditorEnd(); - setDownloadingOfflineEditor(false); - } - } - - const packageDir = await RNFS.readDir(versionDir); - const packageJsonPath = `${packageDir[0].path}/package.json`; - const packageJson = JSON.parse(await RNFS.readFile(packageJsonPath)); - - const mainFileName = packageJson?.sn?.main || 'index.html'; - - const mainFilePath = `${packageDir[0].path}/${mainFileName}`; - - if (await RNFS.exists(mainFilePath)) { - return `file://${mainFilePath}`; - } - - return ''; - }, [ - application, - downloadingOfflineEditor, - liveComponent, - onDownloadEditorStart, - onDownloadEditorEnd, - ]); - - const onLoadErrorHandler = useCallback(() => { - if (timeoutRef.current) { - clearTimeout(timeoutRef.current); - } - - onLoadError(); - }, [onLoadError, timeoutRef]); - useEffect(() => { - let mounted = true; - const setEditorUrl = async () => { + if (liveComponent) { const newUrl = application!.componentManager!.urlForComponent( - liveComponent!.item + liveComponent.item ); if (!newUrl) { application?.alertService!.alert( 'Re-install Extension', - 'This extension is not installed correctly. Please use the web ' + - 'or desktop application to reinstall, then try again.', + 'This extension is not installed correctly. Please use the web or desktop application to reinstall, then try again.', 'OK' ); } else { - try { - const offlineEditorUrl = await getOfflineEditorUrl(); - - if (mounted) { - setOfflineUrl(offlineEditorUrl); - } - } catch (e) { - if (mounted) { - if (offlineOnly) { - onLoadErrorHandler(); - } else { - setUrl(newUrl); - } - } - } + setUrl(newUrl); } - }; - if (liveComponent) { - setEditorUrl(); } // deinit return () => { - mounted = false; - }; - }, [ - application, - componentUuid, - getOfflineEditorUrl, - liveComponent, - offlineOnly, - onLoadErrorHandler, - ]); - - useEffect(() => { - return () => { - application?.componentManager.deactivateComponent(componentUuid); + application?.componentGroup.deactivateComponentForArea( + ComponentArea.Editor + ); liveComponent?.deinit(); }; - }, [application, componentUuid, liveComponent]); + }, [application, liveComponent]); const onMessage = (event: WebViewMessageEvent) => { let data; @@ -303,8 +147,6 @@ export const ComponentView = ({ }; const onFrameLoad = useCallback(() => { - setLoadedOnce(true); - /** * We have no way of knowing if the webview load is successful or not. We * have to wait to see if the error event is fired. Looking at the code, @@ -312,8 +154,7 @@ export const ComponentView = ({ * to see if the error event is fired before registering the component * window. Otherwise, on error, this component will be dealloced, and a * pending postMessage will cause a memory leak crash on Android in the - * form of "react native attempt to invoke virtual method - * double java.lang.double.doublevalue() on a null object reference" + * form of "react native attempt to invoke virtual method double java.lang.double.doublevalue() on a null object reference" */ if (timeoutRef.current) { clearTimeout(timeoutRef.current); @@ -333,13 +174,20 @@ export const ComponentView = ({ */ setTimeout(() => { onLoadEnd(); - }, 200); + }, 100); }, [application, liveComponent, onLoadEnd]); const onLoadStartHandler = () => { onLoadStart(); }; + const onLoadErrorHandler = () => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + } + onLoadError(); + }; + const onShouldStartLoadWithRequest: OnShouldStartLoadWithRequest = request => { /** * We want to handle link clicks within an editor by opening the browser @@ -369,10 +217,6 @@ export const ComponentView = ({ window.parent.postMessage = function(data) { window.parent.ReactNativeWebView.postMessage(data); }; - const meta = document.createElement('meta'); - meta.setAttribute('content', 'width=device-width, initial-scale=1, user-scalable=no'); - meta.setAttribute('name', 'viewport'); - document.getElementsByTagName('head')[0].appendChild(meta); return true; })()`; }; @@ -389,19 +233,10 @@ export const ComponentView = ({ )} - {(Boolean(url) || Boolean(offlineUrl)) && ( + {Boolean(url) && ( )} diff --git a/src/screens/Compose/Compose.styled.ts b/src/screens/Compose/Compose.styled.ts index 091753a3..326bf85d 100644 --- a/src/screens/Compose/Compose.styled.ts +++ b/src/screens/Compose/Compose.styled.ts @@ -66,7 +66,14 @@ export const LoadingWebViewContainer = styled.View<{ locked?: boolean }>` justify-content: center; background-color: ${({ theme }) => theme.stylekitBackgroundColor}; `; -export const LoadingText = styled.Text` +export const LoadingWebViewText = styled.Text` + padding-left: 0px; + color: ${({ theme }) => theme.stylekitForegroundColor}; + opacity: 0.7; + font-size: 22px; + font-weight: bold; +`; +export const LoadingWebViewSubtitle = styled.Text` padding-left: 0px; color: ${({ theme }) => theme.stylekitForegroundColor}; opacity: 0.7; diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index af85ba6d..9c520796 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -23,8 +23,9 @@ import { ThemeContext } from 'styled-components'; import { ComponentView } from './ComponentView'; import { Container, - LoadingText, LoadingWebViewContainer, + LoadingWebViewSubtitle, + LoadingWebViewText, LockedContainer, LockedText, NoteTitleInput, @@ -46,7 +47,6 @@ type State = { editorComponent: SNComponent | undefined; webViewError: boolean; loadingWebview: boolean; - downloadingEditor: boolean; }; export class Compose extends React.Component<{}, State> { @@ -56,7 +56,6 @@ export class Compose extends React.Component<{}, State> { saveTimeout: number | undefined; alreadySaved: boolean = false; statusTimeout: number | undefined; - downloadingMessageTimeout: number | undefined; removeEditorObserver?: () => void; removeEditorNoteValueChangeObserver?: () => void; removeComponentsObserver?: () => void; @@ -81,7 +80,6 @@ export class Compose extends React.Component<{}, State> { saveError: false, webViewError: false, loadingWebview: false, - downloadingEditor: false, }; } @@ -183,18 +181,11 @@ export class Compose extends React.Component<{}, State> { identifier: 'component-view-' + Math.random(), areas: [ComponentArea.Editor], actionHandler: (currentComponent, action, data) => { - switch (action) { - case ComponentAction.SetSize: - this.context?.componentManager!.handleSetSizeEvent( - currentComponent, - data - ); - break; - case ComponentAction.ThemesActivated: - this.setState({ - loadingWebview: false, - }); - break; + if (action === ComponentAction.SetSize) { + this.context?.componentManager!.handleSetSizeEvent( + currentComponent, + data + ); } }, contextRequestHandler: () => this.note, @@ -254,9 +245,6 @@ export class Compose extends React.Component<{}, State> { if (this.statusTimeout) { clearTimeout(this.statusTimeout); } - if (this.downloadingMessageTimeout) { - clearTimeout(this.downloadingMessageTimeout); - } } /** @@ -324,11 +312,6 @@ export class Compose extends React.Component<{}, State> { }; reloadComponentEditorState = async () => { - this.setState({ - loadingWebview: false, - webViewError: false, - }); - const associatedEditor = this.context?.componentManager!.editorForNote( this.note! ); @@ -437,25 +420,6 @@ export class Compose extends React.Component<{}, State> { this.saveNote(false, true, false, false, text); }; - onDownloadEditorStart = () => - this.setState({ - downloadingEditor: true, - }); - - onDownloadEditorEnd = () => { - if (this.downloadingMessageTimeout) { - clearTimeout(this.downloadingMessageTimeout); - } - - this.downloadingMessageTimeout = setTimeout( - () => - this.setState({ - downloadingEditor: false, - }), - 200 - ); - }; - render() { const shouldDisplayEditor = this.state.editorComponent && @@ -516,15 +480,12 @@ export class Compose extends React.Component<{}, State> { autoCapitalize={'sentences'} editable={!this.noteLocked} /> - {(this.state.downloadingEditor || - this.state.loadingWebview) && ( + {this.state.loadingWebview && ( - - {this.state.downloadingEditor - ? 'Downloading ' - : 'Loading '} - {this.state.editorComponent?.name}... - + {'LOADING'} + + {this.state.editorComponent?.name} + )} {/* setting webViewError to false on onLoadEnd will cause an infinite loop on Android upon webview error, so, don't do that. */} @@ -550,9 +511,6 @@ export class Compose extends React.Component<{}, State> { webViewError: true, }); }} - onDownloadEditorStart={this.onDownloadEditorStart} - onDownloadEditorEnd={this.onDownloadEditorEnd} - offlineOnly={this.state.editorComponent?.offlineOnly} /> )} {!shouldDisplayEditor && diff --git a/yarn.lock b/yarn.lock index 368d7cb6..fef5010a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6925,11 +6925,6 @@ react-native-webview@^11.0.3: escape-string-regexp "2.0.0" invariant "2.2.4" -react-native-zip-archive@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/react-native-zip-archive/-/react-native-zip-archive-6.0.2.tgz#3594a3072f229c6e99b2121ab955b74ba422850d" - integrity sha512-TQVmUvbpVV2WryGaZs6HIzIYaGU55Sz3FmZA4ayqEhJDvkGQxlElXzanIIXsHWcOybrb+9572X0trLNbXIYrRQ== - react-native@0.64.1: version "0.64.1" resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.64.1.tgz#cd38f5b47b085549686f34eb0c9dcd466f307635" From 7a74c5662af2dc5fab115e2020438df9d5107b45 Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 9 Jun 2021 11:53:34 -0300 Subject: [PATCH 42/43] fix: change lock mentions to prevent editing (#424) * fix: change lock mentions to prevent editing * fix: live item deinit called more than once * fix: match uppercase to v4 design * fix: remove unwanted change --- src/lib/snjs_helper_hooks.ts | 2 +- src/screens/Compose/Compose.tsx | 4 ++-- src/screens/Notes/NoteCell.tsx | 8 +++++--- src/screens/Notes/NoteCellFlags.tsx | 2 +- src/screens/SideMenu/NoteSideMenu.tsx | 8 ++++---- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/lib/snjs_helper_hooks.ts b/src/lib/snjs_helper_hooks.ts index c30471a2..eb5e58f5 100644 --- a/src/lib/snjs_helper_hooks.ts +++ b/src/lib/snjs_helper_hooks.ts @@ -333,7 +333,7 @@ export const useDeleteNoteWithPrivileges = ( async (permanently: boolean) => { if (note?.locked) { application?.alertService.alert( - "This note is locked. If you'd like to delete it, unlock it, and try again." + "This note has editing disabled. If you'd like to delete it, enable editing on it, and try again." ); return; } diff --git a/src/screens/Compose/Compose.tsx b/src/screens/Compose/Compose.tsx index 9c520796..5cc5c4f9 100644 --- a/src/screens/Compose/Compose.tsx +++ b/src/screens/Compose/Compose.tsx @@ -413,7 +413,7 @@ export class Compose extends React.Component<{}, State> { onContentChange = (text: string) => { if (Platform.OS === 'android' && this.note?.locked) { this.context?.alertService?.alert( - 'This note is locked. Please unlock this note to make changes.' + 'This note has editing disabled. Please enable editing on this note to make changes.' ); return; } @@ -439,7 +439,7 @@ export class Compose extends React.Component<{}, State> { size={16} color={theme.stylekitBackgroundColor} /> - Note Locked + Note Editing Disabled )} {this.state.webViewError && ( diff --git a/src/screens/Notes/NoteCell.tsx b/src/screens/Notes/NoteCell.tsx index 72111760..f8b14143 100644 --- a/src/screens/Notes/NoteCell.tsx +++ b/src/screens/Notes/NoteCell.tsx @@ -123,7 +123,9 @@ export const NoteCell = ({ callback: () => { if (note.locked) { application?.alertService.alert( - "This note is locked. If you'd like to archive it, unlock it, and try again." + `This note has editing disabled. If you'd like to ${ + note.archived ? 'unarchive' : 'archive' + } it, enable editing on it, and try again.` ); return; } @@ -135,7 +137,7 @@ export const NoteCell = ({ }); options.push({ - text: note.locked ? 'Unlock' : 'Lock', + text: note.locked ? 'Enable editing' : 'Prevent editing', key: 'lock', callback: () => changeNote(mutator => { @@ -168,7 +170,7 @@ export const NoteCell = ({ }, }, { - text: 'Delete Permanently', + text: 'Delete permanently', key: 'delete-forever', destructive: true, callback: async () => deleteNote(true), diff --git a/src/screens/Notes/NoteCellFlags.tsx b/src/screens/Notes/NoteCellFlags.tsx index 2618db8d..9e0ab397 100644 --- a/src/screens/Notes/NoteCellFlags.tsx +++ b/src/screens/Notes/NoteCellFlags.tsx @@ -49,7 +49,7 @@ export const NoteCellFlags = ({ if (note.locked) { flags.push({ - text: 'Locked', + text: 'Editing Disabled', color: theme.stylekitNeutralColor, }); } diff --git a/src/screens/SideMenu/NoteSideMenu.tsx b/src/screens/SideMenu/NoteSideMenu.tsx index 5ca59cfe..498f09b6 100644 --- a/src/screens/SideMenu/NoteSideMenu.tsx +++ b/src/screens/SideMenu/NoteSideMenu.tsx @@ -233,7 +233,7 @@ export const NoteSideMenu = React.memo((props: Props) => { } if (note?.locked) { application?.alertService.alert( - "This note is locked. If you'd like to edit its options, unlock it, and try again." + "This note has editing disabled. If you'd like to edit its options, enable editing on it, and try again." ); return; } @@ -435,7 +435,7 @@ export const NoteSideMenu = React.memo((props: Props) => { const archiveEvent = () => { if (note.locked) { application?.alertService.alert( - "This note is locked. If you'd like to archive it, unlock it, and try again." + `This note has editing disabled. If you'd like to ${archiveOption.toLowerCase()} it, enable editing on it, and try again.` ); return; } @@ -445,7 +445,7 @@ export const NoteSideMenu = React.memo((props: Props) => { leaveEditor(); }; - const lockOption = note.locked ? 'Unlock' : 'Lock'; + const lockOption = note.locked ? 'Enable editing' : 'Prevent editing'; const lockEvent = () => changeNote(mutator => { mutator.locked = !note.locked; @@ -520,7 +520,7 @@ export const NoteSideMenu = React.memo((props: Props) => { }, }, { - text: 'Delete Permanently', + text: 'Delete permanently', textClass: 'danger' as 'danger', key: 'delete-forever', onSelect: async () => deleteNote(true), From ec7456117d563ceeb34bd5c25155580b2b7e1c4e Mon Sep 17 00:00:00 2001 From: Antonella Sgarlatta Date: Wed, 9 Jun 2021 11:55:20 -0300 Subject: [PATCH 43/43] chore(version): 3.6.10 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9a5b4622..9ed37b0b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "StandardNotes", - "version": "3.6.9", - "user-version": "3.6.9", + "version": "3.6.10", + "user-version": "3.6.10", "private": true, "license": "AGPL-3.0-or-later", "scripts": {