diff --git a/package.json b/package.json index 7d7f4f16..519f05d4 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@react-navigation/native": "^5.8.6", "@reduxjs/toolkit": "^1.4.0", "axios": "^0.21.0", + "crypto-js": "^3.3.0", "expo": "~39.0.4", "expo-auth-session": "~2.0.0", "expo-av": "~8.6.0", @@ -55,6 +56,7 @@ "@babel/core": "~7.12.3", "@babel/plugin-proposal-optional-chaining": "^7.12.1", "@expo/config": "^3.3.15", + "@types/crypto-js": "^4.0.1", "@types/lodash": "^4.14.164", "@types/node": "^14.14.7", "@types/react": "~16.9.35", @@ -67,4 +69,4 @@ "typescript": "~3.9.2" }, "private": true -} +} \ No newline at end of file diff --git a/src/components/Timelines/Timeline/Shared/Content.tsx b/src/components/Timelines/Timeline/Shared/Content.tsx index 9e4ffb96..0cdf97d7 100644 --- a/src/components/Timelines/Timeline/Shared/Content.tsx +++ b/src/components/Timelines/Timeline/Shared/Content.tsx @@ -21,7 +21,11 @@ const TimelineContent: React.FC = ({ status, numberOfLines }) => { {status.spoiler_text ? ( <> - {status.spoiler_text}{' '} + {' '} setSpoilerCollapsed(!spoilerCollapsed)} style={{ diff --git a/src/components/Timelines/Timeline/Shared/HeaderDefault/ActionsAccount.tsx b/src/components/Timelines/Timeline/Shared/HeaderDefault/ActionsAccount.tsx index 78f265f5..6518e06d 100644 --- a/src/components/Timelines/Timeline/Shared/HeaderDefault/ActionsAccount.tsx +++ b/src/components/Timelines/Timeline/Shared/HeaderDefault/ActionsAccount.tsx @@ -119,7 +119,7 @@ const HeaderDefaultActionsAccount: React.FC = ({ id: accountId }) }} - iconFront='alert-triangle' + iconFront='flag' title={`举报 @${account}`} /> diff --git a/src/screens/Shared/Compose.tsx b/src/screens/Shared/Compose.tsx index bb987a2f..81a22ef8 100644 --- a/src/screens/Shared/Compose.tsx +++ b/src/screens/Shared/Compose.tsx @@ -1,24 +1,41 @@ import React, { ReactNode, useEffect, useReducer, useState } from 'react' -import { Alert, Keyboard, KeyboardAvoidingView } from 'react-native' +import { + ActivityIndicator, + Alert, + Keyboard, + KeyboardAvoidingView, + StyleSheet, + Text +} from 'react-native' import { SafeAreaView } from 'react-native-safe-area-context' import { createNativeStackNavigator } from 'react-native-screens/native-stack' import { useNavigation } from '@react-navigation/native' +import sha256 from 'crypto-js/sha256' import { store } from 'src/store' import ComposeRoot from './Compose/Root' import client from 'src/api/client' import { getLocalAccountPreferences } from 'src/utils/slices/instancesSlice' import { HeaderLeft, HeaderRight } from 'src/components/Header' +import { StyleConstants } from 'src/utils/styles/constants' +import { useTheme } from 'src/utils/styles/ThemeManager' const Stack = createNativeStackNavigator() export type PostState = { + spoiler: { + active: boolean + count: number + raw: string + formatted: ReactNode + selection: { start: number; end: number } + } text: { count: number raw: string formatted: ReactNode + selection: { start: number; end: number } } - selection: { start: number; end: number } tag: | { type: 'url' | 'accounts' | 'hashtags' @@ -57,12 +74,12 @@ export type PostState = { export type PostAction = | { - type: 'text' - payload: Partial + type: 'spoiler' + payload: Partial } | { - type: 'selection' - payload: PostState['selection'] + type: 'text' + payload: Partial } | { type: 'tag' @@ -94,22 +111,29 @@ export type PostAction = } const postInitialState: PostState = { - text: { - count: 500, + spoiler: { + active: false, + count: 0, raw: '', - formatted: undefined + formatted: undefined, + selection: { start: 0, end: 0 } + }, + text: { + count: 0, + raw: '', + formatted: undefined, + selection: { start: 0, end: 0 } }, - selection: { start: 0, end: 0 }, tag: undefined, emoji: { active: false, emojis: undefined }, poll: { active: false, total: 2, options: { + '0': undefined, '1': undefined, '2': undefined, - '3': undefined, - '4': undefined + '3': undefined }, multiple: false, expire: '86400' @@ -123,10 +147,10 @@ const postInitialState: PostState = { } const postReducer = (state: PostState, action: PostAction): PostState => { switch (action.type) { + case 'spoiler': + return { ...state, spoiler: { ...state.spoiler, ...action.payload } } case 'text': return { ...state, text: { ...state.text, ...action.payload } } - case 'selection': - return { ...state, selection: action.payload } case 'tag': return { ...state, tag: action.payload } case 'emoji': @@ -152,8 +176,11 @@ const postReducer = (state: PostState, action: PostAction): PostState => { } const Compose: React.FC = () => { + const { theme } = useTheme() const navigation = useNavigation() + const [isSubmitting, setIsSubmitting] = useState(false) + const [hasKeyboard, setHasKeyboard] = useState(false) useEffect(() => { Keyboard.addListener('keyboardWillShow', _keyboardDidShow) @@ -175,6 +202,7 @@ const Compose: React.FC = () => { const [postState, postDispatch] = useReducer(postReducer, postInitialState) const tootPost = async () => { + setIsSubmitting(true) if (postState.text.count < 0) { Alert.alert('字数超限', '', [ { @@ -184,6 +212,10 @@ const Compose: React.FC = () => { } else { const formData = new FormData() + if (postState.spoiler.active) { + formData.append('spoiler_text', postState.spoiler.raw) + } + formData.append('status', postState.text.raw) if (postState.poll.active) { @@ -207,13 +239,25 @@ const Compose: React.FC = () => { instance: 'local', url: 'statuses', headers: { - 'Idempotency-Key': Date.now().toString() + Math.random().toString() + 'Idempotency-Key': sha256( + postState.spoiler.raw + + postState.text.raw + + postState.poll.options['0'] + + postState.poll.options['1'] + + postState.poll.options['2'] + + postState.poll.options['3'] + + postState.poll.multiple + + postState.poll.expire + + postState.attachments.map(attachment => attachment.id) + + postState.visibility + ).toString() }, body: formData }) .then( res => { if (res.body.id) { + setIsSubmitting(false) Alert.alert('发布成功', '', [ { text: '好的', @@ -224,6 +268,7 @@ const Compose: React.FC = () => { } ]) } else { + setIsSubmitting(false) Alert.alert('发布失败', '', [ { text: '返回重试' @@ -232,6 +277,7 @@ const Compose: React.FC = () => { } }, error => { + setIsSubmitting(false) Alert.alert('发布失败', error.body, [ { text: '返回重试' @@ -240,6 +286,7 @@ const Compose: React.FC = () => { } ) .catch(() => { + setIsSubmitting(false) Alert.alert('发布失败', '', [ { text: '返回重试' @@ -249,6 +296,10 @@ const Compose: React.FC = () => { } } + const totalTextCount = + (postState.spoiler.active ? postState.spoiler.count : 0) + + postState.text.count + return ( { text='退出编辑' /> ), - headerCenter: () => <>, - headerRight: () => ( - tootPost()} - text='发嘟嘟' - disabled={ - postState.text.raw.length < 1 || postState.text.count < 0 - } - /> - ) + headerCenter: () => ( + 500 ? theme.error : theme.secondary + } + ]} + > + {totalTextCount} / 500 + + ), + headerRight: () => + isSubmitting ? ( + + ) : ( + tootPost()} + text='发嘟嘟' + disabled={ + postState.text.raw.length < 1 || totalTextCount > 500 + } + /> + ) }} > {() => ( @@ -296,4 +362,11 @@ const Compose: React.FC = () => { ) } +const styles = StyleSheet.create({ + count: { + textAlign: 'center', + fontSize: StyleConstants.Font.Size.M + } +}) + export default Compose diff --git a/src/screens/Shared/Compose/Actions.tsx b/src/screens/Shared/Compose/Actions.tsx index 78e90a36..2290709a 100644 --- a/src/screens/Shared/Compose/Actions.tsx +++ b/src/screens/Shared/Compose/Actions.tsx @@ -169,20 +169,23 @@ const ComposeActions: React.FC = ({ ) } /> + + postDispatch({ + type: 'spoiler', + payload: { active: !postState.spoiler.active } + }) + } + /> - - {postState.text.count} - ) } diff --git a/src/screens/Shared/Compose/Emojis.tsx b/src/screens/Shared/Compose/Emojis.tsx index 590f9692..ff4b1c7b 100644 --- a/src/screens/Shared/Compose/Emojis.tsx +++ b/src/screens/Shared/Compose/Emojis.tsx @@ -48,12 +48,14 @@ const ComposeEmojis: React.FC = ({ key={emoji.shortcode} onPress={() => { updateText({ + origin: textInputRef.current?.isFocused() + ? 'text' + : 'spoiler', postState, postDispatch, newText: `:${emoji.shortcode}:`, type: 'emoji' }) - textInputRef.current?.focus() postDispatch({ type: 'emoji', payload: { ...postState.emoji, active: false } diff --git a/src/screens/Shared/Compose/Root.tsx b/src/screens/Shared/Compose/Root.tsx index 8798cf5f..59fbd3d1 100644 --- a/src/screens/Shared/Compose/Root.tsx +++ b/src/screens/Shared/Compose/Root.tsx @@ -22,6 +22,7 @@ import ComposeActions from './Actions' import ComposeAttachments from './Attachments' import ComposeEmojis from './Emojis' import ComposePoll from './Poll' +import ComposeSpoilerInput from './SpoilerInput' import ComposeTextInput from './TextInput' import updateText from './updateText' import * as Permissions from 'expo-permissions' @@ -94,11 +95,19 @@ const ComposeRoot: React.FC = ({ postState, postDispatch }) => { + <> + {postState.spoiler.active ? ( + + ) : null} + + } ListFooterComponent={ <> @@ -138,19 +147,26 @@ const ComposeRoot: React.FC = ({ postState, postDispatch }) => { { + const focusedInput = textInputRef.current?.isFocused() + ? 'text' + : 'spoiler' updateText({ + origin: focusedInput, postState: { ...postState, - selection: { - start: postState.tag!.offset, - end: postState.tag!.offset + postState.tag!.text.length + 1 + [focusedInput]: { + ...postState[focusedInput], + selection: { + start: postState.tag!.offset, + end: + postState.tag!.offset + postState.tag!.text.length + 1 + } } }, postDispatch, newText: item.acct ? `@${item.acct}` : `#${item.name}`, type: 'suggestion' }) - textInputRef.current?.focus() }} style={styles.suggestion} > diff --git a/src/screens/Shared/Compose/SpoilerInput.tsx b/src/screens/Shared/Compose/SpoilerInput.tsx new file mode 100644 index 00000000..2fe45f89 --- /dev/null +++ b/src/screens/Shared/Compose/SpoilerInput.tsx @@ -0,0 +1,77 @@ +import React, { Dispatch, RefObject } from 'react' +import { StyleSheet, Text, TextInput } from 'react-native' +import { StyleConstants } from 'src/utils/styles/constants' +import { useTheme } from 'src/utils/styles/ThemeManager' +import { PostAction, PostState } from '../Compose' +import formatText from './formatText' + +export interface Props { + postState: PostState + postDispatch: Dispatch + // textInputRef: RefObject +} + +const ComposeSpoilerInput: React.FC = ({ + postState, + postDispatch, + // textInputRef +}) => { + const { theme } = useTheme() + + return ( + + formatText({ + origin: 'spoiler', + postDispatch, + content + }) + } + onSelectionChange={({ + nativeEvent: { + selection: { start, end } + } + }) => { + postDispatch({ + type: 'spoiler', + payload: { selection: { start, end } } + }) + }} + // ref={textInputRef} + scrollEnabled + > + {postState.spoiler.formatted} + + ) +} + +const styles = StyleSheet.create({ + spoilerInput: { + fontSize: StyleConstants.Font.Size.M, + marginTop: StyleConstants.Spacing.S, + paddingBottom: StyleConstants.Spacing.M, + marginLeft: StyleConstants.Spacing.Global.PagePadding, + marginRight: StyleConstants.Spacing.Global.PagePadding, + borderBottomWidth: 0.5 + } +}) + +export default React.memo( + ComposeSpoilerInput, + (prev, next) => + prev.postState.spoiler.formatted === next.postState.spoiler.formatted +) diff --git a/src/screens/Shared/Compose/TextInput.tsx b/src/screens/Shared/Compose/TextInput.tsx index 0e89b01b..46c68185 100644 --- a/src/screens/Shared/Compose/TextInput.tsx +++ b/src/screens/Shared/Compose/TextInput.tsx @@ -36,6 +36,7 @@ const ComposeTextInput: React.FC = ({ placeholderTextColor={theme.secondary} onChangeText={content => formatText({ + origin: 'text', postDispatch, content }) @@ -45,7 +46,7 @@ const ComposeTextInput: React.FC = ({ selection: { start, end } } }) => { - postDispatch({ type: 'selection', payload: { start, end } }) + postDispatch({ type: 'text', payload: { selection: { start, end } } }) }} ref={textInputRef} scrollEnabled @@ -61,7 +62,7 @@ const styles = StyleSheet.create({ marginTop: StyleConstants.Spacing.S, paddingBottom: StyleConstants.Spacing.M, marginLeft: StyleConstants.Spacing.Global.PagePadding, - marginRight: StyleConstants.Spacing.Global.PagePadding, + marginRight: StyleConstants.Spacing.Global.PagePadding // borderBottomWidth: 0.5 } }) diff --git a/src/screens/Shared/Compose/formatText.tsx b/src/screens/Shared/Compose/formatText.tsx index 4226609d..d923453e 100644 --- a/src/screens/Shared/Compose/formatText.tsx +++ b/src/screens/Shared/Compose/formatText.tsx @@ -7,6 +7,7 @@ import { useTheme } from 'src/utils/styles/ThemeManager' import { PostAction, PostState } from '../Compose' export interface Params { + origin: 'text' | 'spoiler' postDispatch: Dispatch content: string refetch?: (options?: RefetchOptions | undefined) => Promise @@ -36,6 +37,7 @@ const debouncedSuggestions = debounce( let prevTags: PostState['tag'][] = [] const formatText = ({ + origin, postDispatch, content, disableDebounce = false @@ -70,7 +72,6 @@ const formatText = ({ }) const changedTag = differenceWith(tags, prevTags, isEqual) - // quick delete causes flicking of suggestion box if (changedTag.length && !disableDebounce) { if (changedTag[0]!.type !== 'url') { debouncedSuggestions(postDispatch, changedTag[0]) @@ -107,9 +108,9 @@ const formatText = ({ contentLength = contentLength + _content.length postDispatch({ - type: 'text', + type: origin, payload: { - count: 500 - contentLength, + count: contentLength, raw: content, formatted: createElement(Text, null, children) } diff --git a/src/screens/Shared/Compose/updateText.ts b/src/screens/Shared/Compose/updateText.ts index d8d1b7c4..e32b2a43 100644 --- a/src/screens/Shared/Compose/updateText.ts +++ b/src/screens/Shared/Compose/updateText.ts @@ -3,19 +3,26 @@ import { PostAction, PostState } from '../Compose' import formatText from './formatText' const updateText = ({ + origin, postState, postDispatch, newText, type }: { + origin: 'text' | 'spoiler' postState: PostState postDispatch: Dispatch newText: string type: 'emoji' | 'suggestion' }) => { - if (postState.text.raw.length) { - const contentFront = postState.text.raw.slice(0, postState.selection.start) - const contentRear = postState.text.raw.slice(postState.selection.end) + if (postState[origin].raw.length) { + const contentFront = postState[origin].raw.slice( + 0, + postState[origin].selection.start + ) + const contentRear = postState[origin].raw.slice( + postState[origin].selection.end + ) const whiteSpaceFront = /\s/g.test(contentFront.slice(-1)) const whiteSpaceRear = /\s/g.test(contentRear.slice(-1)) @@ -25,12 +32,14 @@ const updateText = ({ }${newText}${whiteSpaceRear ? '' : ' '}` formatText({ + origin, postDispatch, content: [contentFront, newTextWithSpace, contentRear].join(''), disableDebounce: true }) } else { formatText({ + origin, postDispatch, content: `${newText} `, disableDebounce: true diff --git a/yarn.lock b/yarn.lock index 46ae3674..f7f1f32b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1026,21 +1026,22 @@ "@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-types@^40.0.0-beta.2": + version "40.0.0-beta.2" + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-40.0.0-beta.2.tgz#4fea4ef5654d02218b02b0b3772529a9ce5b0471" + integrity sha512-t9pHCQMXOP4nwd7LGXuHkLlFy0JdfknRSCAeVF4Kw2/y+5OBbR9hW9ZVnetpBf0kORrekgiI7K/qDaa3hh5+Qg== "@expo/config@^3.3.15": - version "3.3.16" - resolved "https://registry.yarnpkg.com/@expo/config/-/config-3.3.16.tgz#d05cf57623414e2df6815a790c2a3be81ac171fb" - integrity sha512-iEjyV8OfaA0fPPsKYkkcod6wCd6sAtWOxAAT+7xriGqJV5aYnpL1hcBxPkPKavYzWMJUEEOwajmqoJy1uVP6ig== + version "3.3.19" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-3.3.19.tgz#0233aef8a498569aff1d8740c3272cd717f8fa1d" + integrity sha512-CIBPkOAQpz1jcHdopX5GFxn+GymwoLM4Y1c0RzsUfubTjtLTZ5yEPglz/JLvhb6U+heGog+BB1fiQW9SGXl6/Q== dependencies: "@babel/core" "7.9.0" "@expo/babel-preset-cli" "0.2.18" - "@expo/config-types" "^40.0.0-beta.1" + "@expo/config-types" "^40.0.0-beta.2" "@expo/json-file" "8.2.25" fs-extra "9.0.0" + getenv "0.7.0" glob "7.1.6" require-from-string "^2.0.2" resolve-from "^5.0.0" @@ -1364,15 +1365,20 @@ nanoid "^3.1.15" "@reduxjs/toolkit@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.4.0.tgz#ee2e2384cc3d1d76780d844b9c2da3580d32710d" - integrity sha512-hkxQwVx4BNVRsYdxjNF6cAseRmtrkpSlcgJRr3kLUcHPIAMZAmMJkXmHh/eUEGTMqPzsYpJLM7NN2w9fxQDuGw== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.5.0.tgz#1025c1ccb224d1fc06d8d98a61f6717d57e6d477" + integrity sha512-E/FUraRx+8guw9Hlg/Ja8jI/hwCrmIKed8Annt9YsZw3BQp+F24t5I5b2OWR6pkEHY4hn1BgP08FrTZFRKsdaQ== dependencies: - immer "^7.0.3" + immer "^8.0.0" redux "^4.0.0" redux-thunk "^2.3.0" reselect "^4.0.0" +"@types/crypto-js@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.0.1.tgz#3a4bd24518b0e6c5940da4e2659eeb2ef0806963" + integrity sha512-6+OPzqhKX/cx5xh+yO8Cqg3u3alrkhoxhE5ZOdSEv0DOzJ13lwJ6laqGU0Kv6+XDMFmlnGId04LtY22PsFLQUw== + "@types/hammerjs@^2.0.36": version "2.0.36" resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c" @@ -1494,9 +1500,9 @@ "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - version "15.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.10.tgz#0fe3c8173a0d5c3e780b389050140c3f5ea6ea74" - integrity sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ== + version "15.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" + integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== dependencies: "@types/yargs-parser" "*" @@ -1733,7 +1739,7 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: +available-typed-arrays@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== @@ -1918,16 +1924,16 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -browserslist@^4.14.5, browserslist@^4.14.7: - version "4.14.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6" - integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ== +browserslist@^4.14.5, browserslist@^4.15.0: + version "4.15.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.15.0.tgz#3d48bbca6a3f378e86102ffd017d9a03f122bdb0" + integrity sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ== dependencies: - caniuse-lite "^1.0.30001157" + caniuse-lite "^1.0.30001164" colorette "^1.2.1" - electron-to-chromium "^1.3.591" + electron-to-chromium "^1.3.612" escalade "^3.1.1" - node-releases "^1.1.66" + node-releases "^1.1.67" bser@2.1.1: version "2.1.1" @@ -2021,10 +2027,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001157: - version "1.0.30001161" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001161.tgz#64f7ffe79ee780b8c92843ff34feb36cea4651e0" - integrity sha512-JharrCDxOqPLBULF9/SPa6yMcBRTjZARJ6sc3cuKrPfyIk64JN6kuMINWqA99Xc8uElMFcROliwtz0n9pYej+g== +caniuse-lite@^1.0.30001164: + version "1.0.30001165" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f" + integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA== capture-exit@^2.0.0: version "2.0.0" @@ -2268,11 +2274,11 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-compat@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1" - integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ== + version "3.8.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e" + integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ== dependencies: - browserslist "^4.14.7" + browserslist "^4.15.0" semver "7.0.0" core-js@^1.0.0: @@ -2286,9 +2292,9 @@ core-js@^2.2.2, core-js@^2.4.1: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.6.5: - version "3.8.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce" - integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA== + version "3.8.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47" + integrity sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg== core-util-is@~1.0.0: version "1.0.2" @@ -2325,6 +2331,11 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +crypto-js@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" + integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== + css-select@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" @@ -2354,9 +2365,9 @@ csstype@^3.0.2: integrity sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ== dayjs@^1.8.15: - version "1.9.6" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.6.tgz#6f0c77d76ac1ff63720dd1197e5cb87b67943d70" - integrity sha512-HngNLtPEBWRo8EFVmHFmSXAjtCX8rGNqeXQI0Gh7wCTSqwaKgPIDqu9m07wABVopNwzvOeCb+2711vQhDlcIXw== + version "1.9.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.9.7.tgz#4b260bb17dceed2d5f29038dfee03c65a6786fc0" + integrity sha512-IC877KBdMhBrCfBfJXHQlo0G8keZ0Opy7YIIq5QKtUbCuHMzim8S4PyiVK4YmihI3iOF9lhfUBW4AQWHTR5WHA== debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9" @@ -2383,19 +2394,20 @@ decode-uri-component@^0.2.0: integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-equal@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.4.tgz#6b0b407a074666033169df3acaf128e1c6f3eab6" - integrity sha512-BUfaXrVoCfgkOQY/b09QdO9L3XNoF2XH0A3aY9IQwQL/ZjLOe8FQgCNVl1wiolhsFo8kFdO9zdPViCPbmaJA5w== + version "2.0.5" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9" + integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw== dependencies: - es-abstract "^1.18.0-next.1" - es-get-iterator "^1.1.0" + call-bind "^1.0.0" + es-get-iterator "^1.1.1" + get-intrinsic "^1.0.1" is-arguments "^1.0.4" is-date-object "^1.0.2" is-regex "^1.1.1" isarray "^2.0.5" - object-is "^1.1.3" + object-is "^1.1.4" object-keys "^1.1.1" - object.assign "^4.1.1" + object.assign "^4.1.2" regexp.prototype.flags "^1.3.0" side-channel "^1.0.3" which-boxed-primitive "^1.0.1" @@ -2472,9 +2484,9 @@ domelementtype@1, domelementtype@^1.3.0: integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" - integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== domhandler@^2.3.0: version "2.4.2" @@ -2496,10 +2508,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.591: - version "1.3.610" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz#1254eb394acd220a836ea1f203f8cded4e487052" - integrity sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g== +electron-to-chromium@^1.3.612: + version "1.3.616" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.616.tgz#de63d1c79bb8eb61168774df0c11c9e1af69f9e8" + integrity sha512-CI8L38UN2BEnqXw3/oRIQTmde0LiSeqWSRlPA42ZTYgJQ8fYenzAM2Z3ni+jtILTcrs5aiXZCGJ96Pm+3/yGyQ== emoji-regex@^7.0.1: version "7.0.3" @@ -2560,7 +2572,7 @@ errorhandler@^1.5.0: accepts "~1.3.7" escape-html "~1.0.3" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1: version "1.17.7" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== @@ -2595,7 +2607,7 @@ es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" -es-get-iterator@^1.1.0: +es-get-iterator@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== @@ -2643,6 +2655,13 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +eslint-plugin-prettier@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.2.0.tgz#af391b2226fa0e15c96f36c733f6e9035dbd952c" + integrity sha512-kOUSJnFjAUFKwVxuzy6sA5yyMx6+o9ino4gCdShzBNx4eyFRudWRYKCFolKjoM40PEiuU6Cn7wBLfq3WsGg7qg== + dependencies: + prettier-linter-helpers "^1.0.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -2737,9 +2756,9 @@ expo-av@~8.6.0: nullthrows "^1.1.0" expo-blur@~8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-8.2.0.tgz#4f586b5019c70f93c9914b2ff6ecadda4a382d51" - integrity sha512-LXx8tyVMk1pE4Ug9fHNTIsZnUPewmWXyFhiEwUkeP5SKlg92CgWGbTiGkdhFiU5X0vDxgFKsVVilLcNQxWYSfQ== + version "8.2.2" + resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-8.2.2.tgz#a7643d893afb7aed5512b25d5df22ee6083832c1" + integrity sha512-Xiklw60RUPIchHKzfvLTIuccVDTIQEAIPv02yJY2xFDujQKjE0NU0/Z5Z+zsEI9QOi82jX9NbR8gQ+8Mm3hDhA== expo-constants@^9.2.0, expo-constants@~9.2.0: version "9.2.0" @@ -2959,6 +2978,11 @@ fancy-log@^1.3.2: parse-node-version "^1.0.0" time-stamp "^1.0.0" +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -3214,6 +3238,11 @@ 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= +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" @@ -3375,10 +3404,10 @@ immediate@^3.2.2: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== -immer@^7.0.3: - version "7.0.15" - resolved "https://registry.yarnpkg.com/immer/-/immer-7.0.15.tgz#dc3bc6db87401659d2e737c67a21b227c484a4ad" - integrity sha512-yM7jo9+hvYgvdCQdqvhCNRRio0SCXc8xDPzA25SvKWa7b1WVPjLwQs1VYU5JPXjcJPTqAa5NP5dqpORGYBQ2AA== +immer@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.0.tgz#08763549ba9dd7d5e2eb4bec504a8315bd9440c2" + integrity sha512-jm87NNBAIG4fHwouilCHIecFXp5rMGkiFrAuhVO685UnMAlOneEAnOyzPt8OnP47TC11q/E7vpzZe0WvwepFTg== import-fresh@^2.0.0: version "2.0.0" @@ -3453,9 +3482,11 @@ is-accessor-descriptor@^1.0.0: kind-of "^6.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -3468,14 +3499,16 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" - integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== is-boolean-object@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" - integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -3571,9 +3604,9 @@ is-map@^2.0.1: integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number-object@^1.0.3: version "1.0.4" @@ -3629,12 +3662,13 @@ is-symbol@^1.0.2: has-symbols "^1.0.1" is-typed-array@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" - integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.4.tgz#1f66f34a283a3c94a4335434661ca53fff801120" + integrity sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA== dependencies: - available-typed-arrays "^1.0.0" - es-abstract "^1.17.4" + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" foreach "^2.0.5" has-symbols "^1.0.1" @@ -3983,6 +4017,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -4472,9 +4513,9 @@ nan@^2.12.1: integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== nanoid@^3.1.15: - version "3.1.18" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.18.tgz#0680db22ab01c372e89209f5d18283d98de3e96d" - integrity sha512-rndlDjbbHbcV3xi+R2fpJ+PbGMdfBxz5v1fATIQFq0DP64FsicQdwnKLy47K4kZHdRpmQXtz24eGsxQqamzYTA== + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanomatch@^1.2.9: version "1.2.13" @@ -4531,7 +4572,7 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-releases@^1.1.66: +node-releases@^1.1.67: version "1.1.67" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== @@ -4606,11 +4647,11 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== -object-is@^1.1.3: +object-is@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== @@ -4630,7 +4671,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.1: +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -4885,6 +4926,13 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + pretty-format@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" @@ -4993,9 +5041,9 @@ range-parser@~1.2.1: integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== react-devtools-core@^4.6.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.10.0.tgz#027ed231f851e5e9d697812bb905648ab822ec48" - integrity sha512-5m5VBtpjuHI7odyk3GAR3BJq3/IHQ0fVZ0+h8zUvoHulSj7Z9hp9d9n4Y1HmSZZxv7NUKfBtsnH+NfLNFDtfog== + version "4.10.1" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.10.1.tgz#6d57db291aeac9cc45ef9fb4636dd2ab97490daf" + integrity sha512-sXbBjGAWcf9HAblTP/zMtFhGHqxAfIR+GPxONZsSGN9FHnF4635dx1s2LdQWG9rJ+Ehr3nWg+BUAB6P78my5PA== dependencies: shell-quote "^1.6.1" ws "^7" @@ -5011,9 +5059,9 @@ react-dom@16.13.1: scheduler "^0.19.1" react-i18next@^11.7.3: - version "11.7.3" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.7.3.tgz#256461c46baf5b3208c3c6860ca4e569fc7ed053" - integrity sha512-7sYZqVZgdaS9Z0ZH6nuJFErCD0zz5wK3jR4/xCrWjZcxHHF3GRu7BXdicbSPprZV4ZYz7LJzxxMHO7dg5Qb70A== + version "11.7.4" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.7.4.tgz#6c0142e15652d8dd80cd7d857e36efe2e9d4d09a" + integrity sha512-Aq0+QVW7NMYuAtk0Stcwp4jWeNTd1p5XefAfBPcjs/4c/2duG3v3G3zdtn8fC8L4EyA/coKLwdULHI+lYTbF8w== dependencies: "@babel/runtime" "^7.3.1" html-parse-stringify2 "2.0.1" @@ -5112,9 +5160,12 @@ react-native-svg@12.1.0: css-tree "^1.0.0-alpha.39" react-native-toast-message@^1.3.4: - version "1.3.6" - resolved "https://registry.yarnpkg.com/react-native-toast-message/-/react-native-toast-message-1.3.6.tgz#78f90f78bbd8c97ce987f5dabc99ecc4a2d5eaef" - integrity sha512-75hsiPEcdsxdyn3N9FK3+N8cPStC6HPuo+HzQW36FpkmER1710Ipc0f9afebkmmKM3+Q65wyk81rXuwL6hcwow== + version "1.4.0" + resolved "https://registry.yarnpkg.com/react-native-toast-message/-/react-native-toast-message-1.4.0.tgz#ccc80ba9659bed6bdf49dcb4d221a3ae53da694f" + integrity sha512-LnNTAcdDT1SkKlAn2T6mOtQI2Q4Lsq502K1F0lKHi5J4Mxo5BFmQDs2r2OefjPDaNLCkRvYyj7BI+fxl0HBxrQ== + dependencies: + eslint-plugin-prettier "^3.2.0" + prop-types "^15.7.2" react-native-webview@10.7.0: version "10.7.0" @@ -5484,9 +5535,11 @@ semver@^6.3.0: 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== + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" send@0.17.1: version "0.17.1" @@ -6226,12 +6279,13 @@ which-module@^2.0.0: integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which-typed-array@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" - integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== dependencies: available-typed-arrays "^1.0.2" - es-abstract "^1.17.5" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" foreach "^2.0.5" function-bind "^1.1.1" has-symbols "^1.0.1" @@ -6299,9 +6353,9 @@ ws@^1.1.0, ws@^1.1.5: ultron "1.0.x" ws@^7: - version "7.4.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" - integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== + version "7.4.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" + integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== xcode@^2.0.0: version "2.1.0" @@ -6354,15 +6408,20 @@ xtend@~4.0.1: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@^15.0.1: version "15.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3"