diff --git a/client/package.json b/client/package.json index 21191b159..18aa75285 100644 --- a/client/package.json +++ b/client/package.json @@ -156,7 +156,6 @@ "relay-compiler-language-typescript": "^14.2.1", "relay-config": "^12.0.0", "relay-test-utils": "^12.0.0", - "sharp-cli": "^1.15.0", "ts-jest": "^27.0.5", "typescript": "^4.4.3" }, diff --git a/client/src/__generated__/ChannelQuery.graphql.ts b/client/src/__generated__/ChannelQuery.graphql.ts index 0ddd740ed..a452b5387 100644 --- a/client/src/__generated__/ChannelQuery.graphql.ts +++ b/client/src/__generated__/ChannelQuery.graphql.ts @@ -16,6 +16,7 @@ export type ChannelQueryResponse = { readonly id: string; readonly nickname: string | null; readonly name: string | null; + readonly photoURL: string | null; } | null; }> | null; } | null; @@ -39,6 +40,7 @@ query ChannelQuery( id nickname name + photoURL } } } @@ -108,7 +110,14 @@ v3 = [ "name": "nickname", "storageKey": null }, - (v2/*: any*/) + (v2/*: any*/), + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "photoURL", + "storageKey": null + } ], "storageKey": null } @@ -137,14 +146,14 @@ return { "selections": (v3/*: any*/) }, "params": { - "cacheID": "1908baffd9bf59db21f394978934a310", + "cacheID": "cabc07e2f0e35d83f70be390901be43f", "id": null, "metadata": {}, "name": "ChannelQuery", "operationKind": "query", - "text": "query ChannelQuery(\n $channelId: String!\n) {\n channel(channelId: $channelId) {\n id\n name\n memberships {\n user {\n id\n nickname\n name\n }\n }\n }\n}\n" + "text": "query ChannelQuery(\n $channelId: String!\n) {\n channel(channelId: $channelId) {\n id\n name\n memberships {\n user {\n id\n nickname\n name\n photoURL\n }\n }\n }\n}\n" } }; })(); -(node as any).hash = '76c70e6035133a8393ff14106b0ada3f'; +(node as any).hash = '5f194d530215df7acddb6ddfd96d36d6'; export default node; diff --git a/client/src/__generated__/MessageComponent_message.graphql.ts b/client/src/__generated__/MessageComponent_message.graphql.ts index 090f1b712..31a225e49 100644 --- a/client/src/__generated__/MessageComponent_message.graphql.ts +++ b/client/src/__generated__/MessageComponent_message.graphql.ts @@ -18,6 +18,7 @@ export type MessageComponent_message = { readonly id: string; readonly name: string | null; readonly nickname: string | null; + readonly photoURL: string | null; } | null; readonly createdAt: unknown | null; readonly " $fragmentRefs": FragmentRefs<"MessageListItem_message">; @@ -185,6 +186,13 @@ return { "kind": "ScalarField", "name": "nickname", "storageKey": null + }, + { + "alias": null, + "args": null, + "kind": "ScalarField", + "name": "photoURL", + "storageKey": null } ], "storageKey": null @@ -261,5 +269,5 @@ return { "abstractKey": null }; })(); -(node as any).hash = 'b57ad27833bdc76815d57dac3e153a3e'; +(node as any).hash = '236f271d52585b13cc872df51c274870'; export default node; diff --git a/client/src/__generated__/MessagePaginationQuery.graphql.ts b/client/src/__generated__/MessagePaginationQuery.graphql.ts index ef9245426..1287e0709 100644 --- a/client/src/__generated__/MessagePaginationQuery.graphql.ts +++ b/client/src/__generated__/MessagePaginationQuery.graphql.ts @@ -44,6 +44,7 @@ fragment MessageComponent_message_WlZsr on Query { id name nickname + photoURL } createdAt ...MessageListItem_message @@ -242,14 +243,14 @@ return { "alias": null, "args": null, "kind": "ScalarField", - "name": "thumbURL", + "name": "photoURL", "storageKey": null }, { "alias": null, "args": null, "kind": "ScalarField", - "name": "photoURL", + "name": "thumbURL", "storageKey": null }, { @@ -367,14 +368,14 @@ return { ] }, "params": { - "cacheID": "cfe7cc4b94bf3adcaf1208a4a83920c4", + "cacheID": "e585af0d9db7a3c7d139cdff902dda45", "id": null, "metadata": {}, "name": "MessagePaginationQuery", "operationKind": "query", - "text": "query MessagePaginationQuery(\n $after: String\n $channelId: String!\n $first: Int!\n $searchText: String\n) {\n ...MessageComponent_message_WlZsr\n}\n\nfragment MessageComponent_message_WlZsr on Query {\n messages(first: $first, after: $after, channelId: $channelId, searchText: $searchText) {\n edges {\n cursor\n node {\n id\n imageUrls\n fileUrls\n text\n sender {\n id\n name\n nickname\n }\n createdAt\n ...MessageListItem_message\n __typename\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n}\n\nfragment MessageListItem_message on Message {\n id\n messageType\n text\n imageUrls\n fileUrls\n createdAt\n updatedAt\n sender {\n id\n name\n nickname\n thumbURL\n photoURL\n ...ProfileModal_user\n }\n}\n\nfragment ProfileModal_user on User {\n id\n photoURL\n name\n nickname\n hasBlocked\n statusMessage\n isFriend\n}\n" + "text": "query MessagePaginationQuery(\n $after: String\n $channelId: String!\n $first: Int!\n $searchText: String\n) {\n ...MessageComponent_message_WlZsr\n}\n\nfragment MessageComponent_message_WlZsr on Query {\n messages(first: $first, after: $after, channelId: $channelId, searchText: $searchText) {\n edges {\n cursor\n node {\n id\n imageUrls\n fileUrls\n text\n sender {\n id\n name\n nickname\n photoURL\n }\n createdAt\n ...MessageListItem_message\n __typename\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n}\n\nfragment MessageListItem_message on Message {\n id\n messageType\n text\n imageUrls\n fileUrls\n createdAt\n updatedAt\n sender {\n id\n name\n nickname\n thumbURL\n photoURL\n ...ProfileModal_user\n }\n}\n\nfragment ProfileModal_user on User {\n id\n photoURL\n name\n nickname\n hasBlocked\n statusMessage\n isFriend\n}\n" } }; })(); -(node as any).hash = 'b57ad27833bdc76815d57dac3e153a3e'; +(node as any).hash = '236f271d52585b13cc872df51c274870'; export default node; diff --git a/client/src/__generated__/MessagesQuery.graphql.ts b/client/src/__generated__/MessagesQuery.graphql.ts index e3eb43811..a6fb65446 100644 --- a/client/src/__generated__/MessagesQuery.graphql.ts +++ b/client/src/__generated__/MessagesQuery.graphql.ts @@ -44,6 +44,7 @@ fragment MessageComponent_message_WlZsr on Query { id name nickname + photoURL } createdAt ...MessageListItem_message @@ -250,14 +251,14 @@ return { "alias": null, "args": null, "kind": "ScalarField", - "name": "thumbURL", + "name": "photoURL", "storageKey": null }, { "alias": null, "args": null, "kind": "ScalarField", - "name": "photoURL", + "name": "thumbURL", "storageKey": null }, { @@ -375,12 +376,12 @@ return { ] }, "params": { - "cacheID": "ba62a2ee05d85c0c62ab358d86a737db", + "cacheID": "1ff7872b58757bca9b62f46b886f16b8", "id": null, "metadata": {}, "name": "MessagesQuery", "operationKind": "query", - "text": "query MessagesQuery(\n $first: Int!\n $after: String\n $channelId: String!\n $searchText: String\n) {\n ...MessageComponent_message_WlZsr\n}\n\nfragment MessageComponent_message_WlZsr on Query {\n messages(first: $first, after: $after, channelId: $channelId, searchText: $searchText) {\n edges {\n cursor\n node {\n id\n imageUrls\n fileUrls\n text\n sender {\n id\n name\n nickname\n }\n createdAt\n ...MessageListItem_message\n __typename\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n}\n\nfragment MessageListItem_message on Message {\n id\n messageType\n text\n imageUrls\n fileUrls\n createdAt\n updatedAt\n sender {\n id\n name\n nickname\n thumbURL\n photoURL\n ...ProfileModal_user\n }\n}\n\nfragment ProfileModal_user on User {\n id\n photoURL\n name\n nickname\n hasBlocked\n statusMessage\n isFriend\n}\n" + "text": "query MessagesQuery(\n $first: Int!\n $after: String\n $channelId: String!\n $searchText: String\n) {\n ...MessageComponent_message_WlZsr\n}\n\nfragment MessageComponent_message_WlZsr on Query {\n messages(first: $first, after: $after, channelId: $channelId, searchText: $searchText) {\n edges {\n cursor\n node {\n id\n imageUrls\n fileUrls\n text\n sender {\n id\n name\n nickname\n photoURL\n }\n createdAt\n ...MessageListItem_message\n __typename\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n }\n}\n\nfragment MessageListItem_message on Message {\n id\n messageType\n text\n imageUrls\n fileUrls\n createdAt\n updatedAt\n sender {\n id\n name\n nickname\n thumbURL\n photoURL\n ...ProfileModal_user\n }\n}\n\nfragment ProfileModal_user on User {\n id\n photoURL\n name\n nickname\n hasBlocked\n statusMessage\n isFriend\n}\n" } }; })(); diff --git a/client/src/components/pages/Message.tsx b/client/src/components/pages/Message.tsx index c48182fbc..dca27fa21 100644 --- a/client/src/components/pages/Message.tsx +++ b/client/src/components/pages/Message.tsx @@ -5,6 +5,7 @@ import { ListRenderItem, Platform, Text, + TextInputKeyPressEventData, TouchableOpacity, View, } from 'react-native'; @@ -118,6 +119,7 @@ const messagesFragment = graphql` id name nickname + photoURL } createdAt ...MessageListItem_message @@ -133,13 +135,21 @@ const messagesFragment = graphql` } `; +export type User = { + readonly id: string; + readonly nickname: string | null; + readonly name: string | null; + readonly photoURL: string | null; +} | null; + interface MessageProp { + users: User[]; channelId: string; messages: MessageComponent_message$key; searchArgs: MessagesQueryVariables; } -const MessagesFragment: FC = ({channelId, messages}) => { +const MessagesFragment: FC = ({channelId, messages, users}) => { const {theme} = useTheme(); const navigation = useNavigation(); const insets = useSafeAreaInsets(); @@ -172,6 +182,18 @@ const MessagesFragment: FC = ({channelId, messages}) => { }; const [message, setMessage] = useState(''); + + const [cursor, setCursor] = useState<{start: number; end: number}>({ + start: 0, + end: 0, + }); + + const [lastKeyEvent, setLastKeyEvent] = useState({ + key: '', + }); + + const [tagUsers, setTagUsers] = useState([]); + const [isImageUploading, setIsImageUploading] = useState(false); const {showModal} = useProfileContext(); @@ -363,8 +385,69 @@ const MessagesFragment: FC = ({channelId, messages}) => { ); }; + const changeMessageByTagUser = (item: User): void => { + const cursorPrefix = message.slice(0, cursor.start + 1); + const tagIdx = cursorPrefix.lastIndexOf('@'); + + const newMessageWithTag = [...message]; + + newMessageWithTag.splice( + tagIdx + 1, + cursor.start - tagIdx - 1, + item?.name + ' ' || '', + ); + + setMessage(newMessageWithTag.join('')); + }; + + const selectTagUser = (item: User): void => { + setTagUsers([]); + changeMessageByTagUser(item); + }; + + const parseTagText = ( + inputedText: string, + ): {isTag: boolean; parsedText: string} => { + let result = {isTag: false, parsedText: ''}; + + const cursorPrefix = inputedText.slice(0, cursor.start + 1); + const tagIdx = cursorPrefix.lastIndexOf('@'); + if (tagIdx !== -1) + if (tagIdx === 0 || (tagIdx > 0 && inputedText[tagIdx - 1] === ' ')) + if (lastKeyEvent.key === 'Backspace') + result = { + isTag: true, + parsedText: cursorPrefix.slice(tagIdx + 1, -2), + }; + else result = {isTag: true, parsedText: cursorPrefix.slice(tagIdx + 1)}; + + return result; + }; + + const getTagUsersByText = (inputedText: string): User[] => { + let result = []; + if (inputedText === '') result = users; + else + result = users.filter((item) => { + return item?.name?.includes(inputedText); + }); + + return result; + }; + + const handleTagUsers = (inputedText: string): void => { + const parsedTagText = parseTagText(inputedText); + + const paredUsers = parsedTagText.isTag + ? getTagUsersByText(parsedTagText.parsedText) + : []; + setTagUsers(paredUsers); + }; + return ( = ({channelId, messages}) => { message={message} placeholder={getString('WRITE_MESSAGE')} onChangeMessage={(text) => { - if (text === '\n') return setMessage(''); + if (text === '\n') { + setMessage(''); + + return handleTagUsers(''); + } setMessage(text); + handleTagUsers(text); + }} + onChangeCursor={({start, end}) => { + setCursor({start: start, end: end}); }} renderItem={renderItem} keyExtractor={(item) => item.id || nanoid()} @@ -393,6 +484,9 @@ const MessagesFragment: FC = ({channelId, messages}) => { setMessage(`${message}\n`); } + + setLastKeyEvent(nativeEvent); + handleTagUsers(message); }} openedOptionView={ @@ -506,6 +600,7 @@ const ContentContainer: FC = ({searchArgs, channelId}) => { return ( ", }, "text": "Hello there!", }, @@ -799,6 +801,7 @@ fragment ProfileModal_user on User { onChangeText={[Function]} onFocus={[Function]} onKeyPress={[Function]} + onSelectionChange={[Function]} placeholder="Write message..." rejectResponderTermination={true} returnKeyType="done" diff --git a/client/src/components/uis/GiftedChat.tsx b/client/src/components/uis/GiftedChat.tsx index 0d87c9738..f7a8d4928 100644 --- a/client/src/components/uis/GiftedChat.tsx +++ b/client/src/components/uis/GiftedChat.tsx @@ -9,6 +9,8 @@ import { } from 'react-native'; import React, {useRef, useState} from 'react'; +import TagUserListItem from '../uis/TagUserListItem'; +import type {User} from '../pages/Message'; import styled from '@emotion/native'; import {useSafeAreaInsets} from 'react-native-safe-area-context'; @@ -64,6 +66,8 @@ const MenuView = styled.View<{height: number}>` `; interface Props { + tagUsers: User[]; + selectTagUser: (user: User) => void; messages: T[]; borderColor?: string; backgroundColor?: string; @@ -78,6 +82,7 @@ interface Props { renderViewMenu?: () => React.ReactElement; message?: string; onChangeMessage?: (text: string) => void; + onChangeCursor?: (item: {start: number; end: number}) => void; onKeyPress?: TextInputProps['onKeyPress']; placeholder?: string; placeholderTextColor?: string; @@ -91,6 +96,8 @@ function Shared(props: Props): React.ReactElement { const input2 = useRef(); const { + selectTagUser, + tagUsers, messages, borderColor, backgroundColor, @@ -104,6 +111,7 @@ function Shared(props: Props): React.ReactElement { closedOptionView, message, onChangeMessage, + onChangeCursor, placeholder, placeholderTextColor, renderSendButton, @@ -114,6 +122,10 @@ function Shared(props: Props): React.ReactElement { const [showMenu, setShowMenu] = useState(false); const insets = useSafeAreaInsets(); + const renderTagItem: ListRenderItem = ({item}) => ( + + ); + return ( <> (props: Props): React.ReactElement { } /> + {tagUsers.length > 0 ? ( + 250 ? 250 : tagUsers.length * 70, + }} + > + + + ) : null} {!showMenu ? ( (props: Props): React.ReactElement { placeholderTextColor={placeholderTextColor} value={message} onChangeText={onChangeMessage} + onSelectionChange={({ + nativeEvent: { + selection: {start, end}, + }, + }) => { + if (onChangeCursor) onChangeCursor({start, end}); + }} /> (props: Props): React.ReactElement { } Shared.defaultProps = { + selectTagUser: (): void => {}, + tagUsers: [], messages: [], keyboardOffset: 0, optionView: , @@ -258,7 +295,8 @@ Shared.defaultProps = { renderItem: (): React.ReactElement => , renderViewMenu: (): React.ReactElement => , message: '', - onChangeMessage: (): void => {}, + onChangeMessage: (_message: string): void => {}, + onChangeCursor: (_param: {start: number; end: number}): void => {}, placeholder: '', renderSendButton: (): React.ReactElement => , }; diff --git a/client/src/components/uis/TagUserListItem.tsx b/client/src/components/uis/TagUserListItem.tsx new file mode 100644 index 000000000..6c9319ef1 --- /dev/null +++ b/client/src/components/uis/TagUserListItem.tsx @@ -0,0 +1,86 @@ +import { + ImageSourcePropType, + TouchableWithoutFeedback, + ViewStyle, +} from 'react-native'; + +import {IC_NO_IMAGE} from '../../utils/Icons'; +import React from 'react'; +import type {User} from '../pages/Message'; +import {getString} from '../../../STRINGS'; +import styled from '@emotion/native'; + +interface Props { + style?: ViewStyle; + onPress?: () => void; + tagUser: User; + selectTagUser: (user: User) => void; +} + +const Container = styled.View` + width: 100%; +`; + +const Wrapper = styled.View` + background-color: ${({theme}) => theme.card}; + height: 80px; + border-bottom-width: 1px; + border-color: ${(props) => props.theme.background}; + flex-direction: row; + align-items: center; + justify-content: flex-start; + margin: 0px 0px -20px 10px; +`; + +const ImageWrapper = styled.View` + width: 40px; + height: 40px; + align-items: center; + justify-content: center; +`; + +const StyledImage = styled.Image<{isMe?: boolean}>` + width: 40px; + height: 40px; + border-radius: 20px; +`; + +const StyledText = styled.Text` + margin-left: 12px; + width: 200px; + font-size: 14px; + font-weight: bold; + color: ${({theme}) => theme.text}; +`; +function Shared({tagUser, selectTagUser}: Props): React.ReactElement { + const photoURLObj: ImageSourcePropType | null = + typeof tagUser?.photoURL === 'string' ? {uri: tagUser?.photoURL} : null; + + return ( + + { + selectTagUser(tagUser); + }} + > + + + + + + {tagUser?.nickname || tagUser?.name || getString('NO_NAME')} + + + + + ); +} + +Shared.defaultProps = { + selectdTagUser: (): void => {}, +}; + +export default Shared; diff --git a/client/src/components/uis/__tests__/__snapshots__/GiftedChat.test.tsx.snap b/client/src/components/uis/__tests__/__snapshots__/GiftedChat.test.tsx.snap index bc7b1eca4..414c5976f 100644 --- a/client/src/components/uis/__tests__/__snapshots__/GiftedChat.test.tsx.snap +++ b/client/src/components/uis/__tests__/__snapshots__/GiftedChat.test.tsx.snap @@ -236,6 +236,7 @@ exports[`[GiftedChatInput] render renders without crashing 1`] = ` multiline={true} onChangeText={[Function]} onFocus={[Function]} + onSelectionChange={[Function]} placeholder="" rejectResponderTermination={true} returnKeyType="done" diff --git a/client/src/relay/queries/Channel.tsx b/client/src/relay/queries/Channel.tsx index 4946b876d..d03ae6e75 100644 --- a/client/src/relay/queries/Channel.tsx +++ b/client/src/relay/queries/Channel.tsx @@ -10,6 +10,7 @@ export const channelQuery = graphql` id nickname name + photoURL } } } diff --git a/client/yarn.lock b/client/yarn.lock index 8ecfe19a4..c5cf0e911 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -4689,15 +4689,6 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -4874,14 +4865,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -bubble-stream-error@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz#7dad97f17128da396169bf37ada4acb195361e30" - integrity sha1-fa2X8XEo2jlhab83raSssZU2HjA= - dependencies: - once "^1.3.3" - sliced "^1.0.1" - buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -4929,7 +4912,7 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.5.0, buffer@^5.7.0: +buffer@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -5349,15 +5332,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -5497,7 +5471,7 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -color@^3.0.0, color@^3.1.2, color@^3.1.3: +color@^3.0.0, color@^3.1.3: version "3.2.1" resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== @@ -6111,7 +6085,7 @@ debounce@^1.2.0: resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@2.6.x, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -6147,20 +6121,6 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -decompress-response@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== - dependencies: - mimic-response "^2.0.0" - -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== - dependencies: - mimic-response "^3.1.0" - dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -6283,11 +6243,6 @@ detect-indent@^6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" @@ -6564,7 +6519,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -7081,11 +7036,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -7897,11 +7847,6 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" @@ -8018,11 +7963,6 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -8094,11 +8034,6 @@ getenv@^1.0.0: resolved "https://registry.yarnpkg.com/getenv/-/getenv-1.0.0.tgz#874f2e7544fbca53c7a4738f37de8605c3fcfc31" integrity sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg== -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -8887,11 +8822,6 @@ invariant@2.2.4, invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -9065,7 +8995,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@0.3.x, is-directory@^0.3.1: +is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= @@ -10684,13 +10614,6 @@ lazy-cache@^1.0.3: resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -11073,13 +10996,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -11125,15 +11041,6 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -11485,7 +11392,7 @@ 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== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -11495,16 +11402,6 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -mimic-response@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - mini-css-extract-plugin@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" @@ -11531,7 +11428,7 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -11604,11 +11501,6 @@ mixin-object@^2.0.1: for-in "^0.1.3" is-extendable "^0.1.1" -mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -11663,14 +11555,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -multiyargs@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/multiyargs/-/multiyargs-1.0.0.tgz#006e2e409eb6c155220d1eb5323dd09bfd34b828" - integrity sha1-AG4uQJ62wVUiDR61Mj3Qm/00uCg= - dependencies: - debug "2.6.x" - promise-do-whilst "1.0.x" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -11717,11 +11601,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -11755,18 +11634,6 @@ nocache@^2.1.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== -node-abi@^2.7.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" - integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== - dependencies: - semver "^5.4.1" - -node-addon-api@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - node-fetch@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -11863,11 +11730,6 @@ nomnom@^1.5.x: chalk "~0.4.0" underscore "~1.6.0" -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= - normalize-css-color@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d" @@ -11928,7 +11790,7 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^4.0.1, npmlog@^4.1.2: +npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -12084,7 +11946,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -12182,15 +12044,6 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -12201,11 +12054,6 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" @@ -12216,11 +12064,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@3.1.0, p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -12955,27 +12798,6 @@ postinstall-postinstall@^2.1.0: resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== -prebuild-install@^5.3.4: - version "5.3.6" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" - integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -13084,11 +12906,6 @@ progress@^2.0.0, progress@^2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-do-whilst@1.0.x: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-do-whilst/-/promise-do-whilst-1.0.1.tgz#6ddad44009f36da9549dbdccfad99a868dff9ecf" - integrity sha1-bdrUQAnzbalUnb3M+tmaho3/ns8= - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -13293,7 +13110,7 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -13626,7 +13443,7 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -13905,11 +13722,6 @@ require-from-string@^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@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - 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" @@ -14074,11 +13886,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rw-stream@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/rw-stream/-/rw-stream-0.3.3.tgz#2403819737fec3a50a668b3aa33c59dc5c6c0c05" - integrity sha512-bxfGiEmsCS7/dbJyVbh7kZw7JIftWCCVsFdJJeDmLxnH73sZ8gAeH87FuDIqxW8lDFIJc6lPUmgHZROy8N0chQ== - rx-lite-aggregates@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" @@ -14342,34 +14149,6 @@ shallow-equal@^1.1.0: resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== -sharp-cli@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/sharp-cli/-/sharp-cli-1.15.0.tgz#053c83410eb4597dff3ffb607546c04a31af049a" - integrity sha512-siT4+HIIw4z6nkiM62bH4wT1pCPAOZolDII9C9U4WpYsGBFteseGk60ZmC7tiTBtpPWDXVjtHaNs4tCJKbm0SQ== - dependencies: - bubble-stream-error "1.0.x" - glob "^7.1.6" - is-directory "0.3.x" - multiyargs "1.0.x" - rw-stream "^0.3.3" - sharp "0.25.4" - yargs "12.0.x" - -sharp@0.25.4: - version "0.25.4" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.25.4.tgz#1a8e542144a07ab7e9316ab89de80182b827c363" - integrity sha512-umSzJJ1oBwIOfwFFt/fJ7JgCva9FvrEU2cbbm7u/3hSDZhXvkME8WE5qpaJqLIe2Har5msF5UG4CzYlEg5o3BQ== - dependencies: - color "^3.1.2" - detect-libc "^1.0.3" - node-addon-api "^3.0.0" - npmlog "^4.1.2" - prebuild-install "^5.3.4" - semver "^7.3.2" - simple-get "^4.0.0" - tar "^6.0.2" - tunnel-agent "^0.6.0" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -14433,29 +14212,6 @@ signedsource@^1.0.0: resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" - integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== - dependencies: - decompress-response "^4.2.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-get@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" - integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== - dependencies: - decompress-response "^6.0.0" - once "^1.3.1" - simple-concat "^1.0.0" - simple-plist@^1.0.0, simple-plist@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.1.tgz#54367ca28bc5996a982c325c1c4a4c1a05f4047c" @@ -14510,11 +14266,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -sliced@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" - integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= - slugify@^1.3.4: version "1.6.1" resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.1.tgz#a5fcaef29f4e57c6e932ce7044b6ffd9cf81b641" @@ -14798,7 +14549,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -15121,27 +14872,6 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar-fs@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - tar@^6.0.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" @@ -15469,13 +15199,6 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -16082,11 +15805,6 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - which-typed-array@^1.1.2: version "1.1.7" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" @@ -16144,14 +15862,6 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" @@ -16314,7 +16024,7 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== @@ -16354,14 +16064,6 @@ yargs-parser@20.x, yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^15.0.1: version "15.0.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115" @@ -16378,24 +16080,6 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@12.0.x: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - yargs@^14.2.0: version "14.2.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"