From fba1d0d5319f737c385370b14de487b6538e829d Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Mon, 23 Nov 2020 00:07:32 +0100 Subject: [PATCH] Some basic styling --- App.tsx | 22 +- app.config.ts | 23 + app.json | 24 - package.json | 5 +- src/Index.tsx | 11 +- src/components/Menu/Item.tsx | 5 +- src/components/ParseContent.tsx | 49 +- .../Timelines => components}/Timelines.tsx | 6 +- .../Timelines/Timeline.tsx | 10 +- .../Timeline/Conversation.tsx} | 10 +- .../Timeline/Default.tsx} | 30 +- .../Timeline/Notifications.tsx} | 26 +- .../Timelines/Timeline/Separator.tsx | 20 + .../Timeline/Shared}/Actioned.tsx | 41 +- .../Timeline/Shared}/ActionsStatus.tsx | 54 +- .../Timeline/Shared}/Attachment.tsx | 0 .../Shared}/Attachment/AttachmentImage.tsx | 0 .../Shared}/Attachment/AttachmentVideo.tsx | 0 .../Timeline/Shared}/Avatar.tsx | 11 +- .../Timeline/Shared}/Card.tsx | 0 .../Timeline/Shared}/Content.tsx | 15 +- .../Timeline/Shared}/Emojis.tsx | 42 +- .../Timeline/Shared}/HeaderConversation.tsx | 2 +- .../Timeline/Shared/HeaderDefault.tsx} | 89 +- .../Timeline/Shared}/Poll.tsx | 2 +- src/screens/Local.tsx | 2 +- src/screens/Me/Bookmarks.tsx | 2 +- src/screens/Me/Cconversations.tsx | 2 +- src/screens/Me/Favourites.tsx | 2 +- src/screens/Me/Root/Lists/List.tsx | 2 +- src/screens/Notifications.tsx | 10 +- src/screens/Public.tsx | 2 +- src/screens/Shared/Account/Information.tsx | 149 +++- src/screens/Shared/Account/Toots.tsx | 2 +- src/screens/Shared/Hashtag.tsx | 2 +- src/screens/Shared/Toot.tsx | 2 +- src/utils/styles/ThemeManager.tsx | 44 + src/utils/styles/constants.ts | 16 + src/utils/styles/themes.ts | 80 ++ yarn.lock | 837 +++++++++++++++++- 40 files changed, 1381 insertions(+), 270 deletions(-) create mode 100644 app.config.ts delete mode 100644 app.json rename src/{screens/Timelines => components}/Timelines.tsx (94%) rename src/{screens => components}/Timelines/Timeline.tsx (88%) rename src/components/{TimelineConversation.tsx => Timelines/Timeline/Conversation.tsx} (88%) rename src/components/{TimelineDefault.tsx => Timelines/Timeline/Default.tsx} (81%) rename src/components/{StatusInNotifications.tsx => Timelines/Timeline/Notifications.tsx} (84%) create mode 100644 src/components/Timelines/Timeline/Separator.tsx rename src/components/{Status => Timelines/Timeline/Shared}/Actioned.tsx (60%) rename src/components/{Status => Timelines/Timeline/Shared}/ActionsStatus.tsx (86%) rename src/components/{Status => Timelines/Timeline/Shared}/Attachment.tsx (100%) rename src/components/{Status => Timelines/Timeline/Shared}/Attachment/AttachmentImage.tsx (100%) rename src/components/{Status => Timelines/Timeline/Shared}/Attachment/AttachmentVideo.tsx (100%) rename src/components/{Status => Timelines/Timeline/Shared}/Avatar.tsx (78%) rename src/components/{Status => Timelines/Timeline/Shared}/Card.tsx (100%) rename src/components/{Status => Timelines/Timeline/Shared}/Content.tsx (70%) rename src/components/{Status => Timelines/Timeline/Shared}/Emojis.tsx (52%) rename src/components/{Status => Timelines/Timeline/Shared}/HeaderConversation.tsx (98%) rename src/components/{Status/Header.tsx => Timelines/Timeline/Shared/HeaderDefault.tsx} (84%) rename src/components/{Status => Timelines/Timeline/Shared}/Poll.tsx (97%) create mode 100644 src/utils/styles/ThemeManager.tsx create mode 100644 src/utils/styles/constants.ts create mode 100644 src/utils/styles/themes.ts diff --git a/App.tsx b/App.tsx index 4a016667..5637a813 100644 --- a/App.tsx +++ b/App.tsx @@ -1,7 +1,9 @@ import React from 'react' +import { AppearanceProvider } from 'react-native-appearance' import { QueryCache, ReactQueryCacheProvider, setConsole } from 'react-query' import { Provider } from 'react-redux' +import ThemeManager from 'src/utils/styles/ThemeManager' import { Index } from 'src/Index' import { store } from 'src/store' @@ -18,12 +20,18 @@ if (__DEV__) { // whyDidYouRender(React) } -const App: React.FC = () => ( - - - - - -) +const App: React.FC = () => { + return ( + + + + + + + + + + ) +} export default App diff --git a/app.config.ts b/app.config.ts new file mode 100644 index 00000000..467aa7e4 --- /dev/null +++ b/app.config.ts @@ -0,0 +1,23 @@ +import { ExpoConfig } from '@expo/config' + +export default (): ExpoConfig => ({ + name: 'mastodon-app', + description: 'This is a description', + slug: 'mastodon-app', + privacy: 'hidden', + version: '1.0.0', + platforms: ['ios'], + orientation: 'portrait', + userInterfaceStyle: 'automatic', + icon: './assets/icon.png', + developmentClient: { silentLaunch: true }, + scheme: 'mastodonct', + ios: { + splash: { + image: './assets/splash.png', + resizeMode: 'contain', + backgroundColor: '#ffffff' + } + }, + assetBundlePatterns: ['**/*'] +}) diff --git a/app.json b/app.json deleted file mode 100644 index 7c197d2a..00000000 --- a/app.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "expo": { - "name": "mastodon-app", - "slug": "mastodon-app", - "scheme": "mastodonct", - "version": "1.0.0", - "orientation": "portrait", - "icon": "./assets/icon.png", - "splash": { - "image": "./assets/splash.png", - "resizeMode": "contain", - "backgroundColor": "#ffffff" - }, - "updates": { - "fallbackToCacheTimeout": 0 - }, - "assetBundlePatterns": [ - "**/*" - ], - "ios": { - "supportsTablet": false - } - } -} \ No newline at end of file diff --git a/package.json b/package.json index 2c77d1f2..012fa88d 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@expo/vector-icons": "^10.0.0", + "@react-native-community/masked-view": "0.1.10", "@react-native-community/segmented-control": "2.1.1", "@react-navigation/bottom-tabs": "^5.10.6", "@react-navigation/native": "^5.8.6", @@ -25,6 +26,7 @@ "react": "16.13.1", "react-dom": "16.13.1", "react-native": "https://github.com/expo/react-native/archive/sdk-39.0.3.tar.gz", + "react-native-appearance": "~0.3.3", "react-native-collapsible": "^1.5.3", "react-native-gesture-handler": "~1.7.0", "react-native-htmlview": "^0.16.0", @@ -45,6 +47,7 @@ "devDependencies": { "@babel/core": "~7.12.3", "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@expo/config": "^3.3.15", "@types/lodash": "^4.14.164", "@types/node": "^14.14.7", "@types/react": "~16.9.35", @@ -58,4 +61,4 @@ "typescript": "~3.9.2" }, "private": true -} \ No newline at end of file +} diff --git a/src/Index.tsx b/src/Index.tsx index f7816b39..a1a75b89 100644 --- a/src/Index.tsx +++ b/src/Index.tsx @@ -14,12 +14,17 @@ import ScreenPublic from 'src/screens/Public' import ScreenNotifications from 'src/screens/Notifications' import ScreenMe from 'src/screens/Me' +import { themes } from 'src/utils/styles/themes' +import { useTheme } from 'src/utils/styles/ThemeManager' + enableScreens() const Tab = createBottomTabNavigator() export const Index: React.FC = () => { + const { mode, theme } = useTheme() + return ( - + ({ tabBarIcon: ({ focused, color, size }) => { @@ -48,8 +53,8 @@ export const Index: React.FC = () => { } })} tabBarOptions={{ - activeTintColor: 'black', - inactiveTintColor: 'gray', + activeTintColor: theme.primary, + inactiveTintColor: theme.secondary, showLabel: false }} > diff --git a/src/components/Menu/Item.tsx b/src/components/Menu/Item.tsx index 1717d29f..13e8e488 100644 --- a/src/components/Menu/Item.tsx +++ b/src/components/Menu/Item.tsx @@ -2,6 +2,7 @@ import React from 'react' import { Pressable, StyleSheet, Text, View } from 'react-native' import { useNavigation } from '@react-navigation/native' import { Feather } from '@expo/vector-icons' +import { useTheme } from 'src/utils/styles/ThemeManager' export interface Props { icon?: string @@ -11,6 +12,8 @@ export interface Props { } const Core: React.FC = ({ icon, title, navigateTo }) => { + const { theme } = useTheme() + return ( {icon && } @@ -19,7 +22,7 @@ const Core: React.FC = ({ icon, title, navigateTo }) => { )} diff --git a/src/components/ParseContent.tsx b/src/components/ParseContent.tsx index bf5c5cb8..8c984371 100644 --- a/src/components/ParseContent.tsx +++ b/src/components/ParseContent.tsx @@ -1,18 +1,22 @@ import React from 'react' -import { StyleSheet, Text } from 'react-native' +import { Text } from 'react-native' import HTMLView, { HTMLViewNode } from 'react-native-htmlview' import { useNavigation } from '@react-navigation/native' -import Emojis from 'src/components/Status/Emojis' +import Emojis from 'src/components/Timelines/Timeline/Shared/Emojis' +import { useTheme } from 'src/utils/styles/ThemeManager' + // Prevent going to the same hashtag multiple times const renderNode = ({ + theme, node, index, navigation, mentions, showFullLink }: { - node: HTMLViewNode + theme: any + node: any index: number navigation: any mentions?: Mastodon.Mention[] @@ -26,10 +30,10 @@ const renderNode = ({ return ( { const tag = href.split(new RegExp(/\/tag\/(.*)|\/tags\/(.*)/)) - navigation.push('Hashtag', { + navigation.push('Screen-Shared-Hashtag', { hashtag: tag[1] || tag[2] }) }} @@ -42,13 +46,13 @@ const renderNode = ({ return ( { const username = href.split(new RegExp(/@(.*)/)) const usernameIndex = mentions.findIndex( m => m.username === username[1] ) - navigation.push('Account', { + navigation.push('Screen-Shared-Account', { id: mentions[usernameIndex].id }) }} @@ -63,9 +67,9 @@ const renderNode = ({ return ( { - navigation.navigate('Webview', { + navigation.navigate('Screen-Shared-Webview', { uri: href, domain: domain[1] }) @@ -80,8 +84,8 @@ const renderNode = ({ export interface Props { content: string + size: number emojis?: Mastodon.Emoji[] - emojiSize?: number mentions?: Mastodon.Mention[] showFullLink?: boolean linesTruncated?: number @@ -89,29 +93,24 @@ export interface Props { const ParseContent: React.FC = ({ content, + size, emojis, - emojiSize = 14, mentions, showFullLink = false, linesTruncated = 10 }) => { const navigation = useNavigation() + const { theme } = useTheme() return ( - renderNode({ node, index, navigation, mentions, showFullLink }) + renderNode({ theme, node, index, navigation, mentions, showFullLink }) } TextComponent={({ children }) => emojis && children ? ( - + ) : ( {children} ) @@ -123,16 +122,4 @@ const ParseContent: React.FC = ({ ) } -const styles = StyleSheet.create({ - a: { - color: 'blue' - } -}) - -const HTMLstyles = StyleSheet.create({ - p: { - marginBottom: 12 - } -}) - export default ParseContent diff --git a/src/screens/Timelines/Timelines.tsx b/src/components/Timelines.tsx similarity index 94% rename from src/screens/Timelines/Timelines.tsx rename to src/components/Timelines.tsx index b4abe79f..da0c7498 100644 --- a/src/screens/Timelines/Timelines.tsx +++ b/src/components/Timelines.tsx @@ -5,10 +5,11 @@ import { createNativeStackNavigator } from 'react-native-screens/native-stack' import { useSelector } from 'react-redux' import { Feather } from '@expo/vector-icons' -import Timeline from './Timeline' +import Timeline from './Timelines/Timeline' import sharedScreens from 'src/screens/Shared/sharedScreens' import { InstancesState } from 'src/utils/slices/instancesSlice' import { RootState } from 'src/store' +import { useTheme } from 'src/utils/styles/ThemeManager' const Stack = createNativeStackNavigator() @@ -36,6 +37,7 @@ export interface Props { } const Timelines: React.FC = ({ name, content }) => { + const { theme } = useTheme() const localRegistered = useSelector( (state: RootState) => state.instances.local.url ) @@ -59,7 +61,7 @@ const Timelines: React.FC = ({ name, content }) => { options={{ headerRight: () => renderHeader ? ( - + ) : null, headerCenter: () => renderHeader ? ( diff --git a/src/screens/Timelines/Timeline.tsx b/src/components/Timelines/Timeline.tsx similarity index 88% rename from src/screens/Timelines/Timeline.tsx rename to src/components/Timelines/Timeline.tsx index b11f04e8..748ea2a3 100644 --- a/src/screens/Timelines/Timeline.tsx +++ b/src/components/Timelines/Timeline.tsx @@ -2,10 +2,11 @@ import React from 'react' import { ActivityIndicator, AppState, FlatList, Text, View } from 'react-native' import { setFocusHandler, useInfiniteQuery } from 'react-query' -import StatusInNotifications from 'src/components/StatusInNotifications' -import TimelineDefault from 'src/components/TimelineDefault' -import TimelineConversation from 'src/components/TimelineConversation' +import TimelineNotifications from 'src/components/Timelines/Timeline/Notifications' +import TimelineDefault from 'src/components/Timelines/Timeline/Default' +import TimelineConversation from 'src/components/Timelines/Timeline/Conversation' import { timelineFetch } from 'src/utils/fetches/timelineFetch' +import TimelineSeparator from './Timeline/Separator' // Opening nesting hashtag pages @@ -69,7 +70,7 @@ const Timeline: React.FC = ({ return case 'Notifications': return ( - = ({ ) } }} + ItemSeparatorComponent={() => } // require getItemLayout // {...(flattenPointer[0] && { initialScrollIndex: flattenPointer[0] })} {...(!disableRefresh && { diff --git a/src/components/TimelineConversation.tsx b/src/components/Timelines/Timeline/Conversation.tsx similarity index 88% rename from src/components/TimelineConversation.tsx rename to src/components/Timelines/Timeline/Conversation.tsx index b0bb0dea..73a87db5 100644 --- a/src/components/TimelineConversation.tsx +++ b/src/components/Timelines/Timeline/Conversation.tsx @@ -2,9 +2,11 @@ import React, { useMemo } from 'react' import { Pressable, StyleSheet, View } from 'react-native' import { useNavigation } from '@react-navigation/native' -import Avatar from './Status/Avatar' -import HeaderConversation from './Status/HeaderConversation' -import Content from './Status/Content' +import Avatar from './Shared/Avatar' +import HeaderConversation from './Shared/HeaderConversation' +import Content from './Shared/Content' + +import constants from 'src/utils/styles/constants' export interface Props { item: Mastodon.Conversation @@ -58,7 +60,7 @@ const styles = StyleSheet.create({ statusView: { flex: 1, flexDirection: 'column', - padding: 12 + padding: constants.GLOBAL_PAGE_PADDING }, status: { flex: 1, diff --git a/src/components/TimelineDefault.tsx b/src/components/Timelines/Timeline/Default.tsx similarity index 81% rename from src/components/TimelineDefault.tsx rename to src/components/Timelines/Timeline/Default.tsx index a0e38153..4c1e473c 100644 --- a/src/components/TimelineDefault.tsx +++ b/src/components/Timelines/Timeline/Default.tsx @@ -2,20 +2,23 @@ import React, { useMemo } from 'react' import { Dimensions, Pressable, StyleSheet, View } from 'react-native' import { useNavigation } from '@react-navigation/native' -import Actioned from './Status/Actioned' -import Avatar from './Status/Avatar' -import Header from './Status/Header' -import Content from './Status/Content' -import Poll from './Status/Poll' -import Attachment from './Status/Attachment' -import Card from './Status/Card' -import ActionsStatus from './Status/ActionsStatus' +import Actioned from './Shared/Actioned' +import Avatar from './Shared/Avatar' +import HeaderDefault from './Shared/HeaderDefault' +import Content from './Shared/Content' +import Poll from './Shared/Poll' +import Attachment from './Shared/Attachment' +import Card from './Shared/Card' +import ActionsStatus from './Shared/ActionsStatus' + +import constants from 'src/utils/styles/constants' export interface Props { item: Mastodon.Status queryKey: App.QueryKey } +// When the poll is long const TimelineDefault: React.FC = ({ item, queryKey }) => { const navigation = useNavigation() @@ -37,7 +40,7 @@ const TimelineDefault: React.FC = ({ item, queryKey }) => { id={actualStatus.account.id} /> -
= ({ item, queryKey }) => { )} {actualStatus.card && } @@ -94,7 +102,7 @@ const styles = StyleSheet.create({ statusView: { flex: 1, flexDirection: 'column', - padding: 12 + padding: constants.GLOBAL_PAGE_PADDING }, status: { flex: 1, diff --git a/src/components/StatusInNotifications.tsx b/src/components/Timelines/Timeline/Notifications.tsx similarity index 84% rename from src/components/StatusInNotifications.tsx rename to src/components/Timelines/Timeline/Notifications.tsx index fe83a2e9..4f9d20ab 100644 --- a/src/components/StatusInNotifications.tsx +++ b/src/components/Timelines/Timeline/Notifications.tsx @@ -2,21 +2,23 @@ import React, { useMemo } from 'react' import { Dimensions, Pressable, StyleSheet, View } from 'react-native' import { useNavigation } from '@react-navigation/native' -import Actioned from './Status/Actioned' -import Avatar from './Status/Avatar' -import Header from './Status/Header' -import Content from './Status/Content' -import Poll from './Status/Poll' -import Attachment from './Status/Attachment' -import Card from './Status/Card' -import ActionsStatus from './Status/ActionsStatus' +import Actioned from './Shared/Actioned' +import Avatar from './Shared/Avatar' +import HeaderDefault from './Shared/HeaderDefault' +import Content from './Shared/Content' +import Poll from './Shared/Poll' +import Attachment from './Shared/Attachment' +import Card from './Shared/Card' +import ActionsStatus from './Shared/ActionsStatus' + +import constants from 'src/utils/styles/constants' export interface Props { notification: Mastodon.Notification queryKey: App.QueryKey } -const TootNotification: React.FC = ({ notification, queryKey }) => { +const TimelineNotifications: React.FC = ({ notification, queryKey }) => { const navigation = useNavigation() const actualAccount = notification.status ? notification.status.account @@ -37,7 +39,7 @@ const TootNotification: React.FC = ({ notification, queryKey }) => { -
{ + const { theme } = useTheme() + + return +} + +const styles = StyleSheet.create({ + base: { + borderTopWidth: 1, + marginLeft: constants.SPACING_M + constants.AVATAR_S + constants.SPACING_S + } +}) + +export default TimelineSeparator diff --git a/src/components/Status/Actioned.tsx b/src/components/Timelines/Timeline/Shared/Actioned.tsx similarity index 60% rename from src/components/Status/Actioned.tsx rename to src/components/Timelines/Timeline/Shared/Actioned.tsx index 03afeb0b..e69fd293 100644 --- a/src/components/Status/Actioned.tsx +++ b/src/components/Timelines/Timeline/Shared/Actioned.tsx @@ -3,6 +3,9 @@ import { StyleSheet, Text, View } from 'react-native' import { Feather } from '@expo/vector-icons' import Emojis from './Emojis' +import { useTheme } from 'src/utils/styles/ThemeManager' + +import constants from 'src/utils/styles/constants' export interface Props { action: 'favourite' | 'follow' | 'mention' | 'poll' | 'reblog' @@ -17,18 +20,31 @@ const Actioned: React.FC = ({ emojis, notification = false }) => { + const { theme } = useTheme() + const iconColor = theme.primary + let icon let content switch (action) { case 'favourite': icon = ( - + ) content = `${name} 喜欢了你的嘟嘟` break case 'follow': icon = ( - + ) content = `${name} 开始关注你` break @@ -36,7 +52,7 @@ const Actioned: React.FC = ({ icon = ( @@ -45,7 +61,12 @@ const Actioned: React.FC = ({ break case 'reblog': icon = ( - + ) content = `${name} 转嘟了${notification ? '你的嘟嘟' : ''}` break @@ -57,7 +78,11 @@ const Actioned: React.FC = ({ {content ? ( {emojis ? ( - + ) : ( {content} )} @@ -72,11 +97,11 @@ const Actioned: React.FC = ({ const styles = StyleSheet.create({ actioned: { flexDirection: 'row', - marginBottom: 8 + marginBottom: constants.SPACING_S }, icon: { - marginLeft: 50 - 12, - marginRight: 8 + marginLeft: constants.AVATAR_S - constants.FONT_SIZE_S, + marginRight: constants.SPACING_S }, content: { flexDirection: 'row' diff --git a/src/components/Status/ActionsStatus.tsx b/src/components/Timelines/Timeline/Shared/ActionsStatus.tsx similarity index 86% rename from src/components/Status/ActionsStatus.tsx rename to src/components/Timelines/Timeline/Shared/ActionsStatus.tsx index e657ed82..2c6549a0 100644 --- a/src/components/Status/ActionsStatus.tsx +++ b/src/components/Timelines/Timeline/Shared/ActionsStatus.tsx @@ -14,7 +14,9 @@ import { Feather } from '@expo/vector-icons' import client from 'src/api/client' import { getLocalAccountId } from 'src/utils/slices/instancesSlice' -import {store} from 'src/store' +import { store } from 'src/store' +import { useTheme } from 'src/utils/styles/ThemeManager' +import constants from 'src/utils/styles/constants' const fireMutation = async ({ id, @@ -112,6 +114,11 @@ export interface Props { } const ActionsStatus: React.FC = ({ queryKey, status }) => { + const { theme } = useTheme() + const iconColor = theme.secondary + const iconColorAction = (state: boolean) => + state ? theme.primary : theme.secondary + const localAccountId = getLocalAccountId(store.getState()) const [modalVisible, setModalVisible] = useState(false) @@ -153,8 +160,22 @@ const ActionsStatus: React.FC = ({ queryKey, status }) => { <> - - {status.replies_count > 0 && {status.replies_count}} + + {status.replies_count > 0 && ( + + {status.replies_count} + + )} = ({ queryKey, status }) => { }) } > - + = ({ queryKey, status }) => { }) } > - + = ({ queryKey, status }) => { > setModalVisible(true)}> - + @@ -319,14 +353,12 @@ const styles = StyleSheet.create({ width: '100%', flex: 1, flexDirection: 'row', - marginTop: 8 + marginTop: constants.SPACING_M }, action: { width: '20%', flexDirection: 'row', - justifyContent: 'center', - paddingTop: 8, - paddingBottom: 8 + justifyContent: 'center' }, modalBackground: { width: '100%', diff --git a/src/components/Status/Attachment.tsx b/src/components/Timelines/Timeline/Shared/Attachment.tsx similarity index 100% rename from src/components/Status/Attachment.tsx rename to src/components/Timelines/Timeline/Shared/Attachment.tsx diff --git a/src/components/Status/Attachment/AttachmentImage.tsx b/src/components/Timelines/Timeline/Shared/Attachment/AttachmentImage.tsx similarity index 100% rename from src/components/Status/Attachment/AttachmentImage.tsx rename to src/components/Timelines/Timeline/Shared/Attachment/AttachmentImage.tsx diff --git a/src/components/Status/Attachment/AttachmentVideo.tsx b/src/components/Timelines/Timeline/Shared/Attachment/AttachmentVideo.tsx similarity index 100% rename from src/components/Status/Attachment/AttachmentVideo.tsx rename to src/components/Timelines/Timeline/Shared/Attachment/AttachmentVideo.tsx diff --git a/src/components/Status/Avatar.tsx b/src/components/Timelines/Timeline/Shared/Avatar.tsx similarity index 78% rename from src/components/Status/Avatar.tsx rename to src/components/Timelines/Timeline/Shared/Avatar.tsx index 95afbe43..079f0fb2 100644 --- a/src/components/Status/Avatar.tsx +++ b/src/components/Timelines/Timeline/Shared/Avatar.tsx @@ -2,6 +2,8 @@ import React from 'react' import { Image, Pressable, StyleSheet } from 'react-native' import { useNavigation } from '@react-navigation/native' +import constants from 'src/utils/styles/constants' + export interface Props { uri: string id: string @@ -26,13 +28,14 @@ const Avatar: React.FC = ({ uri, id }) => { const styles = StyleSheet.create({ avatar: { - width: 50, - height: 50, - marginRight: 8 + width: constants.AVATAR_S, + height: constants.AVATAR_S, + marginRight: constants.SPACING_S }, image: { width: '100%', - height: '100%' + height: '100%', + borderRadius: 8 } }) diff --git a/src/components/Status/Card.tsx b/src/components/Timelines/Timeline/Shared/Card.tsx similarity index 100% rename from src/components/Status/Card.tsx rename to src/components/Timelines/Timeline/Shared/Card.tsx diff --git a/src/components/Status/Content.tsx b/src/components/Timelines/Timeline/Shared/Content.tsx similarity index 70% rename from src/components/Status/Content.tsx rename to src/components/Timelines/Timeline/Shared/Content.tsx index 2b19138e..a1a2adff 100644 --- a/src/components/Status/Content.tsx +++ b/src/components/Timelines/Timeline/Shared/Content.tsx @@ -4,6 +4,9 @@ import Collapsible from 'react-native-collapsible' import ParseContent from 'src/components/ParseContent' +import constants from 'src/utils/styles/constants' +import { useTheme } from 'src/utils/styles/ThemeManager' + export interface Props { content: string emojis: Mastodon.Emoji[] @@ -17,6 +20,7 @@ const Content: React.FC = ({ mentions, spoiler_text }) => { + const { theme } = useTheme() const [spoilerCollapsed, setSpoilerCollapsed] = useState(true) return ( @@ -26,15 +30,18 @@ const Content: React.FC = ({ <> {spoiler_text}{' '} - setSpoilerCollapsed(!spoilerCollapsed)}> - 点击展开 + setSpoilerCollapsed(!spoilerCollapsed)} + style={{ color: theme.link }} + > + {spoilerCollapsed ? '点击展开' : '点击收起'} @@ -42,8 +49,8 @@ const Content: React.FC = ({ ) : ( ))} diff --git a/src/components/Status/Emojis.tsx b/src/components/Timelines/Timeline/Shared/Emojis.tsx similarity index 52% rename from src/components/Status/Emojis.tsx rename to src/components/Timelines/Timeline/Shared/Emojis.tsx index e1644d2e..adc9b037 100644 --- a/src/components/Status/Emojis.tsx +++ b/src/components/Timelines/Timeline/Shared/Emojis.tsx @@ -1,16 +1,37 @@ import React from 'react' -import { Image, Text } from 'react-native' +import { Image, StyleSheet, Text } from 'react-native' +import { useTheme } from 'src/utils/styles/ThemeManager' const regexEmoji = new RegExp(/(:[a-z0-9_]+:)/) export interface Props { content: string emojis: Mastodon.Emoji[] - dimension: number + size: number + fontBold?: boolean } -const Emojis: React.FC = ({ content, emojis, dimension }) => { +const Emojis: React.FC = ({ + content, + emojis, + size, + fontBold = false +}) => { + const { theme } = useTheme() + const styles = StyleSheet.create({ + text: { + fontSize: size, + lineHeight: size + 2, + color: theme.primary, + ...(fontBold && { fontWeight: 'bold' }) + }, + image: { + width: size, + height: size + } + }) const hasEmojis = content.match(regexEmoji) + return hasEmojis ? ( <> {content.split(regexEmoji).map((str, i) => { @@ -20,20 +41,19 @@ const Emojis: React.FC = ({ content, emojis, dimension }) => { return emojiShortcode === `:${emoji.shortcode}:` }) return emojiIndex === -1 ? ( - {emojiShortcode} + + {emojiShortcode} + ) : ( ) } else { return ( - + {str} ) @@ -41,9 +61,7 @@ const Emojis: React.FC = ({ content, emojis, dimension }) => { })} ) : ( - - {content} - + {content} ) } diff --git a/src/components/Status/HeaderConversation.tsx b/src/components/Timelines/Timeline/Shared/HeaderConversation.tsx similarity index 98% rename from src/components/Status/HeaderConversation.tsx rename to src/components/Timelines/Timeline/Shared/HeaderConversation.tsx index 4768596d..c517452a 100644 --- a/src/components/Status/HeaderConversation.tsx +++ b/src/components/Timelines/Timeline/Shared/HeaderConversation.tsx @@ -18,7 +18,7 @@ const HeaderConversation: React.FC = ({ account, created_at }) => { ) : ( diff --git a/src/components/Status/Header.tsx b/src/components/Timelines/Timeline/Shared/HeaderDefault.tsx similarity index 84% rename from src/components/Status/Header.tsx rename to src/components/Timelines/Timeline/Shared/HeaderDefault.tsx index 35e50e0a..85cbb4d0 100644 --- a/src/components/Status/Header.tsx +++ b/src/components/Timelines/Timeline/Shared/HeaderDefault.tsx @@ -8,12 +8,10 @@ import { useMutation, useQueryCache } from 'react-query' import Emojis from './Emojis' import relativeTime from 'src/utils/relativeTime' import client from 'src/api/client' -import { useSelector } from 'react-redux' -import { - getLocalAccountId, - getLocalUrl -} from 'src/utils/slices/instancesSlice' -import {store} from 'src/store' +import { getLocalAccountId, getLocalUrl } from 'src/utils/slices/instancesSlice' +import { store } from 'src/store' +import { useTheme } from 'src/utils/styles/ThemeManager' +import constants from 'src/utils/styles/constants' const fireMutation = async ({ id, @@ -131,7 +129,7 @@ export interface Props { application?: Mastodon.Application } -const Header: React.FC = ({ +const HeaderDefault: React.FC = ({ queryKey, accountId, domain, @@ -141,6 +139,8 @@ const Header: React.FC = ({ created_at, application }) => { + const { theme } = useTheme() + const navigation = useNavigation() const localAccountId = getLocalAccountId(store.getState()) const localDomain = getLocalUrl(store.getState()) @@ -194,26 +194,42 @@ const Header: React.FC = ({ {emojis ? ( - + ) : ( - {name} + + {name} + )} + + @{account} + {accountId !== localAccountId && domain !== localDomain && ( setModalVisible(true)} > - + )} - - @{account} - - {since} + + {since} + {application && application.name !== 'Web' && ( @@ -223,9 +239,9 @@ const Header: React.FC = ({ uri: application.website }) }} - style={styles.application} + style={[styles.application, { color: theme.secondary }]} > - {application.name} + 发自于 - {application.name} )} @@ -310,32 +326,29 @@ const styles = StyleSheet.create({ justifyContent: 'space-between' }, name: { - flexDirection: 'row', - marginRight: 8, - fontWeight: '900' - }, - action: { - width: 14, - height: 14, - marginLeft: 8 - }, - account: { - lineHeight: 14, - flexShrink: 1 - }, - meta: { + flexBasis: '80%', flexDirection: 'row' }, + action: { + flexBasis: '20%', + alignItems: 'center' + }, + account: { + flexShrink: 1, + marginLeft: constants.SPACING_XS, + lineHeight: constants.FONT_SIZE_M + 2 + }, + meta: { + flexDirection: 'row', + marginTop: constants.SPACING_XS, + marginBottom: constants.SPACING_S + }, created_at: { - fontSize: 12, - lineHeight: 12, - marginTop: 8, - marginBottom: 8, - marginRight: 8 + fontSize: constants.FONT_SIZE_S }, application: { - fontSize: 12, - lineHeight: 11 + fontSize: constants.FONT_SIZE_S, + marginLeft: constants.SPACING_S }, modalBackground: { width: '100%', @@ -354,4 +367,4 @@ const styles = StyleSheet.create({ } }) -export default Header +export default HeaderDefault diff --git a/src/components/Status/Poll.tsx b/src/components/Timelines/Timeline/Shared/Poll.tsx similarity index 97% rename from src/components/Status/Poll.tsx rename to src/components/Timelines/Timeline/Shared/Poll.tsx index 4ae0a302..7f2d87cc 100644 --- a/src/components/Status/Poll.tsx +++ b/src/components/Timelines/Timeline/Shared/Poll.tsx @@ -19,7 +19,7 @@ const Poll: React.FC = ({ poll }) => { { return ( diff --git a/src/screens/Me/Bookmarks.tsx b/src/screens/Me/Bookmarks.tsx index 758e019f..6dcfa57c 100644 --- a/src/screens/Me/Bookmarks.tsx +++ b/src/screens/Me/Bookmarks.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' const ScreenMeBookmarks: React.FC = () => { return diff --git a/src/screens/Me/Cconversations.tsx b/src/screens/Me/Cconversations.tsx index 739e7950..612f2697 100644 --- a/src/screens/Me/Cconversations.tsx +++ b/src/screens/Me/Cconversations.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' const ScreenMeConversations: React.FC = () => { return diff --git a/src/screens/Me/Favourites.tsx b/src/screens/Me/Favourites.tsx index c57ceafd..3e82e76f 100644 --- a/src/screens/Me/Favourites.tsx +++ b/src/screens/Me/Favourites.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' const ScreenMeFavourites: React.FC = () => { return diff --git a/src/screens/Me/Root/Lists/List.tsx b/src/screens/Me/Root/Lists/List.tsx index 3de42ddf..c8999a04 100644 --- a/src/screens/Me/Root/Lists/List.tsx +++ b/src/screens/Me/Root/Lists/List.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' // Show remote hashtag? Only when private, show local version? diff --git a/src/screens/Notifications.tsx b/src/screens/Notifications.tsx index 40e217d8..2474c78b 100644 --- a/src/screens/Notifications.tsx +++ b/src/screens/Notifications.tsx @@ -2,12 +2,15 @@ import React, { useEffect, useState } from 'react' import { createNativeStackNavigator } from 'react-native-screens/native-stack' import { Feather } from '@expo/vector-icons' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' import sharedScreens from 'src/screens/Shared/sharedScreens' +import { useTheme } from 'src/utils/styles/ThemeManager' const Stack = createNativeStackNavigator() const ScreenNotifications: React.FC = () => { + const { theme } = useTheme() + const [renderHeader, setRenderHeader] = useState(false) useEffect(() => { @@ -20,9 +23,10 @@ const ScreenNotifications: React.FC = () => { screenOptions={{ headerRight: () => renderHeader ? ( - + ) : null, - headerTitle: '通知' + headerTitle: '通知', + headerLargeTitle: true }} > diff --git a/src/screens/Public.tsx b/src/screens/Public.tsx index 7dd09f5f..81376ef6 100644 --- a/src/screens/Public.tsx +++ b/src/screens/Public.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timelines from 'src/screens/Timelines/Timelines' +import Timelines from 'src/components/Timelines' const ScreenPublic: React.FC = () => { return ( diff --git a/src/screens/Shared/Account/Information.tsx b/src/screens/Shared/Account/Information.tsx index 968a0250..2af5e341 100644 --- a/src/screens/Shared/Account/Information.tsx +++ b/src/screens/Shared/Account/Information.tsx @@ -4,12 +4,16 @@ import ShimmerPlaceholder from 'react-native-shimmer-placeholder' import { Feather } from '@expo/vector-icons' import ParseContent from 'src/components/ParseContent' +import { useTheme } from 'src/utils/styles/ThemeManager' + +import constants from 'src/utils/styles/constants' export interface Props { account: Mastodon.Account | undefined } const AccountInformation: React.FC = ({ account }) => { + const { theme } = useTheme() const [avatarLoaded, setAvatarLoaded] = useState(false) // add emoji support @@ -24,71 +28,128 @@ const AccountInformation: React.FC = ({ account }) => { /> - + {account?.display_name || account?.username} {account?.bot && ( )} - - {account?.acct} + + + @{account?.acct} {account?.locked && } - {account?.fields && - account.fields.map((field, index) => ( - - - {' '} - {field.verified_at && } - - - - - - ))} - {account?.note && ( - - )} - {account?.created_at && ( - - 加入时间{' '} - {new Date(account.created_at).toLocaleDateString('zh-CN', { - year: 'numeric', - month: 'long', - day: 'numeric' - })} - + {account?.fields && ( + + {account.fields.map((field, index) => ( + + + {' '} + {field.verified_at && } + + + + + + ))} + )} - Toots: {account?.statuses_count} - Followers: {account?.followers_count} - Following: {account?.following_count} + {account?.note && ( + + + + )} + + {account?.created_at && ( + + + + 加入时间: + {new Date(account.created_at).toLocaleDateString('zh-CN', { + year: 'numeric', + month: 'long', + day: 'numeric' + })} + + + )} + + + + {account?.statuses_count} 条嘟文 + + + 关注 {account?.followers_count} 人 + + + 被 {account?.following_count} 人关注 + + ) } const styles = StyleSheet.create({ - information: { marginTop: -30, paddingLeft: 12, paddingRight: 12 }, + information: { + marginTop: -30 - constants.GLOBAL_PAGE_PADDING, + padding: constants.GLOBAL_PAGE_PADDING + }, avatar: { - width: 90, - height: 90 + width: constants.AVATAR_L, + height: constants.AVATAR_L, + borderRadius: 8 }, display_name: { - fontSize: 18, + fontSize: constants.FONT_SIZE_L, fontWeight: 'bold', - marginTop: 12 + marginTop: constants.SPACING_M, + marginBottom: constants.SPACING_XS }, account: { - marginTop: 4 + fontSize: constants.FONT_SIZE_M, + marginBottom: constants.SPACING_S + }, + fields: { + marginBottom: constants.SPACING_S + }, + note: { + marginBottom: constants.SPACING_M + }, + created_at: { + flexDirection: 'row', + marginBottom: constants.SPACING_M + }, + summary: { + flexDirection: 'row', + justifyContent: 'space-between' } }) diff --git a/src/screens/Shared/Account/Toots.tsx b/src/screens/Shared/Account/Toots.tsx index 395e4383..73232df7 100644 --- a/src/screens/Shared/Account/Toots.tsx +++ b/src/screens/Shared/Account/Toots.tsx @@ -2,7 +2,7 @@ import React, { useRef, useState } from 'react' import { Dimensions, FlatList, View } from 'react-native' import SegmentedControl from '@react-native-community/segmented-control' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' export interface Props { id: Mastodon.Account['id'] diff --git a/src/screens/Shared/Hashtag.tsx b/src/screens/Shared/Hashtag.tsx index 939b8ff3..82c57a27 100644 --- a/src/screens/Shared/Hashtag.tsx +++ b/src/screens/Shared/Hashtag.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' // Show remote hashtag? Only when private, show local version? diff --git a/src/screens/Shared/Toot.tsx b/src/screens/Shared/Toot.tsx index 5d39feee..ead1d1b5 100644 --- a/src/screens/Shared/Toot.tsx +++ b/src/screens/Shared/Toot.tsx @@ -1,6 +1,6 @@ import React from 'react' -import Timeline from 'src/screens/Timelines/Timeline' +import Timeline from 'src/components/Timelines/Timeline' // Show remote hashtag? Only when private, show local version? diff --git a/src/utils/styles/ThemeManager.tsx b/src/utils/styles/ThemeManager.tsx new file mode 100644 index 00000000..b1d67293 --- /dev/null +++ b/src/utils/styles/ThemeManager.tsx @@ -0,0 +1,44 @@ +import React, { createContext, useContext, useEffect, useState } from 'react' +import { Appearance, useColorScheme } from 'react-native-appearance' +import { ColorDefinitions, getTheme } from 'src/utils/styles/themes' + +const osTheme = Appearance.getColorScheme() as 'light' | 'dark' + +export const ManageThemeContext: React.Context<{ + mode: 'light' | 'dark' + theme: { [key in ColorDefinitions]: string } + toggle: () => void +}> = createContext({ + mode: osTheme, + theme: getTheme(osTheme), + toggle: () => {} +}) + +export const useTheme = () => useContext(ManageThemeContext) + +const ThemeManager: React.FC = ({ children }) => { + const [mode, setMode] = useState(osTheme) + const systemTheme = useColorScheme() + + const toggleTheme = () => { + mode === 'light' ? setMode('dark') : setMode('light') + } + + useEffect(() => { + setMode(systemTheme === 'no-preference' ? 'light' : systemTheme) + }, [systemTheme]) + + return ( + + {children} + + ) +} + +export default ThemeManager diff --git a/src/utils/styles/constants.ts b/src/utils/styles/constants.ts new file mode 100644 index 00000000..5f8138e1 --- /dev/null +++ b/src/utils/styles/constants.ts @@ -0,0 +1,16 @@ +export default { + FONT_SIZE_S: 12, + FONT_SIZE_M: 14, + FONT_SIZE_L: 18, + + SPACING_XS: 4, + SPACING_S: 8, + SPACING_M: 16, + SPACING_L: 24, + SPACING_XL: 40, + + GLOBAL_PAGE_PADDING: 16, // SPACING_M + + AVATAR_S: 52, + AVATAR_L: 104 +} diff --git a/src/utils/styles/themes.ts b/src/utils/styles/themes.ts new file mode 100644 index 00000000..71afff72 --- /dev/null +++ b/src/utils/styles/themes.ts @@ -0,0 +1,80 @@ +import { DefaultTheme, DarkTheme } from '@react-navigation/native' + +export type ColorDefinitions = + | 'primary' + | 'secondary' + | 'background' + | 'link' + | 'border' + | 'separator' + +const themeColors: { + [key in ColorDefinitions]: { + light: string + dark: string + } +} = { + primary: { + light: 'rgb(0, 0, 0)', + dark: 'rgb(255, 255, 255)' + }, + secondary: { + light: 'rgb(153, 153, 153)', + dark: 'rgb(117, 117, 117)' + }, + background: { + light: 'rgb(255, 255, 255)', + dark: 'rgb(0, 0, 0)' + }, + link: { + light: 'rgb(0, 122, 255)', + dark: 'rgb(10, 132, 255)' + }, + border: { + light: 'rgba(0, 0, 0, 0.3)', + dark: 'rgba(255, 255, 255, 0.16)' + }, + separator: { + light: 'rgba(0, 0, 0, 0.1)', + dark: 'rgba(255, 255, 255, 0.1)' + } +} + +const getTheme = (mode: 'light' | 'dark') => { + let Theme = {} as { + [key in ColorDefinitions]: string + } + const keys = Object.keys(themeColors) as ColorDefinitions[] + keys.forEach(key => (Theme[key] = themeColors[key][mode])) + + return Theme +} + +const themes = { + light: { + ...DefaultTheme, + colors: { + ...DefaultTheme.colors, + primary: themeColors.primary.light, + background: themeColors.background.light, + card: themeColors.background.light || 'rgba(249, 249, 249, 0.94)', + text: themeColors.primary.light, + border: themeColors.border.light, + notification: 'rgb(255, 59, 48)' + } + }, + dark: { + ...DarkTheme, + colors: { + ...DarkTheme.colors, + primary: themeColors.primary.dark, + background: themeColors.background.dark, + card: themeColors.background.dark || 'rgba(22, 22, 22, 0.94)', + text: themeColors.primary.dark, + border: themeColors.border.dark, + notification: 'rgb(255, 69, 58)' + } + } +} + +export { themeColors, getTheme, themes } diff --git a/yarn.lock b/yarn.lock index f3a7409f..7a69b766 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.44", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== @@ -14,7 +14,29 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== -"@babel/core@^7.0.0", "@babel/core@~7.12.3": +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.0.0", "@babel/core@^7.4.5", "@babel/core@~7.12.3": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.7.tgz#bf55363c08c8352a37691f7216ec30090bf7e3bf" integrity sha512-tRKx9B53kJe8NCGGIxEQb2Bkr0riUIEuN7Sc1fxhs5H8lKlCWUvQCSNMVIB0Meva7hcbCRJ76de15KoLltdoqw== @@ -36,7 +58,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.5", "@babel/generator@^7.5.0": +"@babel/generator@^7.12.5", "@babel/generator@^7.5.0", "@babel/generator@^7.9.0": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== @@ -159,7 +181,7 @@ dependencies: "@babel/types" "^7.12.5" -"@babel/helper-module-transforms@^7.12.1": +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.9.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== @@ -246,7 +268,7 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.12.5": +"@babel/helpers@^7.12.5", "@babel/helpers@^7.9.0": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== @@ -264,7 +286,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.12.7": +"@babel/parser@^7.0.0", "@babel/parser@^7.12.7", "@babel/parser@^7.9.0": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056" integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg== @@ -285,7 +307,7 @@ "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.12.1": +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.4.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== @@ -342,7 +364,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.7.4": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== @@ -375,7 +397,7 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.7": +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.7.5": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== @@ -646,7 +668,7 @@ "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.12.1": +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.5.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== @@ -809,7 +831,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.5.0": +"@babel/plugin-transform-typescript@^7.12.1", "@babel/plugin-transform-typescript@^7.5.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== @@ -833,7 +855,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@^7.6.3": +"@babel/preset-env@^7.4.4", "@babel/preset-env@^7.6.3": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55" integrity sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew== @@ -916,6 +938,15 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-typescript@^7.3.3": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" + integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-transform-typescript" "^7.12.1" + "@babel/register@^7.0.0": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.12.1.tgz#cdb087bdfc4f7241c03231f22e15d211acf21438" @@ -927,14 +958,14 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.0.0", "@babel/template@^7.10.4", "@babel/template@^7.12.7": +"@babel/template@^7.0.0", "@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.8.6": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== @@ -943,7 +974,7 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.7": +"@babel/traverse@^7.0.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.7", "@babel/traverse@^7.9.0": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.7.tgz#572a722408681cef17d6b0bef69ef2e728ca69f1" integrity sha512-nMWaqsQEeSvMNypswUDzjqQ+0rR6pqCtoQpsqGJC4/Khm9cISwPTSpai57F6/jDaOoEGz8yE/WxcO3PV6tKSmQ== @@ -958,7 +989,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.4.4", "@babel/types@^7.9.0": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13" integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ== @@ -982,6 +1013,47 @@ dependencies: "@types/hammerjs" "^2.0.36" +"@expo/babel-preset-cli@0.2.18": + version "0.2.18" + resolved "https://registry.yarnpkg.com/@expo/babel-preset-cli/-/babel-preset-cli-0.2.18.tgz#136acf8a0efe259e29ebc614b68552e5acb47d86" + integrity sha512-y2IZFynVtRxMQ4uxXYUnrnXZa+pvSH1R1aSUAfC6RsUb2UNOxC6zRehdLGSOyF4s9Wy+j3/CPm6fC0T5UJYoQg== + dependencies: + "@babel/core" "^7.4.5" + "@babel/plugin-proposal-class-properties" "^7.4.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.7.4" + "@babel/plugin-proposal-optional-chaining" "^7.7.5" + "@babel/plugin-transform-modules-commonjs" "^7.5.0" + "@babel/preset-env" "^7.4.4" + "@babel/preset-typescript" "^7.3.3" + +"@expo/config-types@^40.0.0-beta.1": + version "40.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-40.0.0-beta.1.tgz#4192b120edc9ec235147329a50bd0a7da16ae89c" + integrity sha512-hTp+6ZIKK57O8qhVoO+GBCkx0UCdOhwcWxaXfjpsELIR8LfXDGz8OmCxTzGvb7nnadcrGCccHBX5dO1NmPBbmg== + +"@expo/config@^3.3.15": + version "3.3.15" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-3.3.15.tgz#8241eb575f3f9071dc0277b260906ab32eb9ca95" + integrity sha512-AxsmTd0JtJTiaYos+maWCMjQOAVcN/Z+edj0SUUh46O3003LBnr7SZCOysqmtwY2437MD5IkzU/YL9wkQYuWtw== + dependencies: + "@babel/core" "7.9.0" + "@expo/babel-preset-cli" "0.2.18" + "@expo/config-types" "^40.0.0-beta.1" + "@expo/configure-splash-screen" "0.2.1" + "@expo/image-utils" "0.3.7" + "@expo/json-file" "8.2.24" + "@expo/plist" "0.0.10" + fs-extra "9.0.0" + glob "7.1.6" + invariant "^2.2.4" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + semver "^7.1.3" + slash "^3.0.0" + slugify "^1.3.4" + xcode "^2.1.0" + xml2js "^0.4.23" + "@expo/configure-splash-screen@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.2.0.tgz#84f9f71363259f16fd0073636a198c750a3cdd7c" @@ -999,6 +1071,67 @@ xcode "^3.0.0" xml-js "^1.6.11" +"@expo/configure-splash-screen@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.2.1.tgz#de29b781990d32d9f48d630b912aaf017afccbf3" + integrity sha512-6n7ji1WKDCdLe2Mto4u4W72kTLhAbhXhC7ydVk1HxDYCcbewNLfgiwhchPtPGyUMnSDizVWph5aDoiKxqVHqNQ== + dependencies: + "@react-native-community/cli-platform-android" "^4.10.0" + "@react-native-community/cli-platform-ios" "^4.10.0" + color-string "^1.5.3" + commander "^5.1.0" + core-js "^3.6.5" + deep-equal "^2.0.3" + fs-extra "^9.0.0" + lodash "^4.17.15" + pngjs "^5.0.0" + xcode "^3.0.0" + xml-js "^1.6.11" + +"@expo/image-utils@0.3.7": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.7.tgz#48436a5f509818dc43a30f73dbfd4baed88a5f23" + integrity sha512-Vo1p5uv1JlRacgVIiVa+83oRoHfC7grSU8cypAtgvOYpbmdCWR8+3F4v+vaabHe6ktvIKRE78jh6vHMGwv2aOA== + dependencies: + "@expo/spawn-async" "1.5.0" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "0.7.0" + jimp "^0.9.6" + mime "^2.4.4" + node-fetch "^2.6.0" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "6.1.1" + tempy "0.3.0" + +"@expo/json-file@8.2.24": + version "8.2.24" + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.24.tgz#02a9dd75c9ca6d70d4cc04729f0586eb80bcd1ba" + integrity sha512-i34lfcMVt5Wv2Cf5apZUj3o9JlFt8WOPSZjrECryunBQ9/BsQQYY5NHgGjhhZnnRE+6JFf0CPQTjXdoQ1w3w0w== + dependencies: + "@babel/code-frame" "^7.0.0-beta.44" + fs-extra "9.0.0" + json5 "^1.0.1" + lodash "^4.17.15" + write-file-atomic "^2.3.0" + +"@expo/plist@0.0.10": + version "0.0.10" + resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.10.tgz#e126a15543c6c67fd159947ca9e35969657a97f4" + integrity sha512-uKbi7ANPCNJqeAvxLa+ZcS/Qf0fTPOySMqw5T2L4TrycSAdiAxV1VUZ69IzIbUsWb7GdriUVR2i38M/xa6+BvA== + dependencies: + base64-js "^1.2.3" + xmlbuilder "^14.0.0" + xmldom "~0.1.31" + +"@expo/spawn-async@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.5.0.tgz#799827edd8c10ef07eb1a2ff9dcfe081d596a395" + integrity sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew== + dependencies: + cross-spawn "^6.0.5" + "@expo/vector-icons@^10.0.0", "@expo/vector-icons@^10.0.2": version "10.2.1" resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-10.2.1.tgz#47fb2fa12d7ad601835babde6bd3ddea7f6fde89" @@ -1104,6 +1237,325 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@jimp/bmp@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.9.8.tgz#5933ab8fb359889bec380b0f7802163374933624" + integrity sha512-CZYQPEC3iUBMuaGWrtIG+GKNl93q/PkdudrCKJR/B96dfNngsmoosEm3LuFgJHEcJIfvnJkNqKw74l+zEiqCbg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + bmp-js "^0.1.0" + core-js "^3.4.1" + +"@jimp/core@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.9.8.tgz#b2b74263a80559c0ee244e0f2d1052b36a358b85" + integrity sha512-N4GCjcXb0QwR5GBABDK2xQ3cKyaF7LlCYeJEG9mV7G/ynBoRqJe4JA6YKU9Ww9imGkci/4A594nQo8tUIqdcBw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + any-base "^1.1.0" + buffer "^5.2.0" + core-js "^3.4.1" + exif-parser "^0.1.12" + file-type "^9.0.0" + load-bmfont "^1.3.1" + mkdirp "^0.5.1" + phin "^2.9.1" + pixelmatch "^4.0.2" + tinycolor2 "^1.4.1" + +"@jimp/custom@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.9.8.tgz#1e9d904b1b05aa22b00b899baba2be7c0704a5d1" + integrity sha512-1UpJjI7fhX02BWLJ/KEqPwkHH60eNkCNeD6hEd+IZdTwLXfZCfFiM5BVlpgiZYZJSsVoRiAL4ne2Q5mCiKPKyw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/core" "^0.9.8" + core-js "^3.4.1" + +"@jimp/gif@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.9.8.tgz#513aff511634c338d1ab33a7bba1ba3412220b5b" + integrity sha512-LEbfpcO1sBJIQCJHchZjNlyNxzPjZQQ4X32klpQHZJG58n9FvL7Uuh1rpkrJRbqv3cU3P0ENNtTrsBDxsYwcfA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + omggif "^1.0.9" + +"@jimp/jpeg@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.9.8.tgz#8c086f69d0e8c46e43a7db9725576edc30925cb1" + integrity sha512-5u29SUzbZ32ZMmOaz3gO0hXatwSCnsvEAXRCKZoPPgbsPoyFAiZKVxjfLzjkeQF6awkvJ8hZni5chM15SNMg+g== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + jpeg-js "^0.3.4" + +"@jimp/plugin-blit@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-blit/-/plugin-blit-0.9.8.tgz#916bf6f261e6a91dbecca0ca866b8d9cba563753" + integrity sha512-6xTDomxJybhBcby1IUVaPydZFhxf+V0DRgfDlVK81kR9kSCoshJpzWqDuWrMqjNEPspPE7jRQwHMs0FdU7mVwQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-blur@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-blur/-/plugin-blur-0.9.8.tgz#00055d54b90532b7951dae377b3e40352c187f07" + integrity sha512-dqbxuNFBRbmt35iIRacdgma7nlXklmPThsKcGWNTDmqb/hniK5IC+0xSPzBV4qMI2fLGP39LWHqqDZ0xDz14dA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-circle@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-circle/-/plugin-circle-0.9.8.tgz#5de8735f32f931d9160d0f5211e9aab6413a1d4b" + integrity sha512-+UStXUPCzPqzTixLC8eVqcFcEa6TS+BEM/6/hyM11TDb9sbiMGeUtgpwZP/euR5H5gfpAQDA1Ppzqhh5fuMDlw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-color@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-color/-/plugin-color-0.9.8.tgz#3c633f22955a4f5013025e9e9e78a267ac4c3a88" + integrity sha512-SDHxOQsJHpt75hk6+sSlCPc2B3UJlXosFW+iLZ11xX1Qr0IdDtbfYlIoPmjKQFIDUNzqLSue/z7sKQ1OMZr/QA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + tinycolor2 "^1.4.1" + +"@jimp/plugin-contain@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-contain/-/plugin-contain-0.9.8.tgz#f892fb7fc87134a47b37281f0ff17d608f3e51af" + integrity sha512-oK52CPt7efozuLYCML7qOmpFeDt3zpU8qq8UZlnjsDs15reU6L8EiUbwYpJvzoEnEOh1ZqamB8F/gymViEO5og== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-cover@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-cover/-/plugin-cover-0.9.8.tgz#37474b19027ac0155100b71ca17266aab19e50fc" + integrity sha512-nnamtHzMrNd5j5HRSPd1VzpZ8v9YYtUJPtvCdHOOiIjqG72jxJ2kTBlsS3oG5XS64h/2MJwpl/fmmMs1Tj1CmQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-crop@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-crop/-/plugin-crop-0.9.8.tgz#2308696597a8bcb528d09eeebbbadb22248e7c1c" + integrity sha512-Nv/6AIp4aJmbSIH2uiIqm+kSoShKM8eaX2fyrUTj811kio0hwD3f/vIxrWebvAqwDZjAFIAmMufFoFCVg6caoQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-displace@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-displace/-/plugin-displace-0.9.8.tgz#00331047039cb2d0d9d5f7c3d8ce542e07eea791" + integrity sha512-0OgPjkOVa2xdbqI8P6gBKX/UK36RbaYVrFyXL8Jy9oNF69+LYWyTskuCu9YbGxzlCVjY/JFqQOvrKDbxgMYAKA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-dither@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-dither/-/plugin-dither-0.9.8.tgz#9cca12997f2917f27d5681275b32affdb3083450" + integrity sha512-jGM/4ByniZJnmV2fv8hKwyyydXZe/YzvgBcnB8XxzCq8kVR3Imcn+qnd2PEPZzIPKOTH4Cig/zo9Vk9Bs+m5FQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-fisheye@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-fisheye/-/plugin-fisheye-0.9.8.tgz#e3f5f616ec06a9ef99aa268446f0096eac863437" + integrity sha512-VnsalrD05f4pxG1msjnkwIFi5QveOqRm4y7VkoZKNX+iqs4TvRnH5+HpBnfdMzX/RXBi+Lf/kpTtuZgbOu/QWw== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-flip@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-flip/-/plugin-flip-0.9.8.tgz#c00559a8543a684c7cff4d1128b7152e598fbb1c" + integrity sha512-XbiZ4OfHD6woc0f6Sk7XxB6a7IyMjTRQ4pNU7APjaNxsl3L6qZC8qfCQphWVe3DHx7f3y7jEiPMvNnqRDP1xgA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-gaussian@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-gaussian/-/plugin-gaussian-0.9.8.tgz#d1666167ce1b947b65db5093bb9a00d319bcfe4d" + integrity sha512-ZBl5RA6+4XAD+mtqLfiG7u+qd8W5yqq3RBNca8eFqUSVo1v+eB2tzeLel0CWfVC/z6cw93Awm/nVnm6/CL2Oew== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-invert@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-invert/-/plugin-invert-0.9.8.tgz#41d6e87faf01a5d8fe7554e322d2aad25f596ab1" + integrity sha512-ESploqCoF6qUv5IWhVLaO5fEcrYZEsAWPFflh6ROiD2mmFKQxfeK+vHnk3IDLHtUwWTkAZQNbk89BVq7xvaNpQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-mask@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-mask/-/plugin-mask-0.9.8.tgz#fe92132db1a2b9f7718226bc3c37794dd148ce36" + integrity sha512-zSvEisTV4iGsBReitEdnQuGJq9/1xB5mPATadYZmIlp8r5HpD72HQb0WdEtb51/pu9Odt8KAxUf0ASg/PRVUiQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-normalize@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-normalize/-/plugin-normalize-0.9.8.tgz#05646aa15b6a789c4ba447edcad77c83c1d51f16" + integrity sha512-dPFBfwTa67K1tRw1leCidQT25R3ozrTUUOpO4jcGFHqXvBTWaR8sML1qxdfOBWs164mE5YpfdTvu6MM/junvCg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-print@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-print/-/plugin-print-0.9.8.tgz#808f723176d0a57186d7558290c7e53a7a8bf812" + integrity sha512-nLLPv1/faehRsOjecXXUb6kzhRcZzImO55XuFZ0c90ZyoiHm4UFREwO5sKxHGvpLXS6RnkhvSav4+IWD2qGbEQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + load-bmfont "^1.4.0" + +"@jimp/plugin-resize@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.9.8.tgz#eef750b77f1cc06e8bcf9b390860c95c489dcc02" + integrity sha512-L80NZ+HKsiKFyeDc6AfneC4+5XACrdL2vnyAVfAAsb3pmamgT/jDInWvvGhyI0Y76vx2w6XikplzEznW/QQvWg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-rotate@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-rotate/-/plugin-rotate-0.9.8.tgz#5eba01f75a397777c6782b7999c9ac6c7ed8a411" + integrity sha512-bpqzQheISYnBXKyU1lIj46uR7mRs0UhgEREWK70HnvFJSlRshdcoNMIrKamyrJeFdJrkYPSfR/a6D0d5zsWf1Q== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-scale@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-scale/-/plugin-scale-0.9.8.tgz#c875d5e0b377b15b8b398ee402f45e3fc43fea40" + integrity sha512-QU3ZS4Lre8nN66U9dKCOC4FNfaOh/QJFYUmQPKpPS924oYbtnm4OlmsdfpK2hVMSVVyVOis8M+xpA1rDBnIp7w== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-shadow@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-shadow/-/plugin-shadow-0.9.8.tgz#ca2d18afa29a1027b77b3e1fb2ce7d4e073a7170" + integrity sha512-t/pE+QS3r1ZUxGIQNmwWDI3c5+/hLU+gxXD+C3EEC47/qk3gTBHpj/xDdGQBoObdT/HRjR048vC2BgBfzjj2hg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugin-threshold@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugin-threshold/-/plugin-threshold-0.9.8.tgz#2d1dde0791f70b2ff2d0b915cab8d40b0e446594" + integrity sha512-WWmC3lnIwOTPvkKu55w4DUY8Ehlzf3nU98bY0QtIzkqxkAOZU5m+lvgC/JxO5FyGiA57j9FLMIf0LsWkjARj7g== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + +"@jimp/plugins@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/plugins/-/plugins-0.9.8.tgz#5279dfe22d0d27633f4201ab36103e587b32eb85" + integrity sha512-tD+cxS9SuEZaQ1hhAkNKw9TkUAqfoBAhdWPBrEZDr/GvGPrvJR4pYmmpSYhc5IZmMbXfQayHTTGqjj8D18bToA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/plugin-blit" "^0.9.8" + "@jimp/plugin-blur" "^0.9.8" + "@jimp/plugin-circle" "^0.9.8" + "@jimp/plugin-color" "^0.9.8" + "@jimp/plugin-contain" "^0.9.8" + "@jimp/plugin-cover" "^0.9.8" + "@jimp/plugin-crop" "^0.9.8" + "@jimp/plugin-displace" "^0.9.8" + "@jimp/plugin-dither" "^0.9.8" + "@jimp/plugin-fisheye" "^0.9.8" + "@jimp/plugin-flip" "^0.9.8" + "@jimp/plugin-gaussian" "^0.9.8" + "@jimp/plugin-invert" "^0.9.8" + "@jimp/plugin-mask" "^0.9.8" + "@jimp/plugin-normalize" "^0.9.8" + "@jimp/plugin-print" "^0.9.8" + "@jimp/plugin-resize" "^0.9.8" + "@jimp/plugin-rotate" "^0.9.8" + "@jimp/plugin-scale" "^0.9.8" + "@jimp/plugin-shadow" "^0.9.8" + "@jimp/plugin-threshold" "^0.9.8" + core-js "^3.4.1" + timm "^1.6.1" + +"@jimp/png@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.9.8.tgz#f88dacc9b9da1c2ea8e91026a9530d0fb45c4409" + integrity sha512-9CqR8d40zQCDhbnXHqcwkAMnvlV0vk9xSyE6LHjkYHS7x18Unsz5txQdsaEkEcXxCrOQSoWyITfLezlrWXRJAA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.9.8" + core-js "^3.4.1" + pngjs "^3.3.3" + +"@jimp/tiff@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.9.8.tgz#91dc3eab2f222e23414f139e917f3407caa73560" + integrity sha512-eMxcpJivJqMByn2dZxUHLeh6qvVs5J/52kBF3TFa3C922OJ97D9l1C1h0WKUCBqFMWzMYapQQ4vwnLgpJ5tkow== + dependencies: + "@babel/runtime" "^7.7.2" + core-js "^3.4.1" + utif "^2.0.1" + +"@jimp/types@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.9.8.tgz#46980a4a7bfcadf2f0484d187c32b4e7d6d61b8e" + integrity sha512-H5y/uqt0lqJ/ZN8pWqFG+pv8jPAppMKkTMByuC8YBIjWSsornwv44hjiWl93sbYhduLZY8ubz/CbX9jH2X6EwA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/bmp" "^0.9.8" + "@jimp/gif" "^0.9.8" + "@jimp/jpeg" "^0.9.8" + "@jimp/png" "^0.9.8" + "@jimp/tiff" "^0.9.8" + core-js "^3.4.1" + timm "^1.6.1" + +"@jimp/utils@^0.9.8": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.9.8.tgz#6a6f47158ec6b424f03df0f55f0baff5b4b5e096" + integrity sha512-UK0Fu0eevQlpRXq5ff4o/71HJlpX9wJMddJjMYg9vUqCCl8ZnumRAljfShHFhGyO+Vc9IzN6dd8Y5JZZTp1KOw== + dependencies: + "@babel/runtime" "^7.7.2" + core-js "^3.4.1" + "@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" @@ -1224,6 +1676,11 @@ sudo-prompt "^9.0.0" wcwidth "^1.0.1" +"@react-native-community/masked-view@0.1.10": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.10.tgz#5dda643e19e587793bc2034dd9bf7398ad43d401" + integrity sha512-rk4sWFsmtOw8oyx8SD3KSvawwaK7gRBSEIy2TAwURyGt+3TizssXP1r8nx3zY+R7v2vYYHXZ+k2/GULAT/bcaQ== + "@react-native-community/segmented-control@2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@react-native-community/segmented-control/-/segmented-control-2.1.1.tgz#e3a0934b79e7bd64b84215366989bb26b850ca06" @@ -1549,6 +2006,11 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1759,7 +2221,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0: +base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -1794,6 +2256,11 @@ blueimp-md5@^2.10.0: resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.18.0.tgz#1152be1335f0c6b3911ed9e36db54f3e6ac52935" integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== +bmp-js@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" + integrity sha1-4Fpj95amwf8l9Hcex62twUjAcjM= + bplist-creator@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.8.tgz#56b2a6e79e9aec3fc33bf831d09347d73794e79c" @@ -1868,6 +2335,11 @@ buffer-crc32@^0.2.13: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -1878,6 +2350,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer@^5.2.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1964,6 +2444,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -2199,7 +2687,7 @@ core-js@^2.2.2, core-js@^2.4.1: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== -core-js@^3.6.5: +core-js@^3.4.1, core-js@^3.6.5: version "3.7.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f" integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA== @@ -2239,6 +2727,11 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + csstype@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.5.tgz#7fdec6a28a67ae18647c51668a9ff95bb2fa7bb8" @@ -2357,6 +2850,11 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + domelementtype@1, domelementtype@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -2582,6 +3080,11 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" + integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI= + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2907,6 +3410,11 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-type@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-9.0.0.tgz#a68d5ad07f486414dfb2c8866f73161946714a18" + integrity sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw== + 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" @@ -3001,6 +3509,16 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-extra@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" @@ -3078,7 +3596,12 @@ get-value@^2.0.3, get-value@^2.0.6: resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= -glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: +getenv@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/getenv/-/getenv-0.7.0.tgz#39b91838707e2086fd1cf6ef8777d1c93e14649e" + integrity sha1-ObkYOHB+IIb9HPbvh3fRyT4UZJ4= + +glob@7.1.6, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3090,6 +3613,14 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +global@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= + dependencies: + min-document "^2.19.0" + process "~0.5.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -3215,6 +3746,11 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + image-size@^0.6.0: version "0.6.3" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" @@ -3415,6 +3951,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + is-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" @@ -3641,6 +4182,23 @@ jetifier@^1.6.2: resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.6.tgz#fec8bff76121444c12dc38d2dad6767c421dab68" integrity sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ== +jimp@^0.9.6: + version "0.9.8" + resolved "https://registry.yarnpkg.com/jimp/-/jimp-0.9.8.tgz#2ee87b81b42e723ad74c73b8012f879c0abe5b04" + integrity sha512-DHN4apKMwLIvD/TKO9tFfPuankNuVK98vCwHm/Jv9z5cJnrd38xhi+4I7IAGmDU3jIDlrEVhzTkFH1Ymv5yTQQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/custom" "^0.9.8" + "@jimp/plugins" "^0.9.8" + "@jimp/types" "^0.9.8" + core-js "^3.4.1" + regenerator-runtime "^0.13.3" + +jpeg-js@^0.3.4: + version "0.3.7" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.3.7.tgz#471a89d06011640592d314158608690172b1028d" + integrity sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3686,6 +4244,13 @@ json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -3767,6 +4332,20 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +load-bmfont@^1.3.1, load-bmfont@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" + integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== + dependencies: + buffer-equal "0.0.1" + mime "^1.3.4" + parse-bmfont-ascii "^1.0.3" + parse-bmfont-binary "^1.0.5" + parse-bmfont-xml "^1.1.4" + phin "^2.9.1" + xhr "^2.0.1" + xtend "^4.0.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -3795,7 +4374,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, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.0: +lodash@^4, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.5.0, lodash@^4.6.0: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -4247,12 +4826,12 @@ mime-types@~2.1.24: dependencies: mime-db "1.44.0" -mime@1.6.0: +mime@1.6.0, mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.1: +mime@^2.4.1, mime@^2.4.4: version "2.4.6" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== @@ -4262,6 +4841,13 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -4483,6 +5069,11 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +omggif@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -4588,6 +5179,34 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@^1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parse-bmfont-ascii@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" + integrity sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU= + +parse-bmfont-binary@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" + integrity sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY= + +parse-bmfont-xml@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.4.5" + +parse-headers@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" + integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4601,6 +5220,13 @@ parse-node-version@^1.0.0: resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== +parse-png@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-png/-/parse-png-2.1.0.tgz#2a42ad719fedf90f81c59ebee7ae59b280d6b338" + integrity sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ== + dependencies: + pngjs "^3.3.0" + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -4648,6 +5274,11 @@ path-to-regexp@^1.8.0: dependencies: isarray "0.0.1" +phin@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" + integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -4660,6 +5291,13 @@ pirates@^4.0.0: dependencies: node-modules-regexp "^1.0.0" +pixelmatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" + integrity sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ= + dependencies: + pngjs "^3.0.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -4701,6 +5339,11 @@ plugin-error@^0.1.2: arr-union "^2.0.1" extend-shallow "^1.1.2" +pngjs@^3.0.0, pngjs@^3.3.0, pngjs@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + pngjs@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" @@ -4754,6 +5397,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= + promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -4851,6 +5499,15 @@ react-is@^16.12.0, react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0, react resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-native-appearance@~0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/react-native-appearance/-/react-native-appearance-0.3.4.tgz#2cbcbc5142cdc1898c116684f519b16c879cbec2" + integrity sha512-Vz3zdJbAEiMDwuw6wH98TT1WVfBvWjvANutYtkIbl16KGRCigtSgt6IIiLsF3/TSS3y3FtHhWDelFeGw/rtuig== + dependencies: + fbemitter "^2.1.1" + invariant "^2.2.4" + use-subscription "^1.0.0" + react-native-collapsible@^1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/react-native-collapsible/-/react-native-collapsible-1.5.3.tgz#d6bc7274ae8f40f7688cca23ededa263e6c81c63" @@ -5055,7 +5712,7 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -5127,6 +5784,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -5152,6 +5814,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -5251,7 +5918,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.1, sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.1, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -5264,6 +5931,11 @@ scheduler@0.19.1, scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +semver@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -5279,6 +5951,11 @@ semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.1.3: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -5418,6 +6095,11 @@ slide@^1.1.5: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= +slugify@^1.3.4: + version "1.4.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace" + integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5580,20 +6262,20 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.0" string.prototype.trimend@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" - integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" string.prototype.trimstart@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" - integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" string_decoder@~1.1.1: version "1.1.1" @@ -5664,6 +6346,11 @@ symbol-observable@^1.2.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + temp@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -5672,6 +6359,15 @@ temp@0.8.3: os-tmpdir "^1.0.0" rimraf "~2.2.6" +tempy@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + throat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -5695,11 +6391,21 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= +timm@^1.6.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" + integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== + tiny-queue@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" integrity sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY= +tinycolor2@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" + integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -5752,6 +6458,11 @@ tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + type-fest@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" @@ -5873,6 +6584,13 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -5926,6 +6644,13 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +utif@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" + integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== + dependencies: + pako "^1.0.5" + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -6062,6 +6787,15 @@ write-file-atomic@^1.2.0: imurmurhash "^0.1.4" slide "^1.1.5" +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" + signal-exit "^3.0.2" + ws@^1.1.0, ws@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" @@ -6075,7 +6809,7 @@ ws@^7: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== -xcode@^2.0.0: +xcode@^2.0.0, xcode@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" integrity sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ== @@ -6091,6 +6825,16 @@ xcode@^3.0.0: simple-plist "^1.1.0" uuid "^7.0.3" +xhr@^2.0.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" + integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + xml-js@^1.6.11: version "1.6.11" resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" @@ -6098,11 +6842,34 @@ xml-js@^1.6.11: dependencies: sax "^1.2.4" +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" + integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= + +xml2js@^0.4.23, xml2js@^0.4.5: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c" + integrity sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg== + xmlbuilder@^9.0.7: version "9.0.7" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + xmldoc@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-1.1.2.tgz#6666e029fe25470d599cd30e23ff0d1ed50466d7" @@ -6110,7 +6877,7 @@ xmldoc@^1.1.2: dependencies: sax "^1.2.1" -xmldom@0.1.x: +xmldom@0.1.x, xmldom@~0.1.31: version "0.1.31" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff" integrity sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ== @@ -6120,7 +6887,7 @@ xpipe@^1.0.5: resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98= -xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==