diff --git a/.env.sample b/.env.sample index 99a5c81d..23e78428 100644 --- a/.env.sample +++ b/.env.sample @@ -60,3 +60,5 @@ SMTP_REPLY_EMAIL= # Custom logo that displays on the authentication screen, scaled to height: 60px # TEAM_LOGO=https://example.com/images/logo.png + +DEFAULT_LANGUAGE=en_US \ No newline at end of file diff --git a/README.md b/README.md index 1210f324..43a1c326 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ However, before working on a pull request please let the core team know by creat If you’re looking for ways to get started, here's a list of ways to help us improve Outline: +* [Translation](TRANSLATION.md) into other languages * Issues with [`good first issue`](https://github.com/outline/outline/labels/good%20first%20issue) label * Performance improvements, both on server and frontend * Developer happiness and documentation diff --git a/TRANSLATION.md b/TRANSLATION.md new file mode 100644 index 00000000..b69b1016 --- /dev/null +++ b/TRANSLATION.md @@ -0,0 +1,34 @@ +# Translation + +Outline is localized through community contributions. The text in Outline's user interface is in American English by default, we're very thankful for all help that the community provides bringing the app to different languages. + +## Externalizing strings + +Before a string can be translated, it must be externalized. This is the process where English strings in the source code are wrapped in a function that retrieves the translated string for the user’s language. + +For externalization we use [react-i18next](https://react.i18next.com/), this provides the hooks [useTranslation](https://react.i18next.com/latest/usetranslation-hook) and the [Trans](https://react.i18next.com/latest/trans-component) component for wrapping English text. + +PR's are accepted for wrapping English strings in the codebase that were not previously externalized. + +## Translating strings + +To manage the translation process we use [CrowdIn](https://translate.getoutline.com/), it keeps track of which strings in which languages still need translating, synchronizes with the codebase automatically, and provides a great editor interface. + +You'll need to create a free account to use CrowdIn. Once you have joined, you can provide translations by following these steps: + +1. Select the language for which you want to contribute (or vote for) a translation (below the language you can see the progress of the translation) +![CrowdIn UI](https://i.imgur.com/AkbDY60.png) + +2. Please choose the translation.json file from your desired language + +3. Once a file is selected, all the strings associated with the version are displayed on the left side. To display the untranslated strings first, select the filter icon next to the search bar and select “All, Untranslated First”.The red square next to an English string shows that a string has not been translated yet. To provide a translation, select a string on the left side, provide a translation in the target language in the text box in the right side (singular and plural) and press the save button. As soon as a translation has been provided by another user (green square next to string), you can also vote on a translation provided by another user. The translation with the most votes is used unless a different translation has been approved by a proof reader. ![Editor UI](https://i.imgur.com/pldZCRs.png) + +## Proofreading + +Once a translation has been provided, a proof reader can approve the translation and mark it for use in Outline. + +If you are interested in becoming a proof reader, please contact one of the project managers in the Outline CrowdIn project or contact [@tommoor](https://github.com/tommoor). Similarly, if your language is not listed in the list of CrowdIn languages, please contact our project managers or [send us an email](https://www.getoutline.com/contact) so we can add your language. + +## Release + +Updated translations are automatically PR'd against the codebase by a bot and will be merged regularly so that new translations appear in the next release of Outline. \ No newline at end of file diff --git a/app/components/Authenticated.js b/app/components/Authenticated.js index e585eb7a..505c47a3 100644 --- a/app/components/Authenticated.js +++ b/app/components/Authenticated.js @@ -1,18 +1,30 @@ // @flow -import { observer, inject } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { Redirect } from "react-router-dom"; import { isCustomSubdomain } from "shared/utils/domains"; -import AuthStore from "stores/AuthStore"; import LoadingIndicator from "components/LoadingIndicator"; +import useStores from "../hooks/useStores"; import env from "env"; type Props = { - auth: AuthStore, - children?: React.Node, + children: React.Node, }; -const Authenticated = observer(({ auth, children }: Props) => { +const Authenticated = ({ children }: Props) => { + const { auth } = useStores(); + const { i18n } = useTranslation(); + const language = auth.user && auth.user.language; + + // Watching for language changes here as this is the earliest point we have + // the user available and means we can start loading translations faster + React.useEffect(() => { + if (i18n.language !== language) { + i18n.changeLanguage(language); + } + }, [i18n, language]); + if (auth.authenticated) { const { user, team } = auth; const { hostname } = window.location; @@ -43,6 +55,6 @@ const Authenticated = observer(({ auth, children }: Props) => { auth.logout(true); return ; -}); +}; -export default inject("auth")(Authenticated); +export default observer(Authenticated); diff --git a/app/components/Avatar/AvatarWithPresence.js b/app/components/Avatar/AvatarWithPresence.js index 0f1e97b8..39b76038 100644 --- a/app/components/Avatar/AvatarWithPresence.js +++ b/app/components/Avatar/AvatarWithPresence.js @@ -4,6 +4,7 @@ import { observable } from "mobx"; import { observer } from "mobx-react"; import { EditIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import User from "models/User"; import UserProfile from "scenes/UserProfile"; @@ -16,6 +17,7 @@ type Props = { isEditing: boolean, isCurrentUser: boolean, lastViewedAt: string, + t: TFunction, }; @observer @@ -37,20 +39,25 @@ class AvatarWithPresence extends React.Component { isPresent, isEditing, isCurrentUser, + t, } = this.props; + const action = isPresent + ? isEditing + ? t("currently editing") + : t("currently viewing") + : t("viewed {{ timeAgo }} ago", { + timeAgo: distanceInWordsToNow(new Date(lastViewedAt)), + }); + return ( <> - {user.name} {isCurrentUser && "(You)"} + {user.name} {isCurrentUser && `(${t("You")})`}
- {isPresent - ? isEditing - ? "currently editing" - : "currently viewing" - : `viewed ${distanceInWordsToNow(new Date(lastViewedAt))} ago`} + {action} } placement="bottom" @@ -83,4 +90,4 @@ const AvatarWrapper = styled.div` transition: opacity 250ms ease-in-out; `; -export default AvatarWithPresence; +export default withTranslation()(AvatarWithPresence); diff --git a/app/components/Breadcrumb.js b/app/components/Breadcrumb.js index 79466dc4..a7502d2d 100644 --- a/app/components/Breadcrumb.js +++ b/app/components/Breadcrumb.js @@ -1,5 +1,5 @@ // @flow -import { observer, inject } from "mobx-react"; +import { observer } from "mobx-react"; import { ArchiveIcon, EditIcon, @@ -10,6 +10,7 @@ import { TrashIcon, } from "outline-icons"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import styled from "styled-components"; import breakpoint from "styled-components-breakpoint"; @@ -19,6 +20,7 @@ import Document from "models/Document"; import CollectionIcon from "components/CollectionIcon"; import Flex from "components/Flex"; import BreadcrumbMenu from "./BreadcrumbMenu"; +import useStores from "hooks/useStores"; import { collectionUrl } from "utils/routeHelpers"; type Props = { @@ -28,13 +30,15 @@ type Props = { }; function Icon({ document }) { + const { t } = useTranslation(); + if (document.isDeleted) { return ( <>   - Trash + {t("Trash")} @@ -46,7 +50,7 @@ function Icon({ document }) {   - Archive + {t("Archive")} @@ -58,7 +62,7 @@ function Icon({ document }) {   - Drafts + {t("Drafts")} @@ -70,7 +74,7 @@ function Icon({ document }) {   - Templates + {t("Templates")} @@ -79,14 +83,17 @@ function Icon({ document }) { return null; } -const Breadcrumb = observer(({ document, collections, onlyText }: Props) => { +const Breadcrumb = ({ document, onlyText }: Props) => { + const { collections } = useStores(); + const { t } = useTranslation(); + let collection = collections.get(document.collectionId); if (!collection) { if (!document.deletedAt) return
; collection = { id: document.collectionId, - name: "Deleted Collection", + name: t("Deleted Collection"), color: "currentColor", }; } @@ -141,7 +148,7 @@ const Breadcrumb = observer(({ document, collections, onlyText }: Props) => { )} ); -}); +}; const Wrapper = styled(Flex)` display: none; @@ -202,4 +209,4 @@ const CollectionName = styled(Link)` overflow: hidden; `; -export default inject("collections")(Breadcrumb); +export default observer(Breadcrumb); diff --git a/app/components/DocumentMeta.js b/app/components/DocumentMeta.js index 31a96d40..52c42ea4 100644 --- a/app/components/DocumentMeta.js +++ b/app/components/DocumentMeta.js @@ -1,14 +1,14 @@ // @flow -import { inject, observer } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import styled from "styled-components"; -import AuthStore from "stores/AuthStore"; -import CollectionsStore from "stores/CollectionsStore"; import Document from "models/Document"; import Breadcrumb from "components/Breadcrumb"; import Flex from "components/Flex"; import Time from "components/Time"; +import useStores from "hooks/useStores"; const Container = styled(Flex)` color: ${(props) => props.theme.textTertiary}; @@ -23,8 +23,6 @@ const Modified = styled.span` `; type Props = { - collections: CollectionsStore, - auth: AuthStore, showCollection?: boolean, showPublished?: boolean, showLastViewed?: boolean, @@ -34,8 +32,6 @@ type Props = { }; function DocumentMeta({ - auth, - collections, showPublished, showCollection, showLastViewed, @@ -44,6 +40,8 @@ function DocumentMeta({ to, ...rest }: Props) { + const { t } = useTranslation(); + const { collections, auth } = useStores(); const { modifiedSinceViewed, updatedAt, @@ -67,37 +65,37 @@ function DocumentMeta({ if (deletedAt) { content = ( - deleted ); } else if (archivedAt) { content = ( - archived ); } else if (createdAt === updatedAt) { content = ( - created ); } else if (publishedAt && (publishedAt === updatedAt || showPublished)) { content = ( - published ); } else if (isDraft) { content = ( - saved ); } else { content = ( - updated ); } @@ -112,25 +110,25 @@ function DocumentMeta({ if (!lastViewedAt) { return ( <> - • Never viewed + • {t("Never viewed")} ); } return ( - • Viewed ); }; return ( - {updatedByMe ? "You" : updatedBy.name}  + {updatedByMe ? t("You") : updatedBy.name}  {to ? {content} : content} {showCollection && collection && ( -  in  +  {t("in")}  @@ -142,4 +140,4 @@ function DocumentMeta({ ); } -export default inject("collections", "auth")(observer(DocumentMeta)); +export default observer(DocumentMeta); diff --git a/app/components/DocumentPreview/DocumentPreview.js b/app/components/DocumentPreview/DocumentPreview.js index 6f41db5f..6ae35efd 100644 --- a/app/components/DocumentPreview/DocumentPreview.js +++ b/app/components/DocumentPreview/DocumentPreview.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { observer } from "mobx-react"; import { StarredIcon, PlusIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Link, Redirect } from "react-router-dom"; import styled, { withTheme } from "styled-components"; import Document from "models/Document"; @@ -25,6 +26,7 @@ type Props = { showPin?: boolean, showDraft?: boolean, showTemplate?: boolean, + t: TFunction, }; const SEARCH_RESULT_REGEX = /]*>(.*?)<\/b>/gi; @@ -72,6 +74,7 @@ class DocumentPreview extends React.Component { showTemplate, highlight, context, + t, } = this.props; if (this.redirectTo) { @@ -91,7 +94,7 @@ class DocumentPreview extends React.Component { > - {document.isNew && <Badge yellow>New</Badge>} + {document.isNew && <Badge yellow>{t("New")}</Badge>} {!document.isDraft && !document.isArchived && !document.isTemplate && ( @@ -104,12 +107,16 @@ class DocumentPreview extends React.Component<Props> { </Actions> )} {document.isDraft && showDraft && ( - <Tooltip tooltip="Only visible to you" delay={500} placement="top"> - <Badge>Draft</Badge> + <Tooltip + tooltip={t("Only visible to you")} + delay={500} + placement="top" + > + <Badge>{t("Draft")}</Badge> </Tooltip> )} {document.isTemplate && showTemplate && ( - <Badge primary>Template</Badge> + <Badge primary>{t("Template")}</Badge> )} <SecondaryActions> {document.isTemplate && @@ -120,7 +127,7 @@ class DocumentPreview extends React.Component<Props> { icon={<PlusIcon />} neutral > - New doc + {t("New doc")} </Button> )}   @@ -237,4 +244,4 @@ const ResultContext = styled(Highlight)` margin-bottom: 0.25em; `; -export default DocumentPreview; +export default withTranslation()<DocumentPreview>(DocumentPreview); diff --git a/app/components/DropdownMenu/DropdownMenu.js b/app/components/DropdownMenu/DropdownMenu.js index 037ad7ec..bb5b8eaf 100644 --- a/app/components/DropdownMenu/DropdownMenu.js +++ b/app/components/DropdownMenu/DropdownMenu.js @@ -5,6 +5,7 @@ import { observer } from "mobx-react"; import { MoreIcon } from "outline-icons"; import { rgba } from "polished"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { PortalWithState } from "react-portal"; import styled from "styled-components"; import { fadeAndScaleIn } from "shared/styles/animations"; @@ -27,6 +28,7 @@ type Props = {| hover?: boolean, style?: Object, position?: "left" | "right" | "center", + t: TFunction, |}; @observer @@ -150,7 +152,7 @@ class DropdownMenu extends React.Component<Props> { }; render() { - const { className, hover, label, children } = this.props; + const { className, hover, label, children, t } = this.props; return ( <div className={className}> @@ -177,7 +179,7 @@ class DropdownMenu extends React.Component<Props> { {label || ( <NudeButton id={`${this.id}button`} - aria-label="More options" + aria-label={t("More options")} aria-haspopup="true" aria-expanded={isOpen ? "true" : "false"} aria-controls={this.id} @@ -284,4 +286,4 @@ export const Header = styled.h3` margin: 1em 12px 0.5em; `; -export default DropdownMenu; +export default withTranslation()<DropdownMenu>(DropdownMenu); diff --git a/app/components/Editor.js b/app/components/Editor.js index 2593cfea..94b19425 100644 --- a/app/components/Editor.js +++ b/app/components/Editor.js @@ -1,6 +1,7 @@ // @flow import { lighten } from "polished"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { withRouter, type RouterHistory } from "react-router-dom"; import styled, { withTheme } from "styled-components"; import UiStore from "stores/UiStore"; @@ -28,60 +29,129 @@ type PropsWithRef = Props & { history: RouterHistory, }; -class Editor extends React.Component<PropsWithRef> { - onUploadImage = async (file: File) => { - const result = await uploadFile(file, { documentId: this.props.id }); - return result.url; - }; +function Editor(props: PropsWithRef) { + const { id, ui, history } = props; + const { t } = useTranslation(); - onClickLink = (href: string, event: MouseEvent) => { - // on page hash - if (href[0] === "#") { - window.location.href = href; - return; - } + const onUploadImage = React.useCallback( + async (file: File) => { + const result = await uploadFile(file, { documentId: id }); + return result.url; + }, + [id] + ); - if (isInternalUrl(href) && !event.metaKey && !event.shiftKey) { - // relative - let navigateTo = href; - - // probably absolute - if (href[0] !== "/") { - try { - const url = new URL(href); - navigateTo = url.pathname + url.hash; - } catch (err) { - navigateTo = href; - } + const onClickLink = React.useCallback( + (href: string, event: MouseEvent) => { + // on page hash + if (href[0] === "#") { + window.location.href = href; + return; } - this.props.history.push(navigateTo); - } else if (href) { - window.open(href, "_blank"); - } - }; + if (isInternalUrl(href) && !event.metaKey && !event.shiftKey) { + // relative + let navigateTo = href; - onShowToast = (message: string) => { - if (this.props.ui) { - this.props.ui.showToast(message); - } - }; + // probably absolute + if (href[0] !== "/") { + try { + const url = new URL(href); + navigateTo = url.pathname + url.hash; + } catch (err) { + navigateTo = href; + } + } - render() { - return ( - <ErrorBoundary reloadOnChunkMissing> - <StyledEditor - ref={this.props.forwardedRef} - uploadImage={this.onUploadImage} - onClickLink={this.onClickLink} - onShowToast={this.onShowToast} - embeds={this.props.disableEmbeds ? EMPTY_ARRAY : embeds} - tooltip={EditorTooltip} - {...this.props} - /> - </ErrorBoundary> - ); - } + history.push(navigateTo); + } else if (href) { + window.open(href, "_blank"); + } + }, + [history] + ); + + const onShowToast = React.useCallback( + (message: string) => { + if (ui) { + ui.showToast(message); + } + }, + [ui] + ); + + const dictionary = React.useMemo(() => { + return { + addColumnAfter: t("Insert column after"), + addColumnBefore: t("Insert column before"), + addRowAfter: t("Insert row after"), + addRowBefore: t("Insert row before"), + alignCenter: t("Align center"), + alignLeft: t("Align left"), + alignRight: t("Align right"), + bulletList: t("Bulleted list"), + checkboxList: t("Todo list"), + codeBlock: t("Code block"), + codeCopied: t("Copied to clipboard"), + codeInline: t("Code"), + createLink: t("Create link"), + createLinkError: t("Sorry, an error occurred creating the link"), + createNewDoc: t("Create a new doc"), + deleteColumn: t("Delete column"), + deleteRow: t("Delete row"), + deleteTable: t("Delete table"), + em: t("Italic"), + embedInvalidLink: t("Sorry, that link won’t work for this embed type"), + findOrCreateDoc: t("Find or create a doc…"), + h1: t("Big heading"), + h2: t("Medium heading"), + h3: t("Small heading"), + heading: t("Heading"), + hr: t("Divider"), + image: t("Image"), + imageUploadError: t("Sorry, an error occurred uploading the image"), + info: t("Info"), + infoNotice: t("Info notice"), + link: t("Link"), + linkCopied: t("Link copied to clipboard"), + mark: t("Highlight"), + newLineEmpty: t("Type '/' to insert…"), + newLineWithSlash: t("Keep typing to filter…"), + noResults: t("No results"), + openLink: t("Open link"), + orderedList: t("Ordered list"), + pasteLink: t("Paste a link…"), + pasteLinkWithTitle: (service: string) => + t("Paste a {{service}} link…", { service }), + placeholder: t("Placeholder"), + quote: t("Quote"), + removeLink: t("Remove link"), + searchOrPasteLink: t("Search or paste a link…"), + strikethrough: t("Strikethrough"), + strong: t("Bold"), + subheading: t("Subheading"), + table: t("Table"), + tip: t("Tip"), + tipNotice: t("Tip notice"), + warning: t("Warning"), + warningNotice: t("Warning notice"), + }; + }, [t]); + + return ( + <ErrorBoundary reloadOnChunkMissing> + <StyledEditor + ref={props.forwardedRef} + uploadImage={onUploadImage} + onClickLink={onClickLink} + onShowToast={onShowToast} + embeds={props.disableEmbeds ? EMPTY_ARRAY : embeds} + tooltip={EditorTooltip} + dictionary={dictionary} + {...props} + /> + </ErrorBoundary> + ); } const StyledEditor = styled(RichMarkdownEditor)` diff --git a/app/components/HoverPreviewDocument.js b/app/components/HoverPreviewDocument.js index 54fc497a..2c38afa9 100644 --- a/app/components/HoverPreviewDocument.js +++ b/app/components/HoverPreviewDocument.js @@ -1,20 +1,20 @@ // @flow -import { inject, observer } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; import { Link } from "react-router-dom"; import styled from "styled-components"; import parseDocumentSlug from "shared/utils/parseDocumentSlug"; -import DocumentsStore from "stores/DocumentsStore"; import DocumentMetaWithViews from "components/DocumentMetaWithViews"; import Editor from "components/Editor"; +import useStores from "hooks/useStores"; type Props = { url: string, - documents: DocumentsStore, children: (React.Node) => React.Node, }; -function HoverPreviewDocument({ url, documents, children }: Props) { +function HoverPreviewDocument({ url, children }: Props) { + const { documents } = useStores(); const slug = parseDocumentSlug(url); documents.prefetchDocument(slug, { @@ -50,4 +50,4 @@ const Heading = styled.h2` color: ${(props) => props.theme.text}; `; -export default inject("documents")(observer(HoverPreviewDocument)); +export default observer(HoverPreviewDocument); diff --git a/app/components/IconPicker.js b/app/components/IconPicker.js index 32c00835..d15239d5 100644 --- a/app/components/IconPicker.js +++ b/app/components/IconPicker.js @@ -22,6 +22,7 @@ import { VehicleIcon, } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import { DropdownMenu } from "components/DropdownMenu"; import Flex from "components/Flex"; @@ -126,6 +127,7 @@ type Props = { onChange: (color: string, icon: string) => void, icon: string, color: string, + t: TFunction, }; function preventEventBubble(event) { @@ -167,12 +169,13 @@ class IconPicker extends React.Component<Props> { }; render() { + const { t } = this.props; const Component = icons[this.props.icon || "collection"].component; return ( <Wrapper ref={(ref) => (this.node = ref)}> <label> - <LabelText>Icon</LabelText> + <LabelText>{t("Icon")}</LabelText> </label> <DropdownMenu onOpen={this.handleOpen} @@ -197,7 +200,7 @@ class IconPicker extends React.Component<Props> { })} </Icons> <Flex onClick={preventEventBubble}> - <React.Suspense fallback={<Loading>Loading…</Loading>}> + <React.Suspense fallback={<Loading>{t("Loading…")}</Loading>}> <ColorPicker color={this.props.color} onChange={(color) => @@ -246,4 +249,4 @@ const Wrapper = styled("div")` position: relative; `; -export default IconPicker; +export default withTranslation()<IconPicker>(IconPicker); diff --git a/app/components/InputSearch.js b/app/components/InputSearch.js index 1ab086e1..85c20c76 100644 --- a/app/components/InputSearch.js +++ b/app/components/InputSearch.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { observer } from "mobx-react"; import { SearchIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import keydown from "react-keydown"; import { withRouter, type RouterHistory } from "react-router-dom"; import styled, { withTheme } from "styled-components"; @@ -16,6 +17,7 @@ type Props = { source: string, placeholder?: string, collectionId?: string, + t: TFunction, }; @observer @@ -24,7 +26,7 @@ class InputSearch extends React.Component<Props> { @observable focused: boolean = false; @keydown("meta+f") - focus(ev) { + focus(ev: SyntheticEvent<>) { ev.preventDefault(); if (this.input) { @@ -32,7 +34,7 @@ class InputSearch extends React.Component<Props> { } } - handleSearchInput = (ev) => { + handleSearchInput = (ev: SyntheticInputEvent<>) => { ev.preventDefault(); this.props.history.push( searchUrl(ev.target.value, { @@ -51,7 +53,8 @@ class InputSearch extends React.Component<Props> { }; render() { - const { theme, placeholder = "Search…" } = this.props; + const { t } = this.props; + const { theme, placeholder = t("Search…") } = this.props; return ( <InputMaxWidth @@ -76,4 +79,6 @@ const InputMaxWidth = styled(Input)` max-width: 30vw; `; -export default withTheme(withRouter(InputSearch)); +export default withTranslation()<InputSearch>( + withTheme(withRouter(InputSearch)) +); diff --git a/app/components/InputSelect.js b/app/components/InputSelect.js index 5ac3c865..e9e6cdc5 100644 --- a/app/components/InputSelect.js +++ b/app/components/InputSelect.js @@ -20,11 +20,17 @@ const Select = styled.select` } `; +const Wrapper = styled.label` + display: block; + max-width: ${(props) => (props.short ? "350px" : "100%")}; +`; + type Option = { label: string, value: string }; export type Props = { value?: string, label?: string, + short?: boolean, className?: string, labelHidden?: boolean, options: Option[], @@ -43,12 +49,19 @@ class InputSelect extends React.Component<Props> { }; render() { - const { label, className, labelHidden, options, ...rest } = this.props; + const { + label, + className, + labelHidden, + options, + short, + ...rest + } = this.props; const wrappedLabel = <LabelText>{label}</LabelText>; return ( - <label> + <Wrapper short={short}> {label && (labelHidden ? ( <VisuallyHidden>{wrappedLabel}</VisuallyHidden> @@ -64,7 +77,7 @@ class InputSelect extends React.Component<Props> { ))} </Select> </Outline> - </label> + </Wrapper> ); } } diff --git a/app/components/LanguagePrompt.js b/app/components/LanguagePrompt.js new file mode 100644 index 00000000..140064f9 --- /dev/null +++ b/app/components/LanguagePrompt.js @@ -0,0 +1,90 @@ +// @flow +import { find } from "lodash"; +import * as React from "react"; +import { Trans, useTranslation } from "react-i18next"; +import styled from "styled-components"; +import { languages, languageOptions } from "shared/i18n"; +import Flex from "components/Flex"; +import NoticeTip from "components/NoticeTip"; +import useCurrentUser from "hooks/useCurrentUser"; +import useStores from "hooks/useStores"; +import { detectLanguage } from "utils/language"; + +function Icon(props) { + return ( + <svg + width="32" + height="32" + viewBox="0 0 32 32" + fill="none" + xmlns="http://www.w3.org/2000/svg" + {...props} + > + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M21 18H16L14 16V6C14 4.89543 14.8954 4 16 4H28C29.1046 4 30 4.89543 30 6V16C30 17.1046 29.1046 18 28 18H27L25.4142 19.5858C24.6332 20.3668 23.3668 20.3668 22.5858 19.5858L21 18ZM16 15.1716V6H28V16H27H26.1716L25.5858 16.5858L24 18.1716L22.4142 16.5858L21.8284 16H21H16.8284L16 15.1716Z" + fill="#2B2F35" + /> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M16 13H4C2.89543 13 2 13.8954 2 15V25C2 26.1046 2.89543 27 4 27H5L6.58579 28.5858C7.36684 29.3668 8.63316 29.3668 9.41421 28.5858L11 27H16C17.1046 27 18 26.1046 18 25V15C18 13.8954 17.1046 13 16 13ZM9 17L6 16.9681C6 16.9681 5 17.016 5 18C5 18.984 6 19 6 19H8.5H10C10 19 9.57627 20.1885 8.38983 21.0831C7.20339 21.9777 5.7197 23 5.7197 23C5.7197 23 4.99153 23.6054 5.5 24.5C6.00847 25.3946 7 24.8403 7 24.8403L9.74576 22.8722L11.9492 24.6614C11.9492 24.6614 12.6271 25.3771 13.3051 24.4825C13.9831 23.5879 13.3051 23.0512 13.3051 23.0512L11.1017 21.262C11.1017 21.262 11.5 21 12 20L12.5 19H14C14 19 15 19.0319 15 18C15 16.9681 14 16.9681 14 16.9681L11 17V16C11 16 11.0169 15 10 15C8.98305 15 9 16 9 16V17Z" + fill="#2B2F35" + /> + <path + d="M23.6672 12.5221L23.5526 12.1816H23.1934H20.8818H20.5215L20.4075 12.5235L20.082 13.5H19.2196L21.2292 8.10156H21.8774L21.5587 9.06116L20.7633 11.4562L20.5449 12.1138H21.2378H22.8374H23.5327L23.3114 11.4546L22.5072 9.05959L22.1855 8.10156H22.768L24.7887 13.5H23.9964L23.6672 12.5221Z" + fill="#2B2F35" + stroke="#2B2F35" + /> + </svg> + ); +} + +export default function LanguagePrompt() { + const { auth, ui } = useStores(); + const { t } = useTranslation(); + const user = useCurrentUser(); + const language = detectLanguage(); + + if (language === "en_US" || language === user.language) { + return null; + } + + if (!languages.includes(language)) { + return null; + } + + const option = find(languageOptions, (o) => o.value === language); + const optionLabel = option ? option.label : ""; + + return ( + <NoticeTip> + <Flex align="center"> + <LanguageIcon /> + <span> + <Trans> + Outline is available in your language {{ optionLabel }}, would you + like to change? + </Trans> + <br /> + <a + onClick={() => { + auth.updateUser({ + language, + }); + ui.setLanguagePromptDismissed(); + }} + > + {t("Change Language")} + </a>{" "} + · <a onClick={ui.setLanguagePromptDismissed}>{t("Dismiss")}</a> + </span> + </Flex> + </NoticeTip> + ); +} + +const LanguageIcon = styled(Icon)` + margin-right: 12px; +`; diff --git a/app/components/Layout.js b/app/components/Layout.js index 8f58d5a1..5849669c 100644 --- a/app/components/Layout.js +++ b/app/components/Layout.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { observer, inject } from "mobx-react"; import * as React from "react"; import { Helmet } from "react-helmet"; +import { withTranslation, type TFunction } from "react-i18next"; import keydown from "react-keydown"; import { Switch, Route, Redirect } from "react-router-dom"; import styled, { withTheme } from "styled-components"; @@ -37,6 +38,8 @@ type Props = { ui: UiStore, notifications?: React.Node, theme: Theme, + i18n: Object, + t: TFunction, }; @observer @@ -45,7 +48,7 @@ class Layout extends React.Component<Props> { @observable redirectTo: ?string; @observable keyboardShortcutsOpen: boolean = false; - constructor(props) { + constructor(props: Props) { super(); this.updateBackground(props); } @@ -58,7 +61,7 @@ class Layout extends React.Component<Props> { } } - updateBackground(props) { + updateBackground(props: Props) { // ensure the wider page color always matches the theme window.document.body.style.background = props.theme.background; } @@ -74,7 +77,7 @@ class Layout extends React.Component<Props> { }; @keydown(["t", "/", "meta+k"]) - goToSearch(ev) { + goToSearch(ev: SyntheticEvent<>) { if (this.props.ui.editMode) return; ev.preventDefault(); ev.stopPropagation(); @@ -88,7 +91,7 @@ class Layout extends React.Component<Props> { } render() { - const { auth, ui } = this.props; + const { auth, t, ui } = this.props; const { user, team } = auth; const showSidebar = auth.authenticated && user && team; @@ -131,7 +134,7 @@ class Layout extends React.Component<Props> { <Modal isOpen={this.keyboardShortcutsOpen} onRequestClose={this.handleCloseKeyboardShortcuts} - title="Keyboard shortcuts" + title={t("Keyboard shortcuts")} > <KeyboardShortcuts /> </Modal> @@ -162,4 +165,6 @@ const Content = styled(Flex)` `}; `; -export default inject("auth", "ui", "documents")(withTheme(Layout)); +export default withTranslation()<Layout>( + inject("auth", "ui", "documents")(withTheme(Layout)) +); diff --git a/app/components/NoticeTip.js b/app/components/NoticeTip.js new file mode 100644 index 00000000..573c4071 --- /dev/null +++ b/app/components/NoticeTip.js @@ -0,0 +1,22 @@ +// @flow +import styled from "styled-components"; + +const Notice = styled.p` + background: ${(props) => props.theme.brand.marine}; + color: ${(props) => props.theme.almostBlack}; + padding: 10px 12px; + margin-top: 24px; + border-radius: 4px; + position: relative; + + a { + color: ${(props) => props.theme.almostBlack}; + font-weight: 500; + } + + a:hover { + text-decoration: underline; + } +`; + +export default Notice; diff --git a/app/components/Sidebar/Main.js b/app/components/Sidebar/Main.js index 13e86d87..872ba576 100644 --- a/app/components/Sidebar/Main.js +++ b/app/components/Sidebar/Main.js @@ -12,6 +12,7 @@ import { PlusIcon, } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import AuthStore from "stores/AuthStore"; @@ -34,6 +35,7 @@ type Props = { auth: AuthStore, documents: DocumentsStore, policies: PoliciesStore, + t: TFunction, }; @observer @@ -65,7 +67,7 @@ class MainSidebar extends React.Component<Props> { }; render() { - const { auth, documents, policies } = this.props; + const { auth, documents, policies, t } = this.props; const { user, team } = auth; if (!user || !team) return null; @@ -90,7 +92,7 @@ class MainSidebar extends React.Component<Props> { to="/home" icon={<HomeIcon color="currentColor" />} exact={false} - label="Home" + label={t("Home")} /> <SidebarLink to={{ @@ -98,20 +100,20 @@ class MainSidebar extends React.Component<Props> { state: { fromMenu: true }, }} icon={<SearchIcon color="currentColor" />} - label="Search" + label={t("Search")} exact={false} /> <SidebarLink to="/starred" icon={<StarredIcon color="currentColor" />} exact={false} - label="Starred" + label={t("Starred")} /> <SidebarLink to="/templates" icon={<ShapesIcon color="currentColor" />} exact={false} - label="Templates" + label={t("Templates")} active={ documents.active ? documents.active.template : undefined } @@ -121,7 +123,7 @@ class MainSidebar extends React.Component<Props> { icon={<EditIcon color="currentColor" />} label={ <Drafts align="center"> - Drafts + {t("Drafts")} {documents.totalDrafts > 0 && ( <Bubble count={documents.totalDrafts} /> )} @@ -146,7 +148,7 @@ class MainSidebar extends React.Component<Props> { to="/archive" icon={<ArchiveIcon color="currentColor" />} exact={false} - label="Archive" + label={t("Archive")} active={ documents.active ? documents.active.isArchived && !documents.active.isDeleted @@ -157,7 +159,7 @@ class MainSidebar extends React.Component<Props> { to="/trash" icon={<TrashIcon color="currentColor" />} exact={false} - label="Trash" + label={t("Trash")} active={ documents.active ? documents.active.isDeleted : undefined } @@ -167,21 +169,21 @@ class MainSidebar extends React.Component<Props> { to="/settings/people" onClick={this.handleInviteModalOpen} icon={<PlusIcon color="currentColor" />} - label="Invite people…" + label={t("Invite people…")} /> )} </Section> </Scrollable> </Flex> <Modal - title="Invite people" + title={t("Invite people")} onRequestClose={this.handleInviteModalClose} isOpen={this.inviteModalOpen} > <Invite onSubmit={this.handleInviteModalClose} /> </Modal> <Modal - title="Create a collection" + title={t("Create a collection")} onRequestClose={this.handleCreateCollectionModalClose} isOpen={this.createCollectionModalOpen} > @@ -196,4 +198,6 @@ const Drafts = styled(Flex)` height: 24px; `; -export default inject("documents", "policies", "auth")(MainSidebar); +export default withTranslation()<MainSidebar>( + inject("documents", "policies", "auth")(MainSidebar) +); diff --git a/app/components/Sidebar/Settings.js b/app/components/Sidebar/Settings.js index 3304405c..dc93d5fb 100644 --- a/app/components/Sidebar/Settings.js +++ b/app/components/Sidebar/Settings.js @@ -13,6 +13,7 @@ import { ExpandedIcon, } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import type { RouterHistory } from "react-router-dom"; import styled from "styled-components"; import AuthStore from "stores/AuthStore"; @@ -36,6 +37,7 @@ type Props = { history: RouterHistory, policies: PoliciesStore, auth: AuthStore, + t: TFunction, }; @observer @@ -45,7 +47,7 @@ class SettingsSidebar extends React.Component<Props> { }; render() { - const { policies, auth } = this.props; + const { policies, t, auth } = this.props; const { team } = auth; if (!team) return null; @@ -56,7 +58,7 @@ class SettingsSidebar extends React.Component<Props> { <HeaderBlock subheading={ <ReturnToApp align="center"> - <BackIcon color="currentColor" /> Return to App + <BackIcon color="currentColor" /> {t("Return to App")} </ReturnToApp> } teamName={team.name} @@ -71,17 +73,17 @@ class SettingsSidebar extends React.Component<Props> { <SidebarLink to="/settings" icon={<ProfileIcon color="currentColor" />} - label="Profile" + label={t("Profile")} /> <SidebarLink to="/settings/notifications" icon={<EmailIcon color="currentColor" />} - label="Notifications" + label={t("Notifications")} /> <SidebarLink to="/settings/tokens" icon={<CodeIcon color="currentColor" />} - label="API Tokens" + label={t("API Tokens")} /> </Section> <Section> @@ -90,44 +92,44 @@ class SettingsSidebar extends React.Component<Props> { <SidebarLink to="/settings/details" icon={<TeamIcon color="currentColor" />} - label="Details" + label={t("Details")} /> )} {can.update && ( <SidebarLink to="/settings/security" icon={<PadlockIcon color="currentColor" />} - label="Security" + label={t("Security")} /> )} <SidebarLink to="/settings/people" icon={<UserIcon color="currentColor" />} exact={false} - label="People" + label={t("People")} /> <SidebarLink to="/settings/groups" icon={<GroupIcon color="currentColor" />} exact={false} - label="Groups" + label={t("Groups")} /> <SidebarLink to="/settings/shares" icon={<LinkIcon color="currentColor" />} - label="Share Links" + label={t("Share Links")} /> {can.export && ( <SidebarLink to="/settings/export" icon={<DocumentIcon color="currentColor" />} - label="Export Data" + label={t("Export Data")} /> )} </Section> {can.update && ( <Section> - <Header>Integrations</Header> + <Header>{t("Integrations")}</Header> <SidebarLink to="/settings/integrations/slack" icon={<SlackIcon color="currentColor" />} @@ -144,7 +146,7 @@ class SettingsSidebar extends React.Component<Props> { )} {can.update && !isHosted && ( <Section> - <Header>Installation</Header> + <Header>{t("Installation")}</Header> <Version /> </Section> )} @@ -164,4 +166,6 @@ const ReturnToApp = styled(Flex)` height: 16px; `; -export default inject("auth", "policies")(SettingsSidebar); +export default withTranslation()<SettingsSidebar>( + inject("auth", "policies")(SettingsSidebar) +); diff --git a/app/components/Sidebar/components/Collections.js b/app/components/Sidebar/components/Collections.js index 10af4810..1a6ee1f5 100644 --- a/app/components/Sidebar/components/Collections.js +++ b/app/components/Sidebar/components/Collections.js @@ -2,6 +2,7 @@ import { observer, inject } from "mobx-react"; import { PlusIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import keydown from "react-keydown"; import { withRouter, type RouterHistory } from "react-router-dom"; @@ -24,6 +25,7 @@ type Props = { documents: DocumentsStore, onCreateCollection: () => void, ui: UiStore, + t: TFunction, }; @observer @@ -52,7 +54,7 @@ class Collections extends React.Component<Props> { } render() { - const { collections, ui, policies, documents } = this.props; + const { collections, ui, policies, documents, t } = this.props; const content = ( <> @@ -71,7 +73,7 @@ class Collections extends React.Component<Props> { to="/collections" onClick={this.props.onCreateCollection} icon={<PlusIcon color="currentColor" />} - label="New collection…" + label={t("New collection…")} exact /> </> @@ -79,7 +81,7 @@ class Collections extends React.Component<Props> { return ( <Flex column> - <Header>Collections</Header> + <Header>{t("Collections")}</Header> {collections.isLoaded ? ( this.isPreloaded ? ( content @@ -94,9 +96,6 @@ class Collections extends React.Component<Props> { } } -export default inject( - "collections", - "ui", - "documents", - "policies" -)(withRouter(Collections)); +export default withTranslation()<Collections>( + inject("collections", "ui", "documents", "policies")(withRouter(Collections)) +); diff --git a/app/components/Sidebar/components/DocumentLink.js b/app/components/Sidebar/components/DocumentLink.js index 023c8aff..fd997876 100644 --- a/app/components/Sidebar/components/DocumentLink.js +++ b/app/components/Sidebar/components/DocumentLink.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import DocumentsStore from "stores/DocumentsStore"; import Collection from "models/Collection"; @@ -23,6 +24,7 @@ type Props = {| activeDocumentRef?: (?HTMLElement) => void, prefetchDocument: (documentId: string) => Promise<void>, depth: number, + t: TFunction, |}; @observer @@ -84,6 +86,7 @@ class DocumentLink extends React.Component<Props> { prefetchDocument, depth, canUpdate, + t, } = this.props; const showChildren = !!( @@ -96,7 +99,7 @@ class DocumentLink extends React.Component<Props> { this.isActiveDocument()) ); const document = documents.get(node.id); - const title = node.title || "Untitled"; + const title = node.title || t("Untitled"); return ( <Flex @@ -147,6 +150,7 @@ class DocumentLink extends React.Component<Props> { prefetchDocument={prefetchDocument} depth={depth + 1} canUpdate={canUpdate} + t={t} /> ))} </DocumentChildren> @@ -160,4 +164,4 @@ class DocumentLink extends React.Component<Props> { const DocumentChildren = styled(Flex)``; -export default DocumentLink; +export default withTranslation()<DocumentLink>(DocumentLink); diff --git a/app/hooks/useCurrentUser.js b/app/hooks/useCurrentUser.js new file mode 100644 index 00000000..3d375e3b --- /dev/null +++ b/app/hooks/useCurrentUser.js @@ -0,0 +1,9 @@ +// @flow +import invariant from "invariant"; +import useStores from "./useStores"; + +export default function useCurrentUser() { + const { auth } = useStores(); + invariant(auth.user, "user required"); + return auth.user; +} diff --git a/app/index.js b/app/index.js index b6f293ac..2098c7c0 100644 --- a/app/index.js +++ b/app/index.js @@ -6,6 +6,7 @@ import * as React from "react"; import { render } from "react-dom"; import { BrowserRouter as Router } from "react-router-dom"; +import { initI18n } from "shared/i18n"; import stores from "stores"; import ErrorBoundary from "components/ErrorBoundary"; import ScrollToTop from "components/ScrollToTop"; @@ -14,6 +15,8 @@ import Toasts from "components/Toasts"; import Routes from "./routes"; import env from "env"; +initI18n(); + const element = document.getElementById("root"); if (element) { diff --git a/app/menus/AccountMenu.js b/app/menus/AccountMenu.js index 5e4a5880..5df567e5 100644 --- a/app/menus/AccountMenu.js +++ b/app/menus/AccountMenu.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import { SunIcon, MoonIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Link } from "react-router-dom"; import styled from "styled-components"; import AuthStore from "stores/AuthStore"; @@ -23,6 +24,7 @@ type Props = { label: React.Node, ui: UiStore, auth: AuthStore, + t: TFunction, }; @observer @@ -42,14 +44,14 @@ class AccountMenu extends React.Component<Props> { }; render() { - const { ui } = this.props; + const { ui, t } = this.props; return ( <> <Modal isOpen={this.keyboardShortcutsOpen} onRequestClose={this.handleCloseKeyboardShortcuts} - title="Keyboard shortcuts" + title={t("Keyboard shortcuts")} > <KeyboardShortcuts /> </Modal> @@ -58,23 +60,23 @@ class AccountMenu extends React.Component<Props> { label={this.props.label} > <DropdownMenuItem as={Link} to={settings()}> - Settings + {t("Settings")} </DropdownMenuItem> <DropdownMenuItem onClick={this.handleOpenKeyboardShortcuts}> - Keyboard shortcuts + {t("Keyboard shortcuts")} </DropdownMenuItem> <DropdownMenuItem href={developers()} target="_blank"> - API documentation + {t("API documentation")} </DropdownMenuItem> <hr /> <DropdownMenuItem href={changelog()} target="_blank"> - Changelog + {t("Changelog")} </DropdownMenuItem> <DropdownMenuItem href={mailToUrl()} target="_blank"> - Send us feedback + {t("Send us feedback")} </DropdownMenuItem> <DropdownMenuItem href={githubIssuesUrl()} target="_blank"> - Report a bug + {t("Report a bug")} </DropdownMenuItem> <hr /> <DropdownMenu @@ -87,7 +89,7 @@ class AccountMenu extends React.Component<Props> { label={ <DropdownMenuItem> <ChangeTheme justify="space-between"> - Appearance + {t("Appearance")} {ui.resolvedTheme === "light" ? <SunIcon /> : <MoonIcon />} </ChangeTheme> </DropdownMenuItem> @@ -98,24 +100,24 @@ class AccountMenu extends React.Component<Props> { onClick={() => ui.setTheme("system")} selected={ui.theme === "system"} > - System + {t("System")} </DropdownMenuItem> <DropdownMenuItem onClick={() => ui.setTheme("light")} selected={ui.theme === "light"} > - Light + {t("Light")} </DropdownMenuItem> <DropdownMenuItem onClick={() => ui.setTheme("dark")} selected={ui.theme === "dark"} > - Dark + {t("Dark")} </DropdownMenuItem> </DropdownMenu> <hr /> <DropdownMenuItem onClick={this.handleLogout}> - Log out + {t("Log out")} </DropdownMenuItem> </DropdownMenu> </> @@ -127,4 +129,6 @@ const ChangeTheme = styled(Flex)` width: 100%; `; -export default inject("ui", "auth")(AccountMenu); +export default withTranslation()<AccountMenu>( + inject("ui", "auth")(AccountMenu) +); diff --git a/app/menus/CollectionMenu.js b/app/menus/CollectionMenu.js index cba3e7c4..f8c884d7 100644 --- a/app/menus/CollectionMenu.js +++ b/app/menus/CollectionMenu.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { withRouter, type RouterHistory } from "react-router-dom"; import DocumentsStore from "stores/DocumentsStore"; import PoliciesStore from "stores/PoliciesStore"; @@ -27,6 +28,7 @@ type Props = { history: RouterHistory, onOpen?: () => void, onClose?: () => void, + t: TFunction, }; @observer @@ -112,6 +114,7 @@ class CollectionMenu extends React.Component<Props> { position, onOpen, onClose, + t, } = this.props; const can = policies.abilities(collection.id); @@ -128,7 +131,7 @@ class CollectionMenu extends React.Component<Props> { </VisuallyHidden> <Modal - title="Collection permissions" + title={t("Collection permissions")} onRequestClose={this.handleMembersModalClose} isOpen={this.showCollectionMembers} > @@ -143,12 +146,12 @@ class CollectionMenu extends React.Component<Props> { <DropdownMenuItems items={[ { - title: "New document", + title: t("New document"), visible: !!(collection && can.update), onClick: this.onNewDocument, }, { - title: "Import document", + title: t("Import document"), visible: !!(collection && can.update), onClick: this.onImportDocument, }, @@ -156,22 +159,22 @@ class CollectionMenu extends React.Component<Props> { type: "separator", }, { - title: "Edit…", + title: t("Edit…"), visible: !!(collection && can.update), onClick: this.handleEditCollectionOpen, }, { - title: "Permissions…", + title: t("Permissions…"), visible: !!(collection && can.update), onClick: this.handleMembersModalOpen, }, { - title: "Export…", + title: t("Export…"), visible: !!(collection && can.export), onClick: this.handleExportCollectionOpen, }, { - title: "Delete…", + title: t("Delete…"), visible: !!(collection && can.delete), onClick: this.handleDeleteCollectionOpen, }, @@ -179,7 +182,7 @@ class CollectionMenu extends React.Component<Props> { /> </DropdownMenu> <Modal - title="Edit collection" + title={t("Edit collection")} isOpen={this.showCollectionEdit} onRequestClose={this.handleEditCollectionClose} > @@ -189,7 +192,7 @@ class CollectionMenu extends React.Component<Props> { /> </Modal> <Modal - title="Delete collection" + title={t("Delete collection")} isOpen={this.showCollectionDelete} onRequestClose={this.handleDeleteCollectionClose} > @@ -199,7 +202,7 @@ class CollectionMenu extends React.Component<Props> { /> </Modal> <Modal - title="Export collection" + title={t("Export collection")} isOpen={this.showCollectionExport} onRequestClose={this.handleExportCollectionClose} > @@ -213,8 +216,6 @@ class CollectionMenu extends React.Component<Props> { } } -export default inject( - "ui", - "documents", - "policies" -)(withRouter(CollectionMenu)); +export default withTranslation()<CollectionMenu>( + inject("ui", "documents", "policies")(withRouter(CollectionMenu)) +); diff --git a/app/menus/DocumentMenu.js b/app/menus/DocumentMenu.js index eb156ea5..1554cf1c 100644 --- a/app/menus/DocumentMenu.js +++ b/app/menus/DocumentMenu.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Redirect } from "react-router-dom"; import AuthStore from "stores/AuthStore"; import CollectionStore from "stores/CollectionsStore"; @@ -38,6 +39,7 @@ type Props = { label?: React.Node, onOpen?: () => void, onClose?: () => void, + t: TFunction, }; @observer @@ -83,7 +85,8 @@ class DocumentMenu extends React.Component<Props> { // when duplicating, go straight to the duplicated document content this.redirectTo = duped.url; - this.props.ui.showToast("Document duplicated"); + const { t } = this.props; + this.props.ui.showToast(t("Document duplicated")); }; handleOpenTemplateModal = () => { @@ -100,7 +103,8 @@ class DocumentMenu extends React.Component<Props> { handleArchive = async (ev: SyntheticEvent<>) => { await this.props.document.archive(); - this.props.ui.showToast("Document archived"); + const { t } = this.props; + this.props.ui.showToast(t("Document archived")); }; handleRestore = async ( @@ -108,12 +112,14 @@ class DocumentMenu extends React.Component<Props> { options?: { collectionId: string } ) => { await this.props.document.restore(options); - this.props.ui.showToast("Document restored"); + const { t } = this.props; + this.props.ui.showToast(t("Document restored")); }; handleUnpublish = async (ev: SyntheticEvent<>) => { await this.props.document.unpublish(); - this.props.ui.showToast("Document unpublished"); + const { t } = this.props; + this.props.ui.showToast(t("Document unpublished")); }; handlePin = (ev: SyntheticEvent<>) => { @@ -164,6 +170,7 @@ class DocumentMenu extends React.Component<Props> { label, onOpen, onClose, + t, } = this.props; const can = policies.abilities(document.id); @@ -183,17 +190,17 @@ class DocumentMenu extends React.Component<Props> { <DropdownMenuItems items={[ { - title: "Restore", + title: t("Restore"), visible: !!can.unarchive, onClick: this.handleRestore, }, { - title: "Restore", + title: t("Restore"), visible: !!(collection && can.restore), onClick: this.handleRestore, }, { - title: "Restore…", + title: t("Restore…"), visible: !collection && !!can.restore, style: { left: -170, @@ -204,7 +211,7 @@ class DocumentMenu extends React.Component<Props> { items: [ { type: "heading", - title: "Choose a collection", + title: t("Choose a collection"), }, ...collections.orderedData.map((collection) => { const can = policies.abilities(collection.id); @@ -224,37 +231,37 @@ class DocumentMenu extends React.Component<Props> { ], }, { - title: "Unpin", + title: t("Unpin"), onClick: this.handleUnpin, visible: !!(showPin && document.pinned && can.unpin), }, { - title: "Pin to collection", + title: t("Pin to collection"), onClick: this.handlePin, visible: !!(showPin && !document.pinned && can.pin), }, { - title: "Unstar", + title: t("Unstar"), onClick: this.handleUnstar, visible: document.isStarred && !!can.unstar, }, { - title: "Star", + title: t("Star"), onClick: this.handleStar, visible: !document.isStarred && !!can.star, }, { - title: "Share link…", + title: t("Share link…"), onClick: this.handleShareLink, visible: canShareDocuments, }, { - title: "Enable embeds", + title: t("Enable embeds"), onClick: document.enableEmbeds, visible: !!showToggleEmbeds && document.embedsDisabled, }, { - title: "Disable embeds", + title: t("Disable embeds"), onClick: document.disableEmbeds, visible: !!showToggleEmbeds && !document.embedsDisabled, }, @@ -262,42 +269,42 @@ class DocumentMenu extends React.Component<Props> { type: "separator", }, { - title: "New nested document", + title: t("New nested document"), onClick: this.handleNewChild, visible: !!can.createChildDocument, }, { - title: "Create template…", + title: t("Create template…"), onClick: this.handleOpenTemplateModal, visible: !!can.update && !document.isTemplate, }, { - title: "Edit", + title: t("Edit"), onClick: this.handleEdit, visible: !!can.update, }, { - title: "Duplicate", + title: t("Duplicate"), onClick: this.handleDuplicate, visible: !!can.update, }, { - title: "Unpublish", + title: t("Unpublish"), onClick: this.handleUnpublish, visible: !!can.unpublish, }, { - title: "Archive", + title: t("Archive"), onClick: this.handleArchive, visible: !!can.archive, }, { - title: "Delete…", + title: t("Delete…"), onClick: this.handleDelete, visible: !!can.delete, }, { - title: "Move…", + title: t("Move…"), onClick: this.handleMove, visible: !!can.move, }, @@ -305,17 +312,17 @@ class DocumentMenu extends React.Component<Props> { type: "separator", }, { - title: "History", + title: t("History"), onClick: this.handleDocumentHistory, visible: canViewHistory, }, { - title: "Download", + title: t("Download"), onClick: this.handleExport, visible: !!can.download, }, { - title: "Print", + title: t("Print"), onClick: window.print, visible: !!showPrint, }, @@ -323,7 +330,9 @@ class DocumentMenu extends React.Component<Props> { /> </DropdownMenu> <Modal - title={`Delete ${this.props.document.noun}`} + title={t("Delete {{ documentName }}", { + documentName: this.props.document.noun, + })} onRequestClose={this.handleCloseDeleteModal} isOpen={this.showDeleteModal} > @@ -333,7 +342,7 @@ class DocumentMenu extends React.Component<Props> { /> </Modal> <Modal - title="Create template" + title={t("Create template")} onRequestClose={this.handleCloseTemplateModal} isOpen={this.showTemplateModal} > @@ -343,7 +352,7 @@ class DocumentMenu extends React.Component<Props> { /> </Modal> <Modal - title="Share document" + title={t("Share document")} onRequestClose={this.handleCloseShareModal} isOpen={this.showShareModal} > @@ -357,4 +366,6 @@ class DocumentMenu extends React.Component<Props> { } } -export default inject("ui", "auth", "collections", "policies")(DocumentMenu); +export default withTranslation()<DocumentMenu>( + inject("ui", "auth", "collections", "policies")(DocumentMenu) +); diff --git a/app/menus/GroupMenu.js b/app/menus/GroupMenu.js index b6633e03..b3e8b7b8 100644 --- a/app/menus/GroupMenu.js +++ b/app/menus/GroupMenu.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { withRouter, type RouterHistory } from "react-router-dom"; import PoliciesStore from "stores/PoliciesStore"; import UiStore from "stores/UiStore"; @@ -20,6 +21,7 @@ type Props = { onMembers: () => void, onOpen?: () => void, onClose?: () => void, + t: TFunction, }; @observer @@ -46,13 +48,13 @@ class GroupMenu extends React.Component<Props> { }; render() { - const { policies, group, onOpen, onClose } = this.props; + const { policies, group, onOpen, onClose, t } = this.props; const can = policies.abilities(group.id); return ( <> <Modal - title="Edit group" + title={t("Edit group")} onRequestClose={this.handleEditModalClose} isOpen={this.editModalOpen} > @@ -63,7 +65,7 @@ class GroupMenu extends React.Component<Props> { </Modal> <Modal - title="Delete group" + title={t("Delete group")} onRequestClose={this.handleDeleteModalClose} isOpen={this.deleteModalOpen} > @@ -76,7 +78,7 @@ class GroupMenu extends React.Component<Props> { <DropdownMenuItems items={[ { - title: "Members…", + title: t("Members…"), onClick: this.props.onMembers, visible: !!(group && can.read), }, @@ -84,12 +86,12 @@ class GroupMenu extends React.Component<Props> { type: "separator", }, { - title: "Edit…", + title: t("Edit…"), onClick: this.onEdit, visible: !!(group && can.update), }, { - title: "Delete…", + title: t("Delete…"), onClick: this.onDelete, visible: !!(group && can.delete), }, @@ -101,4 +103,6 @@ class GroupMenu extends React.Component<Props> { } } -export default inject("policies")(withRouter(GroupMenu)); +export default withTranslation()<GroupMenu>( + inject("policies")(withRouter(GroupMenu)) +); diff --git a/app/menus/NewChildDocumentMenu.js b/app/menus/NewChildDocumentMenu.js index 69f9ee42..b691ff23 100644 --- a/app/menus/NewChildDocumentMenu.js +++ b/app/menus/NewChildDocumentMenu.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { observer, inject } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Redirect } from "react-router-dom"; import CollectionsStore from "stores/CollectionsStore"; @@ -14,6 +15,7 @@ type Props = { label?: React.Node, document: Document, collections: CollectionsStore, + t: TFunction, }; @observer @@ -39,7 +41,7 @@ class NewChildDocumentMenu extends React.Component<Props> { render() { if (this.redirectTo) return <Redirect to={this.redirectTo} push />; - const { label, document, collections } = this.props; + const { label, document, collections, t } = this.props; const collection = collections.get(document.collectionId); return ( @@ -49,14 +51,16 @@ class NewChildDocumentMenu extends React.Component<Props> { { title: ( <span> - New document in{" "} - <strong>{collection ? collection.name : "collection"}</strong> + {t("New document in")}{" "} + <strong> + {collection ? collection.name : t("collection")} + </strong> </span> ), onClick: this.handleNewDocument, }, { - title: "New nested document", + title: t("New nested document"), onClick: this.handleNewChild, }, ]} @@ -66,4 +70,6 @@ class NewChildDocumentMenu extends React.Component<Props> { } } -export default inject("collections")(NewChildDocumentMenu); +export default withTranslation()<NewChildDocumentMenu>( + inject("collections")(NewChildDocumentMenu) +); diff --git a/app/menus/NewDocumentMenu.js b/app/menus/NewDocumentMenu.js index 7ee4b3e4..65aef421 100644 --- a/app/menus/NewDocumentMenu.js +++ b/app/menus/NewDocumentMenu.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import { PlusIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Redirect } from "react-router-dom"; import CollectionsStore from "stores/CollectionsStore"; @@ -19,6 +20,7 @@ type Props = { documents: DocumentsStore, collections: CollectionsStore, policies: PoliciesStore, + t: TFunction, }; @observer @@ -29,7 +31,14 @@ class NewDocumentMenu extends React.Component<Props> { this.redirectTo = undefined; } - handleNewDocument = (collectionId: string, options) => { + handleNewDocument = ( + collectionId: string, + options?: { + parentDocumentId?: string, + template?: boolean, + templateId?: string, + } + ) => { this.redirectTo = newDocumentUrl(collectionId, options); }; @@ -44,7 +53,7 @@ class NewDocumentMenu extends React.Component<Props> { render() { if (this.redirectTo) return <Redirect to={this.redirectTo} push />; - const { collections, documents, policies, label, ...rest } = this.props; + const { collections, documents, policies, label, t, ...rest } = this.props; const singleCollection = collections.orderedData.length === 1; return ( @@ -52,14 +61,15 @@ class NewDocumentMenu extends React.Component<Props> { label={ label || ( <Button icon={<PlusIcon />} small> - New doc{singleCollection ? "" : "…"} + {t("New doc")} + {singleCollection ? "" : "…"} </Button> ) } onOpen={this.onOpen} {...rest} > - <Header>Choose a collection</Header> + <Header>{t("Choose a collection")}</Header> <DropdownMenuItems items={collections.orderedData.map((collection) => ({ onClick: () => this.handleNewDocument(collection.id), @@ -77,4 +87,6 @@ class NewDocumentMenu extends React.Component<Props> { } } -export default inject("collections", "documents", "policies")(NewDocumentMenu); +export default withTranslation()<NewDocumentMenu>( + inject("collections", "documents", "policies")(NewDocumentMenu) +); diff --git a/app/menus/NewTemplateMenu.js b/app/menus/NewTemplateMenu.js index 86c99cfb..e1657ad5 100644 --- a/app/menus/NewTemplateMenu.js +++ b/app/menus/NewTemplateMenu.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import { PlusIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Redirect } from "react-router-dom"; import CollectionsStore from "stores/CollectionsStore"; @@ -17,6 +18,7 @@ type Props = { label?: React.Node, collections: CollectionsStore, policies: PoliciesStore, + t: TFunction, }; @observer @@ -36,20 +38,20 @@ class NewTemplateMenu extends React.Component<Props> { render() { if (this.redirectTo) return <Redirect to={this.redirectTo} push />; - const { collections, policies, label, ...rest } = this.props; + const { collections, policies, label, t, ...rest } = this.props; return ( <DropdownMenu label={ label || ( <Button icon={<PlusIcon />} small> - New template… + {t("New template…")} </Button> ) } {...rest} > - <Header>Choose a collection</Header> + <Header>{t("Choose a collection")}</Header> <DropdownMenuItems items={collections.orderedData.map((collection) => ({ onClick: () => this.handleNewDocument(collection.id), @@ -67,4 +69,6 @@ class NewTemplateMenu extends React.Component<Props> { } } -export default inject("collections", "policies")(NewTemplateMenu); +export default withTranslation()<NewTemplateMenu>( + inject("collections", "policies")(NewTemplateMenu) +); diff --git a/app/menus/RevisionMenu.js b/app/menus/RevisionMenu.js index 888ee0eb..59311281 100644 --- a/app/menus/RevisionMenu.js +++ b/app/menus/RevisionMenu.js @@ -1,6 +1,7 @@ // @flow import { inject } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { withRouter, type RouterHistory } from "react-router-dom"; import UiStore from "stores/UiStore"; @@ -19,22 +20,25 @@ type Props = { className?: string, label: React.Node, ui: UiStore, + t: TFunction, }; class RevisionMenu extends React.Component<Props> { handleRestore = async (ev: SyntheticEvent<>) => { ev.preventDefault(); await this.props.document.restore({ revisionId: this.props.revision.id }); - this.props.ui.showToast("Document restored"); + const { t } = this.props; + this.props.ui.showToast(t("Document restored")); this.props.history.push(this.props.document.url); }; handleCopy = () => { - this.props.ui.showToast("Link copied"); + const { t } = this.props; + this.props.ui.showToast(t("Link copied")); }; render() { - const { className, label, onOpen, onClose } = this.props; + const { className, label, onOpen, onClose, t } = this.props; const url = `${window.location.origin}${documentHistoryUrl( this.props.document, this.props.revision.id @@ -48,15 +52,17 @@ class RevisionMenu extends React.Component<Props> { label={label} > <DropdownMenuItem onClick={this.handleRestore}> - Restore version + {t("Restore version")} </DropdownMenuItem> <hr /> <CopyToClipboard text={url} onCopy={this.handleCopy}> - <DropdownMenuItem>Copy link</DropdownMenuItem> + <DropdownMenuItem>{t("Copy link")}</DropdownMenuItem> </CopyToClipboard> </DropdownMenu> ); } } -export default withRouter(inject("ui")(RevisionMenu)); +export default withTranslation()<RevisionMenu>( + withRouter(inject("ui")(RevisionMenu)) +); diff --git a/app/menus/ShareMenu.js b/app/menus/ShareMenu.js index d950a5d3..6c3404a0 100644 --- a/app/menus/ShareMenu.js +++ b/app/menus/ShareMenu.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { Redirect } from "react-router-dom"; import SharesStore from "stores/SharesStore"; @@ -16,6 +17,7 @@ type Props = { shares: SharesStore, ui: UiStore, share: Share, + t: TFunction, }; @observer @@ -36,36 +38,38 @@ class ShareMenu extends React.Component<Props> { try { await this.props.shares.revoke(this.props.share); - this.props.ui.showToast("Share link revoked"); + const { t } = this.props; + this.props.ui.showToast(t("Share link revoked")); } catch (err) { this.props.ui.showToast(err.message); } }; handleCopy = () => { - this.props.ui.showToast("Share link copied"); + const { t } = this.props; + this.props.ui.showToast(t("Share link copied")); }; render() { if (this.redirectTo) return <Redirect to={this.redirectTo} push />; - const { share, onOpen, onClose } = this.props; + const { share, onOpen, onClose, t } = this.props; return ( <DropdownMenu onOpen={onOpen} onClose={onClose}> <CopyToClipboard text={share.url} onCopy={this.handleCopy}> - <DropdownMenuItem>Copy link</DropdownMenuItem> + <DropdownMenuItem>{t("Copy link")}</DropdownMenuItem> </CopyToClipboard> <DropdownMenuItem onClick={this.handleGoToDocument}> - Go to document + {t("Go to document")} </DropdownMenuItem> <hr /> <DropdownMenuItem onClick={this.handleRevoke}> - Revoke link + {t("Revoke link")} </DropdownMenuItem> </DropdownMenu> ); } } -export default inject("shares", "ui")(ShareMenu); +export default withTranslation()<ShareMenu>(inject("shares", "ui")(ShareMenu)); diff --git a/app/menus/TemplatesMenu.js b/app/menus/TemplatesMenu.js index 653ba279..fe899358 100644 --- a/app/menus/TemplatesMenu.js +++ b/app/menus/TemplatesMenu.js @@ -2,6 +2,7 @@ import { observer, inject } from "mobx-react"; import { DocumentIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import DocumentsStore from "stores/DocumentsStore"; import Document from "models/Document"; @@ -11,12 +12,13 @@ import { DropdownMenu, DropdownMenuItem } from "components/DropdownMenu"; type Props = { document: Document, documents: DocumentsStore, + t: TFunction, }; @observer class TemplatesMenu extends React.Component<Props> { render() { - const { documents, document, ...rest } = this.props; + const { documents, document, t, ...rest } = this.props; const templates = documents.templatesInCollection(document.collectionId); if (!templates.length) { @@ -28,7 +30,7 @@ class TemplatesMenu extends React.Component<Props> { position="left" label={ <Button disclosure neutral> - Templates + {t("Templates")} </Button> } {...rest} @@ -42,7 +44,9 @@ class TemplatesMenu extends React.Component<Props> { <div> <strong>{template.titleWithDefault}</strong> <br /> - <Author>By {template.createdBy.name}</Author> + <Author> + {t("By {{ author }}", { author: template.createdBy.name })} + </Author> </div> </DropdownMenuItem> ))} @@ -55,4 +59,6 @@ const Author = styled.div` font-size: 13px; `; -export default inject("documents")(TemplatesMenu); +export default withTranslation()<TemplatesMenu>( + inject("documents")(TemplatesMenu) +); diff --git a/app/menus/UserMenu.js b/app/menus/UserMenu.js index cf2c2b39..7629eaa8 100644 --- a/app/menus/UserMenu.js +++ b/app/menus/UserMenu.js @@ -2,6 +2,7 @@ import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import UsersStore from "stores/UsersStore"; import User from "models/User"; import { DropdownMenu } from "components/DropdownMenu"; @@ -10,16 +11,20 @@ import DropdownMenuItems from "components/DropdownMenu/DropdownMenuItems"; type Props = { user: User, users: UsersStore, + t: TFunction, }; @observer class UserMenu extends React.Component<Props> { handlePromote = (ev: SyntheticEvent<>) => { ev.preventDefault(); - const { user, users } = this.props; + const { user, users, t } = this.props; if ( !window.confirm( - `Are you want to make ${user.name} an admin? Admins can modify team and billing information.` + t( + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.", + { userName: user.name } + ) ) ) { return; @@ -29,8 +34,14 @@ class UserMenu extends React.Component<Props> { handleDemote = (ev: SyntheticEvent<>) => { ev.preventDefault(); - const { user, users } = this.props; - if (!window.confirm(`Are you want to make ${user.name} a member?`)) { + const { user, users, t } = this.props; + if ( + !window.confirm( + t("Are you sure you want to make {{ userName }} a member?", { + userName: user.name, + }) + ) + ) { return; } users.demote(user); @@ -38,10 +49,12 @@ class UserMenu extends React.Component<Props> { handleSuspend = (ev: SyntheticEvent<>) => { ev.preventDefault(); - const { user, users } = this.props; + const { user, users, t } = this.props; if ( !window.confirm( - "Are you want to suspend this account? Suspended users will be prevented from logging in." + t( + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in." + ) ) ) { return; @@ -62,19 +75,23 @@ class UserMenu extends React.Component<Props> { }; render() { - const { user } = this.props; + const { user, t } = this.props; return ( <DropdownMenu> <DropdownMenuItems items={[ { - title: `Make ${user.name} a member…`, + title: t("Make {{ userName }} a member…", { + userName: user.name, + }), onClick: this.handleDemote, visible: user.isAdmin, }, { - title: `Make ${user.name} an admin…`, + title: t("Make {{ userName }} an admin…", { + userName: user.name, + }), onClick: this.handlePromote, visible: !user.isAdmin && !user.isSuspended, }, @@ -82,17 +99,17 @@ class UserMenu extends React.Component<Props> { type: "separator", }, { - title: "Revoke invite…", + title: t("Revoke invite…"), onClick: this.handleRevoke, visible: user.isInvited, }, { - title: "Reactivate account", + title: t("Activate account"), onClick: this.handleActivate, visible: !user.isInvited && user.isSuspended, }, { - title: "Suspend account", + title: t("Suspend account…"), onClick: this.handleSuspend, visible: !user.isInvited && !user.isSuspended, }, @@ -103,4 +120,4 @@ class UserMenu extends React.Component<Props> { } } -export default inject("users")(UserMenu); +export default withTranslation()<UserMenu>(inject("users")(UserMenu)); diff --git a/app/models/User.js b/app/models/User.js index 6e80f7b2..d6af010b 100644 --- a/app/models/User.js +++ b/app/models/User.js @@ -11,6 +11,7 @@ class User extends BaseModel { lastActiveAt: string; isSuspended: boolean; createdAt: string; + language: string; @computed get isInvited(): boolean { diff --git a/app/scenes/Archive.js b/app/scenes/Archive.js index 78bf31dc..25394cec 100644 --- a/app/scenes/Archive.js +++ b/app/scenes/Archive.js @@ -1,6 +1,7 @@ // @flow import { observer, inject } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import DocumentsStore from "stores/DocumentsStore"; import CenteredContent from "components/CenteredContent"; @@ -14,26 +15,26 @@ type Props = { documents: DocumentsStore, }; -@observer -class Archive extends React.Component<Props> { - render() { - const { documents } = this.props; +function Archive(props: Props) { + const { t } = useTranslation(); + const { documents } = props; - return ( - <CenteredContent column auto> - <PageTitle title="Archive" /> - <Heading>Archive</Heading> - <PaginatedDocumentList - documents={documents.archived} - fetch={documents.fetchArchived} - heading={<Subheading>Documents</Subheading>} - empty={<Empty>The document archive is empty at the moment.</Empty>} - showCollection - showTemplate - /> - </CenteredContent> - ); - } + return ( + <CenteredContent column auto> + <PageTitle title={t("Archive")} /> + <Heading>{t("Archive")}</Heading> + <PaginatedDocumentList + documents={documents.archived} + fetch={documents.fetchArchived} + heading={<Subheading>{t("Documents")}</Subheading>} + empty={ + <Empty>{t("The document archive is empty at the moment.")}</Empty> + } + showCollection + showTemplate + /> + </CenteredContent> + ); } -export default inject("documents")(Archive); +export default inject("documents")(observer(Archive)); diff --git a/app/scenes/Collection.js b/app/scenes/Collection.js index fa8e7632..0a7fbb2d 100644 --- a/app/scenes/Collection.js +++ b/app/scenes/Collection.js @@ -4,6 +4,7 @@ import { observer, inject } from "mobx-react"; import { NewDocumentIcon, PlusIcon, PinIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, Trans, type TFunction } from "react-i18next"; import { Redirect, Link, Switch, Route, type Match } from "react-router-dom"; import styled, { withTheme } from "styled-components"; @@ -47,6 +48,7 @@ type Props = { policies: PoliciesStore, match: Match, theme: Theme, + t: TFunction, }; @observer @@ -64,7 +66,7 @@ class CollectionScene extends React.Component<Props> { } } - componentDidUpdate(prevProps) { + componentDidUpdate(prevProps: Props) { const { id } = this.props.match.params; if (this.collection) { @@ -132,7 +134,7 @@ class CollectionScene extends React.Component<Props> { }; renderActions() { - const { match, policies } = this.props; + const { match, policies, t } = this.props; const can = policies.abilities(match.params.id || ""); return ( @@ -142,19 +144,19 @@ class CollectionScene extends React.Component<Props> { <Action> <InputSearch source="collection" - placeholder="Search in collection…" + placeholder={t("Search in collection…")} collectionId={match.params.id} /> </Action> <Action> <Tooltip - tooltip="New document" + tooltip={t("New document")} shortcut="n" delay={500} placement="bottom" > <Button onClick={this.onNewDocument} icon={<PlusIcon />}> - New doc + {t("New doc")} </Button> </Tooltip> </Action> @@ -169,7 +171,7 @@ class CollectionScene extends React.Component<Props> { } render() { - const { documents, theme } = this.props; + const { documents, theme, t } = this.props; if (this.redirectTo) return <Redirect to={this.redirectTo} push />; if (!this.isFetching && !this.collection) return <Search notFound />; @@ -179,6 +181,7 @@ class CollectionScene extends React.Component<Props> { : []; const hasPinnedDocuments = !!pinnedDocuments.length; const collection = this.collection; + const collectionName = collection ? collection.name : ""; return ( <CenteredContent> @@ -188,26 +191,28 @@ class CollectionScene extends React.Component<Props> { {collection.isEmpty ? ( <Centered column> <HelpText> - <strong>{collection.name}</strong> doesn’t contain any - documents yet. + <Trans> + <strong>{{ collectionName }}</strong> doesn’t contain any + documents yet. + </Trans> <br /> - Get started by creating a new one! + <Trans>Get started by creating a new one!</Trans> </HelpText> <Wrapper> <Link to={newDocumentUrl(collection.id)}> <Button icon={<NewDocumentIcon color={theme.buttonText} />}> - Create a document + {t("Create a document")} </Button> </Link>    {collection.private && ( <Button onClick={this.onPermissions} neutral> - Manage members… + {t("Manage members…")} </Button> )} </Wrapper> <Modal - title="Collection permissions" + title={t("Collection permissions")} onRequestClose={this.handlePermissionsModalClose} isOpen={this.permissionsModalOpen} > @@ -218,7 +223,7 @@ class CollectionScene extends React.Component<Props> { /> </Modal> <Modal - title="Edit collection" + title={t("Edit collection")} onRequestClose={this.handleEditModalClose} isOpen={this.editModalOpen} > @@ -249,7 +254,7 @@ class CollectionScene extends React.Component<Props> { {hasPinnedDocuments && ( <> <Subheading> - <TinyPinIcon size={18} /> Pinned + <TinyPinIcon size={18} /> {t("Pinned")} </Subheading> <DocumentList documents={pinnedDocuments} showPin /> </> @@ -257,16 +262,16 @@ class CollectionScene extends React.Component<Props> { <Tabs> <Tab to={collectionUrl(collection.id)} exact> - Recently updated + {t("Recently updated")} </Tab> <Tab to={collectionUrl(collection.id, "recent")} exact> - Recently published + {t("Recently published")} </Tab> <Tab to={collectionUrl(collection.id, "old")} exact> - Least recently updated + {t("Least recently updated")} </Tab> <Tab to={collectionUrl(collection.id, "alphabetical")} exact> - A–Z + {t("A–Z")} </Tab> </Tabs> <Switch> @@ -351,9 +356,11 @@ const Wrapper = styled(Flex)` margin: 10px 0; `; -export default inject( - "collections", - "policies", - "documents", - "ui" -)(withTheme(CollectionScene)); +export default withTranslation()<CollectionScene>( + inject( + "collections", + "policies", + "documents", + "ui" + )(withTheme(CollectionScene)) +); diff --git a/app/scenes/CollectionEdit.js b/app/scenes/CollectionEdit.js index 7016d3f4..a619f4d7 100644 --- a/app/scenes/CollectionEdit.js +++ b/app/scenes/CollectionEdit.js @@ -2,6 +2,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import UiStore from "stores/UiStore"; import Collection from "models/Collection"; import Button from "components/Button"; @@ -16,6 +17,7 @@ type Props = { collection: Collection, ui: UiStore, onSubmit: () => void, + t: TFunction, }; @observer @@ -30,6 +32,7 @@ class CollectionEdit extends React.Component<Props> { handleSubmit = async (ev: SyntheticEvent<*>) => { ev.preventDefault(); this.isSaving = true; + const { t } = this.props; try { await this.props.collection.save({ @@ -40,7 +43,7 @@ class CollectionEdit extends React.Component<Props> { private: this.private, }); this.props.onSubmit(); - this.props.ui.showToast("The collection was updated"); + this.props.ui.showToast(t("The collection was updated")); } catch (err) { this.props.ui.showToast(err.message); } finally { @@ -48,7 +51,7 @@ class CollectionEdit extends React.Component<Props> { } }; - handleDescriptionChange = (getValue) => { + handleDescriptionChange = (getValue: () => string) => { this.description = getValue(); }; @@ -66,17 +69,20 @@ class CollectionEdit extends React.Component<Props> { }; render() { + const { t } = this.props; + return ( <Flex column> <form onSubmit={this.handleSubmit}> <HelpText> - You can edit the name and other details at any time, however doing - so often might confuse your team mates. + {t( + "You can edit the name and other details at any time, however doing so often might confuse your team mates." + )} </HelpText> <Flex> <Input type="text" - label="Name" + label={t("Name")} onChange={this.handleNameChange} value={this.name} required @@ -92,27 +98,29 @@ class CollectionEdit extends React.Component<Props> { </Flex> <InputRich id={this.props.collection.id} - label="Description" + label={t("Description")} onChange={this.handleDescriptionChange} defaultValue={this.description || ""} - placeholder="More details about this collection…" + placeholder={t("More details about this collection…")} minHeight={68} maxHeight={200} /> <Switch id="private" - label="Private collection" + label={t("Private collection")} onChange={this.handlePrivateChange} checked={this.private} /> <HelpText> - A private collection will only be visible to invited team members. + {t( + "A private collection will only be visible to invited team members." + )} </HelpText> <Button type="submit" disabled={this.isSaving || !this.props.collection.name} > - {this.isSaving ? "Saving…" : "Save"} + {this.isSaving ? t("Saving…") : t("Save")} </Button> </form> </Flex> @@ -120,4 +128,4 @@ class CollectionEdit extends React.Component<Props> { } } -export default inject("ui")(CollectionEdit); +export default withTranslation()<CollectionEdit>(inject("ui")(CollectionEdit)); diff --git a/app/scenes/CollectionMembers/AddGroupsToCollection.js b/app/scenes/CollectionMembers/AddGroupsToCollection.js index 604fc103..7a0c3b13 100644 --- a/app/scenes/CollectionMembers/AddGroupsToCollection.js +++ b/app/scenes/CollectionMembers/AddGroupsToCollection.js @@ -3,12 +3,14 @@ import { debounce } from "lodash"; import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import AuthStore from "stores/AuthStore"; import CollectionGroupMembershipsStore from "stores/CollectionGroupMembershipsStore"; import GroupsStore from "stores/GroupsStore"; import UiStore from "stores/UiStore"; import Collection from "models/Collection"; +import Group from "models/Group"; import GroupNew from "scenes/GroupNew"; import Button from "components/Button"; import Empty from "components/Empty"; @@ -26,6 +28,7 @@ type Props = { collectionGroupMemberships: CollectionGroupMembershipsStore, groups: GroupsStore, onSubmit: () => void, + t: TFunction, }; @observer @@ -52,50 +55,56 @@ class AddGroupsToCollection extends React.Component<Props> { }); }, 250); - handleAddGroup = (group) => { + handleAddGroup = (group: Group) => { + const { t } = this.props; + try { this.props.collectionGroupMemberships.create({ collectionId: this.props.collection.id, groupId: group.id, permission: "read_write", }); - this.props.ui.showToast(`${group.name} was added to the collection`); + this.props.ui.showToast( + t("{{ groupName }} was added to the collection", { + groupName: group.name, + }) + ); } catch (err) { - this.props.ui.showToast("Could not add user"); + this.props.ui.showToast(t("Could not add user")); console.error(err); } }; render() { - const { groups, collection, auth } = this.props; + const { groups, collection, auth, t } = this.props; const { user, team } = auth; if (!user || !team) return null; return ( <Flex column> <HelpText> - Can’t find the group you’re looking for?{" "} + {t("Can’t find the group you’re looking for?")}{" "} <a role="button" onClick={this.handleNewGroupModalOpen}> - Create a group + {t("Create a group")} </a> . </HelpText> <Input type="search" - placeholder="Search by group name…" + placeholder={t("Search by group name…")} value={this.query} onChange={this.handleFilter} - label="Search groups" + label={t("Search groups")} labelHidden flex /> <PaginatedList empty={ this.query ? ( - <Empty>No groups matching your search</Empty> + <Empty>{t("No groups matching your search")}</Empty> ) : ( - <Empty>No groups left to add</Empty> + <Empty>{t("No groups left to add")}</Empty> ) } items={groups.notInCollection(collection.id, this.query)} @@ -108,7 +117,7 @@ class AddGroupsToCollection extends React.Component<Props> { renderActions={() => ( <ButtonWrap> <Button onClick={() => this.handleAddGroup(item)} neutral> - Add + {t("Add")} </Button> </ButtonWrap> )} @@ -116,7 +125,7 @@ class AddGroupsToCollection extends React.Component<Props> { )} /> <Modal - title="Create a group" + title={t("Create a group")} onRequestClose={this.handleNewGroupModalClose} isOpen={this.newGroupModalOpen} > @@ -131,9 +140,11 @@ const ButtonWrap = styled.div` margin-left: 6px; `; -export default inject( - "auth", - "groups", - "collectionGroupMemberships", - "ui" -)(AddGroupsToCollection); +export default withTranslation()<AddGroupsToCollection>( + inject( + "auth", + "groups", + "collectionGroupMemberships", + "ui" + )(AddGroupsToCollection) +); diff --git a/app/scenes/CollectionMembers/AddPeopleToCollection.js b/app/scenes/CollectionMembers/AddPeopleToCollection.js index 50afbe6f..fd36d634 100644 --- a/app/scenes/CollectionMembers/AddPeopleToCollection.js +++ b/app/scenes/CollectionMembers/AddPeopleToCollection.js @@ -3,11 +3,13 @@ import { debounce } from "lodash"; import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import AuthStore from "stores/AuthStore"; import MembershipsStore from "stores/MembershipsStore"; import UiStore from "stores/UiStore"; import UsersStore from "stores/UsersStore"; import Collection from "models/Collection"; +import User from "models/User"; import Invite from "scenes/Invite"; import Empty from "components/Empty"; import Flex from "components/Flex"; @@ -24,6 +26,7 @@ type Props = { memberships: MembershipsStore, users: UsersStore, onSubmit: () => void, + t: TFunction, }; @observer @@ -50,40 +53,43 @@ class AddPeopleToCollection extends React.Component<Props> { }); }, 250); - handleAddUser = (user) => { + handleAddUser = (user: User) => { + const { t } = this.props; try { this.props.memberships.create({ collectionId: this.props.collection.id, userId: user.id, permission: "read_write", }); - this.props.ui.showToast(`${user.name} was added to the collection`); + this.props.ui.showToast( + t("{{ userName }} was added to the collection", { userName: user.name }) + ); } catch (err) { - this.props.ui.showToast("Could not add user"); + this.props.ui.showToast(t("Could not add user")); } }; render() { - const { users, collection, auth } = this.props; + const { users, collection, auth, t } = this.props; const { user, team } = auth; if (!user || !team) return null; return ( <Flex column> <HelpText> - Need to add someone who’s not yet on the team yet?{" "} + {t("Need to add someone who’s not yet on the team yet?")}{" "} <a role="button" onClick={this.handleInviteModalOpen}> - Invite people to {team.name} + {t("Invite people to {{ teamName }}", { teamName: team.name })} </a> . </HelpText> <Input type="search" - placeholder="Search by name…" + placeholder={t("Search by name…")} value={this.query} onChange={this.handleFilter} - label="Search people" + label={t("Search people")} autoFocus labelHidden flex @@ -91,9 +97,9 @@ class AddPeopleToCollection extends React.Component<Props> { <PaginatedList empty={ this.query ? ( - <Empty>No people matching your search</Empty> + <Empty>{t("No people matching your search")}</Empty> ) : ( - <Empty>No people left to add</Empty> + <Empty>{t("No people left to add")}</Empty> ) } items={users.notInCollection(collection.id, this.query)} @@ -108,7 +114,7 @@ class AddPeopleToCollection extends React.Component<Props> { )} /> <Modal - title="Invite people" + title={t("Invite people")} onRequestClose={this.handleInviteModalClose} isOpen={this.inviteModalOpen} > @@ -119,9 +125,6 @@ class AddPeopleToCollection extends React.Component<Props> { } } -export default inject( - "auth", - "users", - "memberships", - "ui" -)(AddPeopleToCollection); +export default withTranslation()<AddPeopleToCollection>( + inject("auth", "users", "memberships", "ui")(AddPeopleToCollection) +); diff --git a/app/scenes/CollectionMembers/components/CollectionGroupMemberListItem.js b/app/scenes/CollectionMembers/components/CollectionGroupMemberListItem.js index 404b6c08..a7b24c30 100644 --- a/app/scenes/CollectionMembers/components/CollectionGroupMemberListItem.js +++ b/app/scenes/CollectionMembers/components/CollectionGroupMemberListItem.js @@ -1,5 +1,6 @@ // @flow import * as React from "react"; +import { useTranslation } from "react-i18next"; import styled from "styled-components"; import CollectionGroupMembership from "models/CollectionGroupMembership"; import Group from "models/Group"; @@ -7,10 +8,6 @@ import { DropdownMenu, DropdownMenuItem } from "components/DropdownMenu"; import GroupListItem from "components/GroupListItem"; import InputSelect from "components/InputSelect"; -const PERMISSIONS = [ - { label: "Read only", value: "read" }, - { label: "Read & Edit", value: "read_write" }, -]; type Props = { group: Group, collectionGroupMembership: ?CollectionGroupMembership, @@ -24,6 +21,16 @@ const MemberListItem = ({ onUpdate, onRemove, }: Props) => { + const { t } = useTranslation(); + + const PERMISSIONS = React.useMemo( + () => [ + { label: t("Read only"), value: "read" }, + { label: t("Read & Edit"), value: "read_write" }, + ], + [t] + ); + return ( <GroupListItem group={group} @@ -32,7 +39,7 @@ const MemberListItem = ({ renderActions={({ openMembersModal }) => ( <> <Select - label="Permissions" + label={t("Permissions")} options={PERMISSIONS} value={ collectionGroupMembership @@ -45,10 +52,12 @@ const MemberListItem = ({ <ButtonWrap> <DropdownMenu> <DropdownMenuItem onClick={openMembersModal}> - Members… + {t("Members…")} </DropdownMenuItem> <hr /> - <DropdownMenuItem onClick={onRemove}>Remove</DropdownMenuItem> + <DropdownMenuItem onClick={onRemove}> + {t("Remove")} + </DropdownMenuItem> </DropdownMenu> </ButtonWrap> </> diff --git a/app/scenes/CollectionMembers/components/MemberListItem.js b/app/scenes/CollectionMembers/components/MemberListItem.js index 227874e8..62252411 100644 --- a/app/scenes/CollectionMembers/components/MemberListItem.js +++ b/app/scenes/CollectionMembers/components/MemberListItem.js @@ -1,5 +1,6 @@ // @flow import * as React from "react"; +import { useTranslation } from "react-i18next"; import styled from "styled-components"; import Membership from "models/Membership"; import User from "models/User"; @@ -12,10 +13,6 @@ import InputSelect from "components/InputSelect"; import ListItem from "components/List/Item"; import Time from "components/Time"; -const PERMISSIONS = [ - { label: "Read only", value: "read" }, - { label: "Read & Edit", value: "read_write" }, -]; type Props = { user: User, membership?: ?Membership, @@ -33,6 +30,16 @@ const MemberListItem = ({ onAdd, canEdit, }: Props) => { + const { t } = useTranslation(); + + const PERMISSIONS = React.useMemo( + () => [ + { label: t("Read only"), value: "read" }, + { label: t("Read & Edit"), value: "read_write" }, + ], + [t] + ); + return ( <ListItem title={user.name} @@ -40,13 +47,15 @@ const MemberListItem = ({ <> {user.lastActiveAt ? ( <> - Active <Time dateTime={user.lastActiveAt} /> ago + {t("Active {{ lastActiveAt }} ago", { + lastActiveAt: <Time dateTime={user.lastActiveAt} />, + })} </> ) : ( - "Never signed in" + t("Never signed in") )} - {user.isInvited && <Badge>Invited</Badge>} - {user.isAdmin && <Badge primary={user.isAdmin}>Admin</Badge>} + {user.isInvited && <Badge>{t("Invited")}</Badge>} + {user.isAdmin && <Badge primary={user.isAdmin}>{t("Admin")}</Badge>} </> } image={<Avatar src={user.avatarUrl} size={40} />} @@ -54,7 +63,7 @@ const MemberListItem = ({ <Flex align="center"> {canEdit && onUpdate && ( <Select - label="Permissions" + label={t("Permissions")} options={PERMISSIONS} value={membership ? membership.permission : undefined} onChange={(ev) => onUpdate(ev.target.value)} @@ -64,12 +73,14 @@ const MemberListItem = ({    {canEdit && onRemove && ( <DropdownMenu> - <DropdownMenuItem onClick={onRemove}>Remove</DropdownMenuItem> + <DropdownMenuItem onClick={onRemove}> + {t("Remove")} + </DropdownMenuItem> </DropdownMenu> )} {canEdit && onAdd && ( <Button onClick={onAdd} neutral> - Add + {t("Add")} </Button> )} </Flex> diff --git a/app/scenes/CollectionMembers/components/UserListItem.js b/app/scenes/CollectionMembers/components/UserListItem.js index a4950547..4bc76537 100644 --- a/app/scenes/CollectionMembers/components/UserListItem.js +++ b/app/scenes/CollectionMembers/components/UserListItem.js @@ -1,6 +1,7 @@ // @flow import { PlusIcon } from "outline-icons"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import User from "models/User"; import Avatar from "components/Avatar"; import Badge from "components/Badge"; @@ -15,6 +16,8 @@ type Props = { }; const UserListItem = ({ user, onAdd, canEdit }: Props) => { + const { t } = useTranslation(); + return ( <ListItem title={user.name} @@ -23,19 +26,21 @@ const UserListItem = ({ user, onAdd, canEdit }: Props) => { <> {user.lastActiveAt ? ( <> - Active <Time dateTime={user.lastActiveAt} /> ago + {t("Active {{ lastActiveAt }} ago", { + lastActiveAt: <Time dateTime={user.lastActiveAt} />, + })} </> ) : ( - "Never signed in" + t("Never signed in") )} - {user.isInvited && <Badge>Invited</Badge>} - {user.isAdmin && <Badge primary={user.isAdmin}>Admin</Badge>} + {user.isInvited && <Badge>{t("Invited")}</Badge>} + {user.isAdmin && <Badge primary={user.isAdmin}>{t("Admin")}</Badge>} </> } actions={ canEdit ? ( <Button type="button" onClick={onAdd} icon={<PlusIcon />} neutral> - Add + {t("Add")} </Button> ) : undefined } diff --git a/app/scenes/CollectionNew.js b/app/scenes/CollectionNew.js index 872709cf..48448439 100644 --- a/app/scenes/CollectionNew.js +++ b/app/scenes/CollectionNew.js @@ -3,6 +3,7 @@ import { intersection } from "lodash"; import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { withRouter, type RouterHistory } from "react-router-dom"; import CollectionsStore from "stores/CollectionsStore"; import UiStore from "stores/UiStore"; @@ -20,6 +21,7 @@ type Props = { ui: UiStore, collections: CollectionsStore, onSubmit: () => void, + t: TFunction, }; @observer @@ -84,7 +86,7 @@ class CollectionNew extends React.Component<Props> { this.hasOpenedIconPicker = true; }; - handleDescriptionChange = (getValue) => { + handleDescriptionChange = (getValue: () => string) => { this.description = getValue(); }; @@ -98,17 +100,19 @@ class CollectionNew extends React.Component<Props> { }; render() { + const { t } = this.props; + return ( <form onSubmit={this.handleSubmit}> <HelpText> - Collections are for grouping your knowledge base. They work best when - organized around a topic or internal team — Product or Engineering for - example. + {t( + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example." + )} </HelpText> <Flex> <Input type="text" - label="Name" + label={t("Name")} onChange={this.handleNameChange} value={this.name} required @@ -124,29 +128,33 @@ class CollectionNew extends React.Component<Props> { /> </Flex> <InputRich - label="Description" + label={t("Description")} onChange={this.handleDescriptionChange} defaultValue={this.description || ""} - placeholder="More details about this collection…" + placeholder={t("More details about this collection…")} minHeight={68} maxHeight={200} /> <Switch id="private" - label="Private collection" + label={t("Private collection")} onChange={this.handlePrivateChange} checked={this.private} /> <HelpText> - A private collection will only be visible to invited team members. + {t( + "A private collection will only be visible to invited team members." + )} </HelpText> <Button type="submit" disabled={this.isSaving || !this.name}> - {this.isSaving ? "Creating…" : "Create"} + {this.isSaving ? t("Creating…") : t("Create")} </Button> </form> ); } } -export default inject("collections", "ui")(withRouter(CollectionNew)); +export default withTranslation()<CollectionNew>( + inject("collections", "ui")(withRouter(CollectionNew)) +); diff --git a/app/scenes/Dashboard.js b/app/scenes/Dashboard.js index b0d5d788..8b00bb04 100644 --- a/app/scenes/Dashboard.js +++ b/app/scenes/Dashboard.js @@ -1,81 +1,77 @@ // @flow -import { observer, inject } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { Switch, Route } from "react-router-dom"; -import AuthStore from "stores/AuthStore"; -import DocumentsStore from "stores/DocumentsStore"; import Actions, { Action } from "components/Actions"; import CenteredContent from "components/CenteredContent"; import InputSearch from "components/InputSearch"; +import LanguagePrompt from "components/LanguagePrompt"; import PageTitle from "components/PageTitle"; import Tab from "components/Tab"; import Tabs from "components/Tabs"; import PaginatedDocumentList from "../components/PaginatedDocumentList"; +import useStores from "../hooks/useStores"; import NewDocumentMenu from "menus/NewDocumentMenu"; -type Props = { - documents: DocumentsStore, - auth: AuthStore, -}; +function Dashboard() { + const { documents, ui, auth } = useStores(); + const { t } = useTranslation(); -@observer -class Dashboard extends React.Component<Props> { - render() { - const { documents, auth } = this.props; - if (!auth.user || !auth.team) return null; - const user = auth.user.id; + if (!auth.user || !auth.team) return null; + const user = auth.user.id; - return ( - <CenteredContent> - <PageTitle title="Home" /> - <h1>Home</h1> - <Tabs> - <Tab to="/home" exact> - Recently updated - </Tab> - <Tab to="/home/recent" exact> - Recently viewed - </Tab> - <Tab to="/home/created">Created by me</Tab> - </Tabs> - <Switch> - <Route path="/home/recent"> - <PaginatedDocumentList - key="recent" - documents={documents.recentlyViewed} - fetch={documents.fetchRecentlyViewed} - showCollection - /> - </Route> - <Route path="/home/created"> - <PaginatedDocumentList - key="created" - documents={documents.createdByUser(user)} - fetch={documents.fetchOwned} - options={{ user }} - showCollection - /> - </Route> - <Route path="/home"> - <PaginatedDocumentList - documents={documents.recentlyUpdated} - fetch={documents.fetchRecentlyUpdated} - showCollection - /> - </Route> - </Switch> - <Actions align="center" justify="flex-end"> - <Action> - <InputSearch source="dashboard" /> - </Action> - <Action> - <NewDocumentMenu /> - </Action> - </Actions> - </CenteredContent> - ); - } + return ( + <CenteredContent> + <PageTitle title={t("Home")} /> + {!ui.languagePromptDismissed && <LanguagePrompt />} + <h1>{t("Home")}</h1> + <Tabs> + <Tab to="/home" exact> + {t("Recently updated")} + </Tab> + <Tab to="/home/recent" exact> + {t("Recently viewed")} + </Tab> + <Tab to="/home/created">{t("Created by me")}</Tab> + </Tabs> + <Switch> + <Route path="/home/recent"> + <PaginatedDocumentList + key="recent" + documents={documents.recentlyViewed} + fetch={documents.fetchRecentlyViewed} + showCollection + /> + </Route> + <Route path="/home/created"> + <PaginatedDocumentList + key="created" + documents={documents.createdByUser(user)} + fetch={documents.fetchOwned} + options={{ user }} + showCollection + /> + </Route> + <Route path="/home"> + <PaginatedDocumentList + documents={documents.recentlyUpdated} + fetch={documents.fetchRecentlyUpdated} + showCollection + /> + </Route> + </Switch> + <Actions align="center" justify="flex-end"> + <Action> + <InputSearch source="dashboard" /> + </Action> + <Action> + <NewDocumentMenu /> + </Action> + </Actions> + </CenteredContent> + ); } -export default inject("documents", "auth")(Dashboard); +export default observer(Dashboard); diff --git a/app/scenes/Document/components/Header.js b/app/scenes/Document/components/Header.js index 8b6201c8..c03b35db 100644 --- a/app/scenes/Document/components/Header.js +++ b/app/scenes/Document/components/Header.js @@ -11,6 +11,7 @@ import { } from "outline-icons"; import { transparentize, darken } from "polished"; import * as React from "react"; +import { withTranslation, Trans, type TFunction } from "react-i18next"; import { Redirect } from "react-router-dom"; import styled from "styled-components"; import breakpoint from "styled-components-breakpoint"; @@ -55,6 +56,7 @@ type Props = { publish?: boolean, autosave?: boolean, }) => void, + t: TFunction, }; @observer @@ -131,6 +133,7 @@ class Header extends React.Component<Props> { publishingIsDisabled, ui, auth, + t, } = this.props; const share = shares.getByDocumentId(document.id); @@ -153,7 +156,7 @@ class Header extends React.Component<Props> { <Modal isOpen={this.showShareModal} onRequestClose={this.handleCloseShareModal} - title="Share document" + title={t("Share document")} > <DocumentShare document={document} @@ -166,7 +169,9 @@ class Header extends React.Component<Props> { <> <Slash /> <Tooltip - tooltip={ui.tocVisible ? "Hide contents" : "Show contents"} + tooltip={ + ui.tocVisible ? t("Hide contents") : t("Show contents") + } shortcut={`ctrl+${meta}+h`} delay={250} placement="bottom" @@ -190,14 +195,15 @@ class Header extends React.Component<Props> { {this.isScrolled && ( <Title onClick={this.handleClickTitle}> <Fade> - {document.title} {document.isArchived && <Badge>Archived</Badge>} + {document.title}{" "} + {document.isArchived && <Badge>{t("Archived")}</Badge>} </Fade> )} {isSaving && !isPublishing && ( - Saving… + {t("Saving…")} )}   @@ -217,10 +223,10 @@ class Header extends React.Component { + Anyone with the link
can view this document - +
) : ( "" ) @@ -234,7 +240,7 @@ class Header extends React.Component { neutral small > - Share + {t("Share")}
@@ -243,7 +249,7 @@ class Header extends React.Component { <> { neutral={isDraft} small > - {isDraft ? "Save Draft" : "Done Editing"} + {isDraft ? t("Save Draft") : t("Done Editing")} @@ -264,7 +270,7 @@ class Header extends React.Component { {canEdit && ( { neutral small > - Edit + {t("Edit")} @@ -286,13 +292,13 @@ class Header extends React.Component { document={document} label={ } @@ -307,25 +313,25 @@ class Header extends React.Component { primary small > - New from template + {t("New from template")} )} {can.update && isDraft && !isRevision && ( @@ -425,4 +431,6 @@ const Title = styled.div` `}; `; -export default inject("auth", "ui", "policies", "shares")(Header); +export default withTranslation()
( + inject("auth", "ui", "policies", "shares")(Header) +); diff --git a/app/scenes/Document/components/Loading.js b/app/scenes/Document/components/Loading.js index a98ebfc2..ed75aed0 100644 --- a/app/scenes/Document/components/Loading.js +++ b/app/scenes/Document/components/Loading.js @@ -1,5 +1,6 @@ // @flow import * as React from "react"; +import { useTranslation } from "react-i18next"; import CenteredContent from "components/CenteredContent"; import LoadingPlaceholder from "components/LoadingPlaceholder"; import PageTitle from "components/PageTitle"; @@ -11,9 +12,13 @@ type Props = {| |}; export default function Loading({ location }: Props) { + const { t } = useTranslation(); + return ( - + diff --git a/app/scenes/Drafts.js b/app/scenes/Drafts.js index fa38201b..887b8226 100644 --- a/app/scenes/Drafts.js +++ b/app/scenes/Drafts.js @@ -3,6 +3,7 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import queryString from "query-string"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import { type RouterHistory } from "react-router-dom"; import styled from "styled-components"; import DocumentsStore from "stores/DocumentsStore"; @@ -25,6 +26,7 @@ type Props = {| documents: DocumentsStore, history: RouterHistory, location: LocationWithState, + t: TFunction, |}; @observer @@ -33,7 +35,7 @@ class Drafts extends React.Component { this.props.location.search ); - componentDidUpdate(prevProps) { + componentDidUpdate(prevProps: Props) { if (prevProps.location.search !== this.props.location.search) { this.handleQueryChange(); } @@ -43,7 +45,10 @@ class Drafts extends React.Component { this.params = new URLSearchParams(this.props.location.search); }; - handleFilterChange = (search) => { + handleFilterChange = (search: { + dateFilter?: ?string, + collectionId?: ?string, + }) => { this.props.history.replace({ pathname: this.props.location.pathname, search: queryString.stringify({ @@ -64,6 +69,7 @@ class Drafts extends React.Component { } render() { + const { t } = this.props; const { drafts, fetchDrafts } = this.props.documents; const isFiltered = this.collectionId || this.dateFilter; const options = { @@ -73,10 +79,10 @@ class Drafts extends React.Component { return ( - - Drafts + + {t("Drafts")} - Documents + {t("Documents")} { empty={ {isFiltered - ? "No documents found for your filters." - : "You’ve not got any drafts at the moment."} + ? t("No documents found for your filters.") + : t("You’ve not got any drafts at the moment.")} } fetch={fetchDrafts} @@ -131,4 +137,4 @@ const Filters = styled(Flex)` } `; -export default inject("documents")(Drafts); +export default withTranslation()(inject("documents")(Drafts)); diff --git a/app/scenes/Error404.js b/app/scenes/Error404.js index b1b94158..37a5a1be 100644 --- a/app/scenes/Error404.js +++ b/app/scenes/Error404.js @@ -1,18 +1,23 @@ // @flow import * as React from "react"; +import { useTranslation, Trans } from "react-i18next"; import { Link } from "react-router-dom"; import CenteredContent from "components/CenteredContent"; import Empty from "components/Empty"; import PageTitle from "components/PageTitle"; const Error404 = () => { + const { t } = useTranslation(); + return ( - -

Not found

+ +

{t("Not found")}

- We were unable to find the page you’re looking for. Go to the{" "} - homepage? + + We were unable to find the page you’re looking for. Go to the{" "} + homepage? +
); diff --git a/app/scenes/ErrorOffline.js b/app/scenes/ErrorOffline.js index 7b7f3eb4..b65913b9 100644 --- a/app/scenes/ErrorOffline.js +++ b/app/scenes/ErrorOffline.js @@ -1,15 +1,18 @@ // @flow import * as React from "react"; +import { useTranslation } from "react-i18next"; import CenteredContent from "components/CenteredContent"; import Empty from "components/Empty"; import PageTitle from "components/PageTitle"; const ErrorOffline = () => { + const { t } = useTranslation(); + return ( - -

Offline

- We were unable to load the document while offline. + +

{t("Offline")}

+ {t("We were unable to load the document while offline.")}
); }; diff --git a/app/scenes/ErrorSuspended.js b/app/scenes/ErrorSuspended.js index f3a2c596..b8a36c6e 100644 --- a/app/scenes/ErrorSuspended.js +++ b/app/scenes/ErrorSuspended.js @@ -1,29 +1,37 @@ // @flow import { inject, observer } from "mobx-react"; import * as React from "react"; +import { useTranslation, Trans } from "react-i18next"; import AuthStore from "stores/AuthStore"; import CenteredContent from "components/CenteredContent"; import PageTitle from "components/PageTitle"; -const ErrorSuspended = observer(({ auth }: { auth: AuthStore }) => { +const ErrorSuspended = ({ auth }: { auth: AuthStore }) => { + const { t } = useTranslation(); + return ( - +

⚠️ {" "} - Your account has been suspended + {t("Your account has been suspended")}

- A team admin ({auth.suspendedContactEmail}) has - suspended your account. To re-activate your account, please reach out to - them directly. + + A team admin ( + + {{ suspendedContactEmail: auth.suspendedContactEmail }} + + ) has suspended your account. To re-activate your account, please + reach out to them directly. +

); -}); +}; -export default inject("auth")(ErrorSuspended); +export default inject("auth")(observer(ErrorSuspended)); diff --git a/app/scenes/GroupMembers/AddPeopleToGroup.js b/app/scenes/GroupMembers/AddPeopleToGroup.js index 8d83edfe..980c5cb7 100644 --- a/app/scenes/GroupMembers/AddPeopleToGroup.js +++ b/app/scenes/GroupMembers/AddPeopleToGroup.js @@ -3,11 +3,13 @@ import { debounce } from "lodash"; import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import AuthStore from "stores/AuthStore"; import GroupMembershipsStore from "stores/GroupMembershipsStore"; import UiStore from "stores/UiStore"; import UsersStore from "stores/UsersStore"; import Group from "models/Group"; +import User from "models/User"; import Invite from "scenes/Invite"; import Empty from "components/Empty"; import Flex from "components/Flex"; @@ -24,6 +26,7 @@ type Props = { groupMemberships: GroupMembershipsStore, users: UsersStore, onSubmit: () => void, + t: TFunction, }; @observer @@ -50,40 +53,45 @@ class AddPeopleToGroup extends React.Component { }); }, 250); - handleAddUser = async (user) => { + handleAddUser = async (user: User) => { + const { t } = this.props; + try { await this.props.groupMemberships.create({ groupId: this.props.group.id, userId: user.id, }); - this.props.ui.showToast(`${user.name} was added to the group`); + this.props.ui.showToast( + t(`{{userName}} was added to the group`, { userName: user.name }) + ); } catch (err) { - this.props.ui.showToast("Could not add user"); + this.props.ui.showToast(t("Could not add user")); } }; render() { - const { users, group, auth } = this.props; + const { users, group, auth, t } = this.props; const { user, team } = auth; if (!user || !team) return null; return ( - Add team members below to give them access to the group. Need to add - someone who’s not yet on the team yet?{" "} + {t( + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?" + )}{" "} - Invite them to {team.name} + {t("Invite them to {{teamName}}", { teamName: team.name })} . { No people matching your search + {t("No people matching your search")} ) : ( - No people left to add + {t("No people left to add")} ) } items={users.notInGroup(group.id, this.query)} @@ -108,7 +116,7 @@ class AddPeopleToGroup extends React.Component { )} /> @@ -119,9 +127,6 @@ class AddPeopleToGroup extends React.Component { } } -export default inject( - "auth", - "users", - "groupMemberships", - "ui" -)(AddPeopleToGroup); +export default withTranslation()( + inject("auth", "users", "groupMemberships", "ui")(AddPeopleToGroup) +); diff --git a/app/scenes/GroupMembers/GroupMembers.js b/app/scenes/GroupMembers/GroupMembers.js index 4838f440..b4314a5f 100644 --- a/app/scenes/GroupMembers/GroupMembers.js +++ b/app/scenes/GroupMembers/GroupMembers.js @@ -3,12 +3,14 @@ import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import { PlusIcon } from "outline-icons"; import * as React from "react"; +import { withTranslation, type TFunction } from "react-i18next"; import AuthStore from "stores/AuthStore"; import GroupMembershipsStore from "stores/GroupMembershipsStore"; import PoliciesStore from "stores/PoliciesStore"; import UiStore from "stores/UiStore"; import UsersStore from "stores/UsersStore"; import Group from "models/Group"; +import User from "models/User"; import Button from "components/Button"; import Empty from "components/Empty"; import Flex from "components/Flex"; @@ -26,6 +28,7 @@ type Props = { users: UsersStore, policies: PoliciesStore, groupMemberships: GroupMembershipsStore, + t: TFunction, }; @observer @@ -40,20 +43,24 @@ class GroupMembers extends React.Component { this.addModalOpen = false; }; - handleRemoveUser = async (user) => { + handleRemoveUser = async (user: User) => { + const { t } = this.props; + try { await this.props.groupMemberships.delete({ groupId: this.props.group.id, userId: user.id, }); - this.props.ui.showToast(`${user.name} was removed from the group`); + this.props.ui.showToast( + t(`{{userName}} was removed from the group`, { userName: user.name }) + ); } catch (err) { - this.props.ui.showToast("Could not remove user"); + this.props.ui.showToast(t("Could not remove user")); } }; render() { - const { group, users, groupMemberships, policies, auth } = this.props; + const { group, users, groupMemberships, policies, t, auth } = this.props; const { user } = auth; if (!user) return null; @@ -75,7 +82,7 @@ class GroupMembers extends React.Component { icon={} neutral > - Add people… + {t("Add people…")} @@ -90,7 +97,7 @@ class GroupMembers extends React.Component { items={users.inGroup(group.id)} fetch={groupMemberships.fetchPage} options={{ id: group.id }} - empty={This group has no members.} + empty={{t("This group has no members.")}} renderItem={(item) => ( { } } -export default inject( - "auth", - "users", - "policies", - "groupMemberships", - "ui" -)(GroupMembers); +export default withTranslation()( + inject("auth", "users", "policies", "groupMemberships", "ui")(GroupMembers) +); diff --git a/app/scenes/KeyboardShortcuts.js b/app/scenes/KeyboardShortcuts.js index 82e50a31..cbcbe56f 100644 --- a/app/scenes/KeyboardShortcuts.js +++ b/app/scenes/KeyboardShortcuts.js @@ -1,5 +1,6 @@ // @flow import * as React from "react"; +import { useTranslation } from "react-i18next"; import styled from "styled-components"; import Flex from "components/Flex"; import HelpText from "components/HelpText"; @@ -7,153 +8,150 @@ import Key from "components/Key"; import { meta } from "utils/keyboard"; function KeyboardShortcuts() { + const { t } = useTranslation(); + return ( - Outline is designed to be fast and easy to use. All of your usual - keyboard shortcuts work here, and there’s Markdown too. + {t( + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too." + )} -

Navigation

+

{t("Navigation")}

n - - + e - - + m - - + / or t - - + d - - + {meta} + Ctrl + h - - + ? - + -

Editor

+

{t("Editor")}

{meta} + Enter - + {meta} + Shift + p - + {meta} + s - + {meta} + Esc - + {meta} + b - + {meta} + i - + {meta} + u - + {meta} + d - + {meta} + k - + {meta} + z - + {meta} + Shift + z - + -

Markdown

+

{t("Markdown")}

# Space - + ## Space - + ### Space - + 1. Space - + - Space - + [ ] Space - + > Space - + --- - + {"```"} - + {":::"} - + _italic_ - + **bold** - + ~~strikethrough~~ - + {"`code`"} - + ==highlight== - +
); diff --git a/app/scenes/Search/Search.js b/app/scenes/Search/Search.js index 4b8bbfca..a61df472 100644 --- a/app/scenes/Search/Search.js +++ b/app/scenes/Search/Search.js @@ -7,6 +7,7 @@ import { PlusIcon } from "outline-icons"; import queryString from "query-string"; import * as React from "react"; import ReactDOM from "react-dom"; +import { withTranslation, Trans, type TFunction } from "react-i18next"; import keydown from "react-keydown"; import { withRouter, Link } from "react-router-dom"; import type { RouterHistory, Match } from "react-router-dom"; @@ -44,11 +45,12 @@ type Props = { documents: DocumentsStore, users: UsersStore, notFound: ?boolean, + t: TFunction, }; @observer class Search extends React.Component { - firstDocument: ?React.Component; + firstDocument: ?React.Component; lastQuery: string = ""; @observable @@ -67,7 +69,7 @@ class Search extends React.Component { } } - componentDidUpdate(prevProps) { + componentDidUpdate(prevProps: Props) { if (prevProps.location.search !== this.props.location.search) { this.handleQueryChange(); } @@ -81,7 +83,7 @@ class Search extends React.Component { this.props.history.goBack(); } - handleKeyDown = (ev) => { + handleKeyDown = (ev: SyntheticKeyboardEvent<>) => { if (ev.key === "Enter") { this.fetchResults(); return; @@ -124,7 +126,12 @@ class Search extends React.Component { this.fetchResultsDebounced(); }; - handleFilterChange = (search) => { + handleFilterChange = (search: { + collectionId?: ?string, + userId?: ?string, + dateFilter?: ?string, + includeArchived?: ?string, + }) => { this.props.history.replace({ pathname: this.props.location.pathname, search: queryString.stringify({ @@ -170,7 +177,7 @@ class Search extends React.Component { get title() { const query = this.query; - const title = "Search"; + const title = this.props.t("Search"); if (query) return `${query} – ${title}`; return title; } @@ -231,20 +238,19 @@ class Search extends React.Component { trailing: true, }); - updateLocation = (query) => { + updateLocation = (query: string) => { this.props.history.replace({ pathname: searchUrl(query), search: this.props.location.search, }); }; - setFirstDocumentRef = (ref) => { - // $FlowFixMe + setFirstDocumentRef = (ref: any) => { this.firstDocument = ref; }; render() { - const { documents, notFound, location } = this.props; + const { documents, notFound, location, t } = this.props; const results = documents.searchResults(this.query); const showEmpty = !this.isLoading && this.query && results.length === 0; const showShortcutTip = @@ -256,12 +262,15 @@ class Search extends React.Component { {this.isLoading && } {notFound && (
-

Not Found

- We were unable to find the page you’re looking for. +

{t("Not Found")}

+ + {t("We were unable to find the page you’re looking for.")} +
)} { {showShortcutTip && ( - Use the {meta}+K shortcut to search from - anywhere in Outline + + Use the {{ meta }}+K shortcut to search from + anywhere in your knowledge base + )} @@ -304,8 +315,10 @@ class Search extends React.Component { - No documents found for your search filters.
- Create a new document? + + No documents found for your search filters.
+ Create a new document? +
{this.collectionId ? ( @@ -314,14 +327,14 @@ class Search extends React.Component { icon={} primary > - New doc + {t("New doc")} ) : ( )}   
@@ -414,4 +427,6 @@ const Filters = styled(Flex)` } `; -export default withRouter(inject("documents")(Search)); +export default withTranslation()( + withRouter(inject("documents")(Search)) +); diff --git a/app/scenes/Search/components/SearchField.js b/app/scenes/Search/components/SearchField.js index 440627c3..c4425f35 100644 --- a/app/scenes/Search/components/SearchField.js +++ b/app/scenes/Search/components/SearchField.js @@ -8,6 +8,7 @@ import { type Theme } from "types"; type Props = { onChange: (string) => void, defaultValue?: string, + placeholder?: string, theme: Theme, }; @@ -44,7 +45,7 @@ class SearchField extends React.Component { ref={(ref) => (this.input = ref)} onChange={this.handleChange} spellCheck="false" - placeholder="Search…" + placeholder={this.props.placeholder} type="search" autoFocus /> diff --git a/app/scenes/Settings/Profile.js b/app/scenes/Settings/Profile.js index 67dd31b8..5b0293d1 100644 --- a/app/scenes/Settings/Profile.js +++ b/app/scenes/Settings/Profile.js @@ -2,7 +2,9 @@ import { observable } from "mobx"; import { observer, inject } from "mobx-react"; import * as React from "react"; +import { Trans, withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; +import { languageOptions } from "shared/i18n"; import AuthStore from "stores/AuthStore"; import UiStore from "stores/UiStore"; @@ -10,13 +12,16 @@ import UserDelete from "scenes/UserDelete"; import Button from "components/Button"; import CenteredContent from "components/CenteredContent"; import Flex from "components/Flex"; +import HelpText from "components/HelpText"; import Input, { LabelText } from "components/Input"; +import InputSelect from "components/InputSelect"; import PageTitle from "components/PageTitle"; import ImageUpload from "./components/ImageUpload"; type Props = { auth: AuthStore, ui: UiStore, + t: TFunction, }; @observer @@ -27,10 +32,12 @@ class Profile extends React.Component { @observable name: string; @observable avatarUrl: ?string; @observable showDeleteModal: boolean = false; + @observable language: string; componentDidMount() { if (this.props.auth.user) { this.name = this.props.auth.user.name; + this.language = this.props.auth.user.language; } } @@ -39,13 +46,16 @@ class Profile extends React.Component { } handleSubmit = async (ev: SyntheticEvent<>) => { + const { t } = this.props; ev.preventDefault(); await this.props.auth.updateUser({ name: this.name, avatarUrl: this.avatarUrl, + language: this.language, }); - this.props.ui.showToast("Profile saved"); + + this.props.ui.showToast(t("Profile saved")); }; handleNameChange = (ev: SyntheticInputEvent<*>) => { @@ -53,16 +63,22 @@ class Profile extends React.Component { }; handleAvatarUpload = async (avatarUrl: string) => { + const { t } = this.props; this.avatarUrl = avatarUrl; await this.props.auth.updateUser({ avatarUrl: this.avatarUrl, }); - this.props.ui.showToast("Profile picture updated"); + this.props.ui.showToast(t("Profile picture updated")); }; handleAvatarError = (error: ?string) => { - this.props.ui.showToast(error || "Unable to upload new avatar"); + const { t } = this.props; + this.props.ui.showToast(error || t("Unable to upload new profile picture")); + }; + + handleLanguageChange = (ev: SyntheticInputEvent<*>) => { + this.language = ev.target.value; }; toggleDeleteAccount = () => { @@ -74,16 +90,17 @@ class Profile extends React.Component { } render() { + const { t } = this.props; const { user, isSaving } = this.props.auth; if (!user) return null; const avatarUrl = this.avatarUrl || user.avatarUrl; return ( - -

Profile

+ +

{t("Profile")}

- Photo + {t("Photo")} { > - Upload + {t("Upload")}
(this.form = ref)}> +
+ + + + Please note that translations are currently in early access. +
+ Community contributions are accepted though our{" "} + + translation portal + +
+ . +
- Delete Account + {t("Delete Account")}

- You may delete your account at any time, note that this is - unrecoverable.{" "} - Delete account. + {t( + "You may delete your account at any time, note that this is unrecoverable" + )} + . {t("Delete account")}.

{this.showDeleteModal && ( @@ -170,4 +211,4 @@ const Avatar = styled.img` ${avatarStyles}; `; -export default inject("auth", "ui")(Profile); +export default withTranslation()(inject("auth", "ui")(Profile)); diff --git a/app/scenes/Starred.js b/app/scenes/Starred.js index 8ca71611..6b9477d3 100644 --- a/app/scenes/Starred.js +++ b/app/scenes/Starred.js @@ -1,9 +1,8 @@ // @flow -import { observer, inject } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { type Match } from "react-router-dom"; - -import DocumentsStore from "stores/DocumentsStore"; import Actions, { Action } from "components/Actions"; import CenteredContent from "components/CenteredContent"; import Empty from "components/Empty"; @@ -13,51 +12,50 @@ import PageTitle from "components/PageTitle"; import PaginatedDocumentList from "components/PaginatedDocumentList"; import Tab from "components/Tab"; import Tabs from "components/Tabs"; +import useStores from "hooks/useStores"; import NewDocumentMenu from "menus/NewDocumentMenu"; type Props = { - documents: DocumentsStore, match: Match, }; -@observer -class Starred extends React.Component { - render() { - const { fetchStarred, starred, starredAlphabetical } = this.props.documents; - const { sort } = this.props.match.params; +function Starred(props: Props) { + const { documents } = useStores(); + const { t } = useTranslation(); + const { fetchStarred, starred, starredAlphabetical } = documents; + const { sort } = props.match.params; - return ( - - - Starred - - - Recently Updated - - - Alphabetical - - - } - empty={You’ve not starred any documents yet.} - fetch={fetchStarred} - documents={sort === "alphabetical" ? starredAlphabetical : starred} - showCollection - /> + return ( + + + {t("Starred")} + + + {t("Recently updated")} + + + {t("Alphabetical")} + + + } + empty={{t("You’ve not starred any documents yet.")}} + fetch={fetchStarred} + documents={sort === "alphabetical" ? starredAlphabetical : starred} + showCollection + /> - - - - - - - - - - ); - } + + + + + + + + + + ); } -export default inject("documents")(Starred); +export default observer(Starred); diff --git a/app/scenes/Templates.js b/app/scenes/Templates.js index 7a2f9b5b..2213b45b 100644 --- a/app/scenes/Templates.js +++ b/app/scenes/Templates.js @@ -1,9 +1,9 @@ // @flow -import { observer, inject } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { type Match } from "react-router-dom"; -import DocumentsStore from "stores/DocumentsStore"; import Actions, { Action } from "components/Actions"; import CenteredContent from "components/CenteredContent"; import Empty from "components/Empty"; @@ -12,60 +12,54 @@ import PageTitle from "components/PageTitle"; import PaginatedDocumentList from "components/PaginatedDocumentList"; import Tab from "components/Tab"; import Tabs from "components/Tabs"; +import useStores from "hooks/useStores"; import NewTemplateMenu from "menus/NewTemplateMenu"; type Props = { - documents: DocumentsStore, match: Match, }; -@observer -class Templates extends React.Component { - render() { - const { - fetchTemplates, - templates, - templatesAlphabetical, - } = this.props.documents; - const { sort } = this.props.match.params; +function Templates(props: Props) { + const { documents } = useStores(); + const { t } = useTranslation(); + const { fetchTemplates, templates, templatesAlphabetical } = documents; + const { sort } = props.match.params; - return ( - - - Templates - - - Recently Updated - - - Alphabetical - - - } - empty={ - - There are no templates just yet. You can create templates to help - your team create consistent and accurate documentation. - - } - fetch={fetchTemplates} - documents={ - sort === "alphabetical" ? templatesAlphabetical : templates - } - showCollection - showDraft - /> + return ( + + + {t("Templates")} + + + {t("Recently updated")} + + + {t("Alphabetical")} + + + } + empty={ + + {t( + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation." + )} + + } + fetch={fetchTemplates} + documents={sort === "alphabetical" ? templatesAlphabetical : templates} + showCollection + showDraft + /> - - - - - - - ); - } + + + + + + + ); } -export default inject("documents")(Templates); +export default observer(Templates); diff --git a/app/scenes/Trash.js b/app/scenes/Trash.js index 135edbea..f8cc3179 100644 --- a/app/scenes/Trash.js +++ b/app/scenes/Trash.js @@ -1,39 +1,34 @@ // @flow -import { observer, inject } from "mobx-react"; +import { observer } from "mobx-react"; import * as React from "react"; +import { useTranslation } from "react-i18next"; -import DocumentsStore from "stores/DocumentsStore"; import CenteredContent from "components/CenteredContent"; import Empty from "components/Empty"; import Heading from "components/Heading"; import PageTitle from "components/PageTitle"; import PaginatedDocumentList from "components/PaginatedDocumentList"; import Subheading from "components/Subheading"; +import useStores from "hooks/useStores"; -type Props = { - documents: DocumentsStore, -}; +function Trash() { + const { t } = useTranslation(); + const { documents } = useStores(); -@observer -class Trash extends React.Component { - render() { - const { documents } = this.props; - - return ( - - - Trash - Documents
} - empty={Trash is empty at the moment.} - showCollection - showTemplate - /> -
- ); - } + return ( + + + {t("Trash")} + {t("Documents")}} + empty={{t("Trash is empty at the moment.")}} + showCollection + showTemplate + /> + + ); } -export default inject("documents")(Trash); +export default observer(Trash); diff --git a/app/scenes/UserProfile.js b/app/scenes/UserProfile.js index 2ad29565..fbfd6b0c 100644 --- a/app/scenes/UserProfile.js +++ b/app/scenes/UserProfile.js @@ -3,6 +3,7 @@ import distanceInWordsToNow from "date-fns/distance_in_words_to_now"; import { inject, observer } from "mobx-react"; import { EditIcon } from "outline-icons"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { withRouter, type RouterHistory } from "react-router-dom"; import styled from "styled-components"; import { settings } from "shared/utils/routeHelpers"; @@ -26,61 +27,65 @@ type Props = { onRequestClose: () => void, }; -@observer -class UserProfile extends React.Component { - render() { - const { user, auth, documents, ...rest } = this.props; - if (!user) return null; - const isCurrentUser = auth.user && auth.user.id === user.id; +function UserProfile(props: Props) { + const { t } = useTranslation(); + const { user, auth, documents, ...rest } = props; + if (!user) return null; + const isCurrentUser = auth.user && auth.user.id === user.id; - return ( - - -  {user.name} - - } - {...rest} - > - - - {isCurrentUser - ? "You joined" - : user.lastActiveAt - ? "Joined" - : "Invited"}{" "} - {distanceInWordsToNow(new Date(user.createdAt))} ago. - {user.isAdmin && ( - Admin - )} - {user.isSuspended && Suspended} - {isCurrentUser && ( - - - - )} - - Recently updated} - empty={ - {user.name} hasn’t updated any documents yet. - } - showCollection - /> + return ( + + +  {user.name} - - ); - } + } + {...rest} + > + + + {isCurrentUser + ? t("You joined") + : user.lastActiveAt + ? t("Joined") + : t("Invited")}{" "} + {t("{{ time }} ago.", { + time: distanceInWordsToNow(new Date(user.createdAt)), + })} + {user.isAdmin && ( + {t("Admin")} + )} + {user.isSuspended && {t("Suspended")}} + {isCurrentUser && ( + + + + )} + + {t("Recently updated")}} + empty={ + + {t("{{ userName }} hasn’t updated any documents yet.", { + userName: user.name, + })} + + } + showCollection + /> + + + ); } const Edit = styled.span` @@ -98,4 +103,4 @@ const Meta = styled(HelpText)` margin-top: -12px; `; -export default inject("documents", "auth")(withRouter(UserProfile)); +export default inject("documents", "auth")(withRouter(observer(UserProfile))); diff --git a/app/stores/UiStore.js b/app/stores/UiStore.js index e1996464..b5d7d8c0 100644 --- a/app/stores/UiStore.js +++ b/app/stores/UiStore.js @@ -9,6 +9,9 @@ import type { Toast } from "types"; const UI_STORE = "UI_STORE"; class UiStore { + // has the user seen the prompt to change the UI language and actioned it + @observable languagePromptDismissed: boolean; + // theme represents the users UI preference (defaults to system) @observable theme: "light" | "dark" | "system"; @@ -47,6 +50,7 @@ class UiStore { } // persisted keys + this.languagePromptDismissed = data.languagePromptDismissed; this.tocVisible = data.tocVisible; this.theme = data.theme || "system"; @@ -68,6 +72,11 @@ class UiStore { } }; + @action + setLanguagePromptDismissed = () => { + this.languagePromptDismissed = true; + }; + @action setActiveDocument = (document: Document): void => { this.activeDocumentId = document.id; @@ -181,6 +190,7 @@ class UiStore { get asJson(): string { return JSON.stringify({ tocVisible: this.tocVisible, + languagePromptDismissed: this.languagePromptDismissed, theme: this.theme, }); } diff --git a/app/utils/language.js b/app/utils/language.js new file mode 100644 index 00000000..722f359b --- /dev/null +++ b/app/utils/language.js @@ -0,0 +1,7 @@ +// @flow + +export function detectLanguage() { + const [ln, r] = navigator.language.split("-"); + const region = (r || ln).toUpperCase(); + return `${ln}_${region}`; +} diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..b927c809 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /shared/i18n/locales/en_US/translation.json + translation: /shared/i18n/locales/%locale_with_underscore%/translation.json diff --git a/flow-typed/npm/react-i18next_vx.x.x.js b/flow-typed/npm/react-i18next_vx.x.x.js new file mode 100644 index 00000000..c56a31c4 --- /dev/null +++ b/flow-typed/npm/react-i18next_vx.x.x.js @@ -0,0 +1,109 @@ +// @flow +declare module "react-i18next" { + declare type TFunction = (key?: ?string, data?: ?Object) => string; + + declare type TranslatorProps = {| + t: TFunction, + i18nLoadedAt: Date, + i18n: Object, + |}; + + declare type TranslatorPropsVoid = { + t: TFunction | void, + i18nLoadedAt: Date | void, + i18n: Object | void, + }; + + declare type Translator> = ( + WrappedComponent: Component + ) => React$Element< + $Diff, TranslatorPropsVoid> + >; + + declare type TranslateOptions = $Shape<{ + wait: boolean, + nsMode: "default" | "fallback", + bindi18n: false | string, + bindStore: false | string, + withRef: boolean, + translateFuncName: string, + i18n: Object, + usePureComponent: boolean, + }>; + + declare type UseTranslationResponse = { + t: TFunction, + i18n: Object, + ready: boolean, + }; + + declare type Namespace = + | string + | Array + | (($Diff) => string | Array); + + declare function useTranslation( + ns?: Namespace, + options?: TranslateOptions + ): UseTranslationResponse; + + declare function withTranslation( + ns?: Namespace, + options?: { + withRef?: boolean, + } + ):

(component: React.ComponentType

) => Translator; + + declare type I18nProps = { + i18n?: Object, + ns?: string | Array, + children: (t: TFunction, { i18n: Object, t: TFunction }) => React$Node, + initialI18nStore?: Object, + initialLanguage?: string, + }; + declare var I18n: React$ComponentType; + + declare type InterpolateProps = { + className?: string, + dangerouslySetInnerHTMLPartElement?: string, + i18n?: Object, + i18nKey?: string, + options?: Object, + parent?: string, + style?: Object, + t?: TFunction, + useDangerouslySetInnerHTML?: boolean, + }; + declare var Interpolate: React$ComponentType; + + declare type TransProps = { + count?: number, + parent?: string, + i18n?: Object, + i18nKey?: string, + t?: TFunction, + }; + declare var Trans: React$ComponentType; + + declare type ProviderProps = { i18n: Object, children: React$Element<*> }; + declare var I18nextProvider: React$ComponentType; + + declare type NamespacesProps = { + components: Array>, + i18n: { loadNamespaces: Function }, + }; + declare function loadNamespaces(props: NamespacesProps): Promise; + + declare var initReactI18next: { + type: "3rdParty", + init: (instance: Object) => void, + }; + + declare function setDefaults(options: TranslateOptions): void; + + declare function getDefaults(): TranslateOptions; + + declare function getI18n(): Object; + + declare function setI18n(instance: Object): void; +} diff --git a/i18next-parser.config.js b/i18next-parser.config.js new file mode 100644 index 00000000..c6c201e1 --- /dev/null +++ b/i18next-parser.config.js @@ -0,0 +1,84 @@ +// @flow +module.exports = { + contextSeparator: "_", + // Key separator used in your translation keys + + createOldCatalogs: false, + // Save the \_old files + + defaultNamespace: "translation", + // Default namespace used in your i18next config + + defaultValue: "", + // Default value to give to empty keys + + indentation: 2, + // Indentation of the catalog files + + keepRemoved: false, + // Keep keys from the catalog that are no longer in code + + keySeparator: false, + // Key separator used in your translation keys + // If you want to use plain english keys, separators such as `.` and `:` will conflict. You might want to set `keySeparator: false` and `namespaceSeparator: false`. That way, `t('Status: Loading...')` will not think that there are a namespace and three separator dots for instance. + + // see below for more details + lexers: { + hbs: ["HandlebarsLexer"], + handlebars: ["HandlebarsLexer"], + + htm: ["HTMLLexer"], + html: ["HTMLLexer"], + + mjs: ["JavascriptLexer"], + js: ["JsxLexer"], // if you're writing jsx inside .js files, change this to JsxLexer + ts: ["JavascriptLexer"], + jsx: ["JsxLexer"], + tsx: ["JsxLexer"], + + default: ["JavascriptLexer"], + }, + + lineEnding: "auto", + // Control the line ending. See options at https://github.com/ryanve/eol + + namespaceSeparator: ":", + // Namespace separator used in your translation keys + // If you want to use plain english keys, separators such as `.` and `:` will conflict. You might want to set `keySeparator: false` and `namespaceSeparator: false`. That way, `t('Status: Loading...')` will not think that there are a namespace and three separator dots for instance. + + output: "shared/i18n/locales/en_US/translation.json", + // Supports $LOCALE and $NAMESPACE injection + // Supports JSON (.json) and YAML (.yml) file formats + // Where to write the locale files relative to process.cwd() + + input: undefined, + // An array of globs that describe where to look for source files + // relative to the location of the configuration file + + sort: false, + // Whether or not to sort the catalog + + skipDefaultValues: false, + // Whether to ignore default values. + + useKeysAsDefaultValue: true, + // Whether to use the keys as the default value; ex. "Hello": "Hello", "World": "World" + // This option takes precedence over the `defaultValue` and `skipDefaultValues` options + + verbose: false, + // Display info about the parsing including some stats + + failOnWarnings: false, + // Exit with an exit code of 1 on warnings + + customValueTemplate: null, + // If you wish to customize the value output the value as an object, you can set your own format. + // ${defaultValue} is the default value you set in your translation function. + // Any other custom property will be automatically extracted. + // + // Example: + // { + // message: "${defaultValue}", + // description: "${maxLength}", // t('my-key', {maxLength: 150}) + // } +}; diff --git a/package.json b/package.json index 5ddc6bab..f2edca67 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,12 @@ "main": "index.js", "scripts": { "clean": "rimraf build", + "build:i18n": "i18next 'app/**/*.js' 'server/**/*.js' && mkdir -p ./build/shared/i18n && cp -R ./shared/i18n/locales ./build/shared/i18n", "build:server": "babel -d ./build/server ./server && babel -d ./build/shared ./shared && cp package.json ./build && ln -sf \"$(pwd)/webpack.config.dev.js\" ./build", "build:webpack": "webpack --config webpack.config.prod.js", - "build": "yarn clean && yarn build:webpack && yarn build:server", + "build": "yarn clean && yarn build:webpack && yarn build:i18n && yarn build:server", "start": "node ./build/server/index.js", - "dev": "nodemon --exec \"yarn build:server && node build/server/index.js\" -e js --ignore build/ --ignore app/", + "dev": "nodemon --exec \"yarn build:server && yarn build:i18n && node build/server/index.js\" -e js --ignore build/ --ignore app/", "lint": "eslint app server shared", "flow": "flow", "deploy": "git push heroku master", @@ -92,6 +93,8 @@ "fs-extra": "^4.0.2", "google-auth-library": "^5.5.1", "http-errors": "1.4.0", + "i18next": "^19.8.3", + "i18next-http-backend": "^1.0.21", "immutable": "^3.8.2", "imports-loader": "0.6.5", "invariant": "^2.2.2", @@ -137,6 +140,7 @@ "react-dom": "^16.8.6", "react-dropzone": "4.2.1", "react-helmet": "^5.2.0", + "react-i18next": "^11.7.3", "react-keydown": "^1.7.3", "react-modal": "^3.1.2", "react-portal": "^4.0.0", @@ -183,6 +187,7 @@ "fetch-test-server": "^1.1.0", "flow-bin": "^0.104.0", "html-webpack-plugin": "3.2.0", + "i18next-parser": "^3.3.0", "jest-cli": "^26.0.0", "koa-webpack-dev-middleware": "^1.4.5", "koa-webpack-hot-middleware": "^1.0.3", diff --git a/server/api/__snapshots__/users.test.js.snap b/server/api/__snapshots__/users.test.js.snap index 05d6972a..48e01865 100644 --- a/server/api/__snapshots__/users.test.js.snap +++ b/server/api/__snapshots__/users.test.js.snap @@ -9,6 +9,7 @@ Object { "id": "46fde1d4-0050-428f-9f0b-0bf77f4bdf61", "isAdmin": false, "isSuspended": false, + "language": null, "lastActiveAt": null, "name": "User 1", }, @@ -44,6 +45,7 @@ Object { "id": "46fde1d4-0050-428f-9f0b-0bf77f4bdf61", "isAdmin": false, "isSuspended": false, + "language": null, "lastActiveAt": null, "name": "User 1", }, @@ -79,6 +81,7 @@ Object { "id": "46fde1d4-0050-428f-9f0b-0bf77f4bdf61", "isAdmin": true, "isSuspended": false, + "language": null, "lastActiveAt": null, "name": "User 1", }, @@ -123,6 +126,7 @@ Object { "id": "46fde1d4-0050-428f-9f0b-0bf77f4bdf61", "isAdmin": false, "isSuspended": true, + "language": null, "lastActiveAt": null, "name": "User 1", }, diff --git a/server/api/users.js b/server/api/users.js index 4aee6c57..7f5e22e3 100644 --- a/server/api/users.js +++ b/server/api/users.js @@ -63,10 +63,11 @@ router.post("users.info", auth(), async (ctx) => { router.post("users.update", auth(), async (ctx) => { const { user } = ctx.state; - const { name, avatarUrl } = ctx.body; + const { name, avatarUrl, language } = ctx.body; if (name) user.name = name; if (avatarUrl) user.avatarUrl = avatarUrl; + if (language) user.language = language; await user.save(); diff --git a/server/migrations/20201106122752-i18n.js b/server/migrations/20201106122752-i18n.js new file mode 100644 index 00000000..34788627 --- /dev/null +++ b/server/migrations/20201106122752-i18n.js @@ -0,0 +1,14 @@ +'use strict'; + +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.addColumn('users', 'language', { + type: Sequelize.STRING, + defaultValue: process.env.DEFAULT_LANGUAGE, + }); + }, + + down: async (queryInterface, Sequelize) => { + await queryInterface.removeColumn('users', 'language'); + } +}; diff --git a/server/models/User.js b/server/models/User.js index 0f552189..d11f9496 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -4,6 +4,7 @@ import addMinutes from "date-fns/add_minutes"; import subMinutes from "date-fns/sub_minutes"; import JWT from "jsonwebtoken"; import uuid from "uuid"; +import { languages } from "../../shared/i18n"; import { ValidationError } from "../errors"; import { sendEmail } from "../mailer"; import { DataTypes, sequelize, encryptedFields } from "../sequelize"; @@ -36,6 +37,13 @@ const User = sequelize.define( lastSigninEmailSentAt: DataTypes.DATE, suspendedAt: DataTypes.DATE, suspendedById: DataTypes.UUID, + language: { + type: DataTypes.STRING, + defaultValue: process.env.DEFAULT_LANGUAGE, + validate: { + isIn: [languages], + }, + }, }, { paranoid: true, diff --git a/server/presenters/__snapshots__/user.test.js.snap b/server/presenters/__snapshots__/user.test.js.snap index aa5990cd..8f84e53d 100644 --- a/server/presenters/__snapshots__/user.test.js.snap +++ b/server/presenters/__snapshots__/user.test.js.snap @@ -7,6 +7,7 @@ Object { "id": "123", "isAdmin": undefined, "isSuspended": undefined, + "language": undefined, "lastActiveAt": undefined, "name": "Test User", } @@ -19,6 +20,7 @@ Object { "id": "123", "isAdmin": undefined, "isSuspended": undefined, + "language": undefined, "lastActiveAt": undefined, "name": "Test User", } diff --git a/server/presenters/user.js b/server/presenters/user.js index a0bf2071..9f4ed16f 100644 --- a/server/presenters/user.js +++ b/server/presenters/user.js @@ -12,6 +12,7 @@ type UserPresentation = { email?: string, isAdmin: boolean, isSuspended: boolean, + language: string, }; export default (user: User, options: Options = {}): ?UserPresentation => { @@ -23,6 +24,7 @@ export default (user: User, options: Options = {}): ?UserPresentation => { userData.isAdmin = user.isAdmin; userData.isSuspended = user.isSuspended; userData.avatarUrl = user.avatarUrl; + userData.language = user.language; if (options.includeDetails) { userData.email = user.email; diff --git a/server/routes.js b/server/routes.js index 537b5712..2dfa71b7 100644 --- a/server/routes.js +++ b/server/routes.js @@ -6,7 +6,9 @@ import Koa from "koa"; import Router from "koa-router"; import sendfile from "koa-sendfile"; import serve from "koa-static"; +import { languages } from "../shared/i18n"; import environment from "./env"; +import { NotFoundError } from "./errors"; import apexRedirect from "./middlewares/apexRedirect"; import { opensearchResponse } from "./utils/opensearch"; import { robotsResponse } from "./utils/robots"; @@ -72,6 +74,25 @@ if (process.env.NODE_ENV === "production") { }); } +router.get("/locales/:lng.json", async (ctx) => { + let { lng } = ctx.params; + + if (!languages.includes(lng)) { + throw new NotFoundError(); + } + + if (process.env.NODE_ENV === "production") { + ctx.set({ + "Cache-Control": `max-age=${7 * 24 * 60 * 60}`, + }); + } + + await sendfile( + ctx, + path.join(__dirname, "../shared/i18n/locales", lng, "translation.json") + ); +}); + router.get("/robots.txt", (ctx) => { ctx.body = robotsResponse(ctx); }); diff --git a/shared/i18n/index.js b/shared/i18n/index.js new file mode 100644 index 00000000..8e7c58c1 --- /dev/null +++ b/shared/i18n/index.js @@ -0,0 +1,42 @@ +// @flow +import i18n from "i18next"; +import backend from "i18next-http-backend"; +import { initReactI18next } from "react-i18next"; + +export const initI18n = () => { + const lng = + "DEFAULT_LANGUAGE" in process.env ? process.env.DEFAULT_LANGUAGE : "en_US"; + + i18n + .use(backend) + .use(initReactI18next) + .init({ + backend: { + // this must match the path defined in routes. It's the path that the + // frontend UI code will hit to load missing translations. + loadPath: "/locales/{{lng}}.json", + }, + interpolation: { + escapeValue: false, + }, + react: { + useSuspense: false, + }, + lng, + fallbackLng: lng, + debug: process.env.NODE_ENV !== "production", + keySeparator: false, + }); + + return i18n; +}; + +export const languageOptions = [ + { label: "English (US)", value: "en_US" }, + { label: "Deutsch (Deutschland)", value: "de_DE" }, + { label: "Español (España)", value: "es_ES" }, + { label: "Français (France)", value: "fr_FR" }, + { label: "Português (Portugal)", value: "pt_PT" }, +]; + +export const languages: string[] = languageOptions.map((i) => i.value); diff --git a/shared/i18n/index.test.js b/shared/i18n/index.test.js new file mode 100644 index 00000000..2f71bccc --- /dev/null +++ b/shared/i18n/index.test.js @@ -0,0 +1,98 @@ +/* eslint-disable flowtype/require-valid-file-annotation */ +import i18n from "i18next"; +import de_DE from "./locales/de_DE/translation.json"; +import en_US from "./locales/en_US/translation.json"; +import pt_PT from "./locales/pt_PT/translation.json"; +import { initI18n } from "."; + +describe("i18n process.env is unset", () => { + beforeEach(() => { + delete process.env.DEFAULT_LANGUAGE; + initI18n() + .addResources("en_US", "translation", en_US) + .addResources("de_DE", "translation", de_DE) + .addResources("pt_PT", "translation", pt_PT); + }); + + it("translation of key should match", () => + expect(i18n.t("Saving…")).toBe("Saving…")); + + it("translation if changed to de_DE", () => { + i18n.changeLanguage("de_DE"); + expect(i18n.t("Saving…")).toBe("Speichert…"); + }); + + it("translation if changed to pt_PT", () => { + i18n.changeLanguage("pt_PT"); + expect(i18n.t("Saving…")).toBe("A guardar…"); + }); +}); + +describe("i18n process.env is en_US", () => { + beforeEach(() => { + process.env.DEFAULT_LANGUAGE = "en_US"; + initI18n() + .addResources("en_US", "translation", en_US) + .addResources("de_DE", "translation", de_DE) + .addResources("pt_PT", "translation", pt_PT); + }); + + it("translation of key should match", () => + expect(i18n.t("Saving…")).toBe("Saving…")); + + it("translation if changed to de_DE", () => { + i18n.changeLanguage("de_DE"); + expect(i18n.t("Saving…")).toBe("Speichert…"); + }); + + it("translation if changed to pt_PT", () => { + i18n.changeLanguage("pt_PT"); + expect(i18n.t("Saving…")).toBe("A guardar…"); + }); +}); + +describe("i18n process.env is de_DE", () => { + beforeEach(() => { + process.env.DEFAULT_LANGUAGE = "de_DE"; + initI18n() + .addResources("en_US", "translation", en_US) + .addResources("de_DE", "translation", de_DE) + .addResources("pt_PT", "translation", pt_PT); + }); + + it("translation of key should match", () => + expect(i18n.t("Saving…")).toBe("Speichert…")); + + it("translation if changed to en_US", () => { + i18n.changeLanguage("en_US"); + expect(i18n.t("Saving…")).toBe("Saving…"); + }); + + it("translation if changed to pt_PT", () => { + i18n.changeLanguage("pt_PT"); + expect(i18n.t("Saving…")).toBe("A guardar…"); + }); +}); + +describe("i18n process.env is pt_PT", () => { + beforeEach(() => { + process.env.DEFAULT_LANGUAGE = "pt_PT"; + initI18n() + .addResources("en_US", "translation", en_US) + .addResources("de_DE", "translation", de_DE) + .addResources("pt_PT", "translation", pt_PT); + }); + + it("translation of key should match", () => + expect(i18n.t("Saving…")).toBe("A guardar…")); + + it("translation if changed to en_US", () => { + i18n.changeLanguage("en_US"); + expect(i18n.t("Saving…")).toBe("Saving…"); + }); + + it("translation if changed to de_DE", () => { + i18n.changeLanguage("de_DE"); + expect(i18n.t("Saving…")).toBe("Speichert…"); + }); +}); diff --git a/shared/i18n/locales/de_DE/translation.json b/shared/i18n/locales/de_DE/translation.json new file mode 100644 index 00000000..bba7e759 --- /dev/null +++ b/shared/i18n/locales/de_DE/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "derzeit in Bearbeitung", + "currently viewing": "gerade angezeigt", + "viewed {{ timeAgo }} ago": "angesehen vor {{ timeAgo }}", + "You": "Sie", + "Trash": "Papierkorb", + "Archive": "Archiv", + "Drafts": "Entwürfe", + "Templates": "Vorlagen", + "New": "Neu", + "Only visible to you": "Nur für Sie sichtbar", + "Draft": "Entwurf", + "Template": "Vorlage", + "New doc": "Neues Dokument", + "More options": "Weitere Optionen", + "Insert column after": "Spalte danach einfügen", + "Insert column before": "Spalte davor einfügen", + "Insert row after": "Zeile darunter einfügen", + "Insert row before": "Zeile darüber einfügen", + "Align center": "Zentrieren", + "Align left": "Links ausrichten", + "Align right": "Rechts ausrichten", + "Bulleted list": "Punkteliste", + "Todo list": "Todo-Liste", + "Code block": "Codeblock", + "Copied to clipboard": "In die Zwischenablage kopiert", + "Code": "Code", + "Create link": "Link erstellen", + "Sorry, an error occurred creating the link": "Beim Erstellen des Links ist leider ein Fehler aufgetreten", + "Create a new doc": "Neues Dokument erstellen", + "Delete column": "Spalte löschen", + "Delete row": "Zeile löschen", + "Delete table": "Tabelle löschen", + "Italic": "Kursiv", + "Sorry, that link won’t work for this embed type": "Dieser Link funktioniert für diesen Einbettungstyp leider nicht", + "Find or create a doc…": "Suchen oder erstellen Sie ein Dokument…", + "Big heading": "Große Überschrift", + "Medium heading": "Mittlere Überschrift", + "Small heading": "Kleine Überschrift", + "Heading": "Überschrift", + "Divider": "Trennlinie", + "Image": "Bild", + "Sorry, an error occurred uploading the image": "Beim Hochladen des Bildes ist ein Fehler aufgetreten", + "Info": "Info", + "Info notice": "Info-Hinweis", + "Link": "Link", + "Link copied to clipboard": "Link in die Zwischenablage kopiert", + "Highlight": "Hervorheben", + "Type '/' to insert…": "Geben Sie '/' zum Einzufügen ein", + "Keep typing to filter…": "Tippen Sie weiter um zu filtern", + "No results": "Keine Ergebnisse", + "Open link": "Link öffnen", + "Ordered list": "Nummerierte Liste", + "Paste a link…": "Link einfügen…", + "Paste a {{service}} link…": "{{service}} Link einfügen…", + "Placeholder": "Platzhalter", + "Quote": "Zitat", + "Remove link": "Link entfernen", + "Search or paste a link…": "Suchen oder Einfügen eines Links…", + "Strikethrough": "Durchstreichen", + "Bold": "Fett", + "Subheading": "Untertitel", + "Table": "Tabelle", + "Tip": "Hinweis", + "Tip notice": "Tipp Hinweis", + "Warning": "Warnung", + "Warning notice": "Warnhinweis", + "Search…": "Suche…", + "Keyboard shortcuts": "Tastaturkürzel", + "New collection…": "Neue Sammlung…", + "Collections": "Sammlungen", + "Untitled": "Ohne Titel", + "Home": "Startseite", + "Search": "Suche", + "Starred": "Favoriten", + "Invite people…": "Personen einladen…", + "Invite people": "Personen einladen", + "Create a collection": "Sammlung erstellen", + "Return to App": "Zurück zur App", + "Profile": "Profil", + "Notifications": "Benachrichtigungen", + "API Tokens": "API-Tokens", + "Details": "Details", + "Security": "Sicherheit", + "People": "Personen", + "Groups": "Gruppen", + "Share Links": "Geteilte Links", + "Export Data": "Daten exportieren", + "Integrations": "Integrationen", + "Installation": "Installation", + "Settings": "Einstellungen", + "API documentation": "API Dokumentation", + "Changelog": "Änderungsprotokoll", + "Send us feedback": "Schicken Sie uns Feedback", + "Report a bug": "Ein technischen Fehler melden", + "Appearance": "Aussehen", + "System": "System", + "Light": "Hell", + "Dark": "Dunkel", + "Log out": "Ausloggen", + "Collection permissions": "Sammlungsberechtigungen", + "New document": "Neues Dokument", + "Import document": "Dokument importieren", + "Edit…": "Bearbeiten…", + "Permissions…": "Berechtigungen…", + "Export…": "Exportieren…", + "Delete…": "Löschen…", + "Edit collection": "Sammlung bearbeiten", + "Delete collection": "Sammlung löschen", + "Export collection": "Sammlung exportieren", + "Document duplicated": "Dokument dupliziert", + "Document archived": "Dokument archiviert", + "Document restored": "Dokument wiederhergestellt", + "Document unpublished": "Dokument unveröffentlicht", + "Restore": "Wiederherstellen", + "Restore…": "Wiederherstellen…", + "Choose a collection": "Sammlung auswählen", + "Unpin": "Lospinnen", + "Pin to collection": "Zur Sammlung anpinnen", + "Unstar": "Aus den Favoriten entfernen", + "Star": "Favorisieren", + "Share link…": "Link teilen…", + "Enable embeds": "Einbettungen aktivieren", + "Disable embeds": "Einbettungen deaktivieren", + "New nested document": "Neues verschachteltes Dokument", + "Create template…": "Vorlage erstellen…", + "Edit": "Bearbeiten", + "Duplicate": "Duplizieren", + "Unpublish": "Nicht veröffentlichen", + "Move…": "Verschieben…", + "History": "Verlauf", + "Download": "Herunterladen", + "Print": "Drucken", + "Delete {{ documentName }}": "{{ documentName }} löschen", + "Create template": "Vorlage erstellen", + "Share document": "Dokument teilen", + "Edit group": "Gruppe bearbeiten", + "Delete group": "Gruppe löschen", + "Members…": "Mitglieder…", + "New document in": "Neues Dokument in", + "collection": "Sammlung", + "New template…": "Neue Vorlage…", + "Link copied": "Link wurde kopiert", + "Restore version": "Version wiederherstellen", + "Copy link": "Link kopieren", + "Share link revoked": "Freigabelink widerrufen", + "Share link copied": "Freigabelink wurde kopiert", + "Go to document": "Zum Dokument gehen", + "Revoke link": "Link widerrufen", + "By {{ author }}": "von {{author}}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Sind Sie sicher, dass Sie {{ userName }} zu einem Administrator machen möchten? Administratoren können Team- und Rechnungsinformationen ändern.", + "Are you sure you want to make {{ userName }} a member?": "Sind Sie sicher, dass Sie {{ userName }} zu einem Mitglied machen möchten?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Möchten Sie dieses Konto wirklich sperren? Gesperrte Benutzer können sich nicht anmelden.", + "Make {{ userName }} a member…": "{{ userName }} zu einem Mitglied machen…", + "Make {{ userName }} an admin…": "{{ userName }} zu einem Admin machen…", + "Revoke invite…": "Einladung widerrufen…", + "Activate account": "Konto aktivieren", + "Suspend account…": "Konto sperren…", + "Documents": "Dokumente", + "The document archive is empty at the moment.": "Das Dokumentenarchiv ist momentan leer.", + "Search in collection…": "Suche in Sammlung…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} enthält noch keine Dokumente.", + "Get started by creating a new one!": "Erstellen Sie zunächst ein neues Dokument!", + "Create a document": "Dokument erstellen", + "Manage members…": "Mitglieder verwalten…", + "Pinned": "Gepinned", + "Recently updated": "Vor Kurzem aktualisiert", + "Recently published": "Vor Kurzem veröffentlicht", + "Least recently updated": "Am längsten nicht aktualisiert", + "A–Z": "A - Z", + "The collection was updated": "Die Sammlung wurde aktualisiert", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "Sie können den Namen und andere Details jederzeit bearbeiten, allerdings könnte dies Ihre Teammitglieder verwirren.", + "Name": "Name", + "Description": "Beschreibung", + "More details about this collection…": "Weitere Details zu dieser Sammlung…", + "Private collection": "private Sammlung", + "A private collection will only be visible to invited team members.": "Eine private Sammlung ist nur für eingeladene Teammitglieder sichtbar.", + "Saving…": "Speichert…", + "Save": "Speichern", + "{{ groupName }} was added to the collection": "{{ groupName }} wurde zur Sammlung hinzugefügt", + "Could not add user": "Benutzer kann nicht hinzugefügt werden", + "Can’t find the group you’re looking for?": "Sie können die gesuchte Gruppe nicht finden?", + "Create a group": "Gruppe erstellen", + "Search by group name…": "Suche nach Gruppennamen…", + "Search groups": "Gruppen suchen", + "No groups matching your search": "Keine Gruppen, die Ihrer Suche entsprechen", + "No groups left to add": "Keine Gruppen übrig zum Hinzufügen", + "Add": "Hinzufügen", + "{{ userName }} was added to the collection": "{{ userName }} wurde zur Sammlung hinzugefügt", + "Need to add someone who’s not yet on the team yet?": "Müssen Sie jemanden hinzufügen, der noch nicht im Team ist?", + "Invite people to {{ teamName }}": "Personen zu {{ teamName }} einladen", + "Search by name…": "Nach Name suchen…", + "Search people": "Personen suchen", + "No people matching your search": "Keine Personen, die Ihrer Suche entsprechen", + "No people left to add": "Keine Personen übrig zum Hinzufügen", + "Read only": "Schreibgeschützt", + "Read & Edit": "Lesen & Bearbeiten", + "Permissions": "Berechtigungen", + "Remove": "Entfernen", + "Active {{ lastActiveAt }} ago": "Aktiv vor {{ lastActiveAt }}", + "Never signed in": "Nie angemeldet", + "Invited": "Eingeladen", + "Admin": "Administrator", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Sammlungen dienen zur Gruppierung Ihrer Wissensbasis. Sie funktionieren am besten, wenn sie nach einem Thema oder einem internen Team organisiert sind - beispielsweise nach Produkt oder Engineering.", + "Creating…": "Wird erstellt…", + "Create": "Erstellen", + "Recently viewed": "Vor Kurzem angesehen", + "Created by me": "Von mir erstellt", + "Hide contents": "Inhalt ausblenden", + "Show contents": "Inhalt anzeigen", + "Archived": "Archiviert", + "Anyone with the link <1>can view this document": "Jeder mit dem Link <1>kann dieses Dokument ansehen", + "Share": "Teilen", + "Save Draft": "Entwurf speichern", + "Done Editing": "Bearbeitung abgeschlossen", + "Edit {{noun}}": "{{noun}} bearbeiten", + "New from template": "Neu aus Vorlage", + "Publish": "Veröffentlichen", + "Publish document": "Dokument veröffentlichen", + "Publishing…": "Am Veröffentlichen…", + "No documents found for your filters.": "Keine Dokumente anhand Ihre Filter gefunden.", + "You’ve not got any drafts at the moment.": "Sie haben im Moment keine Entwürfe.", + "Not found": "Nicht gefunden", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "Wir konnten die gesuchte Seite nicht finden. Möchten Sie zur <2>Startseite gehen?", + "Offline": "Offline", + "We were unable to load the document while offline.": "Wir konnten das Dokument nicht offline laden.", + "Your account has been suspended": "Ihr Konto wurde gesperrt", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "Ein Teamadministrator (<1>{{suspendedContactEmail}}) hat Ihr Konto gesperrt. Um Ihr Konto wieder zu aktivieren, wenden Sie sich bitte direkt an diesen.", + "{{userName}} was added to the group": "{{userName}} wurde zur Gruppe hinzugefügt", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Fügen Sie unten Teammitglieder hinzu, um ihnen Zugriff auf die Gruppe zu gewähren. Sie müssen jemanden hinzufügen, der noch nicht im Team ist?", + "Invite them to {{teamName}}": "Personen zu {{teamName}} einladen", + "{{userName}} was removed from the group": "{{userName}} wurde aus der Gruppe entfernt", + "Could not remove user": "Benutzer konnte nicht entfernt werden", + "Add people…": "Personen hinzufügen…", + "This group has no members.": "Diese Gruppe hat keine Mitglieder.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline ist so konzipiert, dass es schnell und einfach zu bedienen ist. Alle Ihre üblichen Tastaturkürzel funktionieren hier, und es gibt auch Markdown.", + "Navigation": "Navigation", + "New document in current collection": "Neues Dokument in der aktuellen Sammlung", + "Edit current document": "Aktuelles Dokument bearbeiten", + "Move current document": "Aktuelles Dokument verschieben", + "Jump to search": "Zur Suche springen", + "Jump to dashboard": "Gehe zum Dashboard", + "Table of contents": "Inhaltsverzeichnis", + "Open this guide": "Diese Anleitung öffnen", + "Editor": "Editor", + "Save and exit document edit mode": "Speichern und Dokumenten-Bearbeitungsmodus beenden", + "Publish and exit document edit mode": "Veröffentlichen und Dokumenten-Bearbeitungsmodus beenden", + "Save document and continue editing": "Dokument speichern und weiter bearbeiten", + "Cancel editing": "Bearbeitung abbrechen", + "Underline": "Unterstreichen", + "Undo": "Rückgängig machen", + "Redo": "Wiederholen", + "Markdown": "Markdown", + "Large header": "Große Überschrift", + "Medium header": "Mittlere Überschrift", + "Small header": "Kleine Überschrift", + "Numbered list": "Nummerierte Liste", + "Blockquote": "Zitatblock", + "Horizontal divider": "Horizontale Trennlinie", + "Inline code": "Inline-Code", + "Not Found": "Nicht gefunden", + "We were unable to find the page you’re looking for.": "Die von Ihnen gesuchte Seite konnte nicht gefunden werden.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Benutze das <1>{{meta}}+K Tastenkürzel um von überall in deiner Wissensdatenbank zu suchen", + "No documents found for your search filters. <1>Create a new document?": "Für Ihre Suchfilter wurden keine Dokumente gefunden. <1> Neues Dokument erstellen?", + "Clear filters": "Filter löschen", + "Profile saved": "Profil gespeichert", + "Profile picture updated": "Profilbild wurde aktualisiert", + "Unable to upload new profile picture": "Neues Profilbild kann nicht hochgeladen werden", + "Photo": "Foto", + "Upload": "Hochladen", + "Full name": "Vollständiger Name", + "Language": "Sprache", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Bitte beachten Sie, dass Übersetzungen derzeit in einer Test Phase verfügbar sind. <1> Community-Beiträge werden über unser <4> Übersetzungsportal akzeptiert", + "Delete Account": "Konto löschen", + "You may delete your account at any time, note that this is unrecoverable": "Sie können Ihren Account jederzeit löschen, beachten Sie, dass dies nicht wiederhergestellt werden kann", + "Delete account": "Konto löschen", + "Recently Updated": "Vor Kurzem Aktualisiert", + "Alphabetical": "Alphabetisch", + "You’ve not starred any documents yet.": "Keine Favoriten.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "Es gibt noch keine Vorlagen. Sie können Vorlagen erstellen, mit denen Ihr Team eine konsistente und genaue Dokumentation erstellen kann.", + "Trash is empty at the moment.": "Der Papierkorb ist im Moment leer.", + "You joined": "Sie sind beigetreten", + "Joined": "Beigetreten", + "{{ time }} ago.": "Vor {{ time }}.", + "Suspended": "Gesperrt", + "Edit Profile": "Profil bearbeiten", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} hat noch keine Dokumente aktualisiert." +} diff --git a/shared/i18n/locales/en_US/translation.json b/shared/i18n/locales/en_US/translation.json new file mode 100644 index 00000000..fd690c0d --- /dev/null +++ b/shared/i18n/locales/en_US/translation.json @@ -0,0 +1,302 @@ +{ + "currently editing": "currently editing", + "currently viewing": "currently viewing", + "viewed {{ timeAgo }} ago": "viewed {{ timeAgo }} ago", + "You": "You", + "Trash": "Trash", + "Archive": "Archive", + "Drafts": "Drafts", + "Templates": "Templates", + "Deleted Collection": "Deleted Collection", + "deleted": "deleted", + "archived": "archived", + "created": "created", + "published": "published", + "saved": "saved", + "updated": "updated", + "Never viewed": "Never viewed", + "Viewed": "Viewed", + "in": "in", + "New": "New", + "Only visible to you": "Only visible to you", + "Draft": "Draft", + "Template": "Template", + "New doc": "New doc", + "More options": "More options", + "Insert column after": "Insert column after", + "Insert column before": "Insert column before", + "Insert row after": "Insert row after", + "Insert row before": "Insert row before", + "Align center": "Align center", + "Align left": "Align left", + "Align right": "Align right", + "Bulleted list": "Bulleted list", + "Todo list": "Todo list", + "Code block": "Code block", + "Copied to clipboard": "Copied to clipboard", + "Code": "Code", + "Create link": "Create link", + "Sorry, an error occurred creating the link": "Sorry, an error occurred creating the link", + "Create a new doc": "Create a new doc", + "Delete column": "Delete column", + "Delete row": "Delete row", + "Delete table": "Delete table", + "Italic": "Italic", + "Sorry, that link won’t work for this embed type": "Sorry, that link won’t work for this embed type", + "Find or create a doc…": "Find or create a doc…", + "Big heading": "Big heading", + "Medium heading": "Medium heading", + "Small heading": "Small heading", + "Heading": "Heading", + "Divider": "Divider", + "Image": "Image", + "Sorry, an error occurred uploading the image": "Sorry, an error occurred uploading the image", + "Info": "Info", + "Info notice": "Info notice", + "Link": "Link", + "Link copied to clipboard": "Link copied to clipboard", + "Highlight": "Highlight", + "Type '/' to insert…": "Type '/' to insert…", + "Keep typing to filter…": "Keep typing to filter…", + "No results": "No results", + "Open link": "Open link", + "Ordered list": "Ordered list", + "Paste a link…": "Paste a link…", + "Paste a {{service}} link…": "Paste a {{service}} link…", + "Placeholder": "Placeholder", + "Quote": "Quote", + "Remove link": "Remove link", + "Search or paste a link…": "Search or paste a link…", + "Strikethrough": "Strikethrough", + "Bold": "Bold", + "Subheading": "Subheading", + "Table": "Table", + "Tip": "Tip", + "Tip notice": "Tip notice", + "Warning": "Warning", + "Warning notice": "Warning notice", + "Icon": "Icon", + "Loading…": "Loading…", + "Search…": "Search…", + "Outline is available in your language {{optionLabel}}, would you like to change?": "Outline is available in your language {{optionLabel}}, would you like to change?", + "Change Language": "Change Language", + "Dismiss": "Dismiss", + "Keyboard shortcuts": "Keyboard shortcuts", + "New collection…": "New collection…", + "Collections": "Collections", + "Untitled": "Untitled", + "Home": "Home", + "Search": "Search", + "Starred": "Starred", + "Invite people…": "Invite people…", + "Invite people": "Invite people", + "Create a collection": "Create a collection", + "Return to App": "Return to App", + "Profile": "Profile", + "Notifications": "Notifications", + "API Tokens": "API Tokens", + "Details": "Details", + "Security": "Security", + "People": "People", + "Groups": "Groups", + "Share Links": "Share Links", + "Export Data": "Export Data", + "Integrations": "Integrations", + "Installation": "Installation", + "Settings": "Settings", + "API documentation": "API documentation", + "Changelog": "Changelog", + "Send us feedback": "Send us feedback", + "Report a bug": "Report a bug", + "Appearance": "Appearance", + "System": "System", + "Light": "Light", + "Dark": "Dark", + "Log out": "Log out", + "Collection permissions": "Collection permissions", + "New document": "New document", + "Import document": "Import document", + "Edit…": "Edit…", + "Permissions…": "Permissions…", + "Export…": "Export…", + "Delete…": "Delete…", + "Edit collection": "Edit collection", + "Delete collection": "Delete collection", + "Export collection": "Export collection", + "Document duplicated": "Document duplicated", + "Document archived": "Document archived", + "Document restored": "Document restored", + "Document unpublished": "Document unpublished", + "Restore": "Restore", + "Restore…": "Restore…", + "Choose a collection": "Choose a collection", + "Unpin": "Unpin", + "Pin to collection": "Pin to collection", + "Unstar": "Unstar", + "Star": "Star", + "Share link…": "Share link…", + "Enable embeds": "Enable embeds", + "Disable embeds": "Disable embeds", + "New nested document": "New nested document", + "Create template…": "Create template…", + "Edit": "Edit", + "Duplicate": "Duplicate", + "Unpublish": "Unpublish", + "Move…": "Move…", + "History": "History", + "Download": "Download", + "Print": "Print", + "Delete {{ documentName }}": "Delete {{ documentName }}", + "Create template": "Create template", + "Share document": "Share document", + "Edit group": "Edit group", + "Delete group": "Delete group", + "Members…": "Members…", + "New document in": "New document in", + "collection": "collection", + "New template…": "New template…", + "Link copied": "Link copied", + "Restore version": "Restore version", + "Copy link": "Copy link", + "Share link revoked": "Share link revoked", + "Share link copied": "Share link copied", + "Go to document": "Go to document", + "Revoke link": "Revoke link", + "By {{ author }}": "By {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.", + "Are you sure you want to make {{ userName }} a member?": "Are you sure you want to make {{ userName }} a member?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.", + "Make {{ userName }} a member…": "Make {{ userName }} a member…", + "Make {{ userName }} an admin…": "Make {{ userName }} an admin…", + "Revoke invite…": "Revoke invite…", + "Activate account": "Activate account", + "Suspend account…": "Suspend account…", + "Documents": "Documents", + "The document archive is empty at the moment.": "The document archive is empty at the moment.", + "Search in collection…": "Search in collection…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} doesn’t contain any documents yet.", + "Get started by creating a new one!": "Get started by creating a new one!", + "Create a document": "Create a document", + "Manage members…": "Manage members…", + "Pinned": "Pinned", + "Recently updated": "Recently updated", + "Recently published": "Recently published", + "Least recently updated": "Least recently updated", + "A–Z": "A–Z", + "The collection was updated": "The collection was updated", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "You can edit the name and other details at any time, however doing so often might confuse your team mates.", + "Name": "Name", + "Description": "Description", + "More details about this collection…": "More details about this collection…", + "Private collection": "Private collection", + "A private collection will only be visible to invited team members.": "A private collection will only be visible to invited team members.", + "Saving…": "Saving…", + "Save": "Save", + "{{ groupName }} was added to the collection": "{{ groupName }} was added to the collection", + "Could not add user": "Could not add user", + "Can’t find the group you’re looking for?": "Can’t find the group you’re looking for?", + "Create a group": "Create a group", + "Search by group name…": "Search by group name…", + "Search groups": "Search groups", + "No groups matching your search": "No groups matching your search", + "No groups left to add": "No groups left to add", + "Add": "Add", + "{{ userName }} was added to the collection": "{{ userName }} was added to the collection", + "Need to add someone who’s not yet on the team yet?": "Need to add someone who’s not yet on the team yet?", + "Invite people to {{ teamName }}": "Invite people to {{ teamName }}", + "Search by name…": "Search by name…", + "Search people": "Search people", + "No people matching your search": "No people matching your search", + "No people left to add": "No people left to add", + "Read only": "Read only", + "Read & Edit": "Read & Edit", + "Permissions": "Permissions", + "Remove": "Remove", + "Active {{ lastActiveAt }} ago": "Active {{ lastActiveAt }} ago", + "Never signed in": "Never signed in", + "Invited": "Invited", + "Admin": "Admin", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.", + "Creating…": "Creating…", + "Create": "Create", + "Recently viewed": "Recently viewed", + "Created by me": "Created by me", + "Hide contents": "Hide contents", + "Show contents": "Show contents", + "Archived": "Archived", + "Anyone with the link <1>can view this document": "Anyone with the link <1>can view this document", + "Share": "Share", + "Save Draft": "Save Draft", + "Done Editing": "Done Editing", + "Edit {{noun}}": "Edit {{noun}}", + "New from template": "New from template", + "Publish": "Publish", + "Publish document": "Publish document", + "Publishing…": "Publishing…", + "No documents found for your filters.": "No documents found for your filters.", + "You’ve not got any drafts at the moment.": "You’ve not got any drafts at the moment.", + "Not found": "Not found", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "We were unable to find the page you’re looking for. Go to the <2>homepage?", + "Offline": "Offline", + "We were unable to load the document while offline.": "We were unable to load the document while offline.", + "Your account has been suspended": "Your account has been suspended", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.", + "{{userName}} was added to the group": "{{userName}} was added to the group", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?", + "Invite them to {{teamName}}": "Invite them to {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} was removed from the group", + "Could not remove user": "Could not remove user", + "Add people…": "Add people…", + "This group has no members.": "This group has no members.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.", + "Navigation": "Navigation", + "New document in current collection": "New document in current collection", + "Edit current document": "Edit current document", + "Move current document": "Move current document", + "Jump to search": "Jump to search", + "Jump to dashboard": "Jump to dashboard", + "Table of contents": "Table of contents", + "Open this guide": "Open this guide", + "Editor": "Editor", + "Save and exit document edit mode": "Save and exit document edit mode", + "Publish and exit document edit mode": "Publish and exit document edit mode", + "Save document and continue editing": "Save document and continue editing", + "Cancel editing": "Cancel editing", + "Underline": "Underline", + "Undo": "Undo", + "Redo": "Redo", + "Markdown": "Markdown", + "Large header": "Large header", + "Medium header": "Medium header", + "Small header": "Small header", + "Numbered list": "Numbered list", + "Blockquote": "Blockquote", + "Horizontal divider": "Horizontal divider", + "Inline code": "Inline code", + "Not Found": "Not Found", + "We were unable to find the page you’re looking for.": "We were unable to find the page you’re looking for.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base", + "No documents found for your search filters. <1>Create a new document?": "No documents found for your search filters. <1>Create a new document?", + "Clear filters": "Clear filters", + "Profile saved": "Profile saved", + "Profile picture updated": "Profile picture updated", + "Unable to upload new profile picture": "Unable to upload new profile picture", + "Photo": "Photo", + "Upload": "Upload", + "Full name": "Full name", + "Language": "Language", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal", + "Delete Account": "Delete Account", + "You may delete your account at any time, note that this is unrecoverable": "You may delete your account at any time, note that this is unrecoverable", + "Delete account": "Delete account", + "Alphabetical": "Alphabetical", + "You’ve not starred any documents yet.": "You’ve not starred any documents yet.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.", + "Trash is empty at the moment.": "Trash is empty at the moment.", + "You joined": "You joined", + "Joined": "Joined", + "{{ time }} ago.": "{{ time }} ago.", + "Suspended": "Suspended", + "Edit Profile": "Edit Profile", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} hasn’t updated any documents yet." +} diff --git a/shared/i18n/locales/es_ES/translation.json b/shared/i18n/locales/es_ES/translation.json new file mode 100644 index 00000000..65770599 --- /dev/null +++ b/shared/i18n/locales/es_ES/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "actualmente editando", + "currently viewing": "viendo actualmente", + "viewed {{ timeAgo }} ago": "visto hace {{ timeAgo }}", + "You": "Usted", + "Trash": "Papelera", + "Archive": "Archivar", + "Drafts": "Borradores", + "Templates": "Plantillas", + "New": "Nuevo", + "Only visible to you": "Solo visible para ti", + "Draft": "Borrador", + "Template": "Plantilla", + "New doc": "Nuevo doc", + "More options": "Más opciones", + "Insert column after": "Insertar columna después", + "Insert column before": "Insertar columna antes", + "Insert row after": "Insertar fila después", + "Insert row before": "Insertar fila antes", + "Align center": "Centrado", + "Align left": "Alinear a la izquierda", + "Align right": "Alinear a la derecha", + "Bulleted list": "Lista con viñetas", + "Todo list": "Lista de pendientes", + "Code block": "Bloque de código", + "Copied to clipboard": "Copiado al clipboard", + "Code": "Código", + "Create link": "Nuevo link", + "Sorry, an error occurred creating the link": "Lo sentimos, se ha producido un error al crear el link", + "Create a new doc": "Crea un nuevo documento", + "Delete column": "Eliminar columna", + "Delete row": "Borrar fila", + "Delete table": "Eliminar tabla", + "Italic": "Cursiva", + "Sorry, that link won’t work for this embed type": "Lo sentimos, ese enlace no funcionará para este tipo embebido", + "Find or create a doc…": "Buscar o crear un documento…", + "Big heading": "Título grande", + "Medium heading": "Título medio", + "Small heading": "Título pequeño", + "Heading": "Título", + "Divider": "Divisor", + "Image": "Imagen", + "Sorry, an error occurred uploading the image": "Lo sentimos, se produjo un error al cargar la imagen", + "Info": "Información", + "Info notice": "Aviso de información", + "Link": "Enlace", + "Link copied to clipboard": "Enlace copiado al porta papeles", + "Highlight": "Resaltar", + "Type '/' to insert…": "Escriba '/' para insertar…", + "Keep typing to filter…": "Sigue escribiendo para filtrar…", + "No results": "No hay resultados", + "Open link": "Abrir enlace", + "Ordered list": "Lista ordenada", + "Paste a link…": "Pegar un enlace…", + "Paste a {{service}} link…": "Pegar un enlace de {{service}}…", + "Placeholder": "Marcador", + "Quote": "Cita", + "Remove link": "Eliminar enlace", + "Search or paste a link…": "Buscar o pegar un enlace…", + "Strikethrough": "Tachado", + "Bold": "Negrita", + "Subheading": "Subtítulo", + "Table": "Tabla", + "Tip": "Sugerencia", + "Tip notice": "Aviso de sugerencia", + "Warning": "Advertencia", + "Warning notice": "Aviso de advertencia", + "Search…": "Buscar…", + "Keyboard shortcuts": "Atajos del teclado", + "New collection…": "Nueva colección…", + "Collections": "Colecciones", + "Untitled": "Sin título", + "Home": "Inicio", + "Search": "Buscar", + "Starred": "Favoritos", + "Invite people…": "Invitar personas…", + "Invite people": "Invitar personas", + "Create a collection": "Crear una colección", + "Return to App": "Volver a la app", + "Profile": "Perfil", + "Notifications": "Notificaciones", + "API Tokens": "Tokens API", + "Details": "Detalles", + "Security": "Seguridad", + "People": "Personas", + "Groups": "Grupos", + "Share Links": "Compartir enlaces", + "Export Data": "Exportar datos", + "Integrations": "Integraciones", + "Installation": "Instalación", + "Settings": "Configuración", + "API documentation": "Documentación de la API", + "Changelog": "Cambios", + "Send us feedback": "Envíenos sus comentarios", + "Report a bug": "Reportar un error", + "Appearance": "Apariencia", + "System": "Sistema", + "Light": "Claro", + "Dark": "Oscuro", + "Log out": "Salir", + "Collection permissions": "Permisos de colección", + "New document": "Nuevo documento", + "Import document": "Importar documento", + "Edit…": "Editar…", + "Permissions…": "Permisos…", + "Export…": "Exportar…", + "Delete…": "Borrar…", + "Edit collection": "Editar colección", + "Delete collection": "Eliminar colección", + "Export collection": "Exportar colección", + "Document duplicated": "Documento Duplicado", + "Document archived": "Documento archivado", + "Document restored": "Documento restaurado", + "Document unpublished": "Documento no publicado", + "Restore": "Restaurar", + "Restore…": "Restaurar…", + "Choose a collection": "Elige una Colección", + "Unpin": "Eliminar fijado", + "Pin to collection": "Fijar a colección", + "Unstar": "Eliminar de favoritos", + "Star": "Favorito", + "Share link…": "Compartir enlace…", + "Enable embeds": "Habilitar embeds", + "Disable embeds": "Desactivar embeds", + "New nested document": "Nuevo documento anidado", + "Create template…": "Crear plantilla…", + "Edit": "Editar", + "Duplicate": "Duplicar", + "Unpublish": "Cancelar publicación", + "Move…": "Mover…", + "History": "Historial", + "Download": "Descargar", + "Print": "Imprimir", + "Delete {{ documentName }}": "Eliminar {{ documentName }}", + "Create template": "Crear plantilla", + "Share document": "Compartir documento", + "Edit group": "Editar grupo", + "Delete group": "Eliminar grupo", + "Members…": "Miembros…", + "New document in": "Nuevo documento en", + "collection": "colección", + "New template…": "Nueva plantilla…", + "Link copied": "Enlace copiado", + "Restore version": "Restaurar versión", + "Copy link": "Copiar enlace", + "Share link revoked": "Compartir enlace revocado", + "Share link copied": "¡Enlace para compartir copiado", + "Go to document": "Ir al documento", + "Revoke link": "Revocar enlace", + "By {{ author }}": "Por {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "¿Estás seguro de que quieres convertir a {{ userName }} en administrador? Los administradores pueden modificar el equipo e información de facturación.", + "Are you sure you want to make {{ userName }} a member?": "¿Estás seguro de que quieres convertir a {{ userName }} en miembro?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "¿Está seguro que desea suspender esta cuenta? Los usuarios suspendidos no podrán iniciar sesión.", + "Make {{ userName }} a member…": "Hacer a {{ userName }} un miembro…", + "Make {{ userName }} an admin…": "Hacer a {{ userName }} un administrador…", + "Revoke invite…": "Revocar Invitación…", + "Activate account": "Activar cuenta", + "Suspend account…": "Suspender Cuenta…", + "Documents": "Documentos", + "The document archive is empty at the moment.": "El archivo de documento está vacío en este momento.", + "Search in collection…": "Buscar en colección…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} todavía no contiene ningún documento.", + "Get started by creating a new one!": "¡Empiece creando uno nuevo!", + "Create a document": "Crear Documento", + "Manage members…": "Administrar miembros…", + "Pinned": "Fijado", + "Recently updated": "Recientemente actualizado", + "Recently published": "Recientemente publicado", + "Least recently updated": "Menos recientemente actualizado", + "A–Z": "A–Z", + "The collection was updated": "La colección fue actualizada", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "Puede editar el nombre y otros detalles en cualquier momento, sin embargo, hacerlo a menudo puede confundir a sus compañeros de equipo.", + "Name": "Nombre", + "Description": "Descripción", + "More details about this collection…": "Más detalles sobre esta colección…", + "Private collection": "Colección privada", + "A private collection will only be visible to invited team members.": "Una colección privada sólo será visible para los miembros invitados del equipo.", + "Saving…": "Guardando…", + "Save": "Guardar", + "{{ groupName }} was added to the collection": "{{ groupName }} fue agregado a la colección", + "Could not add user": "No se pudo agregar al usuario", + "Can’t find the group you’re looking for?": "¿No encuentras el grupo que estás buscando?", + "Create a group": "Crear un grupo", + "Search by group name…": "Buscar por nombre de grupo…", + "Search groups": "Buscar grupos", + "No groups matching your search": "No hay proyectos que coincidan con tu búsqueda", + "No groups left to add": "No quedan grupos para agregar", + "Add": "Agregar", + "{{ userName }} was added to the collection": "{{ userName }} fue agregado a la colección", + "Need to add someone who’s not yet on the team yet?": "¿Necesitas añadir a alguien que todavía no está en el equipo?", + "Invite people to {{ teamName }}": "Invitar personas a {{ teamName }}", + "Search by name…": "Buscar por nombre…", + "Search people": "Buscar personas", + "No people matching your search": "No hay personas que coincidan con su búsqueda", + "No people left to add": "No quedan personas para agregar", + "Read only": "Solo lectura", + "Read & Edit": "Leer y editar", + "Permissions": "Permisos", + "Remove": "Eliminar", + "Active {{ lastActiveAt }} ago": "Activo hace {{ lastActiveAt }}", + "Never signed in": "No ha iniciado sesión nunca", + "Invited": "Invitado", + "Admin": "Admin", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Las colecciones sirven para agrupar su base de conocimientos. Funcionan mejor cuando se organizan en torno a un tema o un equipo interno: producto o ingeniería, por ejemplo.", + "Creating…": "Creando…", + "Create": "Crear", + "Recently viewed": "Recientemente vistos", + "Created by me": "Creado por mí", + "Hide contents": "Ocultar contenidos", + "Show contents": "Mostrar contenidos", + "Archived": "Archivado", + "Anyone with the link <1>can view this document": "Cualquiera con el enlace <1> puede ver este documento", + "Share": "Compartir", + "Save Draft": "Guardar borrador", + "Done Editing": "Edición terminada", + "Edit {{noun}}": "Editar {{noun}}", + "New from template": "Nuevo desde plantilla", + "Publish": "Publicar", + "Publish document": "Publicar documento", + "Publishing…": "Publicando…", + "No documents found for your filters.": "No se encontraron documentos para sus filtros.", + "You’ve not got any drafts at the moment.": "No tienes borradores en este momento.", + "Not found": "No encontrado", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "No pudimos encontrar la página que estás buscando. Ir a la página de <2>inicio?", + "Offline": "Sin conexión", + "We were unable to load the document while offline.": "No pudimos cargar el documento sin conexión.", + "Your account has been suspended": "Tu cuenta ha sido suspendida", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "Un administrador de equipo (<1>{{suspendedContactEmail}}) ha suspendido tu cuenta. Para reactivar su cuenta, comuníquese con ellos directamente.", + "{{userName}} was added to the group": "{{userName}} fue agregado al grupo", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Añadir miembros del equipo a continuación para darles acceso al grupo. ¿Necesita añadir alguien que aún no esté en el equipo?", + "Invite them to {{teamName}}": "Invítalos a {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} fue eliminado del grupo", + "Could not remove user": "No se pudo remover al usuario", + "Add people…": "Agregar personas…", + "This group has no members.": "Este grupo no tiene miembros.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline está diseñado para ser rápido y fácil de usar. Todos sus atajos de teclado habituales funcionan aquí, y también usa Markdown.", + "Navigation": "Navegación", + "New document in current collection": "Nuevo documento en la colección actual", + "Edit current document": "Editar el documento actual", + "Move current document": "Mover el documento actual", + "Jump to search": "Ir a la búsqueda", + "Jump to dashboard": "Ir a Panel de control", + "Table of contents": "Tabla de contenido", + "Open this guide": "Abra esta guía", + "Editor": "Editor", + "Save and exit document edit mode": "Guardar y salir del modo de edición de documentos", + "Publish and exit document edit mode": "Publicar y salir del modo de edición de documentos", + "Save document and continue editing": "Guardar y continuar editando", + "Cancel editing": "Cancelar edición", + "Underline": "Subrayar", + "Undo": "Deshacer", + "Redo": "Rehacer", + "Markdown": "Markdown", + "Large header": "Encabezado grande", + "Medium header": "Título medio", + "Small header": "Título pequeño", + "Numbered list": "Lista numerada", + "Blockquote": "Bloque de cita", + "Horizontal divider": "Divisor horizontal", + "Inline code": "Código en línea", + "Not Found": "No Encontrado", + "We were unable to find the page you’re looking for.": "No pudimos encontrar la página que buscabas.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Usa el atajo <1>{{meta}}+K para buscar desde cualquier lugar de tu base de conocimientos", + "No documents found for your search filters. <1>Create a new document?": "No se encontraron documentos para sus filtros de búsqueda. <1> ¿Crear un nuevo documento?", + "Clear filters": "Limpiar filtros", + "Profile saved": "Perfil guardado", + "Profile picture updated": "Foto de perfil guardada", + "Unable to upload new profile picture": "No se puede subir una nueva foto de perfil", + "Photo": "Foto", + "Upload": "Subir", + "Full name": "Nombre completo", + "Language": "Idioma", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Por favor, ten en cuenta que las traducciones están actualmente en acceso anticipado.<1>Las contribuciones de la comunidad son aceptadas a través de nuestro <4>portal de traducción", + "Delete Account": "Eliminar cuenta", + "You may delete your account at any time, note that this is unrecoverable": "Puede eliminar su cuenta en cualquier momento, tenga en cuenta que esto es irréversible", + "Delete account": "Eliminar cuenta", + "Recently Updated": "Actualizados recientemente", + "Alphabetical": "Alfabético", + "You’ve not starred any documents yet.": "Todavía no has marcado documentos como favoritos.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "Todavía no hay plantillas. Puede crear plantillas para ayudar a su equipo a crear documentación precisa y coherente.", + "Trash is empty at the moment.": "La papelera está vacía en este momento.", + "You joined": "Te uniste", + "Joined": "Unido", + "{{ time }} ago.": "Hace {{ time }}.", + "Suspended": "Suspendido", + "Edit Profile": "Editar perfil", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} aún no ha actualizado ningún documento." +} diff --git a/shared/i18n/locales/fr_FR/translation.json b/shared/i18n/locales/fr_FR/translation.json new file mode 100644 index 00000000..99727107 --- /dev/null +++ b/shared/i18n/locales/fr_FR/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "en train d'éditer", + "currently viewing": "en train de consulter", + "viewed {{ timeAgo }} ago": "vu il y a {{ timeAgo }}", + "You": "Vous", + "Trash": "Corbeille", + "Archive": "Archiver", + "Drafts": "Brouillons", + "Templates": "Modèles", + "New": "Nouveau", + "Only visible to you": "Visible uniquement pour vous", + "Draft": "Brouillon", + "Template": "Modèle", + "New doc": "Nouveau doc", + "More options": "Plus d'options", + "Insert column after": "Insérer une colonne après", + "Insert column before": "Insérer une colonne avant", + "Insert row after": "Insérer une ligne après", + "Insert row before": "Insérer une ligne avant", + "Align center": "Aligner au centre", + "Align left": "Aligner à gauche", + "Align right": "Aligner à droite", + "Bulleted list": "Liste à puces", + "Todo list": "Liste des tâches", + "Code block": "Bloc de code", + "Copied to clipboard": "Copié dans le presse-papier", + "Code": "Code", + "Create link": "Créer un lien", + "Sorry, an error occurred creating the link": "Désolé, une erreur s'est produite lors de la création du lien", + "Create a new doc": "Créer un nouveau doc", + "Delete column": "Supprimer la colonne", + "Delete row": "Supprimer la ligne", + "Delete table": "Supprimer ce tableau", + "Italic": "Italique", + "Sorry, that link won’t work for this embed type": "Désolé, ce lien ne fonctionne pas pour ce type d'intégration", + "Find or create a doc…": "Rechercher ou créer un doc…", + "Big heading": "En-tête", + "Medium heading": "Titre moyen", + "Small heading": "Petit titre", + "Heading": "Titre", + "Divider": "Séparateur", + "Image": "Image", + "Sorry, an error occurred uploading the image": "Une erreur est survenue pendant l'envoi de l'image", + "Info": "Informations", + "Info notice": "Avis d'information", + "Link": "Lien", + "Link copied to clipboard": "Lien copié dans le presse-papiers", + "Highlight": "Surligner", + "Type '/' to insert…": "Tapez '/' pour insérer…", + "Keep typing to filter…": "Continuez à taper pour filtrer…", + "No results": "Aucun résultats", + "Open link": "Ouvrir le lien", + "Ordered list": "Liste ordonnée", + "Paste a link…": "Coller un lien…", + "Paste a {{service}} link…": "Collez un lien {{service}}…", + "Placeholder": "Indication", + "Quote": "Citation", + "Remove link": "Supprimer le lien", + "Search or paste a link…": "Rechercher ou coller un lien…", + "Strikethrough": "Barré", + "Bold": "Gras", + "Subheading": "Sous-titre", + "Table": "Tableau", + "Tip": "Astuce", + "Tip notice": "Astuce", + "Warning": "Avertissement", + "Warning notice": "Avertissement", + "Search…": "Recherche…", + "Keyboard shortcuts": "Raccourcis clavier", + "New collection…": "Nouvelle collection…", + "Collections": "Collections", + "Untitled": "Sans titre", + "Home": "Accueil", + "Search": "Recherche", + "Starred": "Favoris", + "Invite people…": "Inviter des personnes…", + "Invite people": "Inviter des personnes", + "Create a collection": "Créer une collection", + "Return to App": "Retour à l’application", + "Profile": "Profil", + "Notifications": "Notifications", + "API Tokens": "Tokens API", + "Details": "Détails", + "Security": "Sécurité", + "People": "Contacts", + "Groups": "Groupes", + "Share Links": "Liens Partagés", + "Export Data": "Exporter les données", + "Integrations": "Intégrations", + "Installation": "Installation", + "Settings": "Réglages", + "API documentation": "Documentation de l'API", + "Changelog": "Historique des modifications", + "Send us feedback": "Donnez-nous votre avis", + "Report a bug": "Signaler un bug", + "Appearance": "Affichage", + "System": "Système", + "Light": "Clair", + "Dark": "Foncé", + "Log out": "Déconnexion", + "Collection permissions": "Permissions sur les collections", + "New document": "Nouveau document", + "Import document": "Importer un document", + "Edit…": "Modifier…", + "Permissions…": "Permissions…", + "Export…": "Exporter…", + "Delete…": "Supprimer…", + "Edit collection": "Modifier la collection", + "Delete collection": "Supprimer la collection", + "Export collection": "Exporter la collection", + "Document duplicated": "Document dupliqué", + "Document archived": "Document archivé", + "Document restored": "Document restauré", + "Document unpublished": "Document dépublié", + "Restore": "Restaurer", + "Restore…": "Restaurer…", + "Choose a collection": "Choisir une collection", + "Unpin": "Désépingler", + "Pin to collection": "Épingler à la collection", + "Unstar": "Enlever des favoris", + "Star": "Ajouter aux favoris", + "Share link…": "Partager le lien…", + "Enable embeds": "Activer les intégrations", + "Disable embeds": "Désactiver les intégrations", + "New nested document": "Nouveau document imbriqué", + "Create template…": "Créer un modèle…", + "Edit": "Modifier", + "Duplicate": "Dupliquer", + "Unpublish": "Dépublier", + "Move…": "Déplacer…", + "History": "Historique", + "Download": "Télécharger", + "Print": "Imprimer", + "Delete {{ documentName }}": "Supprimer {{ documentName }}", + "Create template": "Créer un modèle", + "Share document": "Partager le document", + "Edit group": "Modifier le groupe", + "Delete group": "Supprimer le groupe", + "Members…": "Membres…", + "New document in": "Nouveau document", + "collection": "collection", + "New template…": "Nouveau modèle…", + "Link copied": "Lien copié", + "Restore version": "Restaurer cette version", + "Copy link": "Copier le lien", + "Share link revoked": "Lien de partage révoqué", + "Share link copied": "Lien de partage copié", + "Go to document": "Accéder au document", + "Revoke link": "Révoquer le lien", + "By {{ author }}": "Par {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Voulez-vous vraiment faire de {{ userName }} un administrateur ? Les administrateurs peuvent modifier les informations relatives à l'équipe et à la facturation.", + "Are you sure you want to make {{ userName }} a member?": "Êtes-vous sûr de vouloir faire de {{ userName }} un membre ?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Voulez-vous vraiment suspendre ce compte ? Les utilisateurs suspendus ne pourront plus se connecter.", + "Make {{ userName }} a member…": "Faire de {{ userName }} un membre…", + "Make {{ userName }} an admin…": "Faire de {{ userName }} un administrateur…", + "Revoke invite…": "Révoquer l'invitation…", + "Activate account": "Activer le compte", + "Suspend account…": "Suspendre le compte…", + "Documents": "Documents", + "The document archive is empty at the moment.": "L'archive du document est vide pour le moment.", + "Search in collection…": "Rechercher dans la collection…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} ne contient aucun document pour le moment.", + "Get started by creating a new one!": "Commencez par en créer un nouveau !", + "Create a document": "Créer un document", + "Manage members…": "Gérer les membres…", + "Pinned": "Épinglé", + "Recently updated": "Récemment mis à jour", + "Recently published": "Récemment publiés", + "Least recently updated": "Moins récemment modifiés", + "A–Z": "A – Z", + "The collection was updated": "La collection a été mise à jour", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "Vous pouvez modifier le nom et autres détails à tout moment, mais le faire souvent peut perturber les membres de votre équipe.", + "Name": "Nom", + "Description": "Description", + "More details about this collection…": "Plus de détails sur cette collection…", + "Private collection": "Collection Privée", + "A private collection will only be visible to invited team members.": "Une collection privée ne sera visible que pour les membres invités de l'équipe.", + "Saving…": "Enregistrement…", + "Save": "Sauvegarder", + "{{ groupName }} was added to the collection": "{{ groupName }} été ajouté à la collection", + "Could not add user": "Impossible d'ajouter l'utilisateur", + "Can’t find the group you’re looking for?": "Vous ne trouvez pas le groupe que vous cherchez ?", + "Create a group": "Créer un groupe", + "Search by group name…": "Rechercher par nom de groupe…", + "Search groups": "Rechercher des groupes", + "No groups matching your search": "Aucun groupe ne correspond à votre recherche", + "No groups left to add": "Plus aucun groupe à ajouter", + "Add": "Ajouter", + "{{ userName }} was added to the collection": "{{ userName }} été ajouté à la collection", + "Need to add someone who’s not yet on the team yet?": "Besoin d'ajouter quelqu'un qui ne fait pas encore partie de l'équipe?", + "Invite people to {{ teamName }}": "Inviter des personnes à {{ teamName }}", + "Search by name…": "Rechercher par nom…", + "Search people": "Rechercher des personnes", + "No people matching your search": "Aucune personne ne correspond à votre recherche", + "No people left to add": "Plus aucune personne à ajouter", + "Read only": "Lecture seule", + "Read & Edit": "Lire et éditer", + "Permissions": "Permissions", + "Remove": "Supprimer", + "Active {{ lastActiveAt }} ago": "Actif il y a {{ lastActiveAt }}", + "Never signed in": "Jamais connecté", + "Invited": "Invité", + "Admin": "Administrateur", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Les collections servent à regrouper votre base de connaissances. Ils fonctionnent mieux lorsqu'ils sont organisés autour d'un sujet ou d'une équipe interne - Produit ou Engineering par exemple.", + "Creating…": "Création en cours…", + "Create": "Créer", + "Recently viewed": "Vu récemment", + "Created by me": "Créé par moi", + "Hide contents": "Masquer le contenu", + "Show contents": "Afficher le contenu", + "Archived": "Archivé", + "Anyone with the link <1>can view this document": "Tous ceux avec le lien <1> peuvent voir ce document", + "Share": "Partager", + "Save Draft": "Enregistrer le brouillon", + "Done Editing": "Édition terminée", + "Edit {{noun}}": "Éditer {{noun}}", + "New from template": "Nouveau à partir d'un modèle", + "Publish": "Publier", + "Publish document": "Publier le document", + "Publishing…": "Publication en cours…", + "No documents found for your filters.": "Aucun documents trouvés pour votre recherche.", + "You’ve not got any drafts at the moment.": "Vous n'avez aucun brouillon pour le moment.", + "Not found": "Non trouvé", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "Nous n'avons pas pu trouver la page que vous recherchez. Accédez à la <2>page d'accueil ?", + "Offline": "Hors ligne", + "We were unable to load the document while offline.": "Impossible de charger le document en mode hors connexion.", + "Your account has been suspended": "Votre compte a été suspendu", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "Un administrateur (<1>{{suspendedContactEmail}} ) a suspendu votre compte. Pour réactiver votre compte, veuillez les contacter directement.", + "{{userName}} was added to the group": "{{userName}} été ajouté au groupe", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Ajoutez des membres de l'équipe ci-dessous pour leur donner accès au groupe. Besoin d'ajouter quelqu'un qui ne fait pas encore partie de l'équipe ?", + "Invite them to {{teamName}}": "Invitez-les à {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} a été retiré du groupe", + "Could not remove user": "Impossible de supprimer l'utilisateur", + "Add people…": "Ajouter quelqu'un…", + "This group has no members.": "Ce groupe n'a aucun membre.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline est conçu pour être rapide et facile à utiliser. Tous vos raccourcis clavier habituels fonctionnent ici, et il y a aussi un support Markdown.", + "Navigation": "Navigation", + "New document in current collection": "Nouveau document dans la collection courante", + "Edit current document": "Éditer le document courant", + "Move current document": "Déplacer le document courant", + "Jump to search": "Aller à la recherche", + "Jump to dashboard": "Aller au tableau de bord", + "Table of contents": "Table des matières", + "Open this guide": "Ouvrir ce guide", + "Editor": "Éditeur", + "Save and exit document edit mode": "Enregistrer et quitter le mode d'édition de document", + "Publish and exit document edit mode": "Publier et quitter le mode d'édition de document", + "Save document and continue editing": "Enregistrer le document et continuer à modifier", + "Cancel editing": "Annuler l'édition", + "Underline": "Souligner", + "Undo": "Annuler", + "Redo": "Rétablir", + "Markdown": "Markdown", + "Large header": "En-tête large", + "Medium header": "En-tête moyen", + "Small header": "Petit en-tête", + "Numbered list": "Liste numérotée", + "Blockquote": "Citation", + "Horizontal divider": "Ligne horizontale", + "Inline code": "Ligne de Code", + "Not Found": "Non trouvé", + "We were unable to find the page you’re looking for.": "Nous n'avons pas pu trouver la page que vous recherchez.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Utilisez le <1>{{meta}}+ K raccourci pour rechercher n'importe où dans votre base de connaissances", + "No documents found for your search filters. <1>Create a new document?": "Aucun document trouvé pour vos filtres de recherche. <1>Créer un nouveau document ?", + "Clear filters": "Effacer les filtres", + "Profile saved": "Profil enregistré", + "Profile picture updated": "Photo de profil sauvegardée", + "Unable to upload new profile picture": "Impossible d'envoyer la nouvelle photo de profil", + "Photo": "Photo", + "Upload": "Envoyer", + "Full name": "Nom et prénom", + "Language": "Langue", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Veuillez noter que les traductions sont actuellement en accès anticipé.<1>Les contributions de la communauté sont acceptées via notre <4>portail de traduction", + "Delete Account": "Supprimer le compte", + "You may delete your account at any time, note that this is unrecoverable": "Vous pouvez supprimer votre compte à tout moment, notez que cela est irrécupérable", + "Delete account": "Supprimer compte", + "Recently Updated": "Mis à jour récemment", + "Alphabetical": "Alphabétique", + "You’ve not starred any documents yet.": "Vous n'avez encore ajouté aucun document aux favoris.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "Il n'y a pas encore de modèles. Vous pouvez créer des modèles pour aider votre équipe à créer une documentation cohérente et précise.", + "Trash is empty at the moment.": "La corbeille est vide pour le moment.", + "You joined": "Vous avez rejoint", + "Joined": "Rejoint", + "{{ time }} ago.": "Il y a {{ time }}.", + "Suspended": "Suspendu", + "Edit Profile": "Modifier le profil", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} n'a pas encore mis à jour de document." +} diff --git a/shared/i18n/locales/ja_JP/translation.json b/shared/i18n/locales/ja_JP/translation.json new file mode 100644 index 00000000..d1231a4a --- /dev/null +++ b/shared/i18n/locales/ja_JP/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "currently editing", + "currently viewing": "currently viewing", + "viewed {{ timeAgo }} ago": "viewed {{ timeAgo }} ago", + "You": "You", + "Trash": "Trash", + "Archive": "Archive", + "Drafts": "Drafts", + "Templates": "Templates", + "New": "New", + "Only visible to you": "Only visible to you", + "Draft": "Draft", + "Template": "Template", + "New doc": "New doc", + "More options": "More options", + "Insert column after": "Insert column after", + "Insert column before": "Insert column before", + "Insert row after": "Insert row after", + "Insert row before": "Insert row before", + "Align center": "Align center", + "Align left": "Align left", + "Align right": "Align right", + "Bulleted list": "Bulleted list", + "Todo list": "Todo list", + "Code block": "Code block", + "Copied to clipboard": "Copied to clipboard", + "Code": "Code", + "Create link": "Create link", + "Sorry, an error occurred creating the link": "Sorry, an error occurred creating the link", + "Create a new doc": "Create a new doc", + "Delete column": "Delete column", + "Delete row": "Delete row", + "Delete table": "Delete table", + "Italic": "Italic", + "Sorry, that link won’t work for this embed type": "Sorry, that link won’t work for this embed type", + "Find or create a doc…": "Find or create a doc…", + "Big heading": "Big heading", + "Medium heading": "Medium heading", + "Small heading": "Small heading", + "Heading": "Heading", + "Divider": "Divider", + "Image": "Image", + "Sorry, an error occurred uploading the image": "Sorry, an error occurred uploading the image", + "Info": "Info", + "Info notice": "Info notice", + "Link": "Link", + "Link copied to clipboard": "Link copied to clipboard", + "Highlight": "Highlight", + "Type '/' to insert…": "Type '/' to insert…", + "Keep typing to filter…": "Keep typing to filter…", + "No results": "No results", + "Open link": "Open link", + "Ordered list": "Ordered list", + "Paste a link…": "Paste a link…", + "Paste a {{service}} link…": "Paste a {{service}} link…", + "Placeholder": "Placeholder", + "Quote": "Quote", + "Remove link": "Remove link", + "Search or paste a link…": "Search or paste a link…", + "Strikethrough": "Strikethrough", + "Bold": "Bold", + "Subheading": "Subheading", + "Table": "Table", + "Tip": "Tip", + "Tip notice": "Tip notice", + "Warning": "Warning", + "Warning notice": "Warning notice", + "Search…": "Search…", + "Keyboard shortcuts": "Keyboard shortcuts", + "New collection…": "New collection…", + "Collections": "Collections", + "Untitled": "Untitled", + "Home": "Home", + "Search": "Search", + "Starred": "Starred", + "Invite people…": "Invite people…", + "Invite people": "Invite people", + "Create a collection": "Create a collection", + "Return to App": "Return to App", + "Profile": "Profile", + "Notifications": "Notifications", + "API Tokens": "API Tokens", + "Details": "Details", + "Security": "Security", + "People": "People", + "Groups": "Groups", + "Share Links": "Share Links", + "Export Data": "Export Data", + "Integrations": "Integrations", + "Installation": "Installation", + "Settings": "Settings", + "API documentation": "API documentation", + "Changelog": "Changelog", + "Send us feedback": "Send us feedback", + "Report a bug": "Report a bug", + "Appearance": "Appearance", + "System": "System", + "Light": "Light", + "Dark": "Dark", + "Log out": "Log out", + "Collection permissions": "Collection permissions", + "New document": "New document", + "Import document": "Import document", + "Edit…": "Edit…", + "Permissions…": "Permissions…", + "Export…": "Export…", + "Delete…": "Delete…", + "Edit collection": "Edit collection", + "Delete collection": "Delete collection", + "Export collection": "Export collection", + "Document duplicated": "Document duplicated", + "Document archived": "Document archived", + "Document restored": "Document restored", + "Document unpublished": "Document unpublished", + "Restore": "Restore", + "Restore…": "Restore…", + "Choose a collection": "Choose a collection", + "Unpin": "Unpin", + "Pin to collection": "Pin to collection", + "Unstar": "Unstar", + "Star": "Star", + "Share link…": "Share link…", + "Enable embeds": "Enable embeds", + "Disable embeds": "Disable embeds", + "New nested document": "New nested document", + "Create template…": "Create template…", + "Edit": "Edit", + "Duplicate": "Duplicate", + "Unpublish": "Unpublish", + "Move…": "Move…", + "History": "History", + "Download": "Download", + "Print": "Print", + "Delete {{ documentName }}": "Delete {{ documentName }}", + "Create template": "Create template", + "Share document": "Share document", + "Edit group": "Edit group", + "Delete group": "Delete group", + "Members…": "Members…", + "New document in": "New document in", + "collection": "collection", + "New template…": "New template…", + "Link copied": "Link copied", + "Restore version": "Restore version", + "Copy link": "Copy link", + "Share link revoked": "Share link revoked", + "Share link copied": "Share link copied", + "Go to document": "Go to document", + "Revoke link": "Revoke link", + "By {{ author }}": "By {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.", + "Are you sure you want to make {{ userName }} a member?": "Are you sure you want to make {{ userName }} a member?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.", + "Make {{ userName }} a member…": "Make {{ userName }} a member…", + "Make {{ userName }} an admin…": "Make {{ userName }} an admin…", + "Revoke invite…": "Revoke invite…", + "Activate account": "Activate account", + "Suspend account…": "Suspend account…", + "Documents": "Documents", + "The document archive is empty at the moment.": "The document archive is empty at the moment.", + "Search in collection…": "Search in collection…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} doesn’t contain any documents yet.", + "Get started by creating a new one!": "Get started by creating a new one!", + "Create a document": "Create a document", + "Manage members…": "Manage members…", + "Pinned": "Pinned", + "Recently updated": "Recently updated", + "Recently published": "Recently published", + "Least recently updated": "Least recently updated", + "A–Z": "A–Z", + "The collection was updated": "The collection was updated", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "You can edit the name and other details at any time, however doing so often might confuse your team mates.", + "Name": "Name", + "Description": "Description", + "More details about this collection…": "More details about this collection…", + "Private collection": "Private collection", + "A private collection will only be visible to invited team members.": "A private collection will only be visible to invited team members.", + "Saving…": "Saving…", + "Save": "Save", + "{{ groupName }} was added to the collection": "{{ groupName }} was added to the collection", + "Could not add user": "Could not add user", + "Can’t find the group you’re looking for?": "Can’t find the group you’re looking for?", + "Create a group": "Create a group", + "Search by group name…": "Search by group name…", + "Search groups": "Search groups", + "No groups matching your search": "No groups matching your search", + "No groups left to add": "No groups left to add", + "Add": "Add", + "{{ userName }} was added to the collection": "{{ userName }} was added to the collection", + "Need to add someone who’s not yet on the team yet?": "Need to add someone who’s not yet on the team yet?", + "Invite people to {{ teamName }}": "Invite people to {{ teamName }}", + "Search by name…": "Search by name…", + "Search people": "Search people", + "No people matching your search": "No people matching your search", + "No people left to add": "No people left to add", + "Read only": "Read only", + "Read & Edit": "Read & Edit", + "Permissions": "Permissions", + "Remove": "Remove", + "Active {{ lastActiveAt }} ago": "Active {{ lastActiveAt }} ago", + "Never signed in": "Never signed in", + "Invited": "Invited", + "Admin": "Admin", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.", + "Creating…": "Creating…", + "Create": "Create", + "Recently viewed": "Recently viewed", + "Created by me": "Created by me", + "Hide contents": "Hide contents", + "Show contents": "Show contents", + "Archived": "Archived", + "Anyone with the link <1>can view this document": "Anyone with the link <1>can view this document", + "Share": "Share", + "Save Draft": "Save Draft", + "Done Editing": "Done Editing", + "Edit {{noun}}": "Edit {{noun}}", + "New from template": "New from template", + "Publish": "Publish", + "Publish document": "Publish document", + "Publishing…": "Publishing…", + "No documents found for your filters.": "No documents found for your filters.", + "You’ve not got any drafts at the moment.": "You’ve not got any drafts at the moment.", + "Not found": "Not found", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "We were unable to find the page you’re looking for. Go to the <2>homepage?", + "Offline": "Offline", + "We were unable to load the document while offline.": "We were unable to load the document while offline.", + "Your account has been suspended": "Your account has been suspended", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.", + "{{userName}} was added to the group": "{{userName}} was added to the group", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?", + "Invite them to {{teamName}}": "Invite them to {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} was removed from the group", + "Could not remove user": "Could not remove user", + "Add people…": "Add people…", + "This group has no members.": "This group has no members.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.", + "Navigation": "Navigation", + "New document in current collection": "New document in current collection", + "Edit current document": "Edit current document", + "Move current document": "Move current document", + "Jump to search": "Jump to search", + "Jump to dashboard": "Jump to dashboard", + "Table of contents": "Table of contents", + "Open this guide": "Open this guide", + "Editor": "Editor", + "Save and exit document edit mode": "Save and exit document edit mode", + "Publish and exit document edit mode": "Publish and exit document edit mode", + "Save document and continue editing": "Save document and continue editing", + "Cancel editing": "Cancel editing", + "Underline": "Underline", + "Undo": "Undo", + "Redo": "Redo", + "Markdown": "Markdown", + "Large header": "Large header", + "Medium header": "Medium header", + "Small header": "Small header", + "Numbered list": "Numbered list", + "Blockquote": "Blockquote", + "Horizontal divider": "Horizontal divider", + "Inline code": "Inline code", + "Not Found": "Not Found", + "We were unable to find the page you’re looking for.": "We were unable to find the page you’re looking for.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base", + "No documents found for your search filters. <1>Create a new document?": "No documents found for your search filters. <1>Create a new document?", + "Clear filters": "Clear filters", + "Profile saved": "Profile saved", + "Profile picture updated": "Profile picture updated", + "Unable to upload new profile picture": "Unable to upload new profile picture", + "Photo": "Photo", + "Upload": "Upload", + "Full name": "Full name", + "Language": "Language", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal", + "Delete Account": "Delete Account", + "You may delete your account at any time, note that this is unrecoverable": "You may delete your account at any time, note that this is unrecoverable", + "Delete account": "Delete account", + "Recently Updated": "Recently Updated", + "Alphabetical": "Alphabetical", + "You’ve not starred any documents yet.": "You’ve not starred any documents yet.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.", + "Trash is empty at the moment.": "Trash is empty at the moment.", + "You joined": "You joined", + "Joined": "Joined", + "{{ time }} ago.": "{{ time }} ago.", + "Suspended": "Suspended", + "Edit Profile": "Edit Profile", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} hasn’t updated any documents yet." +} diff --git a/shared/i18n/locales/pt_PT/translation.json b/shared/i18n/locales/pt_PT/translation.json new file mode 100644 index 00000000..354e572e --- /dev/null +++ b/shared/i18n/locales/pt_PT/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "neste momento a editar", + "currently viewing": "neste momento a visualizar", + "viewed {{ timeAgo }} ago": "viu há {{ timeAgo }}", + "You": "Tu", + "Trash": "Reciclagem", + "Archive": "Arquivo", + "Drafts": "Rascunhos", + "Templates": "Modelos", + "New": "Novo", + "Only visible to you": "Apenas visível para ti", + "Draft": "Rascunho", + "Template": "Modelo", + "New doc": "Novo doc", + "More options": "Mais opções", + "Insert column after": "Inserir coluna depois", + "Insert column before": "Insira coluna antes", + "Insert row after": "Inserir linha depois", + "Insert row before": "Inserir linha antes", + "Align center": "Alinhar ao centro", + "Align left": "Alinhar à esquerda", + "Align right": "Alinhar à direita", + "Bulleted list": "Lista com marcadores", + "Todo list": "Lista de tarefas", + "Code block": "Bloco de código", + "Copied to clipboard": "Copiado para o clipboard", + "Code": "Código", + "Create link": "Criar link", + "Sorry, an error occurred creating the link": "Desculpe, ocorreu um erro ao criar o link", + "Create a new doc": "Criar um novo documento", + "Delete column": "Apagar coluna", + "Delete row": "Apagar linha", + "Delete table": "Eliminar tabela", + "Italic": "Itálico", + "Sorry, that link won’t work for this embed type": "Desculpe, esse link não funcionará para este tipo de incorporação", + "Find or create a doc…": "Encontre ou crie um documento…", + "Big heading": "Cabeçalho grande", + "Medium heading": "Cabeçalho médio", + "Small heading": "Cabeçalho pequeno", + "Heading": "Cabeçalho", + "Divider": "Separador", + "Image": "Imagem", + "Sorry, an error occurred uploading the image": "Desculpe, ocorreu um erro ao criar o link", + "Info": "Informação", + "Info notice": "Aviso de informação", + "Link": "Link", + "Link copied to clipboard": "Copiado para o clipboard", + "Highlight": "Destaque", + "Type '/' to insert…": "Digite '/' para inserir…", + "Keep typing to filter…": "Continue digitando para filtrar…", + "No results": "Sem resultados", + "Open link": "Abrir link", + "Ordered list": "Lista ordenada", + "Paste a link…": "Inserir um link…", + "Paste a {{service}} link…": "Inserir um {{service}} link…", + "Placeholder": "Espaço em branco", + "Quote": "Citação", + "Remove link": "Remover link", + "Search or paste a link…": "Procure ou insira um link…", + "Strikethrough": "Riscado", + "Bold": "Negrito", + "Subheading": "Subtítulo", + "Table": "Tabela", + "Tip": "Dica", + "Tip notice": "Aviso de dica", + "Warning": "Aviso", + "Warning notice": "Aviso de alerta", + "Search…": "Pesquisa…", + "Keyboard shortcuts": "Atalhos do teclado", + "New collection…": "Nova coleção…", + "Collections": "Coleções", + "Untitled": "Sem título", + "Home": "Página inicial", + "Search": "Pesquisa", + "Starred": "Favoritos", + "Invite people…": "Convidar pessoas…", + "Invite people": "Convidar pessoas", + "Create a collection": "Criar coleção", + "Return to App": "Voltar à App", + "Profile": "Perfil", + "Notifications": "Notificações", + "API Tokens": "Tokens de API", + "Details": "Detalhes", + "Security": "Segurança", + "People": "Pessoas", + "Groups": "Grupos", + "Share Links": "Compartilhar ligações", + "Export Data": "Exportar dados", + "Integrations": "Integrações", + "Installation": "Instalação", + "Settings": "Configurações", + "API documentation": "Documentação da API", + "Changelog": "Changelog", + "Send us feedback": "Envia-nos Feedback", + "Report a bug": "Reportar um erro técnico", + "Appearance": "Aparência", + "System": "Sistema", + "Light": "Claro", + "Dark": "Escuro", + "Log out": "Deslogar", + "Collection permissions": "Permissões da coleção", + "New document": "Novo documento", + "Import document": "Importar documento", + "Edit…": "Editar…", + "Permissions…": "Permissões…", + "Export…": "Exportar…", + "Delete…": "Apagar…", + "Edit collection": "Editar coleção", + "Delete collection": "Apagar coleção", + "Export collection": "Exportar coleção", + "Document duplicated": "Documento duplicado", + "Document archived": "Documento arquivado", + "Document restored": "Documento restaurado", + "Document unpublished": "Documento não publicado", + "Restore": "Restaurar", + "Restore…": "Restaurar…", + "Choose a collection": "Escolher coleção", + "Unpin": "Tirar pino", + "Pin to collection": "Pin coleção", + "Unstar": "Tirar estrela", + "Star": "Estrela", + "Share link…": "Partilhar link…", + "Enable embeds": "Ativar embeds", + "Disable embeds": "Desativar embeds", + "New nested document": "Novo documento aninhado", + "Create template…": "Criar template…", + "Edit": "Editar", + "Duplicate": "Duplicar", + "Unpublish": "Despublicar", + "Move…": "Mover…", + "History": "Historia", + "Download": "Download", + "Print": "Imprimir", + "Delete {{ documentName }}": "Apagar {{ documentName }}", + "Create template": "Criar template", + "Share document": "Partilhar documento", + "Edit group": "Editar grupo", + "Delete group": "Apagar grupo", + "Members…": "Membros…", + "New document in": "Novo documento em", + "collection": "coleção", + "New template…": "Novo template…", + "Link copied": "Link copiado", + "Restore version": "Restaurar versão", + "Copy link": "Copiar link", + "Share link revoked": "Link de partilha foi revogado", + "Share link copied": "Link de partilha foi copiado", + "Go to document": "Ir para documento", + "Revoke link": "Revogar link", + "By {{ author }}": "De {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Tem a certeza que deseja tornar {{ userName }} um administrador? Os administradores podem modificar as informações de faturação e da equipa.", + "Are you sure you want to make {{ userName }} a member?": "Tem a certeza de que deseja tornar {{ userName }} um membro?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Tem a certeza que deseja suspender esta conta? Os usuários suspensos serão impedidos de se conectar.", + "Make {{ userName }} a member…": "Tornar {{ userName }} um membro…", + "Make {{ userName }} an admin…": "Tornar {{ userName }} um administrador…", + "Revoke invite…": "Revogar convite…", + "Activate account": "Ativar conta", + "Suspend account…": "Suspender conta…", + "Documents": "Documentos", + "The document archive is empty at the moment.": "O arquivo do documento está vazio neste momento.", + "Search in collection…": "Procurar na coleção…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} não contém nenhum documento ainda.", + "Get started by creating a new one!": "Para começar, crie um documento novo!", + "Create a document": "Criar documento", + "Manage members…": "Gerenciar membros…", + "Pinned": "Marcado", + "Recently updated": "Atualizado recentemente", + "Recently published": "Publicado recentemente", + "Least recently updated": "Menos atualizado recentemente", + "A–Z": "A–Z", + "The collection was updated": "A coleção foi atualizada", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "Podes editar o nome e outros detalhes a qualquer momento, no entanto fazer se fizeres isso frequentemente, poders confundir os teus colegas de trabalho.", + "Name": "Nome", + "Description": "Descrição", + "More details about this collection…": "Mais detalhes sobre esta coleção…", + "Private collection": "Coleção privada", + "A private collection will only be visible to invited team members.": "Uma coleção privada só será visível para os membros convidados da equipa.", + "Saving…": "A guardar…", + "Save": "Guardar", + "{{ groupName }} was added to the collection": "{{ groupName }} foi adicionado à coleção", + "Could not add user": "Não foi possível adicionar usuário", + "Can’t find the group you’re looking for?": "Não consegue encontrar o grupo que procura?", + "Create a group": "Criar grupo", + "Search by group name…": "Procurar grupo pelo nome…", + "Search groups": "Procurar grupos", + "No groups matching your search": "Nenhum grupo corresponde à sua pesquisa", + "No groups left to add": "Nenhum grupo restante para adicionar", + "Add": "Adicionar", + "{{ userName }} was added to the collection": "{{ userName }} foi adicionado à coleção", + "Need to add someone who’s not yet on the team yet?": "Precisa adicionar alguém que ainda não faz parte da equipe?", + "Invite people to {{ teamName }}": "Convide pessoas para {{ teamName }}", + "Search by name…": "Procurar pelo nome…", + "Search people": "Procurar pessoas", + "No people matching your search": "Nenhuma pessoa corresponde à sua pesquisa", + "No people left to add": "Não sobrou ninguém para adicionar", + "Read only": "Somente leitura", + "Read & Edit": "Leitura & Escrita", + "Permissions": "Permissões", + "Remove": "Remover", + "Active {{ lastActiveAt }} ago": "Ativo há {{ lastActiveAt }}", + "Never signed in": "Nunca conectado", + "Invited": "Convidado", + "Admin": "Administrador", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Coleções são para agrupar a sua base de dados de conhecimento. Elas trabalham melhor quando organizadas em torno de um tópico ou equipa interna — Produto ou Engenharia, por exemplo.", + "Creating…": "Criando…", + "Create": "Criar", + "Recently viewed": "Visto recentemente", + "Created by me": "Criado por mim", + "Hide contents": "Ocultar conteúdo", + "Show contents": "Mostrar conteúdo", + "Archived": "Arquivado", + "Anyone with the link <1>can view this document": "Qualquer pessoa com o link <1>pode ver este documento", + "Share": "Compartilhar", + "Save Draft": "Guardar rascunho", + "Done Editing": "Edição concluída", + "Edit {{noun}}": "Editar {{noun}}", + "New from template": "Criar a partir do modelo", + "Publish": "Publicar", + "Publish document": "Publicar documento", + "Publishing…": "Publicando…", + "No documents found for your filters.": "Nenhum documento encontrado com os seus filtros.", + "You’ve not got any drafts at the moment.": "Não tem nenhum rascunho de momento.", + "Not found": "Não encontrado", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "Não conseguimos encontrar a página que está à procura. Ir para a <2>página inicial?", + "Offline": "Offline", + "We were unable to load the document while offline.": "Não foi possível carregar o documento em modo offline.", + "Your account has been suspended": "A sua conta foi suspensa", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "Um administrador da equipa (<1>{{suspendedContactEmail}}) suspendeu sua conta. Para reativar sua conta, por favor, entre em contato diretamente com ele.", + "{{userName}} was added to the group": "{{userName}} foi adicionado ao grupo", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Adicione os membros da equipa abaixo para dar acesso ao grupo. Precisa adicionar alguém que ainda não esteja na equipa?", + "Invite them to {{teamName}}": "Convide pessoas para {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} foi removido do grupo", + "Could not remove user": "Não foi possível remover o usuário", + "Add people…": "Adicionar pessoas…", + "This group has no members.": "Este grupo não tem membros.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "O Outline foi projetado para ser rápido e fácil de usar. Todos os seus atalhos de teclado usuais funcionam aqui, e há Markdown também.", + "Navigation": "Navegação", + "New document in current collection": "Novo documento na coleção atual", + "Edit current document": "Editar documento atual", + "Move current document": "Mover documento atual", + "Jump to search": "Ir para a pesquisa", + "Jump to dashboard": "Ir para o painel", + "Table of contents": "Índice de conteúdos", + "Open this guide": "Abrir este guia", + "Editor": "Editor", + "Save and exit document edit mode": "Guardar e sair do modo de edição de documento", + "Publish and exit document edit mode": "Publicar e sair do modo de edição de documento", + "Save document and continue editing": "Guardar documento e continuar no modo de edição", + "Cancel editing": "Cancelar edição", + "Underline": "Sublinhado", + "Undo": "Anular", + "Redo": "Repetir", + "Markdown": "Markdown", + "Large header": "Cabeçalho grande", + "Medium header": "Cabeçalho médio", + "Small header": "Cabeçalho pequeno", + "Numbered list": "Lista numerada", + "Blockquote": "Citação", + "Horizontal divider": "Separador horizontal", + "Inline code": "Código em linha", + "Not Found": "Não encontrado", + "We were unable to find the page you’re looking for.": "Não conseguimos encontrar a página que está à procura.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Use o atalho <1>{{meta}}+K para pesquisar de qualquer lugar na sua base de conhecimento", + "No documents found for your search filters. <1>Create a new document?": "Nenhum documento foi encontrado para seus filtros de pesquisa. <1>Criar um novo documento?", + "Clear filters": "Limpar filtros", + "Profile saved": "Perfil guardado", + "Profile picture updated": "Foto de perfil foi atualizada", + "Unable to upload new profile picture": "Não é possível carregar uma nova foto de perfil", + "Photo": "Foto", + "Upload": "Upload", + "Full name": "Nome completo", + "Language": "Língua", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Por favor, note que as traduções estão atualmente em acesso antecipado.<1>Contribuições da comunidade são aceitas através do nosso <4>portal de tradução", + "Delete Account": "Apagar conta", + "You may delete your account at any time, note that this is unrecoverable": "Pode apagar a sua conta a qualquer momento, atenção que isso é irrecuperável", + "Delete account": "Apagar conta", + "Recently Updated": "Atualizado recentemente", + "Alphabetical": "Alfabético", + "You’ve not starred any documents yet.": "Ainda não marcou nenhum documento com estrela.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "Ainda não existem modelos. Pode criar modelos para ajudar sua equipa a criar documentação consistente e precisa.", + "Trash is empty at the moment.": "A reciclagem encontra-se de momento vazia.", + "You joined": "Entrou", + "Joined": "Entrou", + "{{ time }} ago.": "{{ time }} atrás.", + "Suspended": "Suspendido", + "Edit Profile": "Editar perfil", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} ainda não atualizou nenhum documento." +} diff --git a/shared/i18n/locales/ru_RU/translation.json b/shared/i18n/locales/ru_RU/translation.json new file mode 100644 index 00000000..0971706c --- /dev/null +++ b/shared/i18n/locales/ru_RU/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "редактируется", + "currently viewing": "просматривается", + "viewed {{ timeAgo }} ago": "просмотрено {{ timeAgo }} назад", + "You": "You", + "Trash": "Корзина", + "Archive": "Архив", + "Drafts": "Черновики", + "Templates": "Шаблоны", + "New": "New", + "Only visible to you": "Only visible to you", + "Draft": "Черновик", + "Template": "Шаблон", + "New doc": "New doc", + "More options": "More options", + "Insert column after": "Insert column after", + "Insert column before": "Insert column before", + "Insert row after": "Insert row after", + "Insert row before": "Insert row before", + "Align center": "Align center", + "Align left": "Align left", + "Align right": "Align right", + "Bulleted list": "Bulleted list", + "Todo list": "Todo list", + "Code block": "Code block", + "Copied to clipboard": "Copied to clipboard", + "Code": "Code", + "Create link": "Create link", + "Sorry, an error occurred creating the link": "К сожалению, при создании ссылки возникла ошибка", + "Create a new doc": "Create a new doc", + "Delete column": "Удалить колонку", + "Delete row": "Удалить строку", + "Delete table": "Удалить таблицу", + "Italic": "Курсив", + "Sorry, that link won’t work for this embed type": "Sorry, that link won’t work for this embed type", + "Find or create a doc…": "Find or create a doc…", + "Big heading": "Big heading", + "Medium heading": "Medium heading", + "Small heading": "Small heading", + "Heading": "Heading", + "Divider": "Divider", + "Image": "Image", + "Sorry, an error occurred uploading the image": "Sorry, an error occurred uploading the image", + "Info": "Info", + "Info notice": "Info notice", + "Link": "Link", + "Link copied to clipboard": "Link copied to clipboard", + "Highlight": "Highlight", + "Type '/' to insert…": "Type '/' to insert…", + "Keep typing to filter…": "Keep typing to filter…", + "No results": "No results", + "Open link": "Open link", + "Ordered list": "Ordered list", + "Paste a link…": "Paste a link…", + "Paste a {{service}} link…": "Paste a {{service}} link…", + "Placeholder": "Placeholder", + "Quote": "Цитата", + "Remove link": "Remove link", + "Search or paste a link…": "Search or paste a link…", + "Strikethrough": "Strikethrough", + "Bold": "Bold", + "Subheading": "Subheading", + "Table": "Table", + "Tip": "Tip", + "Tip notice": "Tip notice", + "Warning": "Warning", + "Warning notice": "Warning notice", + "Search…": "Search…", + "Keyboard shortcuts": "Keyboard shortcuts", + "New collection…": "New collection…", + "Collections": "Collections", + "Untitled": "Untitled", + "Home": "Home", + "Search": "Search", + "Starred": "Starred", + "Invite people…": "Invite people…", + "Invite people": "Invite people", + "Create a collection": "Create a collection", + "Return to App": "Return to App", + "Profile": "Profile", + "Notifications": "Notifications", + "API Tokens": "API Tokens", + "Details": "Details", + "Security": "Security", + "People": "People", + "Groups": "Groups", + "Share Links": "Share Links", + "Export Data": "Export Data", + "Integrations": "Integrations", + "Installation": "Installation", + "Settings": "Settings", + "API documentation": "API documentation", + "Changelog": "Changelog", + "Send us feedback": "Send us feedback", + "Report a bug": "Report a bug", + "Appearance": "Appearance", + "System": "System", + "Light": "Light", + "Dark": "Dark", + "Log out": "Log out", + "Collection permissions": "Collection permissions", + "New document": "New document", + "Import document": "Import document", + "Edit…": "Edit…", + "Permissions…": "Permissions…", + "Export…": "Export…", + "Delete…": "Delete…", + "Edit collection": "Edit collection", + "Delete collection": "Delete collection", + "Export collection": "Export collection", + "Document duplicated": "Document duplicated", + "Document archived": "Document archived", + "Document restored": "Document restored", + "Document unpublished": "Document unpublished", + "Restore": "Restore", + "Restore…": "Restore…", + "Choose a collection": "Choose a collection", + "Unpin": "Unpin", + "Pin to collection": "Pin to collection", + "Unstar": "Unstar", + "Star": "Star", + "Share link…": "Share link…", + "Enable embeds": "Enable embeds", + "Disable embeds": "Disable embeds", + "New nested document": "New nested document", + "Create template…": "Create template…", + "Edit": "Edit", + "Duplicate": "Duplicate", + "Unpublish": "Unpublish", + "Move…": "Move…", + "History": "History", + "Download": "Download", + "Print": "Print", + "Delete {{ documentName }}": "Delete {{ documentName }}", + "Create template": "Create template", + "Share document": "Share document", + "Edit group": "Edit group", + "Delete group": "Delete group", + "Members…": "Members…", + "New document in": "New document in", + "collection": "collection", + "New template…": "New template…", + "Link copied": "Link copied", + "Restore version": "Restore version", + "Copy link": "Copy link", + "Share link revoked": "Share link revoked", + "Share link copied": "Share link copied", + "Go to document": "Go to document", + "Revoke link": "Revoke link", + "By {{ author }}": "By {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.", + "Are you sure you want to make {{ userName }} a member?": "Are you sure you want to make {{ userName }} a member?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.", + "Make {{ userName }} a member…": "Make {{ userName }} a member…", + "Make {{ userName }} an admin…": "Make {{ userName }} an admin…", + "Revoke invite…": "Revoke invite…", + "Activate account": "Activate account", + "Suspend account…": "Suspend account…", + "Documents": "Documents", + "The document archive is empty at the moment.": "The document archive is empty at the moment.", + "Search in collection…": "Search in collection…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} doesn’t contain any documents yet.", + "Get started by creating a new one!": "Get started by creating a new one!", + "Create a document": "Create a document", + "Manage members…": "Manage members…", + "Pinned": "Pinned", + "Recently updated": "Recently updated", + "Recently published": "Recently published", + "Least recently updated": "Least recently updated", + "A–Z": "A–Z", + "The collection was updated": "The collection was updated", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "You can edit the name and other details at any time, however doing so often might confuse your team mates.", + "Name": "Name", + "Description": "Description", + "More details about this collection…": "More details about this collection…", + "Private collection": "Private collection", + "A private collection will only be visible to invited team members.": "A private collection will only be visible to invited team members.", + "Saving…": "Saving…", + "Save": "Save", + "{{ groupName }} was added to the collection": "{{ groupName }} was added to the collection", + "Could not add user": "Could not add user", + "Can’t find the group you’re looking for?": "Can’t find the group you’re looking for?", + "Create a group": "Create a group", + "Search by group name…": "Search by group name…", + "Search groups": "Search groups", + "No groups matching your search": "No groups matching your search", + "No groups left to add": "No groups left to add", + "Add": "Add", + "{{ userName }} was added to the collection": "{{ userName }} was added to the collection", + "Need to add someone who’s not yet on the team yet?": "Need to add someone who’s not yet on the team yet?", + "Invite people to {{ teamName }}": "Invite people to {{ teamName }}", + "Search by name…": "Search by name…", + "Search people": "Search people", + "No people matching your search": "No people matching your search", + "No people left to add": "No people left to add", + "Read only": "Read only", + "Read & Edit": "Read & Edit", + "Permissions": "Permissions", + "Remove": "Remove", + "Active {{ lastActiveAt }} ago": "Active {{ lastActiveAt }} ago", + "Never signed in": "Never signed in", + "Invited": "Invited", + "Admin": "Admin", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.", + "Creating…": "Creating…", + "Create": "Create", + "Recently viewed": "Recently viewed", + "Created by me": "Created by me", + "Hide contents": "Hide contents", + "Show contents": "Show contents", + "Archived": "Archived", + "Anyone with the link <1>can view this document": "Anyone with the link <1>can view this document", + "Share": "Share", + "Save Draft": "Save Draft", + "Done Editing": "Done Editing", + "Edit {{noun}}": "Edit {{noun}}", + "New from template": "New from template", + "Publish": "Publish", + "Publish document": "Publish document", + "Publishing…": "Publishing…", + "No documents found for your filters.": "No documents found for your filters.", + "You’ve not got any drafts at the moment.": "You’ve not got any drafts at the moment.", + "Not found": "Not found", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "We were unable to find the page you’re looking for. Go to the <2>homepage?", + "Offline": "Offline", + "We were unable to load the document while offline.": "We were unable to load the document while offline.", + "Your account has been suspended": "Your account has been suspended", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.", + "{{userName}} was added to the group": "{{userName}} was added to the group", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?", + "Invite them to {{teamName}}": "Invite them to {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} was removed from the group", + "Could not remove user": "Could not remove user", + "Add people…": "Add people…", + "This group has no members.": "This group has no members.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.", + "Navigation": "Navigation", + "New document in current collection": "New document in current collection", + "Edit current document": "Edit current document", + "Move current document": "Move current document", + "Jump to search": "Jump to search", + "Jump to dashboard": "Jump to dashboard", + "Table of contents": "Table of contents", + "Open this guide": "Open this guide", + "Editor": "Editor", + "Save and exit document edit mode": "Save and exit document edit mode", + "Publish and exit document edit mode": "Publish and exit document edit mode", + "Save document and continue editing": "Save document and continue editing", + "Cancel editing": "Cancel editing", + "Underline": "Underline", + "Undo": "Undo", + "Redo": "Redo", + "Markdown": "Markdown", + "Large header": "Large header", + "Medium header": "Medium header", + "Small header": "Small header", + "Numbered list": "Numbered list", + "Blockquote": "Blockquote", + "Horizontal divider": "Horizontal divider", + "Inline code": "Inline code", + "Not Found": "Not Found", + "We were unable to find the page you’re looking for.": "We were unable to find the page you’re looking for.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base", + "No documents found for your search filters. <1>Create a new document?": "No documents found for your search filters. <1>Create a new document?", + "Clear filters": "Clear filters", + "Profile saved": "Profile saved", + "Profile picture updated": "Profile picture updated", + "Unable to upload new profile picture": "Unable to upload new profile picture", + "Photo": "Photo", + "Upload": "Upload", + "Full name": "Full name", + "Language": "Language", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal", + "Delete Account": "Delete Account", + "You may delete your account at any time, note that this is unrecoverable": "You may delete your account at any time, note that this is unrecoverable", + "Delete account": "Delete account", + "Recently Updated": "Recently Updated", + "Alphabetical": "Alphabetical", + "You’ve not starred any documents yet.": "You’ve not starred any documents yet.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.", + "Trash is empty at the moment.": "Trash is empty at the moment.", + "You joined": "You joined", + "Joined": "Joined", + "{{ time }} ago.": "{{ time }} ago.", + "Suspended": "Suspended", + "Edit Profile": "Edit Profile", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} hasn’t updated any documents yet." +} diff --git a/shared/i18n/locales/zh_CN/translation.json b/shared/i18n/locales/zh_CN/translation.json new file mode 100644 index 00000000..d1231a4a --- /dev/null +++ b/shared/i18n/locales/zh_CN/translation.json @@ -0,0 +1,288 @@ +{ + "currently editing": "currently editing", + "currently viewing": "currently viewing", + "viewed {{ timeAgo }} ago": "viewed {{ timeAgo }} ago", + "You": "You", + "Trash": "Trash", + "Archive": "Archive", + "Drafts": "Drafts", + "Templates": "Templates", + "New": "New", + "Only visible to you": "Only visible to you", + "Draft": "Draft", + "Template": "Template", + "New doc": "New doc", + "More options": "More options", + "Insert column after": "Insert column after", + "Insert column before": "Insert column before", + "Insert row after": "Insert row after", + "Insert row before": "Insert row before", + "Align center": "Align center", + "Align left": "Align left", + "Align right": "Align right", + "Bulleted list": "Bulleted list", + "Todo list": "Todo list", + "Code block": "Code block", + "Copied to clipboard": "Copied to clipboard", + "Code": "Code", + "Create link": "Create link", + "Sorry, an error occurred creating the link": "Sorry, an error occurred creating the link", + "Create a new doc": "Create a new doc", + "Delete column": "Delete column", + "Delete row": "Delete row", + "Delete table": "Delete table", + "Italic": "Italic", + "Sorry, that link won’t work for this embed type": "Sorry, that link won’t work for this embed type", + "Find or create a doc…": "Find or create a doc…", + "Big heading": "Big heading", + "Medium heading": "Medium heading", + "Small heading": "Small heading", + "Heading": "Heading", + "Divider": "Divider", + "Image": "Image", + "Sorry, an error occurred uploading the image": "Sorry, an error occurred uploading the image", + "Info": "Info", + "Info notice": "Info notice", + "Link": "Link", + "Link copied to clipboard": "Link copied to clipboard", + "Highlight": "Highlight", + "Type '/' to insert…": "Type '/' to insert…", + "Keep typing to filter…": "Keep typing to filter…", + "No results": "No results", + "Open link": "Open link", + "Ordered list": "Ordered list", + "Paste a link…": "Paste a link…", + "Paste a {{service}} link…": "Paste a {{service}} link…", + "Placeholder": "Placeholder", + "Quote": "Quote", + "Remove link": "Remove link", + "Search or paste a link…": "Search or paste a link…", + "Strikethrough": "Strikethrough", + "Bold": "Bold", + "Subheading": "Subheading", + "Table": "Table", + "Tip": "Tip", + "Tip notice": "Tip notice", + "Warning": "Warning", + "Warning notice": "Warning notice", + "Search…": "Search…", + "Keyboard shortcuts": "Keyboard shortcuts", + "New collection…": "New collection…", + "Collections": "Collections", + "Untitled": "Untitled", + "Home": "Home", + "Search": "Search", + "Starred": "Starred", + "Invite people…": "Invite people…", + "Invite people": "Invite people", + "Create a collection": "Create a collection", + "Return to App": "Return to App", + "Profile": "Profile", + "Notifications": "Notifications", + "API Tokens": "API Tokens", + "Details": "Details", + "Security": "Security", + "People": "People", + "Groups": "Groups", + "Share Links": "Share Links", + "Export Data": "Export Data", + "Integrations": "Integrations", + "Installation": "Installation", + "Settings": "Settings", + "API documentation": "API documentation", + "Changelog": "Changelog", + "Send us feedback": "Send us feedback", + "Report a bug": "Report a bug", + "Appearance": "Appearance", + "System": "System", + "Light": "Light", + "Dark": "Dark", + "Log out": "Log out", + "Collection permissions": "Collection permissions", + "New document": "New document", + "Import document": "Import document", + "Edit…": "Edit…", + "Permissions…": "Permissions…", + "Export…": "Export…", + "Delete…": "Delete…", + "Edit collection": "Edit collection", + "Delete collection": "Delete collection", + "Export collection": "Export collection", + "Document duplicated": "Document duplicated", + "Document archived": "Document archived", + "Document restored": "Document restored", + "Document unpublished": "Document unpublished", + "Restore": "Restore", + "Restore…": "Restore…", + "Choose a collection": "Choose a collection", + "Unpin": "Unpin", + "Pin to collection": "Pin to collection", + "Unstar": "Unstar", + "Star": "Star", + "Share link…": "Share link…", + "Enable embeds": "Enable embeds", + "Disable embeds": "Disable embeds", + "New nested document": "New nested document", + "Create template…": "Create template…", + "Edit": "Edit", + "Duplicate": "Duplicate", + "Unpublish": "Unpublish", + "Move…": "Move…", + "History": "History", + "Download": "Download", + "Print": "Print", + "Delete {{ documentName }}": "Delete {{ documentName }}", + "Create template": "Create template", + "Share document": "Share document", + "Edit group": "Edit group", + "Delete group": "Delete group", + "Members…": "Members…", + "New document in": "New document in", + "collection": "collection", + "New template…": "New template…", + "Link copied": "Link copied", + "Restore version": "Restore version", + "Copy link": "Copy link", + "Share link revoked": "Share link revoked", + "Share link copied": "Share link copied", + "Go to document": "Go to document", + "Revoke link": "Revoke link", + "By {{ author }}": "By {{ author }}", + "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.": "Are you sure you want to make {{ userName }} an admin? Admins can modify team and billing information.", + "Are you sure you want to make {{ userName }} a member?": "Are you sure you want to make {{ userName }} a member?", + "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.": "Are you sure you want to suspend this account? Suspended users will be prevented from logging in.", + "Make {{ userName }} a member…": "Make {{ userName }} a member…", + "Make {{ userName }} an admin…": "Make {{ userName }} an admin…", + "Revoke invite…": "Revoke invite…", + "Activate account": "Activate account", + "Suspend account…": "Suspend account…", + "Documents": "Documents", + "The document archive is empty at the moment.": "The document archive is empty at the moment.", + "Search in collection…": "Search in collection…", + "<0>{{collectionName}} doesn’t contain any documents yet.": "<0>{{collectionName}} doesn’t contain any documents yet.", + "Get started by creating a new one!": "Get started by creating a new one!", + "Create a document": "Create a document", + "Manage members…": "Manage members…", + "Pinned": "Pinned", + "Recently updated": "Recently updated", + "Recently published": "Recently published", + "Least recently updated": "Least recently updated", + "A–Z": "A–Z", + "The collection was updated": "The collection was updated", + "You can edit the name and other details at any time, however doing so often might confuse your team mates.": "You can edit the name and other details at any time, however doing so often might confuse your team mates.", + "Name": "Name", + "Description": "Description", + "More details about this collection…": "More details about this collection…", + "Private collection": "Private collection", + "A private collection will only be visible to invited team members.": "A private collection will only be visible to invited team members.", + "Saving…": "Saving…", + "Save": "Save", + "{{ groupName }} was added to the collection": "{{ groupName }} was added to the collection", + "Could not add user": "Could not add user", + "Can’t find the group you’re looking for?": "Can’t find the group you’re looking for?", + "Create a group": "Create a group", + "Search by group name…": "Search by group name…", + "Search groups": "Search groups", + "No groups matching your search": "No groups matching your search", + "No groups left to add": "No groups left to add", + "Add": "Add", + "{{ userName }} was added to the collection": "{{ userName }} was added to the collection", + "Need to add someone who’s not yet on the team yet?": "Need to add someone who’s not yet on the team yet?", + "Invite people to {{ teamName }}": "Invite people to {{ teamName }}", + "Search by name…": "Search by name…", + "Search people": "Search people", + "No people matching your search": "No people matching your search", + "No people left to add": "No people left to add", + "Read only": "Read only", + "Read & Edit": "Read & Edit", + "Permissions": "Permissions", + "Remove": "Remove", + "Active {{ lastActiveAt }} ago": "Active {{ lastActiveAt }} ago", + "Never signed in": "Never signed in", + "Invited": "Invited", + "Admin": "Admin", + "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.": "Collections are for grouping your knowledge base. They work best when organized around a topic or internal team — Product or Engineering for example.", + "Creating…": "Creating…", + "Create": "Create", + "Recently viewed": "Recently viewed", + "Created by me": "Created by me", + "Hide contents": "Hide contents", + "Show contents": "Show contents", + "Archived": "Archived", + "Anyone with the link <1>can view this document": "Anyone with the link <1>can view this document", + "Share": "Share", + "Save Draft": "Save Draft", + "Done Editing": "Done Editing", + "Edit {{noun}}": "Edit {{noun}}", + "New from template": "New from template", + "Publish": "Publish", + "Publish document": "Publish document", + "Publishing…": "Publishing…", + "No documents found for your filters.": "No documents found for your filters.", + "You’ve not got any drafts at the moment.": "You’ve not got any drafts at the moment.", + "Not found": "Not found", + "We were unable to find the page you’re looking for. Go to the <2>homepage?": "We were unable to find the page you’re looking for. Go to the <2>homepage?", + "Offline": "Offline", + "We were unable to load the document while offline.": "We were unable to load the document while offline.", + "Your account has been suspended": "Your account has been suspended", + "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.": "A team admin (<1>{{suspendedContactEmail}}) has suspended your account. To re-activate your account, please reach out to them directly.", + "{{userName}} was added to the group": "{{userName}} was added to the group", + "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?": "Add team members below to give them access to the group. Need to add someone who’s not yet on the team yet?", + "Invite them to {{teamName}}": "Invite them to {{teamName}}", + "{{userName}} was removed from the group": "{{userName}} was removed from the group", + "Could not remove user": "Could not remove user", + "Add people…": "Add people…", + "This group has no members.": "This group has no members.", + "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.": "Outline is designed to be fast and easy to use. All of your usual keyboard shortcuts work here, and there’s Markdown too.", + "Navigation": "Navigation", + "New document in current collection": "New document in current collection", + "Edit current document": "Edit current document", + "Move current document": "Move current document", + "Jump to search": "Jump to search", + "Jump to dashboard": "Jump to dashboard", + "Table of contents": "Table of contents", + "Open this guide": "Open this guide", + "Editor": "Editor", + "Save and exit document edit mode": "Save and exit document edit mode", + "Publish and exit document edit mode": "Publish and exit document edit mode", + "Save document and continue editing": "Save document and continue editing", + "Cancel editing": "Cancel editing", + "Underline": "Underline", + "Undo": "Undo", + "Redo": "Redo", + "Markdown": "Markdown", + "Large header": "Large header", + "Medium header": "Medium header", + "Small header": "Small header", + "Numbered list": "Numbered list", + "Blockquote": "Blockquote", + "Horizontal divider": "Horizontal divider", + "Inline code": "Inline code", + "Not Found": "Not Found", + "We were unable to find the page you’re looking for.": "We were unable to find the page you’re looking for.", + "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base": "Use the <1>{{meta}}+K shortcut to search from anywhere in your knowledge base", + "No documents found for your search filters. <1>Create a new document?": "No documents found for your search filters. <1>Create a new document?", + "Clear filters": "Clear filters", + "Profile saved": "Profile saved", + "Profile picture updated": "Profile picture updated", + "Unable to upload new profile picture": "Unable to upload new profile picture", + "Photo": "Photo", + "Upload": "Upload", + "Full name": "Full name", + "Language": "Language", + "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal": "Please note that translations are currently in early access.<1>Community contributions are accepted though our <4>translation portal", + "Delete Account": "Delete Account", + "You may delete your account at any time, note that this is unrecoverable": "You may delete your account at any time, note that this is unrecoverable", + "Delete account": "Delete account", + "Recently Updated": "Recently Updated", + "Alphabetical": "Alphabetical", + "You’ve not starred any documents yet.": "You’ve not starred any documents yet.", + "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.": "There are no templates just yet. You can create templates to help your team create consistent and accurate documentation.", + "Trash is empty at the moment.": "Trash is empty at the moment.", + "You joined": "You joined", + "Joined": "Joined", + "{{ time }} ago.": "{{ time }} ago.", + "Suspended": "Suspended", + "Edit Profile": "Edit Profile", + "{{ userName }} hasn’t updated any documents yet.": "{{ userName }} hasn’t updated any documents yet." +} diff --git a/yarn.lock b/yarn.lock index 82883fca..729461fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,9 +3,9 @@ "@babel/cli@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.10.5.tgz#57df2987c8cf89d0fc7d4b157ec59d7619f1b77a" - integrity sha512-j9H9qSf3kLdM0Ao3aGPbGZ73mEA9XazuupcS6cDGWuiyAcANoguhP0r2Lx32H5JGw4sSSoHG3x/mxVnHgvOoyA== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.12.1.tgz#e08a0b1cb6fcd4b9eb6a606ba5602c5c0fe24a0c" + integrity sha512-eRJREyrfAJ2r42Iaxe8h3v6yyj1wu9OyosaUHW6UImjGf9ahGL9nsFNh7OCopvtcPL8WnEo7tp78wrZaZ6vG9g== dependencies: commander "^4.0.1" convert-source-map "^1.1.0" @@ -16,7 +16,8 @@ slash "^2.0.0" source-map "^0.5.0" optionalDependencies: - chokidar "^2.1.8" + "@nicolo-ribaudo/chokidar-2" "^2.1.8" + chokidar "^3.4.0" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": version "7.10.4" @@ -25,28 +26,24 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.4", "@babel/compat-data@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.11.0.tgz#e9f73efe09af1355b723a7f39b11bad637d7c99c" - integrity sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ== - dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.5.tgz#f56db0c4bb1bbbf221b4e81345aab4141e7cb0e9" + integrity sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg== "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.7.5": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.1.tgz#2c55b604e73a40dc21b0e52650b11c65cf276643" - integrity sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ== + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.1" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -56,12 +53,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.0.tgz#4b90c78d8c12825024568cbe83ee6c9af193585c" - integrity sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ== +"@babel/generator@^7.12.1", "@babel/generator@^7.12.5": + 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== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.5" jsesc "^2.5.1" source-map "^0.5.0" @@ -80,14 +77,14 @@ "@babel/helper-explode-assignable-expression" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-builder-react-jsx-experimental@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz#f35e956a19955ff08c1258e44a515a6d6248646b" - integrity sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg== +"@babel/helper-builder-react-jsx-experimental@^7.12.1": + version "7.12.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" + integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/types" "^7.10.5" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" "@babel/helper-builder-react-jsx@^7.10.4": version "7.10.4" @@ -97,37 +94,35 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-compilation-targets@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" - integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== +"@babel/helper-compilation-targets@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== dependencies: - "@babel/compat-data" "^7.10.4" - browserslist "^4.12.0" - invariant "^2.2.4" - levenary "^1.1.1" + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.10.4", "@babel/helper-create-class-features-plugin@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" - integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== dependencies: "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-regexp-features-plugin@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" - integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-regex" "^7.10.4" - regexpu-core "^4.7.0" + regexpu-core "^4.7.1" "@babel/helper-define-map@^7.10.4": version "7.10.5" @@ -139,12 +134,11 @@ lodash "^4.17.19" "@babel/helper-explode-assignable-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" - integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== dependencies: - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" "@babel/helper-function-name@^7.10.4": version "7.10.4" @@ -169,31 +163,33 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.1" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.5" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.10.4": @@ -215,41 +211,38 @@ dependencies: lodash "^4.17.19" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" - integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" - integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" @@ -263,26 +256,31 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + "@babel/helper-wrap-function@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" - integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/template" "^7.10.4" "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== +"@babel/helpers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== dependencies: "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" -"@babel/highlight@^7.0.0", "@babel/highlight@^7.10.4": +"@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== @@ -291,125 +289,125 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.0", "@babel/parser@^7.11.1", "@babel/parser@^7.7.0": - version "7.11.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.3.tgz#9e1eae46738bcd08e23e867bab43e7b95299a8f9" - integrity sha512-REo8xv7+sDxkKvoxEywIdsNFiZLybwdI7hcT5uEPyQrSMB4YQ973BfC9OOrD/81MaIjh6UxdulIQXkjmiH3PcA== +"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5", "@babel/parser@^7.7.0": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== -"@babel/plugin-proposal-async-generator-functions@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" - integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" - integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== +"@babel/plugin-proposal-class-properties@^7.12.1": + 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== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-decorators@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.10.5.tgz#42898bba478bc4b1ae242a703a953a7ad350ffb4" - integrity sha512-Sc5TAQSZuLzgY0664mMDn24Vw2P8g/VhyLyGPaWiHahhgLqeZvcGeyBZOrJW0oSKIK2mvQ22a1ENXBIQLhrEiQ== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" + integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-decorators" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" -"@babel/plugin-proposal-dynamic-import@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-export-namespace-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" - integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz#9f80e482c03083c87125dee10026b58527ea20c8" - integrity sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" - integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + 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== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" - integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== +"@babel/plugin-proposal-numeric-separator@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz#b1ce757156d40ed79d59d467cb2b154a5c4149ba" + integrity sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== +"@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz#de5866d0646f6afdaab8a566382fe3a221755076" - integrity sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA== +"@babel/plugin-proposal-optional-chaining@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-private-methods@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" - integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.10.4", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" - integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": @@ -426,17 +424,17 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" - integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-decorators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz#6853085b2c429f9d322d02f5a635018cdeb2360c" - integrity sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw== +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz#81a8b535b284476c41be6de06853a8802b98c5dd" + integrity sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -454,10 +452,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" - integrity sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ== +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" + integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -475,10 +473,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" - integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== +"@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" @@ -524,354 +522,352 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" - integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== dependencies: - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" -"@babel/plugin-transform-block-scoped-functions@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" - integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.10.4": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" - integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" - integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-define-map" "^7.10.4" "@babel/helper-function-name" "^7.10.4" "@babel/helper-optimise-call-expression" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" - integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" - integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== +"@babel/plugin-transform-destructuring@^7.10.4", "@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.10.4", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" - integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-flow-strip-types@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz#c497957f09e86e3df7296271e9eb642876bf7788" - integrity sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ== +"@babel/plugin-transform-flow-strip-types@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" -"@babel/plugin-transform-for-of@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" - integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" - integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== dependencies: "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" - integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" - integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" - integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== dependencies: - "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" - integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== +"@babel/plugin-transform-modules-commonjs@^7.12.1": + 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== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" - integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== dependencies: "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" - integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" -"@babel/plugin-transform-parameters@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" - integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-property-literals@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" - integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-display-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" - integrity sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw== +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-development@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz#6ec90f244394604623880e15ebc3c34c356258ba" - integrity sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" - -"@babel/plugin-transform-react-jsx-self@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" - integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== +"@babel/plugin-transform-react-display-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" - integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== +"@babel/plugin-transform-react-jsx-development@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.5.tgz#677de5b96da310430d6cfb7fee16a1603afa3d56" + integrity sha512-1JJusg3iPgsZDthyWiCr3KQiGs31ikU/mSf2N2dSYEAO0GEImmVUbWf0VoSDGDFTAn5Dj4DUiR6SdIXHY7tELA== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" - integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz#39ede0e30159770561b6963be143e40af3bde00c" + integrity sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ== dependencies: "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" -"@babel/plugin-transform-react-pure-annotations@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz#3eefbb73db94afbc075f097523e445354a1c6501" - integrity sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A== +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== +"@babel/plugin-transform-regenerator@^7.10.4", "@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-shorthand-properties@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" - integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" - integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== +"@babel/plugin-transform-sticky-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" - integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-typeof-symbol@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-escapes@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" - integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" "@babel/polyfill@^7.0.0", "@babel/polyfill@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.10.4.tgz#915e5bfe61490ac0199008e35ca9d7d151a8e45a" - integrity sha512-8BYcnVqQ5kMD2HXoHInBH7H1b/uP3KdnwCYXOqFnXqguOyuu443WXusbIUbWEfY3Z0Txk0M1uG/8YuAMhNl6zg== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.12.1.tgz#1f2d6371d1261bbd961f3c5d5909150e12d0bd96" + integrity sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g== dependencies: core-js "^2.6.5" regenerator-runtime "^0.13.4" "@babel/preset-env@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.0.tgz#860ee38f2ce17ad60480c2021ba9689393efb796" - integrity sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== dependencies: - "@babel/compat-data" "^7.11.0" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-proposal-async-generator-functions" "^7.10.4" - "@babel/plugin-proposal-class-properties" "^7.10.4" - "@babel/plugin-proposal-dynamic-import" "^7.10.4" - "@babel/plugin-proposal-export-namespace-from" "^7.10.4" - "@babel/plugin-proposal-json-strings" "^7.10.4" - "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.11.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.11.0" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-class-properties" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.0" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.0" @@ -881,59 +877,56 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.10.4" - "@babel/plugin-transform-arrow-functions" "^7.10.4" - "@babel/plugin-transform-async-to-generator" "^7.10.4" - "@babel/plugin-transform-block-scoped-functions" "^7.10.4" - "@babel/plugin-transform-block-scoping" "^7.10.4" - "@babel/plugin-transform-classes" "^7.10.4" - "@babel/plugin-transform-computed-properties" "^7.10.4" - "@babel/plugin-transform-destructuring" "^7.10.4" - "@babel/plugin-transform-dotall-regex" "^7.10.4" - "@babel/plugin-transform-duplicate-keys" "^7.10.4" - "@babel/plugin-transform-exponentiation-operator" "^7.10.4" - "@babel/plugin-transform-for-of" "^7.10.4" - "@babel/plugin-transform-function-name" "^7.10.4" - "@babel/plugin-transform-literals" "^7.10.4" - "@babel/plugin-transform-member-expression-literals" "^7.10.4" - "@babel/plugin-transform-modules-amd" "^7.10.4" - "@babel/plugin-transform-modules-commonjs" "^7.10.4" - "@babel/plugin-transform-modules-systemjs" "^7.10.4" - "@babel/plugin-transform-modules-umd" "^7.10.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" - "@babel/plugin-transform-new-target" "^7.10.4" - "@babel/plugin-transform-object-super" "^7.10.4" - "@babel/plugin-transform-parameters" "^7.10.4" - "@babel/plugin-transform-property-literals" "^7.10.4" - "@babel/plugin-transform-regenerator" "^7.10.4" - "@babel/plugin-transform-reserved-words" "^7.10.4" - "@babel/plugin-transform-shorthand-properties" "^7.10.4" - "@babel/plugin-transform-spread" "^7.11.0" - "@babel/plugin-transform-sticky-regex" "^7.10.4" - "@babel/plugin-transform-template-literals" "^7.10.4" - "@babel/plugin-transform-typeof-symbol" "^7.10.4" - "@babel/plugin-transform-unicode-escapes" "^7.10.4" - "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.11.0" - browserslist "^4.12.0" + "@babel/types" "^7.12.1" core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" semver "^5.5.0" "@babel/preset-flow@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.10.4.tgz#e0d9c72f8cb02d1633f6a5b7b16763aa2edf659f" - integrity sha512-XI6l1CptQCOBv+ZKYwynyswhtOKwpZZp5n0LG1QKCo8erRhqjoQV6nvx61Eg30JHpysWQSBwA2AWRU3pBbSY5g== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.12.1.tgz#1a81d376c5a9549e75352a3888f8c273455ae940" + integrity sha512-UAoyMdioAhM6H99qPoKvpHMzxmNVXno8GYU/7vZmGaHk6/KqfDYL1W0NxszVbJ2EP271b7e6Ox+Vk2A9QsB3Sw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-flow-strip-types" "^7.10.4" + "@babel/plugin-transform-flow-strip-types" "^7.12.1" "@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -942,27 +935,27 @@ esutils "^2.0.2" "@babel/preset-react@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" - integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.5.tgz#d45625f65d53612078a43867c5c6750e78772c56" + integrity sha512-jcs++VPrgyFehkMezHtezS2BpnUlR7tQFAyesJn1vGTO9aTFZrgIQrA5YydlTwxbcjMwkFY6i04flCigRRr3GA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-react-display-name" "^7.10.4" - "@babel/plugin-transform-react-jsx" "^7.10.4" - "@babel/plugin-transform-react-jsx-development" "^7.10.4" - "@babel/plugin-transform-react-jsx-self" "^7.10.4" - "@babel/plugin-transform-react-jsx-source" "^7.10.4" - "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.5" + "@babel/plugin-transform-react-jsx-development" "^7.12.5" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" "@babel/runtime-corejs3@^7.10.2": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.11.2.tgz#02c3029743150188edeb66541195f54600278419" - integrity sha512-qh5IR+8VgFz83VBa6OkaET6uN/mJOhHONuy3m1sgF0CV6mXdPSEBdA7e1eUbVvyNtANjMbg22JUv71BaDXLY6A== + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4" + integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ== dependencies: core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.4.0", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== @@ -978,25 +971,25 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" - integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" + integrity sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" + "@babel/generator" "^7.12.5" "@babel/helper-function-name" "^7.10.4" "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.0" - "@babel/types" "^7.11.0" + "@babel/parser" "^7.12.5" + "@babel/types" "^7.12.5" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" - integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@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.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.12.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" + integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" lodash "^4.17.19" @@ -1008,9 +1001,9 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@bundle-stats/utils@^2.1.1": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@bundle-stats/utils/-/utils-2.2.0.tgz#1a24abe41de35dfcf1ef72c7a04045824b1996a7" - integrity sha512-VKUPXpipAv/NIHbR1/4X5wBMFUT8IlBHb8u8dJKRmmIWSXmlKBSi5gsf48xSd/6HXZXMY1g+pE+t3/R4A/PoBg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/@bundle-stats/utils/-/utils-2.3.0.tgz#c5c314d7c9b07a8bc35b19328f3f251d1671fb8b" + integrity sha512-v+tYFCHE4dmdsodwRuhbVcKgfrDz3mBOc3RLJpyKUPy/CHnhKBjMtOw68OTM8hUQG/FtcvEqyvyEM1SLAfGGiw== dependencies: convert-units "^2.3.4" core-js "^3.1.4" @@ -1046,6 +1039,22 @@ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@eslint/eslintrc@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" + integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@icons/material@^0.2.4": version "0.2.4" resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" @@ -1067,93 +1076,93 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.2.0.tgz#d18f2659b90930e7ec3925fb7209f1ba2cf463f0" - integrity sha512-mXQfx3nSLwiHm1i7jbu+uvi+vvpVjNGzIQYLCfsat9rapC+MJkS4zBseNrgJE0vU921b3P67bQzhduphjY3Tig== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.2.0" - jest-util "^26.2.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^26.2.2": - version "26.2.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.2.2.tgz#63de01ffce967618003dd7a0164b05c8041b81a9" - integrity sha512-UwA8gNI8aeV4FHGfGAUfO/DHjrFVvlBravF1Tm9Kt6qFE+6YHR47kFhgdepOFpADEKstyO+MVdPvkV6/dyt9sA== +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: - "@jest/console" "^26.2.0" - "@jest/reporters" "^26.2.2" - "@jest/test-result" "^26.2.0" - "@jest/transform" "^26.2.2" - "@jest/types" "^26.2.0" + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^26.2.0" - jest-config "^26.2.2" - jest-haste-map "^26.2.2" - jest-message-util "^26.2.0" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.2.2" - jest-resolve-dependencies "^26.2.2" - jest-runner "^26.2.2" - jest-runtime "^26.2.2" - jest-snapshot "^26.2.2" - jest-util "^26.2.0" - jest-validate "^26.2.0" - jest-watcher "^26.2.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.2.0.tgz#f6faee1630fcc2fad208953164bccb31dbe0e45f" - integrity sha512-oCgp9NmEiJ5rbq9VI/v/yYLDpladAAVvFxZgNsnJxOETuzPZ0ZcKKHYjKYwCtPOP1WCrM5nmyuOhMStXFGHn+g== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: - "@jest/fake-timers" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.2.0" + jest-mock "^26.6.2" -"@jest/fake-timers@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.2.0.tgz#b485c57dc4c74d61406a339807a9af4bac74b75a" - integrity sha512-45Gfe7YzYTKqTayBrEdAF0qYyAsNRBzfkV0IyVUm3cx7AsCWlnjilBM4T40w7IXT5VspOgMPikQlV0M6gHwy/g== +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" - jest-message-util "^26.2.0" - jest-mock "^26.2.0" - jest-util "^26.2.0" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.2.0.tgz#ad78f1104f250c1a4bf5184a2ba51facc59b23f6" - integrity sha512-Hoc6ScEIPaym7RNytIL2ILSUWIGKlwEv+JNFof9dGYOdvPjb2evEURSslvCMkNuNg1ECEClTE8PH7ULlMJntYA== +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: - "@jest/environment" "^26.2.0" - "@jest/types" "^26.2.0" - expect "^26.2.0" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^26.2.2": - version "26.2.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.2.2.tgz#5a8632ab410f4fc57782bc05dcf115e91818e869" - integrity sha512-7854GPbdFTAorWVh+RNHyPO9waRIN6TcvCezKVxI1khvFq9YjINTW7J3WU+tbR038Ynn6WjYred6vtT0YmIWVQ== +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.2.0" - "@jest/test-result" "^26.2.0" - "@jest/transform" "^26.2.2" - "@jest/types" "^26.2.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -1164,80 +1173,87 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^26.2.2" - jest-resolve "^26.2.2" - jest-util "^26.2.0" - jest-worker "^26.2.1" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^4.1.3" + v8-to-istanbul "^7.0.0" optionalDependencies: - node-notifier "^7.0.0" + node-notifier "^8.0.0" -"@jest/source-map@^26.1.0": - version "26.1.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.1.0.tgz#a6a020d00e7d9478f4b690167c5e8b77e63adb26" - integrity sha512-XYRPYx4eEVX15cMT9mstnO7hkHP3krNtKfxUYd8L7gbtia8JvZZ6bMzSwa6IQJENbudTwKMw5R1BePRD+bkEmA== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.2.0.tgz#51c9b165c8851cfcf7a3466019114785e154f76b" - integrity sha512-kgPlmcVafpmfyQEu36HClK+CWI6wIaAWDHNxfQtGuKsgoa2uQAYdlxjMDBEa3CvI40+2U3v36gQF6oZBkoKatw== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^26.2.2": - version "26.2.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.2.2.tgz#5e8091f2e6c61fdf242af566cb820a4eadc6c4af" - integrity sha512-SliZWon5LNqV/lVXkeowSU6L8++FGOu3f43T01L1Gv6wnFDP00ER0utV9jyK9dVNdXqfMNCN66sfcyar/o7BNw== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^26.2.0" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^26.2.2" - jest-runner "^26.2.2" - jest-runtime "^26.2.2" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^26.2.2": - version "26.2.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.2.2.tgz#86c005c8d5d749ac54d8df53ea58675fffe7a97e" - integrity sha512-c1snhvi5wRVre1XyoO3Eef5SEWpuBCH/cEbntBUd9tI5sNYiBDmO0My/lc5IuuGYKp/HFIHV1eZpSx5yjdkhKw== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^26.2.2" + jest-haste-map "^26.6.2" jest-regex-util "^26.0.0" - jest-util "^26.2.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^26.2.0": - version "26.2.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.2.0.tgz#b28ca1fb517a4eb48c0addea7fcd9edc4ab45721" - integrity sha512-lvm3rJvctxd7+wxKSxxbzpDbr4FXDLaC57WEKdUIZ2cjTYuxYSc0zlyD7Z4Uqr5VdKxRUrtwIkiqBuvgf8uKJA== +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" + "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@nicolo-ribaudo/chokidar-2@^2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8.tgz#eef8d9b47e8dc589499f14d656e8d2dd978c3d14" + integrity sha512-FohwULwAebCUKi/akMFyGi7jfc7JXTeMHzKxuP3umRd9mK/2Y7/SMBSI2jX+YLopPXi+PF9l307NmpfxTdCegA== + dependencies: + chokidar "2.1.8" + "@npmcli/move-file@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" @@ -1246,20 +1262,20 @@ mkdirp "^1.0.4" "@octokit/auth-token@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" - integrity sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg== + version "2.4.3" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.3.tgz#b868b5f2366533a7e62933eaa1181a8924228cc4" + integrity sha512-fdGoOQ3kQJh+hrilc0Plg50xSfaCKOeYN9t6dpJKXN9BxhhfquL0OzoQXg3spLYymL5rm29uPeI3KEXRaZQ9zg== dependencies: - "@octokit/types" "^2.0.0" + "@octokit/types" "^5.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7" - integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A== + version "6.0.9" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.9.tgz#c6a772e024202b1bd19ab69f90e0536a2598b13e" + integrity sha512-3VPLbcCuqji4IFTclNUtGdp9v7g+nspWdiCUbK3+iPMjJCZ6LEhn1ts626bWLOn0GiDb6j+uqGvPpqLnY7pBgw== dependencies: - "@octokit/types" "^2.11.1" - is-plain-object "^3.0.0" - universal-user-agent "^5.0.0" + "@octokit/types" "^5.0.0" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" "@octokit/plugin-paginate-rest@^1.1.1": version "1.1.2" @@ -1269,9 +1285,9 @@ "@octokit/types" "^2.0.1" "@octokit/plugin-request-log@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e" - integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz#394d59ec734cd2f122431fbaf05099861ece3c44" + integrity sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg== "@octokit/plugin-rest-endpoint-methods@2.4.0": version "2.4.0" @@ -1291,32 +1307,32 @@ once "^1.4.0" "@octokit/request-error@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.0.tgz#94ca7293373654400fbb2995f377f9473e00834b" - integrity sha512-rtYicB4Absc60rUv74Rjpzek84UbVHGHJRu4fNVlZ1mCcyUPPuzFfG9Rn6sjHrd95DEsmjSt1Axlc699ZlbDkw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.3.tgz#b51b200052bf483f6fa56c9e7e3aa51ead36ecd8" + integrity sha512-GgD5z8Btm301i2zfvJLk/mkhvGCdjQ7wT8xF9ov5noQY8WbKZDH9cOBqXzoeKd1mLr1xH2FwbtGso135zGBgTA== dependencies: - "@octokit/types" "^2.0.0" + "@octokit/types" "^5.0.1" deprecation "^2.0.0" once "^1.4.0" "@octokit/request@^5.2.0": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee" - integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw== + version "5.4.10" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.10.tgz#402d2c53768bde12b99348329ba4129746aebb9c" + integrity sha512-egA49HkqEORVGDZGav1mh+VD+7uLgOxtn5oODj6guJk0HCy+YBSYapFkSLFgeYj3Fr18ZULKGURkjyhkAChylw== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.0.0" - "@octokit/types" "^2.11.1" + "@octokit/types" "^5.0.0" deprecation "^2.0.0" - is-plain-object "^3.0.0" - node-fetch "^2.3.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.1" once "^1.4.0" - universal-user-agent "^5.0.0" + universal-user-agent "^6.0.0" "@octokit/rest@^16.33.1": - version "16.43.1" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.1.tgz#3b11e7d1b1ac2bbeeb23b08a17df0b20947eda6b" - integrity sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw== + version "16.43.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" + integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== dependencies: "@octokit/auth-token" "^2.4.0" "@octokit/plugin-paginate-rest" "^1.1.1" @@ -1335,10 +1351,17 @@ once "^1.4.0" universal-user-agent "^4.0.0" -"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1": - version "2.11.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.11.1.tgz#bd5b059596b42845be3f8e66065667aff8c8bf8b" - integrity sha512-QaLoLkmFdfoNbk3eOzPv7vKrUY0nRJIYmZDoz/pTer4ICpqu80aSQTVHnnUxEFuURCiidig76CcxUOYC/bY3RQ== +"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": + version "2.16.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" + integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== + dependencies: + "@types/node" ">= 8" + +"@octokit/types@^5.0.0", "@octokit/types@^5.0.1": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" + integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== dependencies: "@types/node" ">= 8" @@ -1350,18 +1373,18 @@ lodash.throttle "^4.1.1" "@relative-ci/agent@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@relative-ci/agent/-/agent-1.3.0.tgz#ff0e1ac8c17976fa596210a4f6171d36b527f589" - integrity sha512-vswW2eCNpShE092gNICLJIEysZGR+shifh6jSA51ZURcBqP5kN4z7yro5OpNnuvU/Xfvvr0MlALvS5XQjF87bQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@relative-ci/agent/-/agent-1.4.0.tgz#5e17b9ed6ba0c8483d32a367faf798e4bb4bd257" + integrity sha512-bP2fFYK9rQZTs8bLHoyRjUzAYrRhcFHmfYZmyOu0lXoHe1tyXD7NxYKicLElG2RNjTlzbQS0bwsTU9xjK6wSGg== dependencies: "@bundle-stats/utils" "^2.1.1" "@relative-ci/env-ci" "^5.1.0" core-js "^3.6.4" - cosmiconfig "^6.0.0" + cosmiconfig "^7.0.0" debug "^4.1.1" dotenv "^8.2.0" - fs-extra "^8.1.0" - isomorphic-fetch "^2.2.1" + fs-extra "^9.0.0" + isomorphic-fetch "^3.0.0" lodash "^4.17.15" "@relative-ci/env-ci@^5.1.0": @@ -1372,72 +1395,72 @@ execa "^4.0.0" java-properties "^1.0.0" -"@sentry/core@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.23.0.tgz#4d12ee4f5593e66fa5ffde0f9e9164a5468e5cec" - integrity sha512-K8Wp/g1opaauKJh2w5Z1Vw/YdudHQgH6Ng5fBazHZxA7zB9R8EbVKDsjy8XEcyHsWB7fTSlYX/7coqmZNOADdg== +"@sentry/core@5.27.4": + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.27.4.tgz#4155ee09ee4deed7364918094bf81654dcf681c0" + integrity sha512-IbI37cIZU/qBQouuUXaLbGF/9xYFp5STqmj1Gv64l0IZe4JnEp06V3yD5GxQ/mJ78vSfOqfwLooVCUw9FA61sQ== dependencies: - "@sentry/hub" "5.23.0" - "@sentry/minimal" "5.23.0" - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/hub" "5.27.4" + "@sentry/minimal" "5.27.4" + "@sentry/types" "5.27.4" + "@sentry/utils" "5.27.4" tslib "^1.9.3" -"@sentry/hub@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.23.0.tgz#7350c2971fafdb9f883f0629fd1b35d2288cd6e1" - integrity sha512-P0sevLI9qAQc1J+AcHzNXwj83aG3GKiABVQJp0rgCUMtrXqLawa+j8pOHg8p7QWroHM7TKDMKeny9WemXBgzBQ== +"@sentry/hub@5.27.4": + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.27.4.tgz#15db6f504672edd70b793e4b3d370dca9cb2fef6" + integrity sha512-Ba1AqcjvSd2S+fpdXtXCrVXdrzq9E2Etb2eHUOkEYwSsq7StMOw7E8YHDPAo+to8zUbpMPz/Z9XGhFkyAbImGQ== dependencies: - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/types" "5.27.4" + "@sentry/utils" "5.27.4" tslib "^1.9.3" -"@sentry/minimal@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.23.0.tgz#93df781a98f0b334425f68b1fa0f4e1a86d8fa45" - integrity sha512-/w/B7ShMVu/tLI0/A5X+w6GfdZIQdFQihWyIK1vXaYS5NS6biGI3K6DcACuMrD/h4BsqlfgdXSOHHrmCJcyCXQ== +"@sentry/minimal@5.27.4": + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.27.4.tgz#2b331ed43d5f8999606fe9f8bf26a85155e8286c" + integrity sha512-biw5YfIQwvDoaRhLarfeRQ6MJ9UJOoDTmu8Kgg18prJy4rtfDowNJP0OBs5XAsTk6SWAXiE3g7vqUJBXgs7BWA== dependencies: - "@sentry/hub" "5.23.0" - "@sentry/types" "5.23.0" + "@sentry/hub" "5.27.4" + "@sentry/types" "5.27.4" tslib "^1.9.3" "@sentry/node@^5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.23.0.tgz#c5deb3e4842abacbd40ffaf296971e47df2f6e6c" - integrity sha512-WFiAI9+XALB144LRYsWt4aM6soxMRAp1SQ72H0LNOYQXyei5hnKXLmL8UH5RHJFD60Y8S42tIhZkdPPXSq7HgQ== + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.27.4.tgz#7fe327a45f865bff7c4b7f0d74d94506ec0a05bc" + integrity sha512-fv3FfQ6FiNV56LKk6t48oNw8qgf7X5fEhqhvKAoU7w+BL9AhChzh9v7sWn9ppDtRFE45tFfsZh0J/8ox5jpnfQ== dependencies: - "@sentry/core" "5.23.0" - "@sentry/hub" "5.23.0" - "@sentry/tracing" "5.23.0" - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/core" "5.27.4" + "@sentry/hub" "5.27.4" + "@sentry/tracing" "5.27.4" + "@sentry/types" "5.27.4" + "@sentry/utils" "5.27.4" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.23.0.tgz#6627a6c659abce968e45e897ebc038873cc83fb2" - integrity sha512-cexFQCuGcFukqyaP8p8Uf/aCuMkzJeiU4Trx7vYHf16L95aSn5TGELK0SZOugEb2Gi9D9Z6NHfuK16nWjwPSRQ== +"@sentry/tracing@5.27.4": + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.27.4.tgz#0f6b0ebfa90b9f5bf5bac1fcf0f196010dbdddac" + integrity sha512-f3nG8ozCdcbFOzsnBCZ8w+/WfoNiAd0Ctr643L0rsFbaSzPWxbPMe3LNVrWwFVo6mHacG3/2HYmJ3CYMiWyTKQ== dependencies: - "@sentry/hub" "5.23.0" - "@sentry/minimal" "5.23.0" - "@sentry/types" "5.23.0" - "@sentry/utils" "5.23.0" + "@sentry/hub" "5.27.4" + "@sentry/minimal" "5.27.4" + "@sentry/types" "5.27.4" + "@sentry/utils" "5.27.4" tslib "^1.9.3" -"@sentry/types@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.23.0.tgz#935701637c2d5b1c123ac292bc253bddf451b076" - integrity sha512-PbN5MVWxrq05sZ707lc8lleV0xSsI6jWr9h9snvbAuMjcauE0lmdWmjoWKY3PAz2s1mGYFh55kIo8SmQuVwbYg== +"@sentry/types@5.27.4": + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.27.4.tgz#ba7cefae6f77bb39a0ac59aeba1bb23ce4ad5216" + integrity sha512-41h3c7tgtSS8UBmfvEckSr+7V7/IVOjt/EiydyOd6s0N18zSFfGY5HdA6g+eFtIJK3DhWkUHCHZNanD5IY5YCQ== -"@sentry/utils@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.23.0.tgz#5e15f684b5a8f9c86e4ba15d81101eac7d6c240b" - integrity sha512-D5gQDM0wEjKxhE+YNvCuCHo/6JuaORF2/3aOhoJBR+dy9EACRspg7kp3+9KF44xd2HVEXkSVCJkv8/+sHePYRQ== +"@sentry/utils@5.27.4": + version "5.27.4" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.27.4.tgz#d57ccd72a56e2f97e109d632957f6cd11806e992" + integrity sha512-shV1I/q+Tob3hUxRj11DfMhe9PNDiv85hUUoRloZGGwu275dMwpswb2uwgSmjc2Ao4pnMKVx8TL1hC3kGLVHTQ== dependencies: - "@sentry/types" "5.23.0" + "@sentry/types" "5.27.4" tslib "^1.9.3" "@sindresorhus/is@^0.7.0": @@ -1473,9 +1496,9 @@ integrity sha512-aM5TtBfBgcUm+B4WWelm2NBAFBk12oNUr67f5lJapSOTkPnwkuzCNwMlsBoDTsRknoZSsUIkcOJB473AnfyqHA== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1484,32 +1507,27 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.13.tgz#1874914be974a492e1b4cb00585cabb274e8ba18" - integrity sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" + integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== dependencies: "@babel/types" "^7.3.0" -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1524,12 +1542,19 @@ "@types/node" "*" "@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" + integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== dependencies: "@types/node" "*" +"@types/hast@^2.0.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.1.tgz#b16872f2a6144c7025f296fb9636a667ebb79cd9" + integrity sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q== + dependencies: + "@types/unist" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" @@ -1542,18 +1567,17 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: - "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/json-schema@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" - integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== "@types/json5@^0.0.29": version "0.0.29" @@ -1561,9 +1585,9 @@ integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/node@*", "@types/node@>= 8": - version "13.13.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.0.tgz#30d2d09f623fe32cde9cb582c7a6eda2788ce4a8" - integrity sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A== + version "14.14.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.7.tgz#8ea1e8f8eae2430cf440564b98c6dfce1ec5945d" + integrity sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1576,14 +1600,19 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.2.tgz#5bb52ee68d0f8efa9cc0099920e56be6cc4e37f3" - integrity sha512-IkVfat549ggtkZUthUzEX49562eGikhSYeVGX97SkMFn+sTZrgRewXjQ4tPKFPCykZHkX1Zfd9OoELGqKU2jJA== + version "2.1.5" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" + integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/unist@*": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/yargs-parser@*": version "15.0.0" @@ -1591,9 +1620,9 @@ integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== + version "15.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.9.tgz#524cd7998fe810cdb02f26101b699cccd156ff19" + integrity sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g== dependencies: "@types/yargs-parser" "*" @@ -1753,9 +1782,9 @@ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.4.tgz#6dfa57b417ca06d21b2478f0e638302f99c2405c" - integrity sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ== + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== abbrev@1: version "1.1.1" @@ -1786,9 +1815,9 @@ acorn-globals@^6.0.0: acorn-walk "^7.1.1" acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-walk@^7.1.1: version "7.2.0" @@ -1796,14 +1825,14 @@ acorn-walk@^7.1.1: integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.1.1, acorn@^7.3.1: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== after@0.8.2: version "0.8.2" @@ -1811,9 +1840,9 @@ after@0.8.2: integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= agent-base@6: - version "6.0.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" - integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" @@ -1826,9 +1855,9 @@ aggregate-error@^1.0.0: indent-string "^3.0.0" aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" indent-string "^4.0.0" @@ -1838,7 +1867,7 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -1853,10 +1882,10 @@ ajv@^5.0.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.5.5: - version "6.12.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" - integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -1925,11 +1954,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" any-promise@^1.0.0, any-promise@^1.1.0, any-promise@^1.3.0: @@ -1953,6 +1981,13 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -2039,14 +2074,15 @@ arrify@^2.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: bn.js "^4.0.0" inherits "^2.0.1" minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" asn1@~0.2.3: version "0.2.4" @@ -2098,6 +2134,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob-lite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" @@ -2142,11 +2183,11 @@ autotrack@^2.4.1: source-map "^0.5.6" aws-sdk@^2.135.0: - version "2.658.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.658.0.tgz#dd0b1225d2b42eebdf9c4347a9568f317c0b90b1" - integrity sha512-vb+CorOG2lod4ZztrVaE3hcSjTwnB9HhTOnD/2R9YJtIUGTJqL0CIDTwo0Q384GFROtDhp7j6SX7oKFwdzDEuA== + version "2.791.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.791.0.tgz#a85bedd46c97e0d262edb055651075c3171a171c" + integrity sha512-oIWu0hLKmDS+rOmjud2Z1CaDXtmxKSJF4937dSNLf/vNkxxjJA/6HapSfKqsraLnekI9DLP8uop5HnCHC++Abw== dependencies: - buffer "4.9.1" + buffer "4.9.2" events "1.1.1" ieee754 "1.1.13" jmespath "0.15.0" @@ -2162,16 +2203,16 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^3.5.4: - version "3.5.5" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" - integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q== +axe-core@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.0.2.tgz#c7cf7378378a51fcd272d3c09668002a4990b1cb" + integrity sha512-arU1h31OGFu+LPrOLGZ7nB45v940NMDMEJeNmbutu57P+UFDVnkZg3e+J1I2HJRZ9hT7gO8J91dn/PMrAiKakA== -axobject-query@^2.1.2: +axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== @@ -2216,28 +2257,28 @@ babel-helper-get-function-arity@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-jest@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.2.2.tgz#70f618f2d7016ed71b232241199308985462f812" - integrity sha512-JmLuePHgA+DSOdOL8lPxCgD2LhPPm+rdw1vnxR73PpIrnmKCS2/aBhtkAcxQWuUcW2hBrH8MJ3LKXE7aWpNZyA== +babel-jest@^26.2.2, babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - "@jest/transform" "^26.2.2" - "@jest/types" "^26.2.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.2.0" + babel-preset-jest "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" babel-loader@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + version "8.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.1.tgz#e53313254677e86f27536f5071d807e01d24ec00" + integrity sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw== dependencies: find-cache-dir "^2.1.0" loader-utils "^1.4.0" - mkdirp "^0.5.3" + make-dir "^2.1.0" pify "^4.0.1" schema-utils "^2.6.5" @@ -2266,10 +2307,10 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.2.0.tgz#bdd0011df0d3d513e5e95f76bd53b51147aca2dd" - integrity sha512-B/hVMRv8Nh1sQ1a3EY8I0n4Y1Wty3NrR5ebOyVT302op+DOAau+xNEImGMsUWOC3++ZlMooCytKz+NgN8aKGbA== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2317,10 +2358,10 @@ babel-plugin-transform-class-properties@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-preset-current-node-syntax@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" - integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -2333,14 +2374,15 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.2.0.tgz#f198201a4e543a43eb40bc481e19736e095fd3e0" - integrity sha512-R1k8kdP3R9phYQugXeNnK/nvCGlBzG4m3EoIIukC80GXb6wCv2XiwPhK6K9MAkQcMszWBYvl2Wm+yigyXFQqXg== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^26.2.0" - babel-preset-current-node-syntax "^0.1.2" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" @@ -2401,15 +2443,20 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" + integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= + base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= base64-js@^1.0.2, base64-js@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base64id@2.0.0: version "2.0.0" @@ -2463,10 +2510,10 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^7.0.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== +bignumber.js@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== binary-extensions@^1.0.0: version "1.13.1" @@ -2508,11 +2555,16 @@ bluebird@~3.4.0, bluebird@~3.4.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -2618,6 +2670,16 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +broccoli-plugin@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/broccoli-plugin/-/broccoli-plugin-1.3.1.tgz#a26315732fb99ed2d9fb58f12a1e14e986b4fabd" + integrity sha512-DW8XASZkmorp+q7J4EeDEZz+LoyKLAd2XZULXyD9l4m9/hAKV3vjHmB1kiUshcWAYMgTP1m2i4NnqCE/23h6AQ== + dependencies: + promise-map-series "^0.2.1" + quick-temp "^0.1.3" + rimraf "^2.3.4" + symlink-or-copy "^1.1.8" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2659,26 +2721,28 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -2687,15 +2751,16 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.12.0, browserslist@^4.8.5: - version "4.14.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000" - integrity sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ== +browserslist@^4.14.5, browserslist@^4.14.6: + version "4.14.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6" + integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ== dependencies: - caniuse-lite "^1.0.30001111" - electron-to-chromium "^1.3.523" - escalade "^3.0.2" - node-releases "^1.1.60" + caniuse-lite "^1.0.30001157" + colorette "^1.2.1" + electron-to-chromium "^1.3.591" + escalade "^3.1.1" + node-releases "^1.1.66" bser@2.1.1: version "2.1.1" @@ -2714,15 +2779,20 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof-polyfill@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" - integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= + version "1.0.2" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== buffer-writer@2.0.0: version "2.0.0" @@ -2734,16 +2804,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^4.3.0: +buffer@4.9.2, buffer@^4.3.0: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== @@ -2768,20 +2829,20 @@ builtin-status-codes@^3.0.0: integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= bull@^3.5.2: - version "3.13.0" - resolved "https://registry.yarnpkg.com/bull/-/bull-3.13.0.tgz#232935f9a5c0c87be6eb2aa95e434ff115bacd7a" - integrity sha512-nP8ICMNHGYDNt6cgPqBPm90n57xA+/Om2wI2EGEOIJtWutjrYt8JAWiiFYjZKrly9UkKlrfG9qgOCwFFdS5xaw== + version "3.18.1" + resolved "https://registry.yarnpkg.com/bull/-/bull-3.18.1.tgz#49eb8fd9844a3dc0a12a851b132e508890763a31" + integrity sha512-g3gHFZ0qMo0wpecoNmd2W+F1Gj48l6phVCTdsQPKxDk1bB7kzD0nY5FAFnBFiaWxNmh5lb5X9TMB64uNXFKFDg== dependencies: cron-parser "^2.13.0" debuglog "^1.0.0" get-port "^5.1.1" ioredis "^4.14.1" - lodash "^4.17.15" + lodash "^4.17.19" p-timeout "^3.2.0" promise.prototype.finally "^3.1.2" - semver "^6.3.0" + semver "^7.3.2" util.promisify "^1.0.1" - uuid "^3.4.0" + uuid "^8.3.0" bytes@1: version "1.0.0" @@ -2878,6 +2939,14 @@ cacheable-request@^2.1.1: normalize-url "2.0.1" responselike "1.0.2" +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + callsite@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" @@ -2907,9 +2976,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== camelize@1.0.0, camelize@^1.0.0: version "1.0.0" @@ -2925,10 +2994,10 @@ cancan@3.1.0: auto-bind "^1.1.0" is-plain-obj "^1.1.0" -caniuse-lite@^1.0.30001111: - version "1.0.30001112" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001112.tgz#0fffc3b934ff56ff0548c37bc9dad7d882bcf672" - integrity sha512-J05RTQlqsatidif/38aN3PGULCLrg8OYQOlJUKbeYVzC2mGZkZLIztwRlB3MtrfLmawUmjFlNJvy/uhwniIe1Q== +caniuse-lite@^1.0.30001157: + version "1.0.30001157" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz#2d11aaeb239b340bc1aa730eca18a37fdb07a9ab" + integrity sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA== capture-exit@^2.0.0: version "2.0.0" @@ -3002,12 +3071,24 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -charenc@~0.0.1: +charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= -chokidar@^2.1.8: +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.1" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +chokidar@2.1.8, chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -3026,10 +3107,10 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== +chokidar@^3.4.0, chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -3037,7 +3118,7 @@ chokidar@^3.4.1: is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.4.0" + readdirp "~3.5.0" optionalDependencies: fsevents "~2.1.2" @@ -3076,6 +3157,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -3178,6 +3264,11 @@ clone-stats@^1.0.0: resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" @@ -3254,11 +3345,21 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + colors@^1.3.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== +colors@~1.2.0-rc0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" + integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3276,7 +3377,7 @@ commander@2.17.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: +commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3286,11 +3387,23 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" + integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== + commander@~2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@~2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q= + dependencies: + graceful-readlink ">= 1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -3306,7 +3419,7 @@ component-emitter@1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -component-emitter@^1.2.1: +component-emitter@^1.2.1, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -3323,10 +3436,10 @@ compressible@^2.0.0: dependencies: mime-db ">= 1.43.0 < 2" -compute-scroll-into-view@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.13.tgz#be1b1663b0e3f56cd5f7713082549f562a3477e2" - integrity sha512-o+w9w7A98aAFi/GjK8cxSV+CdASuPa2rR5UWs3+yHkJzWqaKoBEufFNWYaXInCSmUfDCVhesG+v9MTWqOjsxFg== +compute-scroll-into-view@^1.0.16: + version "1.0.16" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.16.tgz#5b7bf4f7127ea2c19b750353d7ce6776a90ee088" + integrity sha512-a85LHKY81oQnikatZYA90pufpZ6sQx++BoCxOEMsjpZx+ZnaKGQnCyCehTRr/1p9GBIAHTjcU9k71kSYWloLiQ== computed-style@~0.1.3: version "0.1.4" @@ -3338,7 +3451,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: +concat-stream@^1.5.0, concat-stream@~1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3357,11 +3470,11 @@ config-chain@^1.1.12: proto-list "~1.2.1" configstore@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" - integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f" + integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA== dependencies: - dot-prop "^4.1.0" + dot-prop "^4.2.1" graceful-fs "^4.1.2" make-dir "^1.0.0" unique-string "^1.0.0" @@ -3369,9 +3482,9 @@ configstore@^3.0.0: xdg-basedir "^3.0.0" confusing-browser-globals@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== console-browserify@^1.1.0: version "1.2.0" @@ -3410,7 +3523,7 @@ content-type@^1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -3468,17 +3581,17 @@ copy-to-clipboard@^3.0.6, copy-to-clipboard@^3.0.8: toggle-selection "^1.0.6" core-js-compat@^3.6.2: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" - integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.7.0.tgz#8479c5d3d672d83f1f5ab94cf353e57113e065ed" + integrity sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg== dependencies: - browserslist "^4.8.5" + browserslist "^4.14.6" semver "7.0.0" core-js-pure@^3.0.0: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.7.0.tgz#28a57c861d5698e053f0ff36905f7a3301b4191e" + integrity sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg== core-js@2, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: version "2.6.11" @@ -3486,33 +3599,33 @@ core-js@2, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== core-js@^3.1.2, core-js@^3.1.4, core-js@^3.6.4: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f" + integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" + import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" - yaml "^1.7.2" + yaml "^1.10.0" create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: bn.js "^4.1.0" - elliptic "^6.0.0" + elliptic "^6.5.3" create-error-class@^3.0.0: version "3.0.2" @@ -3521,7 +3634,7 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -3532,7 +3645,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -3545,12 +3658,12 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: sha.js "^2.4.8" cron-parser@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.13.0.tgz#6f930bb6f2931790d2a9eec83b3ec276e27a6725" - integrity sha512-UWeIpnRb0eyoWPVk+pD3TDpNx3KCFQeezO224oJIkktBrcW6RoAPOx5zIKprZGfk6vcYSmA8yQXItejSaDBhbQ== + version "2.17.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-2.17.0.tgz#5707421a7e0a73ee74675d1c032a2f14123f2cf8" + integrity sha512-oTmzVEwlurRe51HqTm4afshVr8Rkxy9kFiWxh5e6SmrY2o9NDYU4S6SduanBZYXLgkLy0skA98y7/tztW/DmjQ== dependencies: - is-nan "^1.2.1" - moment-timezone "^0.5.25" + is-nan "^1.3.0" + moment-timezone "^0.5.31" cross-spawn@^5.0.1: version "5.1.0" @@ -3581,7 +3694,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypt@~0.0.1: +crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= @@ -3613,7 +3726,7 @@ css-color-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= -css-select@^1.1.0: +css-select@^1.1.0, css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= @@ -3698,12 +3811,17 @@ date-fns@1.29.0: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" integrity sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw== -debug@*, debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debug@*, debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== dependencies: - ms "^2.1.1" + ms "2.1.2" debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.1, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" @@ -3726,6 +3844,13 @@ debug@~3.1.0: dependencies: ms "2.0.0" +debug@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debuglog@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3737,9 +3862,9 @@ decamelize@^1.2.0: integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== decode-uri-component@^0.2.0: version "0.2.0" @@ -3860,10 +3985,10 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" - integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== diffie-hellman@^5.0.0: version "5.0.3" @@ -3879,11 +4004,6 @@ direction@^0.1.5: resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c" integrity sha1-zl15f5fib4vnvv9T99xA4cGp7Ew= -dns-prefetch-control@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dns-prefetch-control/-/dns-prefetch-control-0.2.0.tgz#73988161841f3dcc81f47686d539a2c702c88624" - integrity sha512-hvSnros73+qyZXhHFjx2CMLwoj3Fe7eR9EJsFsqmcI1bB2OBWL/+0YzaEaKssCHnj/6crawNnUyw74Gm2EKe+Q== - doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -3921,6 +4041,14 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + dom-utils@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/dom-utils/-/dom-utils-0.9.0.tgz#e615a5af15ac4505e55ef612c72b5b5d176121f3" @@ -3931,15 +4059,15 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.1: +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" + integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== domexception@^2.0.1: version "2.0.1" @@ -3976,10 +4104,10 @@ dont-sniff-mimetype@1.1.0: resolved "https://registry.yarnpkg.com/dont-sniff-mimetype/-/dont-sniff-mimetype-1.1.0.tgz#c7d0427f8bcb095762751252af59d148b0a623b2" integrity sha512-ZjI4zqTaxveH2/tTlzS1wFp+7ncxNZaIEWYg3lzZRHkKf5zPT/MnEG6WL0BhHMJUabkh8GeU5NL5j+rEUCb7Ug== -dot-prop@^4.1.0, dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== +dot-prop@^4.2.1, dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" @@ -4018,9 +4146,9 @@ duplexer3@^0.1.4: integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" @@ -4062,12 +4190,12 @@ 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.523: - version "1.3.526" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.526.tgz#0e004899edf75afc172cce1b8189aac5dca646aa" - integrity sha512-HiroW5ZbGwgT8kCnoEO8qnGjoTPzJxduvV/Vv/wH63eo2N6Zj3xT5fmmaSPAPUM05iN9/5fIEkIg3owTtV6QZg== +electron-to-chromium@^1.3.591: + version "1.3.595" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.595.tgz#e8a9e7c6919963419f892ea981d7b3438ccb834d" + integrity sha512-JpaBIhdBkF9FLG7x06ONfe0f5bxPrxRcq0X+Sc8vsCt+OPWIzxOD+qM71NEHLGbDfN9Q6hbtHRv4/dnvcOxo6g== -elliptic@^6.0.0: +elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== @@ -4081,9 +4209,9 @@ elliptic@^6.0.0: minimalistic-crypto-utils "^1.0.0" emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^6.5.1: version "6.5.1" @@ -4101,9 +4229,9 @@ emoji-regex@^8.0.0: integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" - integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== + version "9.2.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" + integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== emojis-list@^2.0.0: version "2.1.0" @@ -4121,11 +4249,11 @@ encodeurl@^1.0.2: integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: - iconv-lite "~0.4.13" + iconv-lite "^0.6.2" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" @@ -4135,37 +4263,37 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: once "^1.4.0" engine.io-client@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.1.tgz#922ddb47eecdcb541136a93aeead24718fd05461" - integrity sha512-RJNmA+A9Js+8Aoq815xpGAsgWH1VoSYM//2VgIiu9lNOaHFfLpTjH4tOzktBpjIs5lvOfiNY1dwf+NuU6D38Mw== + version "3.4.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" + integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== dependencies: - component-emitter "1.2.1" + component-emitter "~1.3.0" component-inherit "0.0.3" - debug "~4.1.0" + debug "~3.1.0" engine.io-parser "~2.2.0" has-cors "1.1.0" indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" + parseqs "0.0.6" + parseuri "0.0.6" ws "~6.1.0" xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" engine.io-parser@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.0.tgz#312c4894f57d52a02b420868da7b5c1c84af80ed" - integrity sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w== + version "2.2.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" + integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== dependencies: after "0.8.2" arraybuffer.slice "~0.0.7" - base64-arraybuffer "0.1.5" + base64-arraybuffer "0.1.4" blob "0.0.5" has-binary2 "~1.0.2" engine.io@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.1.tgz#a61cbc13fa0cb27d9453fd079a29ee980564b069" - integrity sha512-8MfIfF1/IIfxuc2gv5K+XlFZczw/BpTvqBdl0E2fBLkYQp4miv4LuDTVtYt4yMyaIFLEr4vtaSgV4mjvll8Crw== + version "3.4.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.2.tgz#8fc84ee00388e3e228645e0a7d3dfaeed5bd122c" + integrity sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg== dependencies: accepts "~1.3.4" base64id "2.0.0" @@ -4190,15 +4318,25 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -entities@^1.1.1: +entities@^1.1.1, entities@~1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== -entities@^2.0.0, entities@~2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436" - integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw== +entities@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +entities@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -4214,27 +4352,40 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error-inject@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" - integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= - es-abstract@^1.17.0, es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + 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== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -4286,10 +4437,10 @@ es6-weak-map@^2.0.2: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -escalade@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" - integrity sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ== +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@^1.0.3: version "1.0.3" @@ -4325,7 +4476,7 @@ eslint-config-react-app@3.0.6: dependencies: confusing-browser-globals "^1.0.5" -eslint-import-resolver-node@^0.3.3: +eslint-import-resolver-node@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== @@ -4350,16 +4501,16 @@ eslint-plugin-flowtype@^5.2.0: string-natural-compare "^3.0.1" eslint-plugin-import@^2.22.0: - version "2.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" - integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== dependencies: array-includes "^3.1.1" array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.3" + eslint-import-resolver-node "^0.3.4" eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" @@ -4369,20 +4520,20 @@ eslint-plugin-import@^2.22.0: tsconfig-paths "^3.9.0" eslint-plugin-jsx-a11y@^6.1.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.3.1.tgz#99ef7e97f567cc6a5b8dd5ab95a94a67058a2660" - integrity sha512-i1S+P+c3HOlBJzMFORRbC58tHa65Kbo8b52/TwCwSKLohwvpfT5rm2GjGWzOHTEuq4xxf2aRlHHTtmExDQOP+g== + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== dependencies: - "@babel/runtime" "^7.10.2" + "@babel/runtime" "^7.11.2" aria-query "^4.2.2" array-includes "^3.1.1" ast-types-flow "^0.0.7" - axe-core "^3.5.4" - axobject-query "^2.1.2" + axe-core "^4.0.2" + axobject-query "^2.2.0" damerau-levenshtein "^1.0.6" emoji-regex "^9.0.0" has "^1.0.3" - jsx-ast-utils "^2.4.1" + jsx-ast-utils "^3.1.0" language-tags "^1.0.5" eslint-plugin-prettier@^3.1.0: @@ -4393,25 +4544,25 @@ eslint-plugin-prettier@^3.1.0: prettier-linter-helpers "^1.0.0" eslint-plugin-react-hooks@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.1.0.tgz#6323fbd5e650e84b2987ba76370523a60f4e7925" - integrity sha512-36zilUcDwDReiORXmcmTc6rRumu9JIM3WjSvV0nclHoUQ0CNrX866EwONvLR/UqaeqFutbAnVu8PEmctdo2SRQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== eslint-plugin-react@^7.20.0: - version "7.20.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.5.tgz#29480f3071f64a04b2c3d99d9b460ce0f76fb857" - integrity sha512-ajbJfHuFnpVNJjhyrfq+pH1C0gLc2y94OiCbAXT5O0J0YCKaFEHDV8+3+mDOr+w8WguRX+vSs1bM2BDG0VLvCw== + version "7.21.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" + integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== dependencies: array-includes "^3.1.1" array.prototype.flatmap "^1.2.3" doctrine "^2.1.0" has "^1.0.3" - jsx-ast-utils "^2.4.1" + jsx-ast-utils "^2.4.1 || ^3.0.0" object.entries "^1.1.2" object.fromentries "^2.0.2" object.values "^1.1.1" prop-types "^15.7.2" - resolve "^1.17.0" + resolve "^1.18.1" string.prototype.matchall "^4.0.2" eslint-scope@^4.0.3: @@ -4422,12 +4573,12 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" - integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" eslint-utils@^2.1.0: @@ -4442,22 +4593,28 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + eslint@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.6.0.tgz#522d67cfaea09724d96949c70e7a0550614d64d6" - integrity sha512-QlAManNtqr7sozWm5TF4wIH9gmUm2hE3vNRUvyoYAa4y1l5/jxD/PQStEjBMQtCqZmSep8UxrcecI60hOpe61w== + version "7.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.13.0.tgz#7f180126c0dcdef327bfb54b211d7802decc08da" + integrity sha512-uCORMuOO8tUzJmsdRtrvcGq5qposf7Rw0LwkTJkoDbOycVQtQjmnhZSuLQnozLE4TmAzlMVV45eCHmQ1OpDKUQ== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.1" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" enquirer "^2.3.5" - eslint-scope "^5.1.0" + eslint-scope "^5.1.1" eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.2.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.0" esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" @@ -4484,12 +4641,12 @@ eslint@^7.6.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" - integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^7.3.1" + acorn "^7.4.0" acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" @@ -4505,27 +4662,27 @@ esquery@^1.2.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" esrever@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8" integrity sha1-lunSj08bGnZ4TNXUkOquAQ50B7g= -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" - integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== esutils@^2.0.2: version "2.0.3" @@ -4556,9 +4713,9 @@ events@1.1.1: integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -4600,9 +4757,9 @@ execa@^1.0.0: strip-eof "^1.0.0" execa@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" - integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -4644,21 +4801,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect-ct@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.2.0.tgz#3a54741b6ed34cc7a93305c605f63cd268a54a62" - integrity sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g== - -expect@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.2.0.tgz#0140dd9cc7376d7833852e9cda88c05414f1efba" - integrity sha512-8AMBQ9UVcoUXt0B7v+5/U5H6yiUR87L6eKCfjE3spx7Ya5lF+ebUo37MCFBML2OiLfkX1sxmQOZhIDonyVTkcw== +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" - jest-get-type "^26.0.0" - jest-matcher-utils "^26.2.0" - jest-message-util "^26.2.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" exports-loader@^0.6.4: @@ -4691,7 +4843,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.2, extend@~3.0.2: +extend@^3.0.0, extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4726,9 +4878,9 @@ fast-deep-equal@^1.0.0: integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" @@ -4746,9 +4898,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-text-encoding@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.1.tgz#4a428566f74fc55ebdd447555b1eb4d9cf514455" - integrity sha512-x4FEgaz3zNRtJfLFqJmHWxkMDDvXVtaznj2V9jiP8ACUJrUgist4bP9FmDL2Vew2Y9mEQI/tG4GqabaitYp9CQ== + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" + integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig== fb-watchman@^2.0.0: version "2.0.1" @@ -4905,21 +5057,20 @@ flow-typed@^2.6.2: yargs "^12.0.2" flowgen@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/flowgen/-/flowgen-1.10.0.tgz#a041ae31d543d22166e7ba7c296b8445deb3c2e4" - integrity sha512-3lsoaa1vxGXhnkHuoE4mLPJi/klvpR3ID8R9CFJ/GBNi+cxJXecWQaUPrWMdNI5tGs8Y+7wrIZaCVFKFLQiGOg== + version "1.12.1" + resolved "https://registry.yarnpkg.com/flowgen/-/flowgen-1.12.1.tgz#8867bce47f493384035eb90d1fbb289c013f173a" + integrity sha512-anmyB6TIo7Y6gpYpQw41g3N1VQ+VECKFcgOlgiUb4727AQfiD/6G73CzCSZlYyjSqLEah7b8baXECSiAuebwBg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/highlight" "^7.0.0" - commander "^2.11.0" - lodash "^4.17.4" - paralleljs "^0.2.1" - prettier "^1.16.4" - shelljs "^0.8.3" - typescript "^3.4" + "@babel/code-frame" "^7.10.4" + "@babel/highlight" "^7.10.4" + commander "^6.1.0" + lodash "^4.17.20" + prettier "^2.1.1" + shelljs "^0.8.4" + typescript "^4.0.2" typescript-compiler "^1.4.1-2" -flush-write-stream@^1.0.0: +flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== @@ -4928,9 +5079,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" focus-visible@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.1.0.tgz#4b9d40143b865f53eafbd93ca66672b3bf9e7b6a" - integrity sha512-nPer0rjtzdZ7csVIu233P2cUm/ks/4aVSI+5KUkYrYpgA7ujgC3p6J7FtFU+AIMWwnwYQOB/yeiOITxFeYIXiw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.2.0.tgz#3a9e41fccf587bd25dcc2ef045508284f0a4d6b3" + integrity sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ== for-in@^1.0.2: version "1.0.2" @@ -4963,11 +5114,6 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -frameguard@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/frameguard/-/frameguard-3.1.0.tgz#bd1442cca1d67dc346a6751559b6d04502103a22" - integrity sha512-TxgSKM+7LTA6sidjOiSZK9wxY0ffMPY3Wta//MqwmX0nZuEHc8QrkV8Fh3ZhMJeiH+Uyh/tcaarImRy8u77O7g== - fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -4999,6 +5145,15 @@ fs-extra@^4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" + integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -5008,14 +5163,15 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== +fs-extra@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== dependencies: + at-least-node "^1.0.0" graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" + jsonfile "^6.0.1" + universalify "^1.0.0" fs-minipass@^2.0.0: version "2.1.0" @@ -5024,6 +5180,14 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -5045,14 +5209,19 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.1.2: +fsevents@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" + integrity sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA== + +fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== @@ -5097,9 +5266,9 @@ gcp-metadata@^3.4.0: json-bigint "^0.3.0" gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^1.0.1: version "1.0.3" @@ -5111,6 +5280,15 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5134,9 +5312,9 @@ get-stream@^4.0.0: pump "^3.0.0" get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -5167,7 +5345,23 @@ glob-parent@^5.0.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5317,11 +5511,16 @@ got@^8.3.2: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -5337,10 +5536,12 @@ gtoken@^4.1.0: jws "^4.0.0" mime "^2.2.0" -gud@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" - integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== +gulp-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-sort/-/gulp-sort-2.0.0.tgz#c6762a2f1f0de0a3fc595a21599d3fac8dba1aca" + integrity sha1-xnYqLx8N4KP8WVohWZ0/rI26Gso= + dependencies: + through2 "^2.0.1" gzip-size@^3.0.0: version "3.0.0" @@ -5355,11 +5556,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -5396,7 +5597,7 @@ has-symbol-support-x@^1.4.1: resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -has-symbols@^1.0.0, has-symbols@^1.0.1: +has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== @@ -5447,12 +5648,13 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -5468,21 +5670,22 @@ hashtag-regex@^2.0.0: integrity sha512-D89pGyCZOMtaXdEJ1he9/GmhZAUXlHPn+oN2oFmrNZFX9MlblUdqw7DmJ2IlWc1My+GP0BeCDlMwWW2zSVLVoA== hast-util-parse-selector@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz#60c99d0b519e12ab4ed32e58f150ec3f61ed1974" - integrity sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA== + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== -hastscript@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-5.1.2.tgz#bde2c2e56d04c62dd24e8c5df288d050a355fb8a" - integrity sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ== +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: + "@types/hast" "^2.0.0" comma-separated-tokens "^1.0.0" hast-util-parse-selector "^2.0.0" property-information "^5.0.0" space-separated-tokens "^1.0.0" -he@1.2.x: +he@1.2.x, he@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -5503,22 +5706,18 @@ helmet-csp@2.10.0: dasherize "2.0.0" helmet@^3.21.1: - version "3.22.0" - resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.22.0.tgz#3a6f11d931799145f0aff15dbc563cff9e13131f" - integrity sha512-Xrqicn2nm1ZIUxP3YGuTBmbDL04neKsIT583Sjh0FkiwKDXYCMUqGqC88w3NUvVXtA75JyR2Jn6jw6ZEMOD+ZA== + version "3.23.3" + resolved "https://registry.yarnpkg.com/helmet/-/helmet-3.23.3.tgz#5ba30209c5f73ded4ab65746a3a11bedd4579ab7" + integrity sha512-U3MeYdzPJQhtvqAVBPntVgAvNSOJyagwZwyKsFdyRa8TV3pOKVFljalPOCxbw5Wwf2kncGhmP0qHjyazIdNdSA== dependencies: depd "2.0.0" - dns-prefetch-control "0.2.0" dont-sniff-mimetype "1.1.0" - expect-ct "0.2.0" feature-policy "0.3.0" - frameguard "3.1.0" helmet-crossdomain "0.4.0" helmet-csp "2.10.0" hide-powered-by "1.1.0" hpkp "2.0.0" hsts "2.2.0" - ienoopen "1.1.0" nocache "2.1.0" referrer-policy "1.2.0" x-xss-protection "1.3.0" @@ -5610,6 +5809,13 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.x" +html-parse-stringify2@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" + integrity sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o= + dependencies: + void-elements "^2.0.1" + html-webpack-plugin@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" @@ -5623,7 +5829,7 @@ html-webpack-plugin@3.2.0: toposort "^1.0.0" util.promisify "1.0.0" -htmlparser2@^3.3.0: +htmlparser2@^3.3.0, htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -5656,7 +5862,7 @@ http-errors@1.4.0: inherits "2.0.1" statuses ">= 1.2.1 < 2" -http-errors@1.7.3, http-errors@^1.3.1, http-errors@^1.6.1, http-errors@^1.6.3, http-errors@~1.7.2: +http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== @@ -5667,6 +5873,17 @@ http-errors@1.7.3, http-errors@^1.3.1, http-errors@^1.6.1, http-errors@^1.6.3, h statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@^1.3.1, http-errors@^1.6.1, http-errors@^1.6.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -5709,22 +5926,65 @@ humanize-number@0.0.2: resolved "https://registry.yarnpkg.com/humanize-number/-/humanize-number-0.0.2.tgz#11c0af6a471643633588588048f1799541489c18" integrity sha1-EcCvakcWQ2M1iFiASPF5lUFInBg= -iconv-lite@0.4.24, iconv-lite@~0.4.13: +i18next-http-backend@^1.0.21: + version "1.0.21" + resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-1.0.21.tgz#cee901b3527dad5165fa91de973b6aa6404c1c37" + integrity sha512-UDeHoV2B+31Gr++0KFAVjM5l+SEwePpF6sfDyaDq5ennM9QNJ78PBEMPStwkreEm4h5C8sT7M1JdNQrLcU1Wdg== + dependencies: + node-fetch "2.6.1" + +i18next-parser@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/i18next-parser/-/i18next-parser-3.3.0.tgz#5cd907aff5e791c043137a4902ab42631cde9656" + integrity sha512-o8hh9PW5Gqs3fVV5ULxPfBV957n97TT7LTSj/M84ZOKFM6c5Ab6d1gMREr+GEKO3T+niOzF5biG1MRkzojjscA== + dependencies: + broccoli-plugin "^1.3.0" + cheerio "^1.0.0-rc.2" + colors "~1.2.0-rc0" + commander "~2.9.0" + concat-stream "~1.6.0" + eol "^0.9.1" + fs-extra "^6.0.1" + gulp-sort "^2.0.0" + i18next "^19.0.1" + rsvp "^4.8.2" + through2 "~2.0.3" + typescript "^3.6.4" + vinyl "~2.0.1" + vinyl-fs "^3.0.2" + vue-template-compiler "^2.6.11" + yamljs "^0.3.0" + +i18next@^19.0.1, i18next@^19.8.3: + version "19.8.3" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-19.8.3.tgz#10df7222db8c23389b13bceb9ba67a5e20a0241e" + integrity sha512-eVrqAw2gGGYYJaJMYw4VM1FNFawLD4b84IsoTZMVXeWHaxAM2gyTa34j2Sip15UkBz/LrSxdFJj0Jhlrz7EvHA== + dependencies: + "@babel/runtime" "^7.12.0" + +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@1.1.13, ieee754@^1.1.4: +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@1.1.13: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -ienoopen@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ienoopen/-/ienoopen-1.1.0.tgz#411e5d530c982287dbdc3bb31e7a9c9e32630974" - integrity sha512-MFs36e/ca6ohEKtinTJ5VvAJ6oDRAYFdYXweUnGY9L9vcoqFOU4n2ZhmJ0C4z/cwGZ3YIQRSB3XZ1+ghZkY5NQ== +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" @@ -5751,10 +6011,10 @@ immutable@^3.8.2: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -5831,7 +6091,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5873,7 +6133,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.1, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -5886,16 +6146,17 @@ invert-kv@^2.0.0: integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ioredis@^4.14.1: - version "4.16.2" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.16.2.tgz#29ae301885e493c4642d2fb1998761c576e27462" - integrity sha512-hlRK9q9K8pWpYIxUh079dWUWECiGNdI7+/AR21pgeqIBXQzjVKFnz0wXvmhEQZV3Hvv4saQpvJww9SkjwvPXZA== + version "4.19.2" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.19.2.tgz#e3eab394c653cea5aea07c0c784d8c772dce8801" + integrity sha512-SZSIwMrbd96b7rJvJwyTWSP6XQ0m1kAIIqBnwglJKrIJ6na7TeY4F2EV2vDY0xm/fLrUY8cEg81dR7kVFt2sKA== dependencies: cluster-key-slot "^1.1.0" debug "^4.1.1" denque "^1.1.0" lodash.defaults "^4.2.0" lodash.flatten "^4.4.0" - redis-commands "1.5.0" + p-map "^2.1.0" + redis-commands "1.6.0" redis-errors "^1.2.0" redis-parser "^3.0.0" standard-as-callback "^2.0.1" @@ -5905,6 +6166,14 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -5951,15 +6220,15 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.5, is-buffer@~1.1.1: +is-buffer@^1.1.5, is-buffer@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== is-ci@^1.0.10: version "1.2.1" @@ -5975,6 +6244,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" + integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6098,13 +6374,23 @@ is-module@^1.0.0: resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-nan@^1.2.1: +is-nan@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.0.tgz#85d1f5482f7051c2019f5673ccebdb06f3b0db03" integrity sha512-z7bbREymOqt2CCaZVly8aC4ML3Xhfi0ekuOnjO2L8vKdl+CttdVoGZQhd4adMFAsxQ5VeRVwORs4tU8RH+HFtQ== dependencies: define-properties "^1.1.3" +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + +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= + is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -6151,12 +6437,10 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" - integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== - dependencies: - isobject "^4.0.0" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== is-potential-custom-element-name@^1.0.0: version "1.0.0" @@ -6164,21 +6448,28 @@ is-potential-custom-element-name@^1.0.0: integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= is-promise@^2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== +is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== dependencies: - has "^1.0.3" + has-symbols "^1.0.1" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" @@ -6212,6 +6503,23 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -6261,12 +6569,7 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -isomorphic-fetch@2.2.1, isomorphic-fetch@^2.2.1: +isomorphic-fetch@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= @@ -6274,6 +6577,14 @@ isomorphic-fetch@2.2.1, isomorphic-fetch@^2.2.1: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" +isomorphic-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" + integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== + dependencies: + node-fetch "^2.6.1" + whatwg-fetch "^3.4.1" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -6333,67 +6644,67 @@ java-properties@^1.0.0: resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== -jest-changed-files@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.2.0.tgz#b4946201defe0c919a2f3d601e9f98cb21dacc15" - integrity sha512-+RyJb+F1K/XBLIYiL449vo5D+CvlHv29QveJUWNPXuUicyZcq+tf1wNxmmFeRvAU1+TzhwqczSjxnCCFt7+8iA== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" execa "^4.0.0" throat "^5.0.0" jest-cli@^26.0.0: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.2.2.tgz#4c273e5474baafac1eb15fd25aaafb4703f5ffbc" - integrity sha512-vVcly0n/ijZvdy6gPQiQt0YANwX2hLTPQZHtW7Vi3gcFdKTtif7YpI85F8R8JYy5DFSWz4x1OW0arnxlziu5Lw== + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^26.2.2" - "@jest/test-result" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^26.2.2" - jest-util "^26.2.0" - jest-validate "^26.2.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - yargs "^15.3.1" + yargs "^15.4.1" -jest-config@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.2.2.tgz#f3ebc7e2bc3f49de8ed3f8007152f345bb111917" - integrity sha512-2lhxH0y4YFOijMJ65usuf78m7+9/8+hAb1PZQtdRdgnQpAb4zP6KcVDDktpHEkspBKnc2lmFu+RQdHukUUbiTg== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.2.2" - "@jest/types" "^26.2.0" - babel-jest "^26.2.2" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - jest-environment-jsdom "^26.2.0" - jest-environment-node "^26.2.0" - jest-get-type "^26.0.0" - jest-jasmine2 "^26.2.2" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" jest-regex-util "^26.0.0" - jest-resolve "^26.2.2" - jest-util "^26.2.0" - jest-validate "^26.2.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^26.2.0" + pretty-format "^26.6.2" -jest-diff@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.2.0.tgz#dee62c771adbb23ae585f3f1bd289a6e8ef4f298" - integrity sha512-Wu4Aopi2nzCsHWLBlD48TgRy3Z7OsxlwvHNd1YSnHc7q1NJfrmyCPoUXrTIrydQOG5ApaYpsAsdfnMbJqV1/wQ== +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: chalk "^4.0.0" - diff-sequences "^26.0.0" - jest-get-type "^26.0.0" - pretty-format "^26.2.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" jest-docblock@^26.0.0: version "26.0.0" @@ -6402,130 +6713,131 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.2.0.tgz#aec8efa01d072d7982c900e74940863385fa884e" - integrity sha512-gHPCaho1twWHB5bpcfnozlc6mrMi+VAewVPNgmwf81x2Gzr6XO4dl+eOrwPWxbkYlgjgrYjWK2xgKnixbzH3Ew== +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" chalk "^4.0.0" - jest-get-type "^26.0.0" - jest-util "^26.2.0" - pretty-format "^26.2.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" -jest-environment-jsdom@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.2.0.tgz#6443a6f3569297dcaa4371dddf93acaf167302dc" - integrity sha512-sDG24+5M4NuIGzkI3rJW8XUlrpkvIdE9Zz4jhD8OBnVxAw+Y1jUk9X+lAOD48nlfUTlnt3lbAI3k2Ox+WF3S0g== +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: - "@jest/environment" "^26.2.0" - "@jest/fake-timers" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.2.0" - jest-util "^26.2.0" - jsdom "^16.2.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" -jest-environment-node@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.2.0.tgz#fee89e06bdd4bed3f75ee2978d73ede9bb57a681" - integrity sha512-4M5ExTYkJ19efBzkiXtBi74JqKLDciEk4CEsp5tTjWGYMrlKFQFtwIVG3tW1OGE0AlXhZjuHPwubuRYY4j4uOw== +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: - "@jest/environment" "^26.2.0" - "@jest/fake-timers" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.2.0" - jest-util "^26.2.0" + jest-mock "^26.6.2" + jest-util "^26.6.2" -jest-get-type@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" - integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.2.2.tgz#6d4267b1903854bfdf6a871419f35a82f03ae71e" - integrity sha512-3sJlMSt+NHnzCB+0KhJ1Ut4zKJBiJOlbrqEYNdRQGlXTv8kqzZWjUKQRY3pkjmlf+7rYjAV++MQ4D6g4DhAyOg== +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" jest-regex-util "^26.0.0" - jest-serializer "^26.2.0" - jest-util "^26.2.0" - jest-worker "^26.2.1" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.2.2.tgz#d82b1721fac2b153a4f8b3f0c95e81e702812de2" - integrity sha512-Q8AAHpbiZMVMy4Hz9j1j1bg2yUmPa1W9StBvcHqRaKa9PHaDUMwds8LwaDyzP/2fkybcTQE4+pTMDOG9826tEw== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.2.0" - "@jest/source-map" "^26.1.0" - "@jest/test-result" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^26.2.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^26.2.0" - jest-matcher-utils "^26.2.0" - jest-message-util "^26.2.0" - jest-runtime "^26.2.2" - jest-snapshot "^26.2.2" - jest-util "^26.2.0" - pretty-format "^26.2.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.2.0.tgz#073ee6d8db7a9af043e7ce99d8eea17a4fb0cc50" - integrity sha512-aQdzTX1YiufkXA1teXZu5xXOJgy7wZQw6OJ0iH5CtQlOETe6gTSocaYKUNui1SzQ91xmqEUZ/WRavg9FD82rtQ== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: - jest-get-type "^26.0.0" - pretty-format "^26.2.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.2.0.tgz#b107af98c2b8c557ffd46c1adf06f794aa52d622" - integrity sha512-2cf/LW2VFb3ayPHrH36ZDjp9+CAeAe/pWBAwsV8t3dKcrINzXPVxq8qMWOxwt5BaeBCx4ZupVGH7VIgB8v66vQ== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" - jest-diff "^26.2.0" - jest-get-type "^26.0.0" - pretty-format "^26.2.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-message-util@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.2.0.tgz#757fbc1323992297092bb9016a71a2eb12fd22ea" - integrity sha512-g362RhZaJuqeqG108n1sthz5vNpzTNy926eNDszo4ncRbmmcMRIUAZibnd6s5v2XSBCChAxQtCoN25gnzp7JbQ== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.2.0" - "@types/stack-utils" "^1.0.1" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.2.0.tgz#a1b3303ab38c34aa1dbbc16ab57cdc1a59ed50d1" - integrity sha512-XeC7yWtWmWByoyVOHSsE7NYsbXJLtJNgmhD7z4MKumKm6ET0si81bsSLbQ64L5saK3TgsHo2B/UqG5KNZ1Sp/Q== +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -6538,157 +6850,159 @@ jest-regex-util@^26.0.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.2.2.tgz#2ad3cd9281730e9a5c487cd846984c5324e47929" - integrity sha512-S5vufDmVbQXnpP7435gr710xeBGUFcKNpNswke7RmFvDQtmqPjPVU/rCeMlEU0p6vfpnjhwMYeaVjKZAy5QYJA== +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" jest-regex-util "^26.0.0" - jest-snapshot "^26.2.2" + jest-snapshot "^26.6.2" -jest-resolve@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.2.2.tgz#324a20a516148d61bffa0058ed0c77c510ecfd3e" - integrity sha512-ye9Tj/ILn/0OgFPE/3dGpQPUqt4dHwIocxt5qSBkyzxQD8PbL0bVxBogX2FHxsd3zJA7V2H/cHXnBnNyyT9YoQ== +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^26.2.0" + jest-util "^26.6.2" read-pkg-up "^7.0.1" - resolve "^1.17.0" + resolve "^1.18.1" slash "^3.0.0" -jest-runner@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.2.2.tgz#6d03d057886e9c782e10b2cf37443f902fe0e39e" - integrity sha512-/qb6ptgX+KQ+aNMohJf1We695kaAfuu3u3ouh66TWfhTpLd9WbqcF6163d/tMoEY8GqPztXPLuyG0rHRVDLxCA== +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: - "@jest/console" "^26.2.0" - "@jest/environment" "^26.2.0" - "@jest/test-result" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.7.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^26.2.2" + jest-config "^26.6.3" jest-docblock "^26.0.0" - jest-haste-map "^26.2.2" - jest-leak-detector "^26.2.0" - jest-message-util "^26.2.0" - jest-resolve "^26.2.2" - jest-runtime "^26.2.2" - jest-util "^26.2.0" - jest-worker "^26.2.1" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.2.2.tgz#2480ff79320680a643031dd21998d7c63d83ab68" - integrity sha512-a8VXM3DxCDnCIdl9+QucWFfQ28KdqmyVFqeKLigHdErtsx56O2ZIdQkhFSuP1XtVrG9nTNHbKxjh5XL1UaFDVQ== +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: - "@jest/console" "^26.2.0" - "@jest/environment" "^26.2.0" - "@jest/fake-timers" "^26.2.0" - "@jest/globals" "^26.2.0" - "@jest/source-map" "^26.1.0" - "@jest/test-result" "^26.2.0" - "@jest/transform" "^26.2.2" - "@jest/types" "^26.2.0" + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^26.2.2" - jest-haste-map "^26.2.2" - jest-message-util "^26.2.0" - jest-mock "^26.2.0" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" jest-regex-util "^26.0.0" - jest-resolve "^26.2.2" - jest-snapshot "^26.2.2" - jest-util "^26.2.0" - jest-validate "^26.2.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-serializer@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.2.0.tgz#92dcae5666322410f4bf50211dd749274959ddac" - integrity sha512-V7snZI9IVmyJEu0Qy0inmuXgnMWDtrsbV2p9CRAcmlmPVwpC2ZM8wXyYpiugDQnwLHx0V4+Pnog9Exb3UO8M6Q== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^26.2.2: - version "26.2.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.2.2.tgz#9d2eda083a4a1017b157e351868749bd63211799" - integrity sha512-NdjD8aJS7ePu268Wy/n/aR1TUisG0BOY+QOW4f6h46UHEKOgYmmkvJhh2BqdVZQ0BHSxTMt04WpCf9njzx8KtA== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^26.2.0" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^26.2.0" - jest-get-type "^26.0.0" - jest-haste-map "^26.2.2" - jest-matcher-utils "^26.2.0" - jest-message-util "^26.2.0" - jest-resolve "^26.2.2" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^26.2.0" + pretty-format "^26.6.2" semver "^7.3.2" -jest-util@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.2.0.tgz#0597d2a27c559340957609f106c408c17c1d88ac" - integrity sha512-YmDwJxLZ1kFxpxPfhSJ0rIkiZOM0PQbRcfH0TzJOhqCisCAsI1WcmoQqO83My9xeVA2k4n+rzg2UuexVKzPpig== +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" graceful-fs "^4.2.4" is-ci "^2.0.0" micromatch "^4.0.2" -jest-validate@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.2.0.tgz#97fedf3e7984b7608854cbf925b9ca6ebcbdb78a" - integrity sha512-8XKn3hM6VIVmLNuyzYLCPsRCT83o8jMZYhbieh4dAyKLc4Ypr36rVKC+c8WMpWkfHHpGnEkvWUjjIAyobEIY/Q== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" camelcase "^6.0.0" chalk "^4.0.0" - jest-get-type "^26.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^26.2.0" + pretty-format "^26.6.2" -jest-watcher@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.2.0.tgz#45bdf2fecadd19c0a501f3b071a474dca636825b" - integrity sha512-674Boco4Joe0CzgKPL6K4Z9LgyLx+ZvW2GilbpYb8rFEUkmDGgsZdv1Hv5rxsRpb1HLgKUOL/JfbttRCuFdZXQ== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^26.2.0" - "@jest/types" "^26.2.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.2.0" + jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^26.2.1, jest-worker@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.3.0.tgz#7c8a97e4f4364b4f05ed8bca8ca0c24de091871f" - integrity sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw== +jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -6705,15 +7019,15 @@ joplin-turndown-plugin-gfm@^1.0.12: integrity sha512-qL4+1iycQjZ1fs8zk3jSRk7cg3ROBUHk7GKtiLAQLFzLPKErnILUvz5DLszSQvz3s1sTjPbywLDISVUtBY6HaA== js-beautify@^1.8.8: - version "1.11.0" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" - integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== + version "1.13.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.13.0.tgz#a056d5d3acfd4918549aae3ab039f9f3c51eebb2" + integrity sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA== dependencies: config-chain "^1.1.12" editorconfig "^0.15.3" glob "^7.1.3" - mkdirp "~1.0.3" - nopt "^4.0.3" + mkdirp "^1.0.4" + nopt "^5.0.0" js-search@^1.4.2: version "1.4.3" @@ -6731,9 +7045,9 @@ js-tokens@^3.0.2: integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -6743,7 +7057,7 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^16.2.0, jsdom@^16.2.2: +jsdom@^16.2.0, jsdom@^16.4.0: version "16.4.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== @@ -6786,11 +7100,11 @@ jsesc@~0.5.0: integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= json-bigint@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.0.tgz#0ccd912c4b8270d05f056fbd13814b53d3825b1e" - integrity sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4= + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.1.tgz#0c1729d679f580d550899d6a2226c228564afe60" + integrity sha512-DGWnSzmusIreWlEupsUelHrhwmPPE+FiQvg+drKfk2p+bdEYa5mp4PJ8JsCWqae0M2jQNb0HPvnwvf1qOTThzQ== dependencies: - bignumber.js "^7.0.0" + bignumber.js "^9.0.0" json-buffer@3.0.0: version "3.0.0" @@ -6802,11 +7116,16 @@ json-loader@0.5.4: resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" integrity sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94= -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -6865,6 +7184,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonwebtoken@8.5.1, jsonwebtoken@^8.5.0: version "8.5.1" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" @@ -6891,13 +7219,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" + integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA== dependencies: array-includes "^3.1.1" - object.assign "^4.1.0" + object.assign "^4.1.1" jszip@^3.5.0: version "3.5.0" @@ -7142,9 +7470,9 @@ koa-webpack-hot-middleware@^1.0.3: webpack-hot-middleware "2.x" koa@^2.10.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.11.0.tgz#fe5a51c46f566d27632dd5dc8fd5d7dd44f935a4" - integrity sha512-EpR9dElBTDlaDgyhDMiLkXrPwp6ZqgAIBvhhmxQ9XN4TFgW+gEz6tkcsNI6BnUbUftrKDjVFj4lW2/J2aNBMMA== + version "2.13.0" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.13.0.tgz#25217e05efd3358a7e5ddec00f0a380c9b71b501" + integrity sha512-i/XJVOfPw7npbMv67+bOeXr3gPqOAw6uh5wFyNs3QvJ47tUx3M3V9rIE0//WytY42MKz4l/MXKyGkQ2LQTfLUQ== dependencies: accepts "^1.3.5" cache-content-type "^1.0.0" @@ -7156,7 +7484,6 @@ koa@^2.10.0: depd "^1.1.2" destroy "^1.0.4" encodeurl "^1.0.2" - error-inject "^1.0.0" escape-html "^1.0.3" fresh "~0.5.2" http-assert "^1.3.0" @@ -7172,9 +7499,9 @@ koa@^2.10.0: vary "^1.1.2" language-subtag-registry@~0.3.2: - version "0.3.20" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.20.tgz#a00a37121894f224f763268e431c55556b0c0755" - integrity sha512-KPMwROklF4tEx283Xw0pNKtfTj1gZ4UByp4EsIFWLgBavJltF4TiYPc39k06zSTsLzxTVXXDSpbwaQXaFB4Qeg== + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== language-tags@^1.0.5: version "1.0.5" @@ -7190,6 +7517,13 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" @@ -7197,18 +7531,18 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7313,6 +7647,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash-es@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" + integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== + lodash._basebind@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/lodash._basebind/-/lodash._basebind-2.3.0.tgz#2b5bc452a0e106143b21869f233bdb587417d248" @@ -7524,10 +7863,10 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -"lodash@>=3.5 <5", lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +"lodash@>=3.5 <5", lodash@^4.0.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" @@ -7595,9 +7934,9 @@ lru_map@^0.3.3: integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= macos-release@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" - integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + version "2.4.1" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" + integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== make-dir@^1.0.0: version "1.3.0" @@ -7629,9 +7968,9 @@ makeerror@1.0.x: tmpl "1.0.x" mammoth@^1.4.11: - version "1.4.11" - resolved "https://registry.yarnpkg.com/mammoth/-/mammoth-1.4.11.tgz#cf2d00b09fa61112f1758f3482d9b4507a1d106c" - integrity sha512-OB5/LJfI2QptpFKMfcHxom5nXnobySI6o8UkoeRjzYgbV7ZyC1WtDMATJ/khAfzhBfWHvYVdFGtKffyDX+6kMQ== + version "1.4.14" + resolved "https://registry.yarnpkg.com/mammoth/-/mammoth-1.4.14.tgz#0400e20cc3f23ac81dd4c7718a444015bc5051f3" + integrity sha512-UbjaESwT6eCA/NAnrWHZV7w00cq/wsSqRDj/rzF/7S/oRMA3e0YUd75YJsmJbZlzRNUtTOfMFQfvwN/VJNs5Ag== dependencies: argparse "~1.0.3" bluebird "~3.4.0" @@ -7692,13 +8031,13 @@ md5.js@^1.3.4: safe-buffer "^5.1.2" md5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" - integrity sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== dependencies: - charenc "~0.0.1" - crypt "~0.0.1" - is-buffer "~1.1.1" + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" mdurl@^1.0.1: version "1.0.1" @@ -7799,17 +8138,22 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "1.43.0" + mime-db "1.44.0" mime@^1.4.1, mime@^1.5.0: version "1.6.0" @@ -7817,9 +8161,9 @@ mime@^1.4.1, mime@^1.5.0: integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.2.0: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== mimic-fn@^2.0.0, mimic-fn@^2.1.0: version "2.1.0" @@ -7831,14 +8175,13 @@ mimic-response@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -mini-create-react-context@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" - integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== +mini-create-react-context@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" + integrity sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ== dependencies: - "@babel/runtime" "^7.4.0" - gud "^1.0.0" - tiny-warning "^1.0.2" + "@babel/runtime" "^7.12.1" + tiny-warning "^1.0.3" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -7890,10 +8233,10 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minizlib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" - integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" yallist "^4.0.0" @@ -7929,29 +8272,34 @@ mixin-deep@^1.2.0: dependencies: minimist "^1.2.5" -mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.3: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mobx-react-lite@>=2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-2.0.7.tgz#1bfb3b4272668e288047cf0c7940b14e91cba284" - integrity sha512-YKAh2gThC6WooPnVZCoC+rV1bODAKFwkhxikzgH18wpBjkgTkkR9Sb0IesQAH5QrAEH/JQVmy47jcpQkf2Au3Q== +mktemp@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/mktemp/-/mktemp-0.4.0.tgz#6d0515611c8a8c84e484aa2000129b98e981ff0b" + integrity sha1-bQUVYRyKjITkhKogABKbmOmB/ws= + +mobx-react-lite@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz#87c217dc72b4e47b22493daf155daf3759f868a6" + integrity sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg== mobx-react@^6.2.5: - version "6.2.5" - resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.2.5.tgz#9020a17b79cc6dc3d124ad89ab36eb9ea540a45b" - integrity sha512-LxtXXW0GkOAO6VOIg2m/6WL6ZuKlzOWwESIFdrWelI0ZMIvtKCMZVUuulcO5GAWSDsH0ApaMkGLoaPqKjzyziQ== + version "6.3.1" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-6.3.1.tgz#204f9756e42e19d91cb6598837063b7e7de87c52" + integrity sha512-IOxdJGnRSNSJrL2uGpWO5w9JH5q5HoxEqwOF4gye1gmZYdjoYkkMzSGMDnRCUpN/BNzZcFoMdHXrjvkwO7KgaQ== dependencies: - mobx-react-lite ">=2.0.6" + mobx-react-lite "^2.2.0" mobx@4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/mobx/-/mobx-4.6.0.tgz#88a8ed21ff81b8861778c4b0d38e3dcdd1a7ddde" integrity sha512-qoX4BsUpA37yLzYAmNsApPiRlpMr8uwt+KYVTJNv9IhpD8NQVMno/K3EqZKAsiWo9IEvPOuQ0B6z7Z7ISjULpA== -moment-timezone@^0.5.25, moment-timezone@^0.5.31: +moment-timezone@^0.5.31: version "0.5.31" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05" integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA== @@ -7959,9 +8307,9 @@ moment-timezone@^0.5.25, moment-timezone@^0.5.31: moment ">= 2.9.0" "moment@>= 2.9.0", moment@^2.26.0: - version "2.27.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" - integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== move-concurrently@^1.0.1: version "1.0.1" @@ -7980,7 +8328,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -7995,9 +8343,9 @@ mz@2, mz@^2.6.0: thenify-all "^1.0.0" nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== nanomatch@^1.2.9: version "1.2.13" @@ -8063,6 +8411,11 @@ nocache@2.1.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== +node-fetch@2.6.1, node-fetch@^2.1.2, node-fetch@^2.3.0, node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -8071,15 +8424,10 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.1.2, node-fetch@^2.3.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - node-forge@^0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.1.tgz#775368e6846558ab6676858a4d8c6e8d16c677b5" - integrity sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ== + version "0.9.2" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.2.tgz#b35a44c28889b2ea55cabf8c79e3563f9676190a" + integrity sha512-naKSScof4Wn+aoHU6HBsifh92Zeicm1GDQKd1vp3Y/kOi8ub0DozCa9KpvYNCXslFHYRmLNiqRopGdTGwNLpNw== node-int64@^0.4.0: version "0.4.0" @@ -8120,22 +8468,22 @@ 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-notifier@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.2.tgz#3a70b1b70aca5e919d0b1b022530697466d9c675" - integrity sha512-ux+n4hPVETuTL8+daJXTOC6uKLgMsl1RYfFv7DKRzyvzBapqco0rZZ9g72ZN8VS6V+gvNYHYa/ofcCY8fkJWsA== +node-notifier@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" + integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== dependencies: growly "^1.3.0" is-wsl "^2.2.0" semver "^7.3.2" shellwords "^0.1.1" - uuid "^8.2.0" + uuid "^8.3.0" which "^2.0.2" -node-releases@^1.1.60: - version "1.1.60" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" - integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== +node-releases@^1.1.66: + version "1.1.66" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.66.tgz#609bd0dc069381015cd982300bae51ab4f1b1814" + integrity sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg== nodemailer@^4.4.0: version "4.7.0" @@ -8158,13 +8506,12 @@ nodemon@^1.19.4: undefsafe "^2.0.2" update-notifier "^2.5.0" -nopt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" - osenv "^0.1.4" nopt@~1.0.10: version "1.0.10" @@ -8209,6 +8556,13 @@ notepack.io@~2.2.0: resolved "https://registry.yarnpkg.com/notepack.io/-/notepack.io-2.2.0.tgz#d7ea71d1cb90094f88c6f3c8d84277c2d0cd101c" integrity sha512-9b5w3t5VSH6ZPosoYnyDONnUTF8o0UkBw7JLA6eBlYJWyGT1Q3vQa8Hmuj1/X6RYvHjjygBDgw6fJhe0JEojfw== +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -8264,12 +8618,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +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== -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -8281,15 +8635,15 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.1: + 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== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" object.entries@^1.1.0, object.entries@^1.1.2: version "1.1.2" @@ -8347,7 +8701,7 @@ on-finished@^2.3.0: dependencies: ee-first "1.1.1" -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -8355,9 +8709,9 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: wrappy "1" onetime@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.1.tgz#5c8016847b0d67fcedb7eef254751cfcdc7e9418" - integrity sha512-ZpZpjcJeugQfWsfyQlshVoowIIQ1qBGSVll4rfDq6JJVO//fesjoX808hXWfBjY+ROZgpKDI5TRSRBSoJiZ8eg== + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" @@ -8395,6 +8749,13 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + orderedmap@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.1.1.tgz#c618e77611b3b21d0fe3edc92586265e0059c789" @@ -8405,11 +8766,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-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -8427,19 +8783,11 @@ os-name@^3.1.0: macos-release "^2.2.0" windows-release "^3.1.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - outline-icons@^1.21.0: version "1.21.0" resolved "https://registry.yarnpkg.com/outline-icons/-/outline-icons-1.21.0.tgz#3e85b7959d0864adbf9a0362ded8fb64bcdcb10f" @@ -8533,6 +8881,11 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -8605,11 +8958,6 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -paralleljs@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/paralleljs/-/paralleljs-0.2.1.tgz#ebca745d3e09c01e2bebcc14858891ff4510e926" - integrity sha1-68p0XT4JwB4r68wUhYiR/0UQ6SY= - param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" @@ -8624,14 +8972,13 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - asn1.js "^4.0.0" + asn1.js "^5.2.0" browserify-aes "^1.0.0" - create-hash "^1.1.0" evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" safe-buffer "^5.1.1" @@ -8656,13 +9003,13 @@ parse-json@^2.2.0: error-ex "^1.2.0" parse-json@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.1.tgz#7cfe35c1ccd641bce3981467e6c2ece61b3b3878" - integrity sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ== + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" parse-passwd@^1.0.0: @@ -8675,6 +9022,13 @@ parse5@5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -8682,6 +9036,11 @@ parseqs@0.0.5: dependencies: better-assert "~1.0.0" +parseqs@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" + integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== + parseuri@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" @@ -8689,6 +9048,11 @@ parseuri@0.0.5: dependencies: better-assert "~1.0.0" +parseuri@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" + integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== + parseurl@^1.3.2: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -8769,9 +9133,9 @@ path-type@^4.0.0: integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -8784,10 +9148,10 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pg-connection-string@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.3.0.tgz#c13fcb84c298d0bfa9ba12b40dd6c23d946f55d6" - integrity sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w== +pg-connection-string@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.4.0.tgz#c979922eb47832999a204da5dbe1ebf2341b6a10" + integrity sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ== pg-hstore@^2.3.3: version "2.3.3" @@ -8801,15 +9165,15 @@ pg-int8@1.0.1: resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== -pg-pool@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0" - integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA== +pg-pool@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.2.tgz#a560e433443ed4ad946b84d774b3f22452694dff" + integrity sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA== -pg-protocol@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.2.5.tgz#28a1492cde11646ff2d2d06bdee42a3ba05f126c" - integrity sha512-1uYCckkuTfzz/FCefvavRywkowa6M5FohNMF5OjKrqo9PSR8gYc8poVmwwYQaBxhmQdBjhtP514eXy9/Us2xKg== +pg-protocol@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.4.0.tgz#43a71a92f6fe3ac559952555aa3335c8cb4908be" + integrity sha512-El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA== pg-types@^2.1.0: version "2.2.0" @@ -8823,25 +9187,24 @@ pg-types@^2.1.0: postgres-interval "^1.1.0" pg@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/pg/-/pg-8.3.0.tgz#941383300d38eef51ecb88a0188cec441ab64d81" - integrity sha512-jQPKWHWxbI09s/Z9aUvoTbvGgoj98AU7FDCcQ7kdejupn/TcNpx56v2gaOTzXkzOajmOEJEdi9eTh9cA2RVAjQ== + version "8.5.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.5.0.tgz#c29332763ffd51ce52b07dc20dc2337f4d213d08" + integrity sha512-h+KHEwce67pAQilZhMCpCx1RC7rR1US7mdjwvKzHRaRxKQxbbFtv5UlwjzqILQ1dwhK+RVGqOVcahE/2KOcaeA== dependencies: buffer-writer "2.0.0" packet-reader "1.0.0" - pg-connection-string "^2.3.0" - pg-pool "^3.2.1" - pg-protocol "^1.2.5" + pg-connection-string "^2.4.0" + pg-pool "^3.2.2" + pg-protocol "^1.4.0" pg-types "^2.1.0" pgpass "1.x" - semver "4.3.2" pgpass@1.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.2.tgz#2a7bb41b6065b67907e91da1b07c1847c877b306" - integrity sha1-Knu0G2BltnkH6R2hsHwYR8h3swY= + version "1.0.4" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.4.tgz#85eb93a83800b20f8057a2b029bf05abaf94ea9c" + integrity sha512-YmuA56alyBq7M59vxVBfPJrGSozru8QAdoNlWuW3cz8l+UX3cWge0vTvjKhsSHSJpo3Bom8/Mm6hf0TR5GY0+w== dependencies: - split "^1.0.0" + split2 "^3.1.1" picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" @@ -8909,9 +9272,9 @@ posix-character-classes@^0.1.0: integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-value-parser@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" - integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== postgres-array@~2.0.0: version "2.0.0" @@ -8924,9 +9287,9 @@ postgres-bytea@~1.0.0: integrity sha1-AntTPAqokOJtFy1Hz5zOzFIazTU= postgres-date@~1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.6.tgz#4925e8085b30c2ba1a06ac91b9a3473954a2ce2d" - integrity sha512-o2a4gxeFcox+CgB3Ig/kNHBP23PiEXHCXx7pcIIsvzoNz4qv+lKTyiSkjOXIMNUl12MO/mOYl2K6wR9X5K6Plg== + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== postgres-interval@^1.1.0: version "1.2.0" @@ -8962,38 +9325,38 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.16.4, prettier@^1.18.2: +prettier@^1.18.2: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== +prettier@^2.0.5, prettier@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" + integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: - renderkid "^2.0.1" - utila "~0.4" + lodash "^4.17.20" + renderkid "^2.0.4" -pretty-format@^26.2.0: - version "26.2.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.2.0.tgz#83ecc8d7de676ff224225055e72bd64821cec4f1" - integrity sha512-qi/8IuBu2clY9G7qCXgCdD1Bf9w+sXakdHTRToknzMtVy0g7c4MBWaZy7MfB7ndKZovRO6XRwJiAYqq+MC7SDA== +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: - "@jest/types" "^26.2.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" -prismjs@^1.19.0, prismjs@~1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.21.0.tgz#36c086ec36b45319ec4218ee164c110f9fc015a3" - integrity sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw== +prismjs@^1.19.0, prismjs@~1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.22.0.tgz#73c3400afc58a823dd7eed023f8e1ce9fd8977fa" + integrity sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w== optionalDependencies: clipboard "^2.0.0" @@ -9017,6 +9380,13 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise-map-series@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/promise-map-series/-/promise-map-series-0.2.3.tgz#c2d377afc93253f6bd03dbb77755eb88ab20a847" + integrity sha1-wtN3r8kyU/a9A9u3d1XriKsgqEc= + dependencies: + rsvp "^3.0.14" + promise.prototype.finally@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" @@ -9027,12 +9397,12 @@ promise.prototype.finally@^3.1.2: function-bind "^1.1.1" prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -9044,9 +9414,9 @@ prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, react-is "^16.8.1" property-information@^5.0.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.5.0.tgz#4dc075d493061a82e2b7d096f406e076ed859943" - integrity sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA== + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: xtend "^4.0.0" @@ -9104,24 +9474,24 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.1.4: w3c-keyname "^2.2.0" prosemirror-markdown@^1.4.4: - version "1.4.5" - resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.4.5.tgz#85fafc2401ef7e8057561a41a1c022d6249edf70" - integrity sha512-ExW/M5ryQulHH8KpydBN0Smpe5Pe7sxZju36fStBRsGoqlOm9pAja56shu2saN0UvL6TwOdfKzz6InepE+thfQ== + version "1.5.0" + resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.5.0.tgz#1c0129640c33e23217fbf80ebb24486a40a759c1" + integrity sha512-ugTyZfTu1l2E3EI6+DwD917mz2Sk5E4R01Nh67yMffGg4S9ZetC81g1VIKGCaak4jnoP4BMUIOUJyXAS6xFLaA== dependencies: markdown-it "^10.0.0" prosemirror-model "^1.0.0" prosemirror-model@^1.0.0, prosemirror-model@^1.1.0, prosemirror-model@^1.11.2, prosemirror-model@^1.8.1: - version "1.11.2" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.11.2.tgz#3ce08172b465bc725c8808c18c2e9378fe69418d" - integrity sha512-+gM+x1VUfGAyKR/g0bK7FC46fVNq0xVVL859QAQ7my2p5HzKrPps/pSbYn7T50XTG2r2IhZJChsUFUBHtcoN0Q== + version "1.12.0" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.12.0.tgz#deb6acbce5c62ea35ef3d59c7d4c54f65d6d9fba" + integrity sha512-B5syrXluQwEPfih8PqZcVg2VWRUf8Rj97K/VNSkQtjUPL1BCoTUgdLERIlxdWHkwqvujFsT3Pw5ubc4/ofF1jQ== dependencies: orderedmap "^1.1.0" prosemirror-schema-list@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.2.tgz#310809209094b03425da7f5c337105074913da6c" - integrity sha512-dgM9PwtM4twa5WsgSYMB+J8bwjnR43DAD3L9MsR9rKm/nZR5Y85xcjB7gusVMSsbQ2NomMZF03RE6No6mTnclQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.1.4.tgz#471f9caf2d2bed93641d2e490434c0d2d4330df1" + integrity sha512-pNTuZflacFOBlxrTcWSdWhjoB8BaucwfJVp/gJNxztOwaN3wQiC65axclXyplf6TKgXD/EkWfS/QAov3/Znadw== dependencies: prosemirror-model "^1.0.0" prosemirror-transform "^1.0.0" @@ -9145,13 +9515,20 @@ prosemirror-tables@^1.1.1: prosemirror-transform "^1.2.1" prosemirror-view "^1.13.3" -prosemirror-transform@1.2.5, prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1: +prosemirror-transform@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.2.5.tgz#7a3e2c61fcdbaf1d0844a2a3bc34fc3524e9809c" integrity sha512-eqeIaxWtUfOnpA1ERrXCuSIMzqIJtL9Qrs5uJMCjY5RMSaH5o4pc390SAjn/IDPeIlw6auh0hCCXs3wRvGnQug== dependencies: prosemirror-model "^1.0.0" +prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1: + version "1.2.8" + resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.2.8.tgz#4b86544fa43637fe381549fb7b019f4fb71fe65c" + integrity sha512-hKqceqv9ZmMQXNQkhFjr0KFGPvkhygaWND+uIM0GxRpALrKfxP97SsgHTBs3OpJhDmh5N+mB4D/CksB291Eavg== + dependencies: + prosemirror-model "^1.0.0" + prosemirror-utils@^0.9.6: version "0.9.6" resolved "https://registry.yarnpkg.com/prosemirror-utils/-/prosemirror-utils-0.9.6.tgz#3d97bd85897e3b535555867dc95a51399116a973" @@ -9187,9 +9564,9 @@ psl@^1.1.28: integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== pstree.remy@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" - integrity sha512-xsMgrUwRpuGskEzBFkH8NmTimbZ5PcPup0LA8JJkHIm2IMUbQcpo3yeLNWVrufEYjh8YwtSVh0xz6UeWc5Oh5A== + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== public-encrypt@^4.0.0: version "4.0.3" @@ -9219,7 +9596,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: +pumpify@^1.3.3, pumpify@^1.3.5: version "1.5.1" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== @@ -9244,9 +9621,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@^6.4.0: - version "6.9.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" - integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== qs@~6.5.2: version "6.5.2" @@ -9280,6 +9657,15 @@ querystring@0.2.0, querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +quick-temp@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/quick-temp/-/quick-temp-0.1.8.tgz#bab02a242ab8fb0dd758a3c9776b32f9a5d94408" + integrity sha1-urAqJCq4+w3XWKPJd2sy+aXZRAg= + dependencies: + mktemp "~0.4.0" + rimraf "^2.5.4" + underscore.string "~3.3.4" + quoted-printable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/quoted-printable/-/quoted-printable-1.0.1.tgz#9eebf5eb3d11eef022b264fd2d2b6b2bb3b84cc3" @@ -9356,21 +9742,22 @@ react-avatar-editor@^10.3.0: prop-types "^15.5.8" react-color@^2.17.3: - version "2.18.0" - resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.18.0.tgz#34956f0bac394f6c3bc01692fd695644cc775ffd" - integrity sha512-FyVeU1kQiSokWc8NPz22azl1ezLpJdUyTbWL0LPUpcuuYDrZ/Y1veOk9rRK5B3pMlyDGvTk4f4KJhlkIQNRjEA== + version "2.19.3" + resolved "https://registry.yarnpkg.com/react-color/-/react-color-2.19.3.tgz#ec6c6b4568312a3c6a18420ab0472e146aa5683d" + integrity sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA== dependencies: "@icons/material" "^0.2.4" - lodash "^4.17.11" + lodash "^4.17.15" + lodash-es "^4.17.15" material-colors "^1.2.1" prop-types "^15.5.10" reactcss "^1.2.0" tinycolor2 "^1.4.1" react-dom@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" + integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -9400,11 +9787,24 @@ react-helmet@^5.2.0: react-fast-compare "^2.0.2" react-side-effect "^1.1.0" -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.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== + dependencies: + "@babel/runtime" "^7.3.1" + html-parse-stringify2 "2.0.1" + +react-is@^16.6.0, react-is@^16.6.3, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + react-keydown@^1.7.3: version "1.9.12" resolved "https://registry.yarnpkg.com/react-keydown/-/react-keydown-1.9.12.tgz#9e10157775c9e3f21e124987e14af45a2ed52384" @@ -9440,28 +9840,28 @@ react-portal@^4.0.0, react-portal@^4.2.1: prop-types "^15.5.8" react-router-dom@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.1.2.tgz#06701b834352f44d37fbb6311f870f84c76b9c18" - integrity sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew== + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.2.0.tgz#9e65a4d0c45e13289e66c7b17c7e175d0ea15662" + integrity sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA== dependencies: "@babel/runtime" "^7.1.2" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.1.2" + react-router "5.2.0" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418" - integrity sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A== +react-router@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.0.tgz#424e75641ca8747fbf76e5ecca69781aa37ea293" + integrity sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw== dependencies: "@babel/runtime" "^7.1.2" history "^4.9.0" hoist-non-react-statics "^3.1.0" loose-envify "^1.3.1" - mini-create-react-context "^0.3.0" + mini-create-react-context "^0.4.0" path-to-regexp "^1.7.0" prop-types "^15.6.2" react-is "^16.6.0" @@ -9481,9 +9881,9 @@ react-virtualized-auto-sizer@^1.0.2: integrity sha512-MYXhTY1BZpdJFjUovvYHVBmkq79szK/k7V3MO+36gJkWGkrXKtyr4vCPtpphaTLRAdDNoYEYFZWE8LjN+PIHNg== react-waypoint@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-9.0.2.tgz#d65fb0fe6ff5c1b832a1d01b1462a661fb921e45" - integrity sha512-6tIr9NozeDH789Ox2tOkyDcmprYOx1+eII40dERLrZclFe6RhWAQ/bbd6B7cGild6onXNwPzg16y0/wHWQ/q+g== + version "9.0.3" + resolved "https://registry.yarnpkg.com/react-waypoint/-/react-waypoint-9.0.3.tgz#176aa4686b33eb40d0d48d361c468f0367167958" + integrity sha512-NRmyjW8CUBNNl4WpvBqLDgBs18rFUsixeHVHrRrFlWTdOlWP7eiDjptqlR/cJAPLD6RwP5XFCm3bi9OiofN3nA== dependencies: consolidated-events "^1.1.0 || ^2.0.0" prop-types "^15.0.0" @@ -9498,9 +9898,9 @@ react-window@^1.8.6: memoize-one ">=3.1.1 <6" react@^16.8.6: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + version "16.14.0" + resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -9549,7 +9949,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9562,7 +9962,7 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1: +readable-stream@^3.0.0, readable-stream@^3.1.1, 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== @@ -9580,10 +9980,10 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" @@ -9594,12 +9994,7 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -redis-commands@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.5.0.tgz#80d2e20698fe688f227127ff9e5164a7dd17e785" - integrity sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg== - -redis-commands@^1.5.0: +redis-commands@1.6.0, redis-commands@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.6.0.tgz#36d4ca42ae9ed29815cdb30ad9f97982eba1ce23" integrity sha512-2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ== @@ -9632,13 +10027,13 @@ referrer-policy@1.2.0: integrity sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA== refractor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.1.0.tgz#b05a43c8a1b4fccb30001ffcbd5cd781f7f06f78" - integrity sha512-bN8GvY6hpeXfC4SzWmYNQGLLF2ZakRDNBkgCL0vvl5hnpMrnyURk8Mv61v6pzn4/RBHzSWLp44SzMmVHqMGNww== + version "3.2.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.2.0.tgz#bc46f7cfbb6adbf45cd304e8e299b7fa854804e0" + integrity sha512-hSo+EyMIZTLBvNNgIU5lW4yjCzNYMZ4dcEhBq/3nReGfqzd2JfVhdlPDfU9rEsgcAyWx+OimIIUoL4ZU7NtYHQ== dependencies: - hastscript "^5.0.0" + hastscript "^6.0.0" parse-entities "^2.0.0" - prismjs "~1.21.0" + prismjs "~1.22.0" regenerate-unicode-properties@^8.2.0: version "8.2.0" @@ -9648,9 +10043,9 @@ regenerate-unicode-properties@^8.2.0: regenerate "^1.4.0" regenerate@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.11.0: version "0.11.1" @@ -9658,9 +10053,9 @@ regenerator-runtime@^0.11.0: integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== regenerator-transform@^0.14.2: version "0.14.5" @@ -9690,10 +10085,10 @@ regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== dependencies: regenerate "^1.4.0" regenerate-unicode-properties "^8.2.0" @@ -9734,21 +10129,38 @@ relateurl@0.2.x: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== +renderkid@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" + integrity sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g== dependencies: css-select "^1.1.0" dom-converter "^0.2" htmlparser2 "^3.3.0" + lodash "^4.17.20" strip-ansi "^3.0.0" - utila "^0.4.0" repeat-element@^1.1.2: version "1.1.3" @@ -9761,9 +10173,9 @@ repeat-string@^1.6.1: integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== request-promise-core@1.1.4: version "1.1.4" @@ -9869,6 +10281,13 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + resolve-path@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" @@ -9887,11 +10306,12 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.5.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.5.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: + is-core-module "^2.1.0" path-parse "^1.0.6" responselike@1.0.2: @@ -9945,7 +10365,7 @@ rich-markdown-editor@^11.0.7: smooth-scroll-into-view-if-needed "^1.1.27" typescript "3.7.5" -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@2, rimraf@^2.3.4, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -10000,7 +10420,12 @@ rope-sequence@^1.3.0: resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.2.tgz#a19e02d72991ca71feb6b5f8a91154e48e3c098b" integrity sha512-ku6MFrwEVSVmXLvy3dYph3LAMNS0890K7fabn+0YIRQ2T96T9F4gkFf0vf0WW0JUraNWwGRtInEpH7yO4tbQZg== -rsvp@^4.8.4: +rsvp@^3.0.14: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== + +rsvp@^4.8.2, rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== @@ -10017,10 +10442,10 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^1.1.0: version "1.1.0" @@ -10029,7 +10454,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -10108,21 +10533,30 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.5, schema-utils@^2.6.6: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -scroll-into-view-if-needed@^2.2.24: - version "2.2.24" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz#12bca532990769bd509115a49edcfa755e92a0ea" - integrity sha512-vsC6SzyIZUyJG8o4nbUDCiIwsPdH6W/FVmjT2avR2hp/yzS53JjGmg/bKD20TkoNajbu5dAQN4xR7yes4qhwtQ== +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== dependencies: - compute-scroll-into-view "^1.0.13" + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +scroll-into-view-if-needed@^2.2.26: + version "2.2.26" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.26.tgz#e4917da0c820135ff65ad6f7e4b7d7af568c4f13" + integrity sha512-SQ6AOKfABaSchokAmmaxVnL9IArxEnLEX9j4wAZw+x4iUTb40q7irtHG3z4GtAWz5veVZcCnubXDBRyLVQaohw== + dependencies: + compute-scroll-into-view "^1.0.16" select@^1.1.2: version "1.1.2" @@ -10141,11 +10575,6 @@ semver-diff@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.2.tgz#c7a07158a80bedd052355b770d82d6640f803be7" - integrity sha1-x6BxWKgL7dBSNVt3DYLWZA+AO+c= - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -10185,9 +10614,9 @@ sequelize-pool@^6.0.0: integrity sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg== sequelize@^6.3.4: - version "6.3.4" - resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.3.4.tgz#dd6f4801ba5e4d7a6f845a5ad3e616f24453694f" - integrity sha512-W6Y96N5QHTgEz5Q37v2GYbKufSXaw0b3v4rCLTPbcCMfIG0MHI42Ozp7IwiyV9bdNkfFEdY7XP8R6lWrWg4hUw== + version "6.3.5" + resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.3.5.tgz#80e3db7ac8b76d98c45ca93334197eb6e2335158" + integrity sha512-MiwiPkYSA8NWttRKAXdU9h0TxP6HAc1fl7qZmMO/VQqQOND83G4nZLXd0kWILtAoT9cxtZgFqeb/MPYgEeXwsw== dependencies: debug "^4.1.1" dottie "^2.0.0" @@ -10210,6 +10639,13 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -10245,6 +10681,11 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -10282,10 +10723,10 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== +shelljs@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -10297,12 +10738,12 @@ shellwords@^0.1.1: integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" + integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" + es-abstract "^1.18.0-next.0" + object-inspect "^1.8.0" sigmund@^1.0.1: version "1.0.1" @@ -10314,7 +10755,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -10367,16 +10808,16 @@ slug@^1.0.0: unicode ">= 0.3.1" slugify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.0.tgz#c9557c653c54b0c7f7a8e786ef3431add676d2cb" - integrity sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ== + version "1.4.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace" + integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ== smooth-scroll-into-view-if-needed@^1.1.27: - version "1.1.27" - resolved "https://registry.yarnpkg.com/smooth-scroll-into-view-if-needed/-/smooth-scroll-into-view-if-needed-1.1.27.tgz#88405e84448a9d3dd4e2c94f970e61d4d7187374" - integrity sha512-1BUbpRHzwro4MNhNpYCPA+d7G77G8k89UXPSx2A+UeJoAt3WiqrUHwT2oskXnir3p0wc4VTiRj41PQN9TEEIUw== + version "1.1.29" + resolved "https://registry.yarnpkg.com/smooth-scroll-into-view-if-needed/-/smooth-scroll-into-view-if-needed-1.1.29.tgz#4f532d9f0353dbca122e546fb062e7b5e0643734" + integrity sha512-UxvIEbmMEqwbw0aZI4SOAtwwkMaLYVION20bDQmazVp3sNb1+WIA5koukqoJizRuAAUANRmcBcrTnodcB7maqw== dependencies: - scroll-into-view-if-needed "^2.2.24" + scroll-into-view-if-needed "^2.2.26" snapdragon-node@^2.0.1: version "2.1.1" @@ -10434,18 +10875,18 @@ socket.io-client@2.3.0: to-array "0.1.4" socket.io-parser@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.0.tgz#2b52a96a509fdf31440ba40fed6094c7d4f1262f" - integrity sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng== + version "3.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" + integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== dependencies: - component-emitter "1.2.1" + component-emitter "~1.3.0" debug "~3.1.0" isarray "2.0.1" socket.io-parser@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.0.tgz#370bb4a151df2f77ce3345ff55a7072cc6e9565a" - integrity sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ== + version "3.4.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" + integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== dependencies: component-emitter "1.2.1" debug "~4.1.0" @@ -10517,7 +10958,7 @@ source-map-support@^0.4.0: dependencies: source-map "^0.5.6" -source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -10547,7 +10988,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -10565,30 +11006,30 @@ space-separated-tokens@^1.0.0: integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -10597,12 +11038,17 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== dependencies: - through "2" + readable-stream "^3.0.0" + +sprintf-js@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== sprintf-js@~1.0.2: version "1.0.3" @@ -10779,39 +11225,21 @@ string.prototype.matchall@^4.0.2: regexp.prototype.flags "^1.3.0" side-channel "^1.0.2" -string.prototype.trimend@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== +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== dependencies: define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== +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== dependencies: define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -10875,7 +11303,7 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -10891,9 +11319,9 @@ styled-components-breakpoint@^2.1.1: integrity sha512-PkS7p3MkPJx/v930Q3MPJU8llfFJTxk8o009jl0p+OUFmVb2AlHmVclX1MBHSXk8sZYGoVTTVIPDuZCELi7QIg== styled-components@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.1.1.tgz#96dfb02a8025794960863b9e8e365e3b6be5518d" - integrity sha512-1ps8ZAYu2Husx+Vz8D+MvXwEwvMwFv+hqqUwhNlDN5ybg6A+3xyW1ECrAgywhvXapNfXiz79jJyU0x22z0FFTg== + version "5.2.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.1.tgz#6ed7fad2dc233825f64c719ffbdedd84ad79101a" + integrity sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" @@ -10939,9 +11367,9 @@ supports-color@^6.1.0: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -10958,6 +11386,11 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +symlink-or-copy@^1.1.8: + version "1.3.1" + resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz#9506dd64d8e98fa21dcbf4018d1eab23e77f71fe" + integrity sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA== + table@^5.0.2, table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -10974,14 +11407,14 @@ tapable@^1.0.0, tapable@^1.1.3: integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tar@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" - integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" minipass "^3.0.0" - minizlib "^2.1.0" + minizlib "^2.1.1" mkdirp "^1.0.3" yallist "^4.0.0" @@ -11016,18 +11449,18 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser-webpack-plugin@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz#6e9d6ae4e1a900d88ddce8da6a47507ea61f44bc" - integrity sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA== + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== dependencies: cacache "^15.0.5" find-cache-dir "^3.3.1" - jest-worker "^26.3.0" + jest-worker "^26.5.0" p-limit "^3.0.2" - schema-utils "^2.6.6" - serialize-javascript "^4.0.0" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" source-map "^0.6.1" - terser "^5.0.0" + terser "^5.3.4" webpack-sources "^1.4.3" terser@^4.1.2: @@ -11039,14 +11472,14 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.0.0.tgz#269640e4e92f15d628de1e5f01c4c61e1ba3d765" - integrity sha512-olH2DwGINoSuEpSGd+BsPuAQaA3OrHnHnFL/rDB2TVNc3srUbz/rq/j2BlF4zDXI+JqAvGr86bIm1R2cJgZ3FA== +terser@^5.3.4: + version "5.3.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd" + integrity sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map "~0.7.2" + source-map-support "~0.5.19" test-exclude@^6.0.0: version "6.0.0" @@ -11070,9 +11503,9 @@ thenify-all@^1.0.0: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" @@ -11081,7 +11514,15 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through2@^2.0.0: +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0, through2@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -11089,7 +11530,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, through@^2.3.8: +through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -11105,9 +11546,9 @@ timed-out@^4.0.0, timed-out@^4.0.1: integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: setimmediate "^1.0.4" @@ -11139,15 +11580,15 @@ tiny-warning@^0.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-0.0.3.tgz#1807eb4c5f81784a6354d58ea1d5024f18c6c81f" integrity sha512-r0SSA5Y5IWERF9Xh++tFPx0jITBgGggOsRLDWWew6YRw/C2dr4uNO1fw1vanrBmHsICmPyMLNBZboTlxUmUuaA== -tiny-warning@^1.0.0, tiny-warning@^1.0.2: +tiny-warning@^1.0.0, tiny-warning@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== tinycolor2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" - integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + version "1.4.2" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" + integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA== tippy.js@^4.3.4: version "4.3.5" @@ -11168,6 +11609,14 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -11220,6 +11669,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + toggle-selection@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" @@ -11287,9 +11743,9 @@ tsconfig-paths@^3.9.0: strip-bom "^3.0.0" tslib@^1.9.0, tslib@^1.9.3: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tsscmp@1.0.6: version "1.0.6" @@ -11373,9 +11829,9 @@ type@^1.0.1: integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -11399,10 +11855,15 @@ typescript@3.7.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== -typescript@^3.4: - version "3.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9" - integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw== +typescript@^3.6.4: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +typescript@^4.0.2: + version "4.0.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" + integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" @@ -11429,6 +11890,11 @@ umzug@^2.3.0: dependencies: bluebird "^3.7.2" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + undefsafe@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" @@ -11436,10 +11902,18 @@ undefsafe@^2.0.2: dependencies: debug "^2.2.0" +underscore.string@~3.3.4: + version "3.3.5" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" + integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + underscore@^1.7.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" - integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== + version "1.11.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.11.0.tgz#dd7c23a195db34267186044649870ff1bab5929e" + integrity sha512-xY96SsN3NA461qIRKZ/+qox37YXPtSBswMGfiNptr+wrt6ds4HaMw23TP612fEyGekRE6LNRiLYr/aqbHXNedw== underscore@~1.4.4: version "1.4.4" @@ -11503,6 +11977,14 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -11517,18 +11999,26 @@ universal-user-agent@^4.0.0: dependencies: os-name "^3.1.0" -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -11589,9 +12079,9 @@ upper-case@^1.1.1: integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" @@ -11654,7 +12144,7 @@ utf8@^2.1.0: resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.2.tgz#1fa0d9270e9be850d9b05027f63519bf46457d96" integrity sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY= -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -11691,7 +12181,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -utila@^0.4.0, utila@~0.4: +utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= @@ -11706,25 +12196,25 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.1.0, uuid@^8.2.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" - integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== +uuid@^8.1.0, uuid@^8.3.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" + integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -v8-to-istanbul@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" - integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== +v8-to-istanbul@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -11753,6 +12243,11 @@ value-equal@^1.0.1: resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + vary@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -11767,10 +12262,46 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== +vinyl-fs@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0, vinyl@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== dependencies: clone "^2.1.1" clone-buffer "^1.0.0" @@ -11779,11 +12310,37 @@ vinyl@^2.0.1: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vinyl@~2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c" + integrity sha1-CjcT2NTpIhxY8QyhbAEWyeJe2nw= + dependencies: + clone "^1.0.0" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + is-stream "^1.1.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +vue-template-compiler@^2.6.11: + version "2.6.12" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" + integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -11817,23 +12374,23 @@ warning@^4.0.3: dependencies: loose-envify "^1.0.0" -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" optionalDependencies: chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" + watchpack-chokidar2 "^2.0.1" webidl-conversions@^5.0.0: version "5.0.0" @@ -11945,10 +12502,10 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@>=0.10.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.4.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" + integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== whatwg-mimetype@^2.3.0: version "2.3.0" @@ -11956,13 +12513,13 @@ whatwg-mimetype@^2.3.0: integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" - integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== dependencies: lodash.sortby "^4.7.0" tr46 "^2.0.2" - webidl-conversions "^5.0.0" + webidl-conversions "^6.1.0" which-module@^2.0.0: version "2.0.0" @@ -11991,9 +12548,9 @@ widest-line@^2.0.0: string-width "^2.1.1" windows-release@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" - integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ== + version "3.3.3" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" + integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== dependencies: execa "^1.0.0" @@ -12074,9 +12631,9 @@ write@1.0.3: mkdirp "^0.5.1" ws@^7.1.2, ws@^7.2.3: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + version "7.4.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.0.tgz#a5dd76a24197940d4a8bb9e0e152bb4503764da7" + integrity sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ== ws@~6.1.0: version "6.1.4" @@ -12128,7 +12685,7 @@ xmlhttprequest-ssl@~1.5.4: resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, 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== @@ -12153,11 +12710,19 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.7.2: +yaml@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yamljs@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" + integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== + dependencies: + argparse "^1.0.7" + glob "^7.0.5" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -12216,7 +12781,7 @@ yargs@^13.1.0, yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.3.1: +yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==