From be721c5bcb0b05d484294cc53bed95ae8a3e2f9e Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:00:54 +0000 Subject: [PATCH 001/275] Create TS compatible version of replaceableComponent --- src/utils/replaceableComponent.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/utils/replaceableComponent.ts b/src/utils/replaceableComponent.ts index 8c29fdf037..f83e0c95c1 100644 --- a/src/utils/replaceableComponent.ts +++ b/src/utils/replaceableComponent.ts @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import { func } from 'prop-types'; import * as React from 'react'; import * as sdk from '../index'; @@ -38,3 +39,12 @@ export function replaceableComponent(name: string, origComponent: React.Componen // return a falsey value like `null` when the skin doesn't have a component. return () => sdk.getComponent(name) || origComponent; } + +/** + * Typescript-compatible version of `replaceableComponent` + * @see replaceableComponent + * @param {string} name The dot-path name of the component being replaced. + */ +export function replaceableComponentTs(name: string) { + return (origComponent: typeof React.Component) => sdk.getComponent(name) || origComponent; +} \ No newline at end of file From 86200e551985e4119f193da7818dd9ecc4c828ae Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:01:16 +0000 Subject: [PATCH 002/275] Convert BridgeTile to Typescript --- .../views/settings/{BridgeTile.js => BridgeTile.tsx} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename src/components/views/settings/{BridgeTile.js => BridgeTile.tsx} (95%) diff --git a/src/components/views/settings/BridgeTile.js b/src/components/views/settings/BridgeTile.tsx similarity index 95% rename from src/components/views/settings/BridgeTile.js rename to src/components/views/settings/BridgeTile.tsx index e9c58518e4..a6b607b01e 100644 --- a/src/components/views/settings/BridgeTile.js +++ b/src/components/views/settings/BridgeTile.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; +import React, { ReactNode } from 'react'; import PropTypes from 'prop-types'; import {getHttpUriForMxc} from "matrix-js-sdk/src/content-repo"; import {_t} from "../../../languageHandler"; @@ -23,10 +23,10 @@ import Pill from "../elements/Pill"; import {makeUserPermalink} from "../../../utils/permalinks/Permalinks"; import BaseAvatar from "../avatars/BaseAvatar"; import AccessibleButton from "../elements/AccessibleButton"; -import {replaceableComponent} from "../../../utils/replaceableComponent"; +import {replaceableComponentTs} from "../../../utils/replaceableComponent"; import SettingsStore from "../../../settings/SettingsStore"; -@replaceableComponent("views.settings.BridgeTile") +@replaceableComponentTs("views.settings.BridgeTile") export default class BridgeTile extends React.PureComponent { static propTypes = { ev: PropTypes.object.isRequired, @@ -43,7 +43,7 @@ export default class BridgeTile extends React.PureComponent { }); } - render() { + render(): ReactNode { const content = this.props.ev.getContent(); const { channel, network, protocol } = content; const protocolName = protocol.displayname || protocol.id; From 8e6061b37aebbdc158713d9431e7d5a60b8cbb30 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:05:30 +0000 Subject: [PATCH 003/275] Ts tweaks --- src/components/views/settings/BridgeTile.tsx | 33 +++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index a6b607b01e..f38e97ee9b 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -25,9 +25,20 @@ import BaseAvatar from "../avatars/BaseAvatar"; import AccessibleButton from "../elements/AccessibleButton"; import {replaceableComponentTs} from "../../../utils/replaceableComponent"; import SettingsStore from "../../../settings/SettingsStore"; +import type {MatrixEvent} from "matrix-js-sdk/src/models/event"; +import { Room } from "matrix-js-sdk/src/models/room"; + +interface IProps { + ev: MatrixEvent; + room: Room; +} + +interface IState { + visible: boolean; +} @replaceableComponentTs("views.settings.BridgeTile") -export default class BridgeTile extends React.PureComponent { +export default class BridgeTile extends React.PureComponent { static propTypes = { ev: PropTypes.object.isRequired, room: PropTypes.object.isRequired, @@ -43,7 +54,7 @@ export default class BridgeTile extends React.PureComponent { }); } - render(): ReactNode { + render() { const content = this.props.ev.getContent(); const { channel, network, protocol } = content; const protocolName = protocol.displayname || protocol.id; @@ -53,22 +64,22 @@ export default class BridgeTile extends React.PureComponent { let creator = null; if (content.creator) { creator = _t("This bridge was provisioned by .", {}, { - user: , + user: () => , }); } const bot = _t("This bridge is managed by .", {}, { - user: , + />, }); let networkIcon; @@ -88,7 +99,7 @@ export default class BridgeTile extends React.PureComponent { url={ avatarUrl } />; } else { - networkIcon =
; + networkIcon =
; } const id = this.props.ev.getId(); From 8d203043d40ad6959405b4b115893213ed7b6a16 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:47:27 +0000 Subject: [PATCH 004/275] Remove hide/show behaviour --- .../dialogs/_RoomSettingsDialogBridges.scss | 18 ++++------- src/components/views/settings/BridgeTile.tsx | 32 ++++++------------- 2 files changed, 15 insertions(+), 35 deletions(-) diff --git a/res/css/views/dialogs/_RoomSettingsDialogBridges.scss b/res/css/views/dialogs/_RoomSettingsDialogBridges.scss index a1793cc75e..c97a3b69b7 100644 --- a/res/css/views/dialogs/_RoomSettingsDialogBridges.scss +++ b/res/css/views/dialogs/_RoomSettingsDialogBridges.scss @@ -89,24 +89,18 @@ limitations under the License. } } - .mx_showMore { - display: block; - text-align: left; - margin-top: 10px; - } - .metadata { color: $muted-fg-color; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; margin-bottom: 0; - } - - .metadata.visible { overflow-y: visible; text-overflow: ellipsis; white-space: normal; + padding: 0; + + > li { + padding: 0; + border: 0; + } } } } diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index f38e97ee9b..ae8faec489 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -33,26 +33,16 @@ interface IProps { room: Room; } -interface IState { - visible: boolean; +/** } @replaceableComponentTs("views.settings.BridgeTile") -export default class BridgeTile extends React.PureComponent { +export default class BridgeTile extends React.PureComponent { static propTypes = { ev: PropTypes.object.isRequired, room: PropTypes.object.isRequired, } - state = { - visible: false, - } - - _toggleVisible() { - this.setState({ - visible: !this.state.visible, - }); - } render() { const content = this.props.ev.getContent(); @@ -63,24 +53,24 @@ export default class BridgeTile extends React.PureComponent { let creator = null; if (content.creator) { - creator = _t("This bridge was provisioned by .", {}, { + creator =
  • {_t("This bridge was provisioned by .", {}, { user: () => , - }); + })}
  • ; } - const bot = _t("This bridge is managed by .", {}, { + const bot =
  • {_t("This bridge is managed by .", {}, { user: () => , - }); + })}
  • ; let networkIcon; @@ -103,7 +93,6 @@ export default class BridgeTile extends React.PureComponent { } const id = this.props.ev.getId(); - const metadataClassname = "metadata" + (this.state.visible ? " visible" : ""); return (
  • {networkIcon} @@ -114,12 +103,9 @@ export default class BridgeTile extends React.PureComponent { {_t("Workspace: %(networkName)s", {networkName})} {_t("Channel: %(channelName)s", {channelName})}

    -

    +

      {creator} {bot} -

      - - { this.state.visible ? _t("Show less") : _t("Show more") } - +
  • ); } From e448da0bcddb81e43f200dfe8031f9446e61575c Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:47:51 +0000 Subject: [PATCH 005/275] Add interface for event content, and validate --- src/components/views/settings/BridgeTile.tsx | 32 ++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index ae8faec489..3fb184d828 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -25,7 +25,7 @@ import BaseAvatar from "../avatars/BaseAvatar"; import AccessibleButton from "../elements/AccessibleButton"; import {replaceableComponentTs} from "../../../utils/replaceableComponent"; import SettingsStore from "../../../settings/SettingsStore"; -import type {MatrixEvent} from "matrix-js-sdk/src/models/event"; +import {MatrixEvent} from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; interface IProps { @@ -34,6 +34,29 @@ interface IProps { } /** + * This should match https://github.com/matrix-org/matrix-doc/blob/hs/msc-bridge-inf/proposals/2346-bridge-info-state-event.md#mbridge + */ +interface IBridgeStateEvent { + bridgebot: string; + creator?: string; + protocol: { + id: string; + displayname?: string; + avatar_url?: string; + external_url?: string; + }; + network?: { + id: string; + displayname?: string; + avatar_url?: string; + external_url?: string; + }; + channel: { + id: string; + displayname?: string; + avatar_url?: string; + external_url?: string; + }; } @replaceableComponentTs("views.settings.BridgeTile") @@ -45,7 +68,12 @@ export default class BridgeTile extends React.PureComponent { render() { - const content = this.props.ev.getContent(); + const content: IBridgeStateEvent = this.props.ev.getContent(); + // Validate + if (!content.bridgebot || !content.channel?.id || !content.protocol?.id) { + console.warn(`Bridge info event ${this.props.ev.getId()} has missing content. Tile will not render`); + return null; + } const { channel, network, protocol } = content; const protocolName = protocol.displayname || protocol.id; const channelName = channel.displayname || channel.id; From d6312606e6e6afd362549670e3b9c98ad9777b21 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:48:10 +0000 Subject: [PATCH 006/275] Use correct key for avatar --- src/components/views/settings/BridgeTile.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index 3fb184d828..f47d47cb40 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -66,7 +66,6 @@ export default class BridgeTile extends React.PureComponent { room: PropTypes.object.isRequired, } - render() { const content: IBridgeStateEvent = this.props.ev.getContent(); // Validate @@ -77,7 +76,6 @@ export default class BridgeTile extends React.PureComponent { const { channel, network, protocol } = content; const protocolName = protocol.displayname || protocol.id; const channelName = channel.displayname || channel.id; - const networkName = network ? network.displayname || network.id : protocolName; let creator = null; if (content.creator) { @@ -102,10 +100,10 @@ export default class BridgeTile extends React.PureComponent { let networkIcon; - if (protocol.avatar) { + if (protocol.avatar_url) { const avatarUrl = getHttpUriForMxc( MatrixClientPeg.get().getHomeserverUrl(), - protocol.avatar, 64, 64, "crop", + protocol.avatar_url, 64, 64, "crop", ); networkIcon = Date: Mon, 30 Nov 2020 12:48:26 +0000 Subject: [PATCH 007/275] Add support for linking to the remote network page --- src/components/views/settings/BridgeTile.tsx | 23 ++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index f47d47cb40..062fdbeb6e 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -27,6 +27,7 @@ import {replaceableComponentTs} from "../../../utils/replaceableComponent"; import SettingsStore from "../../../settings/SettingsStore"; import {MatrixEvent} from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; +import { isUrlPermitted } from '../../../HtmlUtils'; interface IProps { ev: MatrixEvent; @@ -117,6 +118,22 @@ export default class BridgeTile extends React.PureComponent { } else { networkIcon =
    ; } + let networkItem = null; + if (network) { + const networkName = network.displayname || network.id; + let networkLink = {networkName}; + if (typeof network.external_url === "string" && isUrlPermitted(network.external_url)) { + networkLink = {networkName} + } + networkItem = _t("Workspace: ", {}, { + networkLink: () => networkLink, + }); + } + + let channelLink = {channelName}; + if (typeof channel.external_url === "string" && isUrlPermitted(channel.external_url)) { + channelLink = {channelName} + } const id = this.props.ev.getId(); return (
  • @@ -126,8 +143,10 @@ export default class BridgeTile extends React.PureComponent {

    {protocolName}

    - {_t("Workspace: %(networkName)s", {networkName})} - {_t("Channel: %(channelName)s", {channelName})} + {networkItem} + {_t("Channel: ", {}, { + channelLink: () => channelLink + })}

      {creator} {bot} From e7693dc95d7a84ab225f6beb58521c3c278ed447 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 12:50:57 +0000 Subject: [PATCH 008/275] Update variable in translation files --- src/i18n/strings/ar.json | 2 +- src/i18n/strings/cs.json | 4 ++-- src/i18n/strings/de_DE.json | 4 ++-- src/i18n/strings/en_EN.json | 4 ++-- src/i18n/strings/eo.json | 4 ++-- src/i18n/strings/es.json | 4 ++-- src/i18n/strings/et.json | 4 ++-- src/i18n/strings/eu.json | 4 ++-- src/i18n/strings/fi.json | 4 ++-- src/i18n/strings/fr.json | 4 ++-- src/i18n/strings/gl.json | 4 ++-- src/i18n/strings/hu.json | 4 ++-- src/i18n/strings/it.json | 4 ++-- src/i18n/strings/kab.json | 4 ++-- src/i18n/strings/lt.json | 4 ++-- src/i18n/strings/nl.json | 4 ++-- src/i18n/strings/pt_BR.json | 4 ++-- src/i18n/strings/ru.json | 4 ++-- src/i18n/strings/sk.json | 4 ++-- src/i18n/strings/sq.json | 4 ++-- src/i18n/strings/sv.json | 4 ++-- src/i18n/strings/tr.json | 4 ++-- src/i18n/strings/uk.json | 4 ++-- src/i18n/strings/zh_Hans.json | 4 ++-- src/i18n/strings/zh_Hant.json | 4 ++-- 25 files changed, 49 insertions(+), 49 deletions(-) diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index 5da09afd23..a58e53555e 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -1056,7 +1056,7 @@ "Failed to upload profile picture!": "تعذَّر رفع صورة الملف الشخصي!", "Show more": "أظهر أكثر", "Show less": "أظهر أقل", - "Channel: %(channelName)s": "قناة: %(channelName)s", + "Channel: ": "قناة: %(channelName)s", "This bridge is managed by .": "هذا الجسر يديره .", "Upload": "رفع", "Accept to continue:": "قبول للمتابعة:", diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 4d9d27363f..c7c09b02a3 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -1753,8 +1753,8 @@ "Review": "Prohlédnout", "This bridge was provisioned by .": "Toto propojení poskytuje .", "This bridge is managed by .": "Toto propojení spravuje .", - "Workspace: %(networkName)s": "Workspace: %(networkName)s", - "Channel: %(channelName)s": "Kanál: %(channelName)s", + "Workspace: ": "Workspace: ", + "Channel: ": "Kanál: %(channelName)s", "Show less": "Skrýt detaily", "Show more": "Více", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Změna hesla resetuje šifrovací klíče pro všechny vaše relace. Pokud si nejdřív nevyexportujete klíče místností a po změně je znovu neimportujete, nedostanete se k historickým zprávám. V budoucnu se toto zjednoduší.", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 5d5ca50fc9..0c4eb8dca9 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1668,8 +1668,8 @@ "Verify yourself & others to keep your chats safe": "Verifiziere dich & andere, um eure Chats zu schützen", "This bridge was provisioned by .": "Diese Brücke wurde von bereitgestellt.", "This bridge is managed by .": "Diese Brücke wird von verwaltet.", - "Workspace: %(networkName)s": "Arbeitsbereich: %(networkName)s", - "Channel: %(channelName)s": "Kanal: %(channelName)s", + "Workspace: ": "Arbeitsbereich: ", + "Channel: ": "Kanal: %(channelName)s", "Show less": "Weniger zeigen", "Warning: You should only set up key backup from a trusted computer.": "Achtung: Du solltest die Schlüsselsicherung nur auf einem vertrauenswürdigen Gerät einrichten.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Melde dich an um die ausschließlich in dieser Sitzung gespeicherten Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten in jeder Sitzung zu lesen.", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index eb1d0a632e..494909800c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -955,8 +955,8 @@ "Upload": "Upload", "This bridge was provisioned by .": "This bridge was provisioned by .", "This bridge is managed by .": "This bridge is managed by .", - "Workspace: %(networkName)s": "Workspace: %(networkName)s", - "Channel: %(channelName)s": "Channel: %(channelName)s", + "Workspace: ": "Workspace: ", + "Channel: ": "Channel: ", "Show less": "Show less", "Show more": "Show more", "Failed to upload profile picture!": "Failed to upload profile picture!", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 3545565fa3..9ea4af86ee 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -1720,7 +1720,7 @@ "They don't match": "Ili ne akordas", "To be secure, do this in person or use a trusted way to communicate.": "Por plia sekureco, faru tion persone, aŭ uzu alian fidatan komunikilon.", "Verify yourself & others to keep your chats safe": "Kontrolu vin mem kaj aliajn por sekurigi viajn babilojn", - "Channel: %(channelName)s": "Kanalo: %(channelName)s", + "Channel: ": "Kanalo: %(channelName)s", "Show less": "Montri malpli", "Show more": "Montri pli", "Help": "Helpo", @@ -1760,7 +1760,7 @@ "Review": "Rekontroli", "This bridge was provisioned by .": "Ĉi tiu ponto estas provizita de .", "This bridge is managed by .": "Ĉi tiu ponto estas administrata de .", - "Workspace: %(networkName)s": "Labortablo: %(networkName)s", + "Workspace: ": "Labortablo: ", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ŝanĝo de pasvorto nuntempe restarigos ĉiujn tutvoje ĉifrajn ŝlosilojn en ĉiuj salutaĵoj, malebligante legadon de ĉifrita historio, malse vi unue elportus la ŝlosilojn de viaj ĉambroj kaj reenportus ilin poste. Ĉi tion ni plibonigos ose.", "Your homeserver does not support cross-signing.": "Via hejmservilo ne subtenas delegajn subskribojn.", "Cross-signing and secret storage are enabled.": "Delegaj subskriboj kaj sekreta deponejo estas ŝaltitaj.", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 34c40800f7..1635284e58 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1209,8 +1209,8 @@ "Verify": "Verificar", "Later": "Más tarde", "Upload": "Subir", - "Workspace: %(networkName)s": "Espacio de trabajo: %(networkName)s", - "Channel: %(channelName)s": "Canal: %(channelName)s", + "Workspace: ": "Espacio de trabajo: ", + "Channel: ": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar más", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Cambiar la contraseña reiniciará cualquier clave de encriptación end-to-end en todas las sesiones, haciendo el historial de conversaciones encriptado ilegible, a no ser que primero exportes tus claves de sala y después las reimportes. En un futuro esto será mejorado.", diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 0b338bd9d4..868d04e0ee 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -1804,8 +1804,8 @@ "Waiting for your other session to verify…": "Ootan, et sinu teine sessioon alustaks verifitseerimist…", "This bridge was provisioned by .": "Selle võrgusilla võttis kasutusele .", "This bridge is managed by .": "Seda võrgusilda haldab .", - "Workspace: %(networkName)s": "Tööruum: %(networkName)s", - "Channel: %(channelName)s": "Kanal: %(channelName)s", + "Workspace: ": "Tööruum: ", + "Channel: ": "Kanal: %(channelName)s", "Upload new:": "Lae üles uus:", "Export E2E room keys": "Ekspordi jututubade läbiva krüptimise võtmed", "Your homeserver does not support cross-signing.": "Sinu koduserver ei toeta risttunnustamist.", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 2740ea2079..37deb7e774 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -1805,8 +1805,8 @@ "Verify yourself & others to keep your chats safe": "Egiaztatu zure burua eta besteak txatak seguru mantentzeko", "Review": "Berrikusi", "This bridge was provisioned by .": "Zubi hau erabiltzaileak hornitu du.", - "Workspace: %(networkName)s": "Lan eremua: %(networkName)s", - "Channel: %(channelName)s": "Kanala: %(channelName)s", + "Workspace: ": "Lan eremua: ", + "Channel: ": "Kanala: %(channelName)s", "Show less": "Erakutsi gutxiago", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pasahitza aldatzean oraingo muturretik muturrerako zifratze gako guztiak ezeztatuko ditu saio guztietan, zifratutako txaten historiala ezin izango da irakurri ez badituzu aurretik zure geletako gakoak esportatzen eta gero berriro inportatzen. Etorkizunean hau hobetuko da.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Zure kontuak zeharkako sinatze identitate bat du biltegi sekretuan, baina saio honek ez du oraindik fidagarritzat.", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 075c1e278a..47f11c2b57 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1876,8 +1876,8 @@ "Review": "Katselmoi", "This bridge was provisioned by .": "Tämän sillan tarjoaa käyttäjä .", "This bridge is managed by .": "Tätä siltaa hallinnoi käyttäjä .", - "Workspace: %(networkName)s": "Työtila: %(networkName)s", - "Channel: %(channelName)s": "Kanava: %(channelName)s", + "Workspace: ": "Työtila: ", + "Channel: ": "Kanava: %(channelName)s", "Delete %(count)s sessions|other": "Poista %(count)s istuntoa", "Enable": "Ota käyttöön", "Backup is not signed by any of your sessions": "Mikään istuntosi ei ole allekirjoittanut varmuuskopiota", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index efae1f7b26..f1cb24a686 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1809,8 +1809,8 @@ "They match": "Ils correspondent", "They don't match": "Ils ne correspondent pas", "This bridge was provisioned by .": "Cette passerelle a été fournie par .", - "Workspace: %(networkName)s": "Espace de travail : %(networkName)s", - "Channel: %(channelName)s": "Canal : %(channelName)s", + "Workspace: ": "Espace de travail : ", + "Channel: ": "Canal : %(channelName)s", "Show less": "En voir moins", "This room is bridging messages to the following platforms. Learn more.": "Ce salon transmet les messages vers les plateformes suivantes. En savoir plus.", "This room isn’t bridging messages to any platforms. Learn more.": "Ce salon ne transmet les messages à aucune plateforme. En savoir plus.", diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index fec99d1e7c..5afa95e29c 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -1307,8 +1307,8 @@ "Upload": "Subir", "This bridge was provisioned by .": "Esta ponte está proporcionada por .", "This bridge is managed by .": "Esta ponte está xestionada por .", - "Workspace: %(networkName)s": "Espazo de traballo: %(networkName)s", - "Channel: %(channelName)s": "Canal: %(channelName)s", + "Workspace: ": "Espazo de traballo: ", + "Channel: ": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar máis", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao cambiar o contrasinal vas restablecer todas as chaves de cifrado extremo-a-extremo en tódalas sesións, facendo que o historial de conversa cifrado non sexa lexible, a menos que primeiro exportes todas as chaves das salas e as importes posteriormente. No futuro melloraremos o procedemento.", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 2739154c19..6ced904206 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1793,8 +1793,8 @@ "Enable message search in encrypted rooms": "Üzenetek keresésének bekapcsolása a titkosított szobákban", "Review": "Átnéz", "This bridge was provisioned by .": "Ezt a hidat az alábbi felhasználó készítette: .", - "Workspace: %(networkName)s": "Munkahely: %(networkName)s", - "Channel: %(channelName)s": "Csatorna: %(channelName)s", + "Workspace: ": "Munkahely: ", + "Channel: ": "Csatorna: %(channelName)s", "Show less": "Kevesebbet mutat", "Securely cache encrypted messages locally for them to appear in search results, using ": "A titkosított üzenetek kereséséhez azokat biztonságos módon helyileg kell tárolnod, felhasználva: ", " to store messages from ": " üzenetek tárolásához ", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 4ad806f55e..edb584c894 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1797,8 +1797,8 @@ "They don't match": "Non corrispondono", "Review": "Controlla", "This bridge was provisioned by .": "Questo bridge è stato fornito da .", - "Workspace: %(networkName)s": "Spazio di lavoro: %(networkName)s", - "Channel: %(channelName)s": "Canale: %(channelName)s", + "Workspace: ": "Spazio di lavoro: ", + "Channel: ": "Canale: %(channelName)s", "Show less": "Mostra meno", "Securely cache encrypted messages locally for them to appear in search results, using ": "Tieni in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca, usando ", " to store messages from ": " per conservare i messaggi da ", diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 7a9261f25c..aaeb309edb 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -847,8 +847,8 @@ "Accept to continue:": "Qbel i wakken ad tkemmleḍ:", "This bridge was provisioned by .": "Tileggit-a tella-d sɣur .", "This bridge is managed by .": "Tileggit-a tettusefrak sɣur .", - "Workspace: %(networkName)s": "Tallunt n uxeddim: %(networkName)s", - "Channel: %(channelName)s": "Abadu: %(channelName)s", + "Workspace: ": "Tallunt n uxeddim: ", + "Channel: ": "Abadu: %(channelName)s", "Upload new:": "Asali amaynut:", "New passwords don't match": "Awalen uffiren imaynuten ur mṣadan ara", "Passwords can't be empty": "Awalen uffiren ur ilaq ara ad ilin d ilmawen", diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index c1191aa020..756fe77bfd 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -1953,8 +1953,8 @@ "not found in storage": "saugykloje nerasta", "Cross-signing is not set up.": "Kryžminis pasirašymas nenustatytas.", "Cross-signing is ready for use.": "Kryžminis pasirašymas yra paruoštas naudoti.", - "Channel: %(channelName)s": "Kanalas: %(channelName)s", - "Workspace: %(networkName)s": "Darbo sritis: %(networkName)s", + "Channel: ": "Kanalas: %(channelName)s", + "Workspace: ": "Darbo sritis: ", "This bridge is managed by .": "Šis tiltas yra tvarkomas .", "This bridge was provisioned by .": "Šis tiltas buvo parūpintas .", "Your server isn't responding to some requests.": "Jūsų serveris neatsako į kai kurias užklausas.", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 1ec887c364..e09aa82b9a 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1625,8 +1625,8 @@ "Decline (%(counter)s)": "Afwijzen (%(counter)s)", "This bridge was provisioned by .": "Dank aan voor de brug.", "This bridge is managed by .": "Brug onderhouden door .", - "Workspace: %(networkName)s": "Werkruimte: %(networkName)s", - "Channel: %(channelName)s": "Kanaal: %(channelName)s", + "Workspace: ": "Werkruimte: ", + "Channel: ": "Kanaal: %(channelName)s", "Show less": "Minder tonen", "Show more": "Meer tonen", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Momenteel stelt een wachtwoordswijziging alle berichtsleutels in alle sessies opnieuw in, en maakt zo oude versleutelde berichten onleesbaar - tenzij u uw sleutels eerst wegschrijft, en na afloop weer inleest. Dit zal verbeterd worden.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 613f889370..0c2037e02a 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -1380,8 +1380,8 @@ "Upload": "Enviar", "This bridge was provisioned by .": "Esta integração foi disponibilizada por .", "This bridge is managed by .": "Esta integração é desenvolvida por .", - "Workspace: %(networkName)s": "Espaço de trabalho: %(networkName)s", - "Channel: %(channelName)s": "Canal: %(channelName)s", + "Workspace: ": "Espaço de trabalho: ", + "Channel: ": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar mais", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará todas as chaves de criptografia de ponta a ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 3c5ead3aa1..1cda0a288b 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1670,8 +1670,8 @@ "Decline (%(counter)s)": "Отклонить (%(counter)s)", "This bridge was provisioned by .": "Этот мост был подготовлен пользователем .", "This bridge is managed by .": "Этот мост управляется .", - "Workspace: %(networkName)s": "Рабочая область: %(networkName)s", - "Channel: %(channelName)s": "Канал: %(channelName)s", + "Workspace: ": "Рабочая область: ", + "Channel: ": "Канал: %(channelName)s", "Show less": "Показать меньше", "Show more": "Показать больше", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Если вы не экспортируете ключи для этой комнаты и не импортируете их в будущем, смена пароля приведёт к сбросу всех ключей сквозного шифрования и сделает невозможным чтение истории чата. В будущем это будет улучшено.", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 454d86cb64..7fa8e4dd65 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -1536,8 +1536,8 @@ "Joins room with given address": "Pridať sa do miestnosti s danou adresou", "Unrecognised room address:": "Nerozpoznaná adresa miestnosti:", "This bridge is managed by .": "Tento most spravuje .", - "Workspace: %(networkName)s": "Pracovisko: %(networkName)s", - "Channel: %(channelName)s": "Kanál: %(channelName)s", + "Workspace: ": "Pracovisko: ", + "Channel: ": "Kanál: %(channelName)s", "Show less": "Zobraziť menej", "Show more": "Zobraziť viac", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla reštartuje všetky šifrovacie kľúče pre všetky vaše relácie. Šifrované správy sa stanú nečitateľnými, pokiaľ najprv nevyexportujete vaše kľúče a po zmene ich nenaimportujete. V budúcnosti sa tento proces zjednoduší.", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 74a85031ac..54236054bd 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -1819,8 +1819,8 @@ "To be secure, do this in person or use a trusted way to communicate.": "Për të qenë i sigurt, bëjeni këtë duke qenë vetë i pranishëm ose përdorni për të komunikuar një rrugë të besuar.", "Verify yourself & others to keep your chats safe": "Verifikoni veten & të tjerët, që t’i mbani bisedat tuaja të sigurta", "This bridge was provisioned by .": "Kjo urë është dhënë nga .", - "Workspace: %(networkName)s": "Hapësirë pune: %(networkName)s", - "Channel: %(channelName)s": "Kanal: %(channelName)s", + "Workspace: ": "Hapësirë pune: ", + "Channel: ": "Kanal: %(channelName)s", "Show less": "Shfaq më pak", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ndryshimi i fjalëkalimit do të sjellë zerimin e çfarëdo kyçesh fshehtëzimi skaj-më-skaj në krejt sesionet, duke e bërë të palexueshëm historikun e fshehtëzuar të bisedave, hiq rastin kur i eksportoni më parë kyçet tuaj të dhomës dhe i ri-importoni ata më pas. Në të ardhmen kjo do të përmirësohet.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Llogaria juaj ka një identitet cross-signing në depozitë të fshehtë, por s’është ende i besuar në këtë sesion.", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 93ff8808cb..307af905e8 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1692,8 +1692,8 @@ "From %(deviceName)s (%(deviceId)s)": "Från %(deviceName)s (%(deviceId)s)", "This bridge was provisioned by .": "Den här bryggan tillhandahålls av .", "This bridge is managed by .": "Den här bryggan tillhandahålls av .", - "Workspace: %(networkName)s": "Arbetsyta: %(networkName)s", - "Channel: %(channelName)s": "Kanal: %(channelName)s", + "Workspace: ": "Arbetsyta: ", + "Channel: ": "Kanal: %(channelName)s", "Show less": "Visa mindre", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Att byta lösenord återställer just nu alla krypteringsnycklar på alla sessioner, vilket gör krypterad chatthistorik oläslig om du inte först exporterar dina rumsnycklar och sedan importerar dem igen efteråt. Detta kommer att förbättras i framtiden.", "Your homeserver does not support cross-signing.": "Din hemserver stöder inte korssignering.", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 5a152eeab6..20ebca68a2 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1410,8 +1410,8 @@ "Other users may not trust it": "Diğer kullanıcılar güvenmeyebilirler", "Later": "Sonra", "Review": "Gözden Geçirme", - "Workspace: %(networkName)s": "Çalışma alanı: %(networkName)s", - "Channel: %(channelName)s": "Kanal: %(channelName)s", + "Workspace: ": "Çalışma alanı: ", + "Channel: ": "Kanal: %(channelName)s", "Show less": "Daha az göster", "Show more": "Daha fazla göster", "in memory": "hafızada", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index eaf8fdbe88..b0efb8ff07 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -955,8 +955,8 @@ "Globe": "Глобус", "This bridge was provisioned by .": "Цей місток був підготовленим .", "This bridge is managed by .": "Цей міст керується .", - "Workspace: %(networkName)s": "Робочий простір: %(networkName)s", - "Channel: %(channelName)s": "Канал: %(channelName)s", + "Workspace: ": "Робочий простір: ", + "Channel: ": "Канал: %(channelName)s", "Show less": "Згорнути", "Show more": "Розгорнути", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 672b1befd1..46edda95dc 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -2320,8 +2320,8 @@ "Uploading logs": "正在上传日志", "Downloading logs": "正在下载日志", "This bridge was provisioned by .": "桥接由 准备。", - "Workspace: %(networkName)s": "工作区:%(networkName)s", - "Channel: %(channelName)s": "频道:%(channelName)s", + "Workspace: ": "工作区:", + "Channel: ": "频道:%(channelName)s", "well formed": "格式正确", "Master private key:": "主私钥:", "Self signing private key:": "自签名私钥:", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 3355a7d383..3b82222e0e 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -1804,8 +1804,8 @@ "To be secure, do this in person or use a trusted way to communicate.": "為了安全,請親自進行或使用可信的通訊方式。", "Review": "評論", "This bridge was provisioned by .": "此橋接是由 設定。", - "Workspace: %(networkName)s": "工作空間:%(networkName)s", - "Channel: %(channelName)s": "頻道:%(channelName)s", + "Workspace: ": "工作空間:", + "Channel: ": "頻道:%(channelName)s", "Show less": "顯示較少", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "變更密碼將會重設所有工作階段上的所有端到端加密金鑰,讓已加密的聊天歷史無法讀取,除非您先匯出您的聊天室金鑰並在稍後重新匯入。未來會有所改善。", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "您的帳號在秘密儲存空間中有交叉簽章的身份,但尚未被此工作階段信任。", From da86bc0b0a8a1e497dc88f4a62d84722aefa6033 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 13:02:04 +0000 Subject: [PATCH 009/275] Allow sender for backwards compat --- src/components/views/settings/BridgeTile.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index 062fdbeb6e..67f0eb7802 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -70,10 +70,16 @@ export default class BridgeTile extends React.PureComponent { render() { const content: IBridgeStateEvent = this.props.ev.getContent(); // Validate - if (!content.bridgebot || !content.channel?.id || !content.protocol?.id) { + if (!content.channel?.id || !content.protocol?.id) { console.warn(`Bridge info event ${this.props.ev.getId()} has missing content. Tile will not render`); return null; } + if (!content.bridgebot) { + // Bridgebot was not required previously, so in order to not break rooms we are allowing + // the sender to be used in place. When the proposal is merged, this should be removed. + console.warn(`Bridge info event ${this.props.ev.getId()} does not provide a 'bridgebot' key which is deprecated behaviour. Using sender for now.`); + content.bridgebot = this.props.ev.getSender(); + } const { channel, network, protocol } = content; const protocolName = protocol.displayname || protocol.id; const channelName = channel.displayname || channel.id; From 3466813c234eaa41a49d44a901a9089a43d22d26 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 13:04:50 +0000 Subject: [PATCH 010/275] Remove showmore show less --- src/i18n/strings/en_EN.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 494909800c..07051ca19e 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -957,8 +957,6 @@ "This bridge is managed by .": "This bridge is managed by .", "Workspace: ": "Workspace: ", "Channel: ": "Channel: ", - "Show less": "Show less", - "Show more": "Show more", "Failed to upload profile picture!": "Failed to upload profile picture!", "Upload new:": "Upload new:", "No display name": "No display name", @@ -1520,6 +1518,7 @@ "Jump to first invite.": "Jump to first invite.", "Show %(count)s more|other": "Show %(count)s more", "Show %(count)s more|one": "Show %(count)s more", + "Show less": "Show less", "Use default": "Use default", "All messages": "All messages", "Mentions & Keywords": "Mentions & Keywords", @@ -1582,6 +1581,7 @@ "New published address (e.g. #alias:server)": "New published address (e.g. #alias:server)", "Local Addresses": "Local Addresses", "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)", + "Show more": "Show more", "Error updating flair": "Error updating flair", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.", "Invalid community ID": "Invalid community ID", From c5e578a50246c435695afb99e68434db702632cc Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 30 Nov 2020 13:07:12 +0000 Subject: [PATCH 011/275] linting --- src/components/views/settings/BridgeTile.tsx | 14 ++++++++++---- src/utils/replaceableComponent.ts | 3 +-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index 67f0eb7802..1f5448dcc1 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, { ReactNode } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; import {getHttpUriForMxc} from "matrix-js-sdk/src/content-repo"; import {_t} from "../../../languageHandler"; @@ -22,7 +22,6 @@ import {MatrixClientPeg} from "../../../MatrixClientPeg"; import Pill from "../elements/Pill"; import {makeUserPermalink} from "../../../utils/permalinks/Permalinks"; import BaseAvatar from "../avatars/BaseAvatar"; -import AccessibleButton from "../elements/AccessibleButton"; import {replaceableComponentTs} from "../../../utils/replaceableComponent"; import SettingsStore from "../../../settings/SettingsStore"; import {MatrixEvent} from "matrix-js-sdk/src/models/event"; @@ -43,19 +42,25 @@ interface IBridgeStateEvent { protocol: { id: string; displayname?: string; + // eslint-disable-next-line camelcase avatar_url?: string; + // eslint-disable-next-line camelcase external_url?: string; }; network?: { id: string; displayname?: string; + // eslint-disable-next-line camelcase avatar_url?: string; + // eslint-disable-next-line camelcase external_url?: string; }; channel: { id: string; displayname?: string; + // eslint-disable-next-line camelcase avatar_url?: string; + // eslint-disable-next-line camelcase external_url?: string; }; } @@ -77,7 +82,8 @@ export default class BridgeTile extends React.PureComponent { if (!content.bridgebot) { // Bridgebot was not required previously, so in order to not break rooms we are allowing // the sender to be used in place. When the proposal is merged, this should be removed. - console.warn(`Bridge info event ${this.props.ev.getId()} does not provide a 'bridgebot' key which is deprecated behaviour. Using sender for now.`); + console.warn(`Bridge info event ${this.props.ev.getId()} does not provide a 'bridgebot' key which` + + "is deprecated behaviour. Using sender for now."); content.bridgebot = this.props.ev.getSender(); } const { channel, network, protocol } = content; @@ -151,7 +157,7 @@ export default class BridgeTile extends React.PureComponent {

      {networkItem} {_t("Channel: ", {}, { - channelLink: () => channelLink + channelLink: () => channelLink, })}

        diff --git a/src/utils/replaceableComponent.ts b/src/utils/replaceableComponent.ts index f83e0c95c1..7ea192f76b 100644 --- a/src/utils/replaceableComponent.ts +++ b/src/utils/replaceableComponent.ts @@ -14,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { func } from 'prop-types'; import * as React from 'react'; import * as sdk from '../index'; @@ -47,4 +46,4 @@ export function replaceableComponent(name: string, origComponent: React.Componen */ export function replaceableComponentTs(name: string) { return (origComponent: typeof React.Component) => sdk.getComponent(name) || origComponent; -} \ No newline at end of file +} From e55ec4359593484bc2e877739cbb51524df6ee85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 15 Dec 2020 14:45:10 +0100 Subject: [PATCH 012/275] Fix minimized left panel alignment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- res/css/structures/_LeftPanel.scss | 5 +++++ res/css/structures/_UserMenu.scss | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/res/css/structures/_LeftPanel.scss b/res/css/structures/_LeftPanel.scss index 1424d9cda0..168590502d 100644 --- a/res/css/structures/_LeftPanel.scss +++ b/res/css/structures/_LeftPanel.scss @@ -180,6 +180,11 @@ $groupFilterPanelWidth: 56px; // only applies in this file, used for calculation .mx_LeftPanel_roomListContainer { width: 68px; + .mx_LeftPanel_userHeader { + flex-direction: row; + justify-content: center; + } + .mx_LeftPanel_filterContainer { // Organize the flexbox into a centered column layout flex-direction: column; diff --git a/res/css/structures/_UserMenu.scss b/res/css/structures/_UserMenu.scss index 84c21364ce..0673ebb058 100644 --- a/res/css/structures/_UserMenu.scss +++ b/res/css/structures/_UserMenu.scss @@ -119,14 +119,10 @@ limitations under the License. } &.mx_UserMenu_minimized { - .mx_UserMenu_userHeader { - .mx_UserMenu_row { - justify-content: center; - } + padding-right: 0px; - .mx_UserMenu_userAvatarContainer { - margin-right: 0; - } + .mx_UserMenu_userAvatarContainer { + margin-right: 0px; } } } From 15d10042eeba2c608a334fbb8d70885fd6733af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 22 Dec 2020 08:52:21 +0100 Subject: [PATCH 013/275] Fixed 16014 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- .../room_settings/RoomProfileSettings.js | 60 +++++++++++-------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/src/components/views/room_settings/RoomProfileSettings.js b/src/components/views/room_settings/RoomProfileSettings.js index ca09c3093a..f08860d52b 100644 --- a/src/components/views/room_settings/RoomProfileSettings.js +++ b/src/components/views/room_settings/RoomProfileSettings.js @@ -120,17 +120,21 @@ export default class RoomProfileSettings extends React.Component { }; _onDisplayNameChanged = (e) => { - this.setState({ - displayName: e.target.value, - enableProfileSave: true, - }); + this.setState({displayName: e.target.value}); + if (this.state.originalDisplayName === e.target.value) { + this.setState({enableProfileSave: false}); + } else { + this.setState({enableProfileSave: true}); + } }; _onTopicChanged = (e) => { - this.setState({ - topic: e.target.value, - enableProfileSave: true, - }); + this.setState({topic: e.target.value}); + if (this.state.originalTopic === e.target.value) { + this.setState({enableProfileSave: false}); + } else { + this.setState({enableProfileSave: true}); + } }; _onAvatarChanged = (e) => { @@ -158,6 +162,29 @@ export default class RoomProfileSettings extends React.Component { render() { const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); const AvatarSetting = sdk.getComponent('settings.AvatarSetting'); + + let profileSettingsButtons; + if (this.state.enableProfileSave) { + profileSettingsButtons = ( +
        + + {_t("Cancel")} + + + {_t("Save")} + +
        + ); + } + return (
    -
    - - {_t("Cancel")} - - - {_t("Save")} - -
    + { profileSettingsButtons } ); } From 48cfd3f9da5b8200a902dad94e061666180e9fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 22 Dec 2020 09:29:35 +0100 Subject: [PATCH 014/275] Fixed some avatar stuff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/room_settings/RoomProfileSettings.js | 1 + src/components/views/settings/AvatarSetting.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/room_settings/RoomProfileSettings.js b/src/components/views/room_settings/RoomProfileSettings.js index f08860d52b..ccbe8e288a 100644 --- a/src/components/views/room_settings/RoomProfileSettings.js +++ b/src/components/views/room_settings/RoomProfileSettings.js @@ -62,6 +62,7 @@ export default class RoomProfileSettings extends React.Component { } _uploadAvatar = () => { + if (!this.state.canSetAvatar) return; this._avatarUpload.current.click(); }; diff --git a/src/components/views/settings/AvatarSetting.js b/src/components/views/settings/AvatarSetting.js index 487c752c38..93b982467a 100644 --- a/src/components/views/settings/AvatarSetting.js +++ b/src/components/views/settings/AvatarSetting.js @@ -65,7 +65,7 @@ const AvatarSetting = ({avatarUrl, avatarAltText, avatarName, uploadAvatar, remo const avatarClasses = classNames({ "mx_AvatarSetting_avatar": true, - "mx_AvatarSetting_avatar_hovering": isHovering, + "mx_AvatarSetting_avatar_hovering": isHovering && uploadAvatar, }); return
    {avatarElement} From ffe2727cf72e2fe305e532a2b70dc904744f5910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 22 Dec 2020 09:40:39 +0100 Subject: [PATCH 015/275] Fixed topic field resizing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- res/css/views/settings/_ProfileSettings.scss | 6 ++++++ src/components/views/room_settings/RoomProfileSettings.js | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/res/css/views/settings/_ProfileSettings.scss b/res/css/views/settings/_ProfileSettings.scss index 732cbedf02..4cbcb8e708 100644 --- a/res/css/views/settings/_ProfileSettings.scss +++ b/res/css/views/settings/_ProfileSettings.scss @@ -14,6 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ +.mx_ProfileSettings_controls_topic { + & > textarea { + resize: vertical; + } +} + .mx_ProfileSettings_profile { display: flex; } diff --git a/src/components/views/room_settings/RoomProfileSettings.js b/src/components/views/room_settings/RoomProfileSettings.js index ccbe8e288a..9d96e6da35 100644 --- a/src/components/views/room_settings/RoomProfileSettings.js +++ b/src/components/views/room_settings/RoomProfileSettings.js @@ -200,7 +200,7 @@ export default class RoomProfileSettings extends React.Component { -
    From fa99c2e8c5a4d90385b3b6377169dfb38e972a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 22 Dec 2020 13:14:55 +0100 Subject: [PATCH 016/275] Hide add button when new item field is empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/elements/EditableItemList.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/views/elements/EditableItemList.js b/src/components/views/elements/EditableItemList.js index 34e53906a2..3537d8fad0 100644 --- a/src/components/views/elements/EditableItemList.js +++ b/src/components/views/elements/EditableItemList.js @@ -118,15 +118,23 @@ export default class EditableItemList extends React.Component { }; _renderNewItemField() { + let addButton; + console.log(this.props.newItem); + if (this.props.newItem) { + addButton = ( + + {_t("Add")} + + ); + } + return (
    - - {_t("Add")} - + { addButton } ); } From a7ca1d0856cc438190a08f4eb55797c37af7c383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 22 Dec 2020 13:26:53 +0100 Subject: [PATCH 017/275] Remove unnecessary line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/room_settings/RoomProfileSettings.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/room_settings/RoomProfileSettings.js b/src/components/views/room_settings/RoomProfileSettings.js index 9d96e6da35..6904351cad 100644 --- a/src/components/views/room_settings/RoomProfileSettings.js +++ b/src/components/views/room_settings/RoomProfileSettings.js @@ -62,7 +62,6 @@ export default class RoomProfileSettings extends React.Component { } _uploadAvatar = () => { - if (!this.state.canSetAvatar) return; this._avatarUpload.current.click(); }; From 7912091bc5914518ec201710ef2a4beacd1e05c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 29 Dec 2020 16:08:54 +0100 Subject: [PATCH 018/275] Revert "Hide add button when new item field is empty" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit fa99c2e8c5a4d90385b3b6377169dfb38e972a63. Signed-off-by: Šimon Brandner --- src/components/views/elements/EditableItemList.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/components/views/elements/EditableItemList.js b/src/components/views/elements/EditableItemList.js index 3537d8fad0..34e53906a2 100644 --- a/src/components/views/elements/EditableItemList.js +++ b/src/components/views/elements/EditableItemList.js @@ -118,23 +118,15 @@ export default class EditableItemList extends React.Component { }; _renderNewItemField() { - let addButton; - console.log(this.props.newItem); - if (this.props.newItem) { - addButton = ( - - {_t("Add")} - - ); - } - return (
    - { addButton } + + {_t("Add")} + ); } From 0083cf56bf3970ca44a8d66f9c90fe89102a45a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Tue, 29 Dec 2020 16:20:43 +0100 Subject: [PATCH 019/275] Hide buttons only if perrmissions are missing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/room_settings/RoomProfileSettings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/room_settings/RoomProfileSettings.js b/src/components/views/room_settings/RoomProfileSettings.js index 6904351cad..c76c0823e4 100644 --- a/src/components/views/room_settings/RoomProfileSettings.js +++ b/src/components/views/room_settings/RoomProfileSettings.js @@ -164,7 +164,7 @@ export default class RoomProfileSettings extends React.Component { const AvatarSetting = sdk.getComponent('settings.AvatarSetting'); let profileSettingsButtons; - if (this.state.enableProfileSave) { + if (this.state.canSetTopic && this.state.canSetName) { profileSettingsButtons = (
    Date: Tue, 29 Dec 2020 16:30:20 +0100 Subject: [PATCH 020/275] Disable add button if the field is empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/elements/EditableItemList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/EditableItemList.js b/src/components/views/elements/EditableItemList.js index 34e53906a2..5a07a400d7 100644 --- a/src/components/views/elements/EditableItemList.js +++ b/src/components/views/elements/EditableItemList.js @@ -124,7 +124,7 @@ export default class EditableItemList extends React.Component { - + {_t("Add")} From 7e0cf5c7832a46243f4b145a06c7ac821eda4e14 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 29 Dec 2020 12:35:48 -0700 Subject: [PATCH 021/275] Wire up MSC2931 widget navigation Fixes https://github.com/vector-im/element-web/issues/16006 **Requires https://github.com/matrix-org/matrix-widget-api/pull/27** --- src/i18n/strings/en_EN.json | 1 + src/stores/widgets/ElementWidgetActions.ts | 7 +++++++ src/stores/widgets/ElementWidgetCapabilities.ts | 3 +++ src/stores/widgets/StopGapWidgetDriver.ts | 9 +++++++++ src/widgets/CapabilityText.tsx | 3 +++ 5 files changed, 23 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c0939871e2..4dad7a97f1 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -584,6 +584,7 @@ "Send stickers into this room": "Send stickers into this room", "Send stickers into your active room": "Send stickers into your active room", "Change which room you're viewing": "Change which room you're viewing", + "Change which room you're viewing and use permalinks": "Change which room you're viewing and use permalinks", "Change the topic of this room": "Change the topic of this room", "See when the topic changes in this room": "See when the topic changes in this room", "Change the topic of your active room": "Change the topic of your active room", diff --git a/src/stores/widgets/ElementWidgetActions.ts b/src/stores/widgets/ElementWidgetActions.ts index 76390086ab..de48746a74 100644 --- a/src/stores/widgets/ElementWidgetActions.ts +++ b/src/stores/widgets/ElementWidgetActions.ts @@ -20,9 +20,16 @@ export enum ElementWidgetActions { ClientReady = "im.vector.ready", HangupCall = "im.vector.hangup", OpenIntegrationManager = "integration_manager_open", + + /** + * @deprecated Use MSC2931 instead + */ ViewRoom = "io.element.view_room", } +/** + * @deprecated Use MSC2931 instead + */ export interface IViewRoomApiRequest extends IWidgetApiRequest { data: { room_id: string; // eslint-disable-line camelcase diff --git a/src/stores/widgets/ElementWidgetCapabilities.ts b/src/stores/widgets/ElementWidgetCapabilities.ts index 3f17d27909..e493d5618f 100644 --- a/src/stores/widgets/ElementWidgetCapabilities.ts +++ b/src/stores/widgets/ElementWidgetCapabilities.ts @@ -15,5 +15,8 @@ */ export enum ElementWidgetCapabilities { + /** + * @deprecated Use MSC2931 instead. + */ CanChangeViewedRoom = "io.element.view_room", } diff --git a/src/stores/widgets/StopGapWidgetDriver.ts b/src/stores/widgets/StopGapWidgetDriver.ts index 2d2d1fcbdb..8baea97fe0 100644 --- a/src/stores/widgets/StopGapWidgetDriver.ts +++ b/src/stores/widgets/StopGapWidgetDriver.ts @@ -43,6 +43,7 @@ import { EventType } from "matrix-js-sdk/src/@types/event"; import { CHAT_EFFECTS } from "../../effects"; import { containsEmoji } from "../../effects/utils"; import dis from "../../dispatcher/dispatcher"; +import {tryTransformPermalinkToLocalHref} from "../../utils/permalinks/Permalinks"; // TODO: Purge this from the universe @@ -171,4 +172,12 @@ export class StopGapWidgetDriver extends WidgetDriver { }, }); } + + public async navigate(uri: string): Promise { + const localUri = tryTransformPermalinkToLocalHref(uri); + if (!localUri || localUri === uri) { // parse failure can lead to an unmodified URL + throw new Error("Failed to transform URI"); + } + window.location.hash = localUri; // it'll just be a fragment + } } diff --git a/src/widgets/CapabilityText.tsx b/src/widgets/CapabilityText.tsx index 834ea3ec37..044b7701ba 100644 --- a/src/widgets/CapabilityText.tsx +++ b/src/widgets/CapabilityText.tsx @@ -60,6 +60,9 @@ export class CapabilityText { [ElementWidgetCapabilities.CanChangeViewedRoom]: { [GENERIC_WIDGET_KIND]: _td("Change which room you're viewing"), }, + [MatrixCapabilities.MSC2931Navigate]: { + [GENERIC_WIDGET_KIND]: _td("Change which room you're viewing and use permalinks"), + }, }; private static stateSendRecvCaps: ISendRecvStaticCapText = { From 86cb7f99ce910e5f5e58ba872eedc37c43005eba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Wed, 30 Dec 2020 08:46:54 +0100 Subject: [PATCH 022/275] Hide localVideoFeed if video is muted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/voip/CallView.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/views/voip/CallView.tsx b/src/components/views/voip/CallView.tsx index 6748728278..260de4d68a 100644 --- a/src/components/views/voip/CallView.tsx +++ b/src/components/views/voip/CallView.tsx @@ -437,6 +437,7 @@ export default class CallView extends React.Component { } if (this.props.call.type === CallType.Video) { + let localVideoFeed = null; let onHoldContent = null; let onHoldBackground = null; const backgroundStyle: CSSProperties = {}; @@ -455,6 +456,9 @@ export default class CallView extends React.Component { backgroundStyle.backgroundImage = 'url(' + backgroundAvatarUrl + ')'; onHoldBackground =
    ; } + if (!this.state.vidMuted) { + localVideoFeed = ; + } // if we're fullscreen, we don't want to set a maxHeight on the video element. const maxVideoHeight = getFullScreenElement() ? null : ( @@ -470,7 +474,7 @@ export default class CallView extends React.Component { - + {localVideoFeed} {onHoldContent} {callControls}
    ; From 4f96d5dee5fa91bc0d84a65789cb2227adf17999 Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Mon, 4 Jan 2021 19:17:12 -0600 Subject: [PATCH 023/275] Change a bunch of strings from Recovery Key/Phrase to Security Key/Phrase Signed-off-by: Aaron Raimist --- .../dialogs/security/CreateKeyBackupDialog.js | 32 ++++----- .../security/CreateSecretStorageDialog.js | 8 +-- .../security/NewRecoveryMethodDialog.js | 2 +- .../security/RecoveryMethodRemovedDialog.js | 2 +- .../structures/auth/SetupEncryptionBody.js | 4 +- .../views/dialogs/NewSessionReviewDialog.js | 2 +- .../security/AccessSecretStorageDialog.js | 6 +- .../security/RestoreKeyBackupDialog.js | 30 ++++---- .../views/settings/SecureBackupPanel.js | 2 +- src/i18n/strings/en_EN.json | 70 +++++++++---------- .../dialogs/AccessSecretStorageDialog-test.js | 6 +- 11 files changed, 82 insertions(+), 82 deletions(-) diff --git a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js index ab39a094db..7b5dbe4d28 100644 --- a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js +++ b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js @@ -238,7 +238,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent { )}

    {_t( "We'll store an encrypted copy of your keys on our server. " + - "Secure your backup with a recovery passphrase.", + "Secure your backup with a Security Phrase.", )}

    {_t("For maximum security, this should be different from your account password.")}

    @@ -252,10 +252,10 @@ export default class CreateKeyBackupDialog extends React.PureComponent { onValidate={this._onPassPhraseValidate} fieldRef={this._passphraseField} autoFocus={true} - label={_td("Enter a recovery passphrase")} - labelEnterPassword={_td("Enter a recovery passphrase")} - labelStrongPassword={_td("Great! This recovery passphrase looks strong enough.")} - labelAllowedButUnsafe={_td("Great! This recovery passphrase looks strong enough.")} + label={_td("Enter a Security Phrase")} + labelEnterPassword={_td("Enter a Security Phrase")} + labelStrongPassword={_td("Great! This Security Phrase looks strong enough.")} + labelAllowedButUnsafe={_td("Great! This Security Phrase looks strong enough.")} />
    @@ -270,7 +270,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
    {_t("Advanced")} - {_t("Set up with a recovery key")} + {_t("Set up with a Security Key")}
    ; @@ -310,7 +310,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent { const DialogButtons = sdk.getComponent('views.elements.DialogButtons'); return

    {_t( - "Please enter your recovery passphrase a second time to confirm.", + "Please enter your Security Phrase a second time to confirm.", )}

    @@ -319,7 +319,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent { onChange={this._onPassPhraseConfirmChange} value={this.state.passPhraseConfirm} className="mx_CreateKeyBackupDialog_passPhraseInput" - placeholder={_t("Repeat your recovery passphrase...")} + placeholder={_t("Repeat your Security Phrase...")} autoFocus={true} />
    @@ -338,15 +338,15 @@ export default class CreateKeyBackupDialog extends React.PureComponent { _renderPhaseShowKey() { return

    {_t( - "Your recovery key is a safety net - you can use it to restore " + - "access to your encrypted messages if you forget your recovery passphrase.", + "Your Security Key is a safety net - you can use it to restore " + + "access to your encrypted messages if you forget your Security Phrase.", )}

    {_t( "Keep a copy of it somewhere secure, like a password manager or even a safe.", )}

    - {_t("Your recovery key")} + {_t("Your Security Key")}
    @@ -369,12 +369,12 @@ export default class CreateKeyBackupDialog extends React.PureComponent { let introText; if (this.state.copied) { introText = _t( - "Your recovery key has been copied to your clipboard, paste it to:", + "Your Security Key has been copied to your clipboard, paste it to:", {}, {b: s => {s}}, ); } else if (this.state.downloaded) { introText = _t( - "Your recovery key is in your Downloads folder.", + "Your Security Key is in your Downloads folder.", {}, {b: s => {s}}, ); } @@ -433,14 +433,14 @@ export default class CreateKeyBackupDialog extends React.PureComponent { _titleForPhase(phase) { switch (phase) { case PHASE_PASSPHRASE: - return _t('Secure your backup with a recovery passphrase'); + return _t('Secure your backup with a Security Phrase'); case PHASE_PASSPHRASE_CONFIRM: - return _t('Confirm your recovery passphrase'); + return _t('Confirm your Security Phrase'); case PHASE_OPTOUT_CONFIRM: return _t('Warning!'); case PHASE_SHOWKEY: case PHASE_KEEPITSAFE: - return _t('Make a copy of your recovery key'); + return _t('Make a copy of your Security Key'); case PHASE_BACKINGUP: return _t('Starting backup...'); case PHASE_DONE: diff --git a/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js index b1a14062f4..5c190a0e2f 100644 --- a/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js @@ -593,10 +593,10 @@ export default class CreateSecretStorageDialog extends React.PureComponent { onValidate={this._onPassPhraseValidate} fieldRef={this._passphraseField} autoFocus={true} - label={_td("Enter a recovery passphrase")} - labelEnterPassword={_td("Enter a recovery passphrase")} - labelStrongPassword={_td("Great! This recovery passphrase looks strong enough.")} - labelAllowedButUnsafe={_td("Great! This recovery passphrase looks strong enough.")} + label={_td("Enter a Security Phrase")} + labelEnterPassword={_td("Enter a Security Phrase")} + labelStrongPassword={_td("Great! This Security Phrase looks strong enough.")} + labelAllowedButUnsafe={_td("Great! This Security Phrase looks strong enough.")} />
    diff --git a/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.js b/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.js index 9f5045635d..8c09cc6d16 100644 --- a/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.js +++ b/src/async-components/views/dialogs/security/NewRecoveryMethodDialog.js @@ -58,7 +58,7 @@ export default class NewRecoveryMethodDialog extends React.PureComponent { ; const newMethodDetected =

    {_t( - "A new recovery passphrase and key for Secure Messages have been detected.", + "A new Security Phrase and key for Secure Messages have been detected.", )}

    ; const hackWarning =

    {_t( diff --git a/src/async-components/views/dialogs/security/RecoveryMethodRemovedDialog.js b/src/async-components/views/dialogs/security/RecoveryMethodRemovedDialog.js index cda353e717..b60e6fd3cb 100644 --- a/src/async-components/views/dialogs/security/RecoveryMethodRemovedDialog.js +++ b/src/async-components/views/dialogs/security/RecoveryMethodRemovedDialog.js @@ -56,7 +56,7 @@ export default class RecoveryMethodRemovedDialog extends React.PureComponent { >

    {_t( - "This session has detected that your recovery passphrase and key " + + "This session has detected that your Security Phrase and key " + "for Secure Messages have been removed.", )}

    {_t( diff --git a/src/components/structures/auth/SetupEncryptionBody.js b/src/components/structures/auth/SetupEncryptionBody.js index 6d090936e5..c3d02073bd 100644 --- a/src/components/structures/auth/SetupEncryptionBody.js +++ b/src/components/structures/auth/SetupEncryptionBody.js @@ -120,9 +120,9 @@ export default class SetupEncryptionBody extends React.Component { const store = SetupEncryptionStore.sharedInstance(); let recoveryKeyPrompt; if (store.keyInfo && keyHasPassphrase(store.keyInfo)) { - recoveryKeyPrompt = _t("Use Recovery Key or Passphrase"); + recoveryKeyPrompt = _t("Use Security Key or Passphrase"); } else if (store.keyInfo) { - recoveryKeyPrompt = _t("Use Recovery Key"); + recoveryKeyPrompt = _t("Use Security Key"); } let useRecoveryKeyButton; diff --git a/src/components/views/dialogs/NewSessionReviewDialog.js b/src/components/views/dialogs/NewSessionReviewDialog.js index 2613dcc6e6..e17501da40 100644 --- a/src/components/views/dialogs/NewSessionReviewDialog.js +++ b/src/components/views/dialogs/NewSessionReviewDialog.js @@ -47,7 +47,7 @@ export default class NewSessionReviewDialog extends React.PureComponent {

  • {_t("The internet connection either session is using")}
  • - {_t("We recommend you change your password and recovery key in Settings immediately")} + {_t("We recommend you change your password and Security Key in Settings immediately")}
    , onFinished: () => this.props.onFinished(false), diff --git a/src/components/views/dialogs/security/AccessSecretStorageDialog.js b/src/components/views/dialogs/security/AccessSecretStorageDialog.js index 21655e7fd4..6d5aea8e50 100644 --- a/src/components/views/dialogs/security/AccessSecretStorageDialog.js +++ b/src/components/views/dialogs/security/AccessSecretStorageDialog.js @@ -199,11 +199,11 @@ export default class AccessSecretStorageDialog extends React.PureComponent { } else if (this.state.recoveryKeyCorrect) { return _t("Looks good!"); } else if (this.state.recoveryKeyValid) { - return _t("Wrong Recovery Key"); + return _t("Wrong Security Key"); } else if (this.state.recoveryKeyValid === null) { return ''; } else { - return _t("Invalid Recovery Key"); + return _t("Invalid Security Key"); } } @@ -231,7 +231,7 @@ export default class AccessSecretStorageDialog extends React.PureComponent { keyStatus =
    {"\uD83D\uDC4E "}{_t( "Unable to access secret storage. " + - "Please verify that you entered the correct recovery passphrase.", + "Please verify that you entered the correct Security Phrase.", )}
    ; } else { diff --git a/src/components/views/dialogs/security/RestoreKeyBackupDialog.js b/src/components/views/dialogs/security/RestoreKeyBackupDialog.js index 2362133460..ca28ca094c 100644 --- a/src/components/views/dialogs/security/RestoreKeyBackupDialog.js +++ b/src/components/views/dialogs/security/RestoreKeyBackupDialog.js @@ -297,19 +297,19 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { } else if (this.state.restoreError) { if (this.state.restoreError.errcode === MatrixClient.RESTORE_BACKUP_ERROR_BAD_KEY) { if (this.state.restoreType === RESTORE_TYPE_RECOVERYKEY) { - title = _t("Recovery key mismatch"); + title = _t("Security Key mismatch"); content =

    {_t( - "Backup could not be decrypted with this recovery key: " + - "please verify that you entered the correct recovery key.", + "Backup could not be decrypted with this Security Key: " + + "please verify that you entered the correct Security Key.", )}

    ; } else { - title = _t("Incorrect recovery passphrase"); + title = _t("Incorrect Security Phrase"); content =

    {_t( - "Backup could not be decrypted with this recovery passphrase: " + - "please verify that you entered the correct recovery passphrase.", + "Backup could not be decrypted with this Security Phrase: " + + "please verify that you entered the correct Security Phrase.", )}

    ; } @@ -342,7 +342,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { } else if (backupHasPassphrase && !this.state.forceRecoveryKey) { const DialogButtons = sdk.getComponent('views.elements.DialogButtons'); const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); - title = _t("Enter recovery passphrase"); + title = _t("Enter Security Phrase"); content =

    {_t( "Warning: you should only set up key backup " + @@ -351,7 +351,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { )}

    {_t( "Access your secure message history and set up secure " + - "messaging by entering your recovery passphrase.", + "messaging by entering your Security Phrase.", )}

    @@ -371,8 +371,8 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { /> {_t( - "If you've forgotten your recovery passphrase you can "+ - "use your recovery key or " + + "If you've forgotten your Security Phrase you can "+ + "use your Security Key or " + "set up new recovery options" , {}, { button1: s => ; } else { - title = _t("Enter recovery key"); + title = _t("Enter Security Key"); const DialogButtons = sdk.getComponent('views.elements.DialogButtons'); const AccessibleButton = sdk.getComponent('elements.AccessibleButton'); @@ -399,11 +399,11 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { keyStatus =
    ; } else if (this.state.recoveryKeyValid) { keyStatus =
    - {"\uD83D\uDC4D "}{_t("This looks like a valid recovery key!")} + {"\uD83D\uDC4D "}{_t("This looks like a valid Security Key!")}
    ; } else { keyStatus =
    - {"\uD83D\uDC4E "}{_t("Not a valid recovery key")} + {"\uD83D\uDC4E "}{_t("Not a valid Security Key")}
    ; } @@ -415,7 +415,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { )}

    {_t( "Access your secure message history and set up secure " + - "messaging by entering your recovery key.", + "messaging by entering your Security Key.", )}

    @@ -434,7 +434,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { />
    {_t( - "If you've forgotten your recovery key you can "+ + "If you've forgotten your Security Key you can "+ "" , {}, { button: s => {_t( "Back up your encryption keys with your account data in case you " + "lose access to your sessions. Your keys will be secured with a " + - "unique Recovery Key.", + "unique Security Key.", )}

    {statusDescription}
    diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c0939871e2..4e15cbfc1e 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1087,7 +1087,7 @@ "Back up your keys before signing out to avoid losing them.": "Back up your keys before signing out to avoid losing them.", "well formed": "well formed", "unexpected type": "unexpected type", - "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.", "Backup key stored:": "Backup key stored:", "not stored": "not stored", "Backup key cached:": "Backup key cached:", @@ -2127,7 +2127,7 @@ "Your password": "Your password", "This session, or the other session": "This session, or the other session", "The internet connection either session is using": "The internet connection either session is using", - "We recommend you change your password and recovery key in Settings immediately": "We recommend you change your password and recovery key in Settings immediately", + "We recommend you change your password and Security Key in Settings immediately": "We recommend you change your password and Security Key in Settings immediately", "New session": "New session", "Use this session to verify your new one, granting it access to encrypted messages:": "Use this session to verify your new one, granting it access to encrypted messages:", "If you didn’t sign in to this session, your account may be compromised.": "If you didn’t sign in to this session, your account may be compromised.", @@ -2235,10 +2235,10 @@ "Deny": "Deny", "Wrong file type": "Wrong file type", "Looks good!": "Looks good!", - "Wrong Recovery Key": "Wrong Recovery Key", - "Invalid Recovery Key": "Invalid Recovery Key", + "Wrong Security Key": "Wrong Security Key", + "Invalid Security Key": "Invalid Security Key", "Security Phrase": "Security Phrase", - "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Unable to access secret storage. Please verify that you entered the correct Security Phrase.", "Enter your Security Phrase or to continue.": "Enter your Security Phrase or to continue.", "Security Key": "Security Key", "Use your Security Key to continue.": "Use your Security Key to continue.", @@ -2253,25 +2253,25 @@ "Fetching keys from server...": "Fetching keys from server...", "%(completed)s of %(total)s keys restored": "%(completed)s of %(total)s keys restored", "Unable to load backup status": "Unable to load backup status", - "Recovery key mismatch": "Recovery key mismatch", - "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.", - "Incorrect recovery passphrase": "Incorrect recovery passphrase", - "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.": "Backup could not be decrypted with this recovery passphrase: please verify that you entered the correct recovery passphrase.", + "Security Key mismatch": "Security Key mismatch", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.", + "Incorrect Security Phrase": "Incorrect Security Phrase", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.", "Unable to restore backup": "Unable to restore backup", "No backup found!": "No backup found!", "Keys restored": "Keys restored", "Failed to decrypt %(failedCount)s sessions!": "Failed to decrypt %(failedCount)s sessions!", "Successfully restored %(sessionCount)s keys": "Successfully restored %(sessionCount)s keys", - "Enter recovery passphrase": "Enter recovery passphrase", + "Enter Security Phrase": "Enter Security Phrase", "Warning: you should only set up key backup from a trusted computer.": "Warning: you should only set up key backup from a trusted computer.", - "Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Access your secure message history and set up secure messaging by entering your recovery passphrase.", - "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options", - "Enter recovery key": "Enter recovery key", - "This looks like a valid recovery key!": "This looks like a valid recovery key!", - "Not a valid recovery key": "Not a valid recovery key", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Access your secure message history and set up secure messaging by entering your Security Phrase.", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options", + "Enter Security Key": "Enter Security Key", + "This looks like a valid Security Key!": "This looks like a valid Security Key!", + "Not a valid Security Key": "Not a valid Security Key", "Warning: You should only set up key backup from a trusted computer.": "Warning: You should only set up key backup from a trusted computer.", - "Access your secure message history and set up secure messaging by entering your recovery key.": "Access your secure message history and set up secure messaging by entering your recovery key.", - "If you've forgotten your recovery key you can ": "If you've forgotten your recovery key you can ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Access your secure message history and set up secure messaging by entering your Security Key.", + "If you've forgotten your Security Key you can ": "If you've forgotten your Security Key you can ", "Resume": "Resume", "Hold": "Hold", "Reject invitation": "Reject invitation", @@ -2548,8 +2548,8 @@ "Create account": "Create account", "Host account on": "Host account on", "Decide where your account is hosted": "Decide where your account is hosted", - "Use Recovery Key or Passphrase": "Use Recovery Key or Passphrase", - "Use Recovery Key": "Use Recovery Key", + "Use Security Key or Passphrase": "Use Security Key or Passphrase", + "Use Security Key": "Use Security Key", "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.", "This requires the latest %(brand)s on your other devices:": "This requires the latest %(brand)s on your other devices:", "%(brand)s Web": "%(brand)s Web", @@ -2584,39 +2584,38 @@ "Room Autocomplete": "Room Autocomplete", "Users": "Users", "User Autocomplete": "User Autocomplete", - "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.": "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.", "For maximum security, this should be different from your account password.": "For maximum security, this should be different from your account password.", - "Enter a recovery passphrase": "Enter a recovery passphrase", - "Great! This recovery passphrase looks strong enough.": "Great! This recovery passphrase looks strong enough.", - "Set up with a recovery key": "Set up with a recovery key", + "Enter a Security Phrase": "Enter a Security Phrase", + "Great! This Security Phrase looks strong enough.": "Great! This Security Phrase looks strong enough.", + "Set up with a Security Key": "Set up with a Security Key", "That matches!": "That matches!", "Use a different passphrase?": "Use a different passphrase?", "That doesn't match.": "That doesn't match.", "Go back to set it again.": "Go back to set it again.", - "Please enter your recovery passphrase a second time to confirm.": "Please enter your recovery passphrase a second time to confirm.", - "Repeat your recovery passphrase...": "Repeat your recovery passphrase...", - "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your recovery passphrase.": "Your recovery key is a safety net - you can use it to restore access to your encrypted messages if you forget your recovery passphrase.", + "Please enter your Security Phrase a second time to confirm.": "Please enter your Security Phrase a second time to confirm.", + "Repeat your Security Phrase...": "Repeat your Security Phrase...", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.", "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Keep a copy of it somewhere secure, like a password manager or even a safe.", - "Your recovery key": "Your recovery key", + "Your Security Key": "Your Security Key", "Download": "Download", - "Your recovery key has been copied to your clipboard, paste it to:": "Your recovery key has been copied to your clipboard, paste it to:", - "Your recovery key is in your Downloads folder.": "Your recovery key is in your Downloads folder.", + "Your Security Key has been copied to your clipboard, paste it to:": "Your Security Key has been copied to your clipboard, paste it to:", + "Your Security Key is in your Downloads folder.": "Your Security Key is in your Downloads folder.", "Print it and store it somewhere safe": "Print it and store it somewhere safe", "Save it on a USB key or backup drive": "Save it on a USB key or backup drive", "Copy it to your personal cloud storage": "Copy it to your personal cloud storage", "Your keys are being backed up (the first backup could take a few minutes).": "Your keys are being backed up (the first backup could take a few minutes).", "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.": "Without setting up Secure Message Recovery, you won't be able to restore your encrypted message history if you log out or use another session.", "Set up Secure Message Recovery": "Set up Secure Message Recovery", - "Secure your backup with a recovery passphrase": "Secure your backup with a recovery passphrase", - "Confirm your recovery passphrase": "Confirm your recovery passphrase", - "Make a copy of your recovery key": "Make a copy of your recovery key", + "Secure your backup with a Security Phrase": "Secure your backup with a Security Phrase", + "Confirm your Security Phrase": "Confirm your Security Phrase", + "Make a copy of your Security Key": "Make a copy of your Security Key", "Starting backup...": "Starting backup...", "Success!": "Success!", "Create key backup": "Create key backup", "Unable to create key backup": "Unable to create key backup", "Generate a Security Key": "Generate a Security Key", "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.": "We’ll generate a Security Key for you to store somewhere safe, like a password manager or a safe.", - "Enter a Security Phrase": "Enter a Security Phrase", "Use a secret phrase only you know, and optionally save a Security Key to use for backup.": "Use a secret phrase only you know, and optionally save a Security Key to use for backup.", "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.": "Safeguard against losing access to encrypted messages & data by backing up encryption keys on your server.", "Enter your account password to confirm the upgrade:": "Enter your account password to confirm the upgrade:", @@ -2626,6 +2625,7 @@ "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.": "Upgrade this session to allow it to verify other sessions, granting them access to encrypted messages and marking them as trusted for other users.", "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.", "Enter your recovery passphrase a second time to confirm it.": "Enter your recovery passphrase a second time to confirm it.", + "Confirm your recovery passphrase": "Confirm your recovery passphrase", "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.": "Store your Security Key somewhere safe, like a password manager or a safe, as it’s used to safeguard your encrypted data.", "Unable to query secret storage status": "Unable to query secret storage status", "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.": "If you cancel now, you may lose encrypted messages & data if you lose access to your logins.", @@ -2650,13 +2650,13 @@ "File to import": "File to import", "Import": "Import", "New Recovery Method": "New Recovery Method", - "A new recovery passphrase and key for Secure Messages have been detected.": "A new recovery passphrase and key for Secure Messages have been detected.", + "A new Security Phrase and key for Secure Messages have been detected.": "A new Security Phrase and key for Secure Messages have been detected.", "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "If you didn't set the new recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.", "This session is encrypting history using the new recovery method.": "This session is encrypting history using the new recovery method.", "Go to Settings": "Go to Settings", "Set up Secure Messages": "Set up Secure Messages", "Recovery Method Removed": "Recovery Method Removed", - "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "This session has detected that your recovery passphrase and key for Secure Messages have been removed.", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "This session has detected that your Security Phrase and key for Secure Messages have been removed.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.", "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.", "If disabled, messages from encrypted rooms won't appear in search results.": "If disabled, messages from encrypted rooms won't appear in search results.", diff --git a/test/components/views/dialogs/AccessSecretStorageDialog-test.js b/test/components/views/dialogs/AccessSecretStorageDialog-test.js index 7c4b2996c9..76412a6a82 100644 --- a/test/components/views/dialogs/AccessSecretStorageDialog-test.js +++ b/test/components/views/dialogs/AccessSecretStorageDialog-test.js @@ -58,7 +58,7 @@ describe("AccessSecretStorageDialog", function() { expect(recoveryKeyValid).toBe(true); }); - it("Notifies the user if they input an invalid recovery key", async function(done) { + it("Notifies the user if they input an invalid Security Key", async function(done) { const testInstance = TestRenderer.create( false} @@ -80,7 +80,7 @@ describe("AccessSecretStorageDialog", function() { className: "mx_AccessSecretStorageDialog_recoveryKeyFeedback " + "mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid", }); - expect(notification.props.children).toEqual("Invalid Recovery Key"); + expect(notification.props.children).toEqual("Invalid Security Key"); done(); }); @@ -105,7 +105,7 @@ describe("AccessSecretStorageDialog", function() { }); expect(notification.props.children).toEqual( ["\uD83D\uDC4E ", "Unable to access secret storage. Please verify that you " + - "entered the correct recovery passphrase."]); + "entered the correct Security Phrase."]); done(); }); }); From 448a5ea42d28bdb1cd8020b98b639cdb7282012a Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Fri, 8 Jan 2021 18:07:48 +0000 Subject: [PATCH 024/275] Remove replaceableComponentTs from BridgeTile --- src/components/views/settings/BridgeTile.tsx | 2 -- src/utils/replaceableComponent.ts | 9 --------- 2 files changed, 11 deletions(-) diff --git a/src/components/views/settings/BridgeTile.tsx b/src/components/views/settings/BridgeTile.tsx index 1f5448dcc1..58499ebd25 100644 --- a/src/components/views/settings/BridgeTile.tsx +++ b/src/components/views/settings/BridgeTile.tsx @@ -22,7 +22,6 @@ import {MatrixClientPeg} from "../../../MatrixClientPeg"; import Pill from "../elements/Pill"; import {makeUserPermalink} from "../../../utils/permalinks/Permalinks"; import BaseAvatar from "../avatars/BaseAvatar"; -import {replaceableComponentTs} from "../../../utils/replaceableComponent"; import SettingsStore from "../../../settings/SettingsStore"; import {MatrixEvent} from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; @@ -65,7 +64,6 @@ interface IBridgeStateEvent { }; } -@replaceableComponentTs("views.settings.BridgeTile") export default class BridgeTile extends React.PureComponent { static propTypes = { ev: PropTypes.object.isRequired, diff --git a/src/utils/replaceableComponent.ts b/src/utils/replaceableComponent.ts index 7ea192f76b..8c29fdf037 100644 --- a/src/utils/replaceableComponent.ts +++ b/src/utils/replaceableComponent.ts @@ -38,12 +38,3 @@ export function replaceableComponent(name: string, origComponent: React.Componen // return a falsey value like `null` when the skin doesn't have a component. return () => sdk.getComponent(name) || origComponent; } - -/** - * Typescript-compatible version of `replaceableComponent` - * @see replaceableComponent - * @param {string} name The dot-path name of the component being replaced. - */ -export function replaceableComponentTs(name: string) { - return (origComponent: typeof React.Component) => sdk.getComponent(name) || origComponent; -} From 726dfcc4b8fe0a974548408860bcd8a2c1d352ea Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Fri, 8 Jan 2021 18:08:16 +0000 Subject: [PATCH 025/275] Fix language strings --- src/i18n/strings/ar.json | 2 +- src/i18n/strings/bg.json | 4 ++-- src/i18n/strings/cs.json | 4 ++-- src/i18n/strings/de_DE.json | 2 +- src/i18n/strings/eo.json | 2 +- src/i18n/strings/es.json | 2 +- src/i18n/strings/et.json | 2 +- src/i18n/strings/eu.json | 2 +- src/i18n/strings/fi.json | 2 +- src/i18n/strings/fr.json | 2 +- src/i18n/strings/gl.json | 2 +- src/i18n/strings/hu.json | 2 +- src/i18n/strings/it.json | 2 +- src/i18n/strings/kab.json | 2 +- src/i18n/strings/lt.json | 2 +- src/i18n/strings/nl.json | 2 +- src/i18n/strings/pt_BR.json | 2 +- src/i18n/strings/ru.json | 2 +- src/i18n/strings/sk.json | 2 +- src/i18n/strings/sq.json | 2 +- src/i18n/strings/sv.json | 2 +- src/i18n/strings/tr.json | 2 +- src/i18n/strings/uk.json | 2 +- src/i18n/strings/zh_Hans.json | 2 +- src/i18n/strings/zh_Hant.json | 2 +- 25 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index a58e53555e..8e8ae3f775 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -1056,7 +1056,7 @@ "Failed to upload profile picture!": "تعذَّر رفع صورة الملف الشخصي!", "Show more": "أظهر أكثر", "Show less": "أظهر أقل", - "Channel: ": "قناة: %(channelName)s", + "Channel: ": "قناة: ", "This bridge is managed by .": "هذا الجسر يديره .", "Upload": "رفع", "Accept to continue:": "قبول للمتابعة:", diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index e4010e8b64..ebe4e65a16 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -1840,8 +1840,8 @@ "Other users may not trust it": "Други потребители може да не се доверят", "From %(deviceName)s (%(deviceId)s)": "От %(deviceName)s (%(deviceId)s)", "This bridge was provisioned by .": "Мостът е настроен от .", - "Workspace: %(networkName)s": "Работна област: %(networkName)s", - "Channel: %(channelName)s": "Канал: %(channelName)s", + "Workspace: ": "Работна област: ", + "Channel: ": "Канал: ", "Show less": "Покажи по-малко", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Промяната на паролата в момента би нулирало всички ключове за шифроване-от-край-до-край, правейки историята на чата нечетима, освен ако първо не експортирате ключовете, а след промяната на паролата ги импортирате. В бъдеще, това ще бъде подобрено.", "Your homeserver does not support cross-signing.": "Сървърът ви не поддържа кръстосано-подписване.", diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 3f9d231317..d4451bb902 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -1753,8 +1753,8 @@ "Review": "Prohlédnout", "This bridge was provisioned by .": "Toto propojení poskytuje .", "This bridge is managed by .": "Toto propojení spravuje .", - "Workspace: %(networkName)s": "Pracovní oblast: %(networkName)s", - "Channel: %(channelName)s": "Kanál: %(channelName)s", + "Workspace: ": "Pracovní oblast: ", + "Channel: ": "Kanál: ", "Show less": "Skrýt detaily", "Show more": "Více", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Změna hesla resetuje šifrovací klíče pro všechny vaše relace. Pokud si nejdřív nevyexportujete klíče místností a po změně je znovu neimportujete, nedostanete se k historickým zprávám. V budoucnu se toto zjednoduší.", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 974e002ca8..972440e80a 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1669,7 +1669,7 @@ "This bridge was provisioned by .": "Diese Brücke wurde von bereitgestellt.", "This bridge is managed by .": "Diese Brücke wird von verwaltet.", "Workspace: ": "Arbeitsbereich: ", - "Channel: ": "Kanal: %(channelName)s", + "Channel: ": "Kanal: ", "Show less": "Weniger zeigen", "Warning: You should only set up key backup from a trusted computer.": "Achtung: Du solltest die Schlüsselsicherung nur auf einem vertrauenswürdigen Gerät einrichten.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Melde dich an um die ausschließlich in dieser Sitzung gespeicherten Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten in jeder Sitzung zu lesen.", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index 9ea4af86ee..f151d8a857 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -1720,7 +1720,7 @@ "They don't match": "Ili ne akordas", "To be secure, do this in person or use a trusted way to communicate.": "Por plia sekureco, faru tion persone, aŭ uzu alian fidatan komunikilon.", "Verify yourself & others to keep your chats safe": "Kontrolu vin mem kaj aliajn por sekurigi viajn babilojn", - "Channel: ": "Kanalo: %(channelName)s", + "Channel: ": "Kanalo: ", "Show less": "Montri malpli", "Show more": "Montri pli", "Help": "Helpo", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 1635284e58..11c92c9ccf 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1210,7 +1210,7 @@ "Later": "Más tarde", "Upload": "Subir", "Workspace: ": "Espacio de trabajo: ", - "Channel: ": "Canal: %(channelName)s", + "Channel: ": "Canal: ", "Show less": "Mostrar menos", "Show more": "Mostrar más", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Cambiar la contraseña reiniciará cualquier clave de encriptación end-to-end en todas las sesiones, haciendo el historial de conversaciones encriptado ilegible, a no ser que primero exportes tus claves de sala y después las reimportes. En un futuro esto será mejorado.", diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 1d0fe52c0b..3361242ce5 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -1805,7 +1805,7 @@ "This bridge was provisioned by .": "Selle võrgusilla võttis kasutusele .", "This bridge is managed by .": "Seda võrgusilda haldab .", "Workspace: ": "Tööruum: ", - "Channel: ": "Kanal: %(channelName)s", + "Channel: ": "Kanal: ", "Upload new:": "Lae üles uus:", "Export E2E room keys": "Ekspordi jututubade läbiva krüptimise võtmed", "Your homeserver does not support cross-signing.": "Sinu koduserver ei toeta risttunnustamist.", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 37deb7e774..8809129efe 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -1806,7 +1806,7 @@ "Review": "Berrikusi", "This bridge was provisioned by .": "Zubi hau erabiltzaileak hornitu du.", "Workspace: ": "Lan eremua: ", - "Channel: ": "Kanala: %(channelName)s", + "Channel: ": "Kanala: ", "Show less": "Erakutsi gutxiago", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pasahitza aldatzean oraingo muturretik muturrerako zifratze gako guztiak ezeztatuko ditu saio guztietan, zifratutako txaten historiala ezin izango da irakurri ez badituzu aurretik zure geletako gakoak esportatzen eta gero berriro inportatzen. Etorkizunean hau hobetuko da.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Zure kontuak zeharkako sinatze identitate bat du biltegi sekretuan, baina saio honek ez du oraindik fidagarritzat.", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 65c7b41e8c..e4bcc0623d 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1877,7 +1877,7 @@ "This bridge was provisioned by .": "Tämän sillan tarjoaa käyttäjä .", "This bridge is managed by .": "Tätä siltaa hallinnoi käyttäjä .", "Workspace: ": "Työtila: ", - "Channel: ": "Kanava: %(channelName)s", + "Channel: ": "Kanava: ", "Delete %(count)s sessions|other": "Poista %(count)s istuntoa", "Enable": "Ota käyttöön", "Backup is not signed by any of your sessions": "Mikään istuntosi ei ole allekirjoittanut varmuuskopiota", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index f1cb24a686..8b7e2656ea 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1810,7 +1810,7 @@ "They don't match": "Ils ne correspondent pas", "This bridge was provisioned by .": "Cette passerelle a été fournie par .", "Workspace: ": "Espace de travail : ", - "Channel: ": "Canal : %(channelName)s", + "Channel: ": "Canal : ", "Show less": "En voir moins", "This room is bridging messages to the following platforms. Learn more.": "Ce salon transmet les messages vers les plateformes suivantes. En savoir plus.", "This room isn’t bridging messages to any platforms. Learn more.": "Ce salon ne transmet les messages à aucune plateforme. En savoir plus.", diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 63c7dd2423..d43ff020ab 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -1308,7 +1308,7 @@ "This bridge was provisioned by .": "Esta ponte está proporcionada por .", "This bridge is managed by .": "Esta ponte está xestionada por .", "Workspace: ": "Espazo de traballo: ", - "Channel: ": "Canal: %(channelName)s", + "Channel: ": "Canal: ", "Show less": "Mostrar menos", "Show more": "Mostrar máis", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao cambiar o contrasinal vas restablecer todas as chaves de cifrado extremo-a-extremo en tódalas sesións, facendo que o historial de conversa cifrado non sexa lexible, a menos que primeiro exportes todas as chaves das salas e as importes posteriormente. No futuro melloraremos o procedemento.", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 6ced904206..d8d3f01f66 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1794,7 +1794,7 @@ "Review": "Átnéz", "This bridge was provisioned by .": "Ezt a hidat az alábbi felhasználó készítette: .", "Workspace: ": "Munkahely: ", - "Channel: ": "Csatorna: %(channelName)s", + "Channel: ": "Csatorna: ", "Show less": "Kevesebbet mutat", "Securely cache encrypted messages locally for them to appear in search results, using ": "A titkosított üzenetek kereséséhez azokat biztonságos módon helyileg kell tárolnod, felhasználva: ", " to store messages from ": " üzenetek tárolásához ", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 47d7d993d9..616071c785 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1798,7 +1798,7 @@ "Review": "Controlla", "This bridge was provisioned by .": "Questo bridge è stato fornito da .", "Workspace: ": "Spazio di lavoro: ", - "Channel: ": "Canale: %(channelName)s", + "Channel: ": "Canale: ", "Show less": "Mostra meno", "Securely cache encrypted messages locally for them to appear in search results, using ": "Tieni in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca, usando ", " to store messages from ": " per conservare i messaggi da ", diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index aaeb309edb..74b203efb6 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -848,7 +848,7 @@ "This bridge was provisioned by .": "Tileggit-a tella-d sɣur .", "This bridge is managed by .": "Tileggit-a tettusefrak sɣur .", "Workspace: ": "Tallunt n uxeddim: ", - "Channel: ": "Abadu: %(channelName)s", + "Channel: ": "Abadu: ", "Upload new:": "Asali amaynut:", "New passwords don't match": "Awalen uffiren imaynuten ur mṣadan ara", "Passwords can't be empty": "Awalen uffiren ur ilaq ara ad ilin d ilmawen", diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 8ffc1eac55..b4fc60b931 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -1953,7 +1953,7 @@ "not found in storage": "saugykloje nerasta", "Cross-signing is not set up.": "Kryžminis pasirašymas nenustatytas.", "Cross-signing is ready for use.": "Kryžminis pasirašymas yra paruoštas naudoti.", - "Channel: ": "Kanalas: %(channelName)s", + "Channel: ": "Kanalas: ", "Workspace: ": "Darbo sritis: ", "This bridge is managed by .": "Šis tiltas yra tvarkomas .", "This bridge was provisioned by .": "Šis tiltas buvo parūpintas .", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index e09aa82b9a..1277769ad3 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1626,7 +1626,7 @@ "This bridge was provisioned by .": "Dank aan voor de brug.", "This bridge is managed by .": "Brug onderhouden door .", "Workspace: ": "Werkruimte: ", - "Channel: ": "Kanaal: %(channelName)s", + "Channel: ": "Kanaal: ", "Show less": "Minder tonen", "Show more": "Meer tonen", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Momenteel stelt een wachtwoordswijziging alle berichtsleutels in alle sessies opnieuw in, en maakt zo oude versleutelde berichten onleesbaar - tenzij u uw sleutels eerst wegschrijft, en na afloop weer inleest. Dit zal verbeterd worden.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 2d9c66f4c5..d3ecf00c1c 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -1381,7 +1381,7 @@ "This bridge was provisioned by .": "Esta integração foi disponibilizada por .", "This bridge is managed by .": "Esta integração é desenvolvida por .", "Workspace: ": "Espaço de trabalho: ", - "Channel: ": "Canal: %(channelName)s", + "Channel: ": "Canal: ", "Show less": "Mostrar menos", "Show more": "Mostrar mais", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará todas as chaves de criptografia de ponta a ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 53247765cf..b99fef0915 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1671,7 +1671,7 @@ "This bridge was provisioned by .": "Этот мост был подготовлен пользователем .", "This bridge is managed by .": "Этот мост управляется .", "Workspace: ": "Рабочая область: ", - "Channel: ": "Канал: %(channelName)s", + "Channel: ": "Канал: ", "Show less": "Показать меньше", "Show more": "Показать больше", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Если вы не экспортируете ключи для этой комнаты и не импортируете их в будущем, смена пароля приведёт к сбросу всех ключей сквозного шифрования и сделает невозможным чтение истории чата. В будущем это будет улучшено.", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 7fa8e4dd65..77e7d9de2b 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -1537,7 +1537,7 @@ "Unrecognised room address:": "Nerozpoznaná adresa miestnosti:", "This bridge is managed by .": "Tento most spravuje .", "Workspace: ": "Pracovisko: ", - "Channel: ": "Kanál: %(channelName)s", + "Channel: ": "Kanál: ", "Show less": "Zobraziť menej", "Show more": "Zobraziť viac", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla reštartuje všetky šifrovacie kľúče pre všetky vaše relácie. Šifrované správy sa stanú nečitateľnými, pokiaľ najprv nevyexportujete vaše kľúče a po zmene ich nenaimportujete. V budúcnosti sa tento proces zjednoduší.", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index b96ab81f2f..a65892f4d0 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -1820,7 +1820,7 @@ "Verify yourself & others to keep your chats safe": "Verifikoni veten & të tjerët, që t’i mbani bisedat tuaja të sigurta", "This bridge was provisioned by .": "Kjo urë është dhënë nga .", "Workspace: ": "Hapësirë pune: ", - "Channel: ": "Kanal: %(channelName)s", + "Channel: ": "Kanal: ", "Show less": "Shfaq më pak", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ndryshimi i fjalëkalimit do të sjellë zerimin e çfarëdo kyçesh fshehtëzimi skaj-më-skaj në krejt sesionet, duke e bërë të palexueshëm historikun e fshehtëzuar të bisedave, hiq rastin kur i eksportoni më parë kyçet tuaj të dhomës dhe i ri-importoni ata më pas. Në të ardhmen kjo do të përmirësohet.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Llogaria juaj ka një identitet cross-signing në depozitë të fshehtë, por s’është ende i besuar në këtë sesion.", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 1405ea6145..4824895988 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1693,7 +1693,7 @@ "This bridge was provisioned by .": "Den här bryggan tillhandahålls av .", "This bridge is managed by .": "Den här bryggan tillhandahålls av .", "Workspace: ": "Arbetsyta: ", - "Channel: ": "Kanal: %(channelName)s", + "Channel: ": "Kanal: ", "Show less": "Visa mindre", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Att byta lösenord återställer just nu alla krypteringsnycklar på alla sessioner, vilket gör krypterad chatthistorik oläslig om du inte först exporterar dina rumsnycklar och sedan importerar dem igen efteråt. Detta kommer att förbättras i framtiden.", "Your homeserver does not support cross-signing.": "Din hemserver stöder inte korssignering.", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 20ebca68a2..c7711973f9 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1411,7 +1411,7 @@ "Later": "Sonra", "Review": "Gözden Geçirme", "Workspace: ": "Çalışma alanı: ", - "Channel: ": "Kanal: %(channelName)s", + "Channel: ": "Kanal: ", "Show less": "Daha az göster", "Show more": "Daha fazla göster", "in memory": "hafızada", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 3feddd0a33..37b9472d3c 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -956,7 +956,7 @@ "This bridge was provisioned by .": "Цей місток був підготовленим .", "This bridge is managed by .": "Цей міст керується .", "Workspace: ": "Робочий простір: ", - "Channel: ": "Канал: %(channelName)s", + "Channel: ": "Канал: ", "Show less": "Згорнути", "Show more": "Розгорнути", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 46edda95dc..45ca22fdcd 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -2321,7 +2321,7 @@ "Downloading logs": "正在下载日志", "This bridge was provisioned by .": "桥接由 准备。", "Workspace: ": "工作区:", - "Channel: ": "频道:%(channelName)s", + "Channel: ": "频道:", "well formed": "格式正确", "Master private key:": "主私钥:", "Self signing private key:": "自签名私钥:", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index ba63c5f450..b8cecd3b76 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -1805,7 +1805,7 @@ "Review": "評論", "This bridge was provisioned by .": "此橋接是由 設定。", "Workspace: ": "工作空間:", - "Channel: ": "頻道:%(channelName)s", + "Channel: ": "頻道:", "Show less": "顯示較少", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "變更密碼將會重設所有工作階段上的所有端到端加密金鑰,讓已加密的聊天歷史無法讀取,除非您先匯出您的聊天室金鑰並在稍後重新匯入。未來會有所改善。", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "您的帳號在秘密儲存空間中有交叉簽章的身份,但尚未被此工作階段信任。", From b81e6fdedb57eff9610a715cfc1fd0f1b79ca45b Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Tue, 12 Jan 2021 16:04:43 -0600 Subject: [PATCH 026/275] Update src/components/structures/auth/SetupEncryptionBody.js Co-authored-by: J. Ryan Stinnett --- src/components/structures/auth/SetupEncryptionBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/auth/SetupEncryptionBody.js b/src/components/structures/auth/SetupEncryptionBody.js index c3d02073bd..3e7264dfec 100644 --- a/src/components/structures/auth/SetupEncryptionBody.js +++ b/src/components/structures/auth/SetupEncryptionBody.js @@ -120,7 +120,7 @@ export default class SetupEncryptionBody extends React.Component { const store = SetupEncryptionStore.sharedInstance(); let recoveryKeyPrompt; if (store.keyInfo && keyHasPassphrase(store.keyInfo)) { - recoveryKeyPrompt = _t("Use Security Key or Passphrase"); + recoveryKeyPrompt = _t("Use Security Key or Phrase"); } else if (store.keyInfo) { recoveryKeyPrompt = _t("Use Security Key"); } From d479d97e2cba37a82abcb6723764bf5226decc0d Mon Sep 17 00:00:00 2001 From: Aaron Raimist Date: Tue, 12 Jan 2021 16:05:37 -0600 Subject: [PATCH 027/275] Rename recovery-key.txt to security-key.txt Signed-off-by: Aaron Raimist --- .../views/dialogs/security/CreateKeyBackupDialog.js | 2 +- .../views/dialogs/security/CreateSecretStorageDialog.js | 2 +- src/i18n/strings/en_EN.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js index 7b5dbe4d28..863ee2b427 100644 --- a/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js +++ b/src/async-components/views/dialogs/security/CreateKeyBackupDialog.js @@ -95,7 +95,7 @@ export default class CreateKeyBackupDialog extends React.PureComponent { const blob = new Blob([this._keyBackupInfo.recovery_key], { type: 'text/plain;charset=us-ascii', }); - FileSaver.saveAs(blob, 'recovery-key.txt'); + FileSaver.saveAs(blob, 'security-key.txt'); this.setState({ downloaded: true, diff --git a/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js index 5c190a0e2f..84cb58536a 100644 --- a/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js +++ b/src/async-components/views/dialogs/security/CreateSecretStorageDialog.js @@ -235,7 +235,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent { const blob = new Blob([this._recoveryKey.encodedPrivateKey], { type: 'text/plain;charset=us-ascii', }); - FileSaver.saveAs(blob, 'recovery-key.txt'); + FileSaver.saveAs(blob, 'security-key.txt'); this.setState({ downloaded: true, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4e15cbfc1e..f1fe46d1fe 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2548,7 +2548,7 @@ "Create account": "Create account", "Host account on": "Host account on", "Decide where your account is hosted": "Decide where your account is hosted", - "Use Security Key or Passphrase": "Use Security Key or Passphrase", + "Use Security Key or Phrase": "Use Security Key or Phrase", "Use Security Key": "Use Security Key", "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.", "This requires the latest %(brand)s on your other devices:": "This requires the latest %(brand)s on your other devices:", From 30dd24a59c7dcf092004e03d5b765f05ff077375 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 13 Jan 2021 12:59:37 +0000 Subject: [PATCH 028/275] Upgrade matrix-js-sdk to 9.5.0-rc.1 --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 92b574da34..f336a78120 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", + "matrix-js-sdk": "9.5.0-rc.1", "matrix-widget-api": "^0.1.0-beta.10", "minimist": "^1.2.5", "pako": "^1.0.11", diff --git a/yarn.lock b/yarn.lock index b0769c2c04..00f97f966c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6553,9 +6553,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": - version "9.4.1" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/1717fcf499b943517213f2a81c41ffec0b50748e" +matrix-js-sdk@9.5.0-rc.1: + version "9.5.0-rc.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.0-rc.1.tgz#91c2f0ff969baea1416611a39354ca016cc1b7c6" + integrity sha512-TOWU6QKfc3BBTdLyzKMnc0trsaw9sQw3/LaNU/ZqP1LuVDK+qRQxcUfsev0EFfRKURIcI7KvtzRiV+DakN/X+Q== dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" From 5c9fbd283c54248f96dc4e4a601535f1e2e323a6 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 13 Jan 2021 13:06:43 +0000 Subject: [PATCH 029/275] Prepare changelog for v3.12.0-rc.1 --- CHANGELOG.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef31ef886f..349a2c7d8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,54 @@ +Changes in [3.12.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.12.0-rc.1) (2021-01-13) +=============================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.11.1...v3.12.0-rc.1) + + * Fix soft crash on soft logout page + [\#5539](https://github.com/matrix-org/matrix-react-sdk/pull/5539) + * Translations update from Weblate + [\#5538](https://github.com/matrix-org/matrix-react-sdk/pull/5538) + * Run TypeScript tests + [\#5537](https://github.com/matrix-org/matrix-react-sdk/pull/5537) + * Add a basic widget explorer to devtools (per-room) + [\#5528](https://github.com/matrix-org/matrix-react-sdk/pull/5528) + * Add to security key field + [\#5534](https://github.com/matrix-org/matrix-react-sdk/pull/5534) + * Fix avatar upload prompt/tooltip floating wrong and permissions + [\#5526](https://github.com/matrix-org/matrix-react-sdk/pull/5526) + * Add a dialpad UI for PSTN lookup + [\#5523](https://github.com/matrix-org/matrix-react-sdk/pull/5523) + * Basic call transfer initiation support + [\#5494](https://github.com/matrix-org/matrix-react-sdk/pull/5494) + * Fix #15988 + [\#5524](https://github.com/matrix-org/matrix-react-sdk/pull/5524) + * Bump node-notifier from 8.0.0 to 8.0.1 + [\#5520](https://github.com/matrix-org/matrix-react-sdk/pull/5520) + * Use TypeScript source for development, swap to build during release + [\#5503](https://github.com/matrix-org/matrix-react-sdk/pull/5503) + * Look for emoji in the body that will be displayed + [\#5517](https://github.com/matrix-org/matrix-react-sdk/pull/5517) + * Bump ini from 1.3.5 to 1.3.7 + [\#5486](https://github.com/matrix-org/matrix-react-sdk/pull/5486) + * Recognise `*.element.io` links as Element permalinks + [\#5514](https://github.com/matrix-org/matrix-react-sdk/pull/5514) + * Fixes for call UI + [\#5509](https://github.com/matrix-org/matrix-react-sdk/pull/5509) + * Add a snowfall chat effect (with /snowfall command) + [\#5511](https://github.com/matrix-org/matrix-react-sdk/pull/5511) + * fireworks effect + [\#5507](https://github.com/matrix-org/matrix-react-sdk/pull/5507) + * Don't play call end sound for calls that never started + [\#5506](https://github.com/matrix-org/matrix-react-sdk/pull/5506) + * Add /tableflip slash command + [\#5485](https://github.com/matrix-org/matrix-react-sdk/pull/5485) + * Import from src in IncomingCallBox.tsx + [\#5504](https://github.com/matrix-org/matrix-react-sdk/pull/5504) + * Social Login support both https and mxc icons + [\#5499](https://github.com/matrix-org/matrix-react-sdk/pull/5499) + * Fix padding in confirmation email registration prompt + [\#5501](https://github.com/matrix-org/matrix-react-sdk/pull/5501) + * Fix room list help prompt alignment + [\#5500](https://github.com/matrix-org/matrix-react-sdk/pull/5500) + Changes in [3.11.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.11.1) (2020-12-21) ===================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.11.0...v3.11.1) From 97af6a8fd8fbfaf79eb867a5dfd6841a21ec42f8 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 13 Jan 2021 13:06:44 +0000 Subject: [PATCH 030/275] v3.12.0-rc.1 --- package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index f336a78120..050e2562a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.11.1", + "version": "3.12.0-rc.1", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { @@ -27,7 +27,7 @@ "matrix-gen-i18n": "scripts/gen-i18n.js", "matrix-prune-i18n": "scripts/prune-i18n.js" }, - "main": "./src/index.js", + "main": "./lib/index.js", "matrix_src_main": "./src/index.js", "matrix_lib_main": "./lib/index.js", "matrix_lib_typings": "./lib/index.d.ts", @@ -188,5 +188,6 @@ "transformIgnorePatterns": [ "/node_modules/(?!matrix-js-sdk).+$" ] - } + }, + "typings": "./lib/index.d.ts" } From c1c57c2c16e11f43b4fbf8fa86568f0b8e3aaba4 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 13 Jan 2021 13:07:51 +0000 Subject: [PATCH 031/275] Add extra notes to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 349a2c7d8e..ef56762a31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Changes in [3.12.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases =============================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.11.1...v3.12.0-rc.1) + * Upgrade to JS SDK 9.5.0-rc.1 * Fix soft crash on soft logout page [\#5539](https://github.com/matrix-org/matrix-react-sdk/pull/5539) * Translations update from Weblate From 0c5a8f8adb8c65e046188036a8fb42590eda0593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Wed, 13 Jan 2021 15:30:09 +0100 Subject: [PATCH 032/275] Added commands for DM conversion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/SlashCommands.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/SlashCommands.tsx b/src/SlashCommands.tsx index 79c21c4af5..a39ad33b04 100644 --- a/src/SlashCommands.tsx +++ b/src/SlashCommands.tsx @@ -48,6 +48,7 @@ import SettingsStore from "./settings/SettingsStore"; import {UIFeature} from "./settings/UIFeature"; import {CHAT_EFFECTS} from "./effects" import CallHandler from "./CallHandler"; +import {guessAndSetDMRoom} from "./Rooms"; // XXX: workaround for https://github.com/microsoft/TypeScript/issues/31816 interface HTMLInputEvent extends Event { @@ -1112,6 +1113,24 @@ export const Commands = [ return success(); }, }), + new Command({ + command: "converttodm", + description: _td("Converts the room to a DM"), + category: CommandCategories.other, + runFn: function(roomId, args) { + const room = MatrixClientPeg.get().getRoom(roomId); + return success(guessAndSetDMRoom(room, true)); + }, + }), + new Command({ + command: "converttoroom", + description: _td("Converts the DM to a room"), + category: CommandCategories.other, + runFn: function(roomId, args) { + const room = MatrixClientPeg.get().getRoom(roomId); + return success(guessAndSetDMRoom(room, false)); + }, + }), // Command definitions for autocompletion ONLY: // /me is special because its not handled by SlashCommands.js and is instead done inside the Composer classes From 948279ee9c58bd9b355f2b3b66b00f28b3d0cc29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Wed, 13 Jan 2021 15:32:52 +0100 Subject: [PATCH 033/275] i18n MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/i18n/strings/en_EN.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ac18ccb23e..e7604e1025 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -474,6 +474,8 @@ "Sends a message to the given user": "Sends a message to the given user", "Places the call in the current room on hold": "Places the call in the current room on hold", "Takes the call in the current room off hold": "Takes the call in the current room off hold", + "Converts the room to a DM": "Converts the room to a DM", + "Converts the DM to a room": "Converts the DM to a room", "Displays action": "Displays action", "Reason": "Reason", "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", From 20283eabe0fd1f2ff21591b9b1c95c6a448b4099 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 13 Jan 2021 15:31:26 +0000 Subject: [PATCH 034/275] Fix incoming call box on dark theme --- res/css/views/voip/_CallContainer.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/voip/_CallContainer.scss b/res/css/views/voip/_CallContainer.scss index ae1d37de71..d9843b668e 100644 --- a/res/css/views/voip/_CallContainer.scss +++ b/res/css/views/voip/_CallContainer.scss @@ -46,7 +46,7 @@ limitations under the License. .mx_IncomingCallBox { min-width: 250px; - background-color: $secondary-accent-color; + background-color: $primary-bg-color; padding: 8px; box-shadow: 0px 14px 24px rgba(0, 0, 0, 0.08); border-radius: 8px; From 1b98ada55f87acba392c520fb751def4b3ca6194 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 13 Jan 2021 16:55:38 +0000 Subject: [PATCH 035/275] Actually this is right colour --- res/css/views/voip/_CallContainer.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/voip/_CallContainer.scss b/res/css/views/voip/_CallContainer.scss index d9843b668e..8262075559 100644 --- a/res/css/views/voip/_CallContainer.scss +++ b/res/css/views/voip/_CallContainer.scss @@ -46,7 +46,7 @@ limitations under the License. .mx_IncomingCallBox { min-width: 250px; - background-color: $primary-bg-color; + background-color: $voipcall-plinth-color; padding: 8px; box-shadow: 0px 14px 24px rgba(0, 0, 0, 0.08); border-radius: 8px; From 729356394e30672832f176a338eade2b1f3de51c Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 15 Jan 2021 13:54:38 +0000 Subject: [PATCH 036/275] Use room-specific listeners for message previews This should be a bit faster (since we now only notify one tile instead of all for each update). It also resolves the max listener warning. Fixes https://github.com/vector-im/element-web/issues/15121 --- src/components/views/rooms/RoomTile.tsx | 22 ++++++++++++++++++--- src/stores/room-list/MessagePreviewStore.ts | 10 +++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index a241a13991..2ad10c79c8 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -29,7 +29,7 @@ import ActiveRoomObserver from "../../../ActiveRoomObserver"; import { _t } from "../../../languageHandler"; import { ChevronFace, ContextMenuTooltipButton } from "../../structures/ContextMenu"; import { DefaultTagID, TagID } from "../../../stores/room-list/models"; -import { MessagePreviewStore, ROOM_PREVIEW_CHANGED } from "../../../stores/room-list/MessagePreviewStore"; +import { MessagePreviewStore } from "../../../stores/room-list/MessagePreviewStore"; import DecoratedRoomAvatar from "../avatars/DecoratedRoomAvatar"; import { ALL_MESSAGES, ALL_MESSAGES_LOUD, MENTIONS_ONLY, MUTE } from "../../../RoomNotifs"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; @@ -99,7 +99,10 @@ export default class RoomTile extends React.PureComponent { ActiveRoomObserver.addListener(this.props.room.roomId, this.onActiveRoomUpdate); this.dispatcherRef = defaultDispatcher.register(this.onAction); - MessagePreviewStore.instance.on(ROOM_PREVIEW_CHANGED, this.onRoomPreviewChanged); + MessagePreviewStore.instance.on( + MessagePreviewStore.getPreviewChangedEventName(this.props.room), + this.onRoomPreviewChanged, + ); this.notificationState = RoomNotificationStateStore.instance.getRoomState(this.props.room); this.notificationState.on(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); this.roomProps = EchoChamber.forRoom(this.props.room); @@ -128,6 +131,16 @@ export default class RoomTile extends React.PureComponent { if (prevProps.showMessagePreview !== this.props.showMessagePreview && this.showMessagePreview) { this.setState({messagePreview: this.generatePreview()}); } + if (prevProps.room?.roomId !== this.props.room?.roomId) { + MessagePreviewStore.instance.off( + MessagePreviewStore.getPreviewChangedEventName(prevProps.room), + this.onRoomPreviewChanged, + ); + MessagePreviewStore.instance.on( + MessagePreviewStore.getPreviewChangedEventName(this.props.room), + this.onRoomPreviewChanged, + ); + } } public componentDidMount() { @@ -140,9 +153,12 @@ export default class RoomTile extends React.PureComponent { public componentWillUnmount() { if (this.props.room) { ActiveRoomObserver.removeListener(this.props.room.roomId, this.onActiveRoomUpdate); + MessagePreviewStore.instance.off( + MessagePreviewStore.getPreviewChangedEventName(this.props.room), + this.onRoomPreviewChanged, + ); } defaultDispatcher.unregister(this.dispatcherRef); - MessagePreviewStore.instance.off(ROOM_PREVIEW_CHANGED, this.onRoomPreviewChanged); this.notificationState.off(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); CommunityPrototypeStore.instance.off(UPDATE_EVENT, this.onCommunityUpdate); } diff --git a/src/stores/room-list/MessagePreviewStore.ts b/src/stores/room-list/MessagePreviewStore.ts index 2803f0a23e..38e56881cc 100644 --- a/src/stores/room-list/MessagePreviewStore.ts +++ b/src/stores/room-list/MessagePreviewStore.ts @@ -30,7 +30,7 @@ import { UPDATE_EVENT } from "../AsyncStore"; // Emitted event for when a room's preview has changed. First argument will the room for which // the change happened. -export const ROOM_PREVIEW_CHANGED = "room_preview_changed"; +const ROOM_PREVIEW_CHANGED = "room_preview_changed"; const PREVIEWS = { 'm.room.message': { @@ -84,6 +84,10 @@ export class MessagePreviewStore extends AsyncStoreWithClient { return MessagePreviewStore.internalInstance; } + public static getPreviewChangedEventName(room: Room): string { + return `${ROOM_PREVIEW_CHANGED}:${room?.roomId}`; + } + /** * Gets the pre-translated preview for a given room * @param room The room to get the preview for. @@ -150,7 +154,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient { // We've muted the underlying Map, so just emit that we've changed. this.previews.set(room.roomId, map); this.emit(UPDATE_EVENT, this); - this.emit(ROOM_PREVIEW_CHANGED, room); + this.emit(MessagePreviewStore.getPreviewChangedEventName(room), room); } return; // we're done } @@ -158,7 +162,7 @@ export class MessagePreviewStore extends AsyncStoreWithClient { // At this point, we didn't generate a preview so clear it this.previews.set(room.roomId, new Map()); this.emit(UPDATE_EVENT, this); - this.emit(ROOM_PREVIEW_CHANGED, room); + this.emit(MessagePreviewStore.getPreviewChangedEventName(room), room); } protected async onAction(payload: ActionPayload) { From 8a341446aaecb00ccf357209ce5521e358365f71 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 15 Jan 2021 14:34:56 +0000 Subject: [PATCH 037/275] Use room-specific listeners for community prototype Similar to message previews, this changes another area to use room-specific listeners for better performance and avoiding warnings. --- src/components/views/rooms/RoomTile.tsx | 18 ++++++++++++++++-- src/stores/CommunityPrototypeStore.ts | 9 +++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 2ad10c79c8..959b2f162a 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -107,7 +107,10 @@ export default class RoomTile extends React.PureComponent { this.notificationState.on(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); this.roomProps = EchoChamber.forRoom(this.props.room); this.roomProps.on(PROPERTY_UPDATED, this.onRoomPropertyUpdate); - CommunityPrototypeStore.instance.on(UPDATE_EVENT, this.onCommunityUpdate); + CommunityPrototypeStore.instance.on( + CommunityPrototypeStore.getUpdateEventName(this.props.room.roomId), + this.onCommunityUpdate, + ); } private onNotificationUpdate = () => { @@ -140,6 +143,14 @@ export default class RoomTile extends React.PureComponent { MessagePreviewStore.getPreviewChangedEventName(this.props.room), this.onRoomPreviewChanged, ); + CommunityPrototypeStore.instance.off( + CommunityPrototypeStore.getUpdateEventName(prevProps.room?.roomId), + this.onCommunityUpdate, + ); + CommunityPrototypeStore.instance.on( + CommunityPrototypeStore.getUpdateEventName(this.props.room?.roomId), + this.onCommunityUpdate, + ); } } @@ -157,10 +168,13 @@ export default class RoomTile extends React.PureComponent { MessagePreviewStore.getPreviewChangedEventName(this.props.room), this.onRoomPreviewChanged, ); + CommunityPrototypeStore.instance.off( + CommunityPrototypeStore.getUpdateEventName(this.props.room.roomId), + this.onCommunityUpdate, + ); } defaultDispatcher.unregister(this.dispatcherRef); this.notificationState.off(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); - CommunityPrototypeStore.instance.off(UPDATE_EVENT, this.onCommunityUpdate); } private onAction = (payload: ActionPayload) => { diff --git a/src/stores/CommunityPrototypeStore.ts b/src/stores/CommunityPrototypeStore.ts index 95d56bd40e..92e094c83b 100644 --- a/src/stores/CommunityPrototypeStore.ts +++ b/src/stores/CommunityPrototypeStore.ts @@ -48,6 +48,10 @@ export class CommunityPrototypeStore extends AsyncStoreWithClient { return CommunityPrototypeStore.internalInstance; } + public static getUpdateEventName(roomId: string): string { + return `${UPDATE_EVENT}:${roomId}`; + } + public getSelectedCommunityId(): string { if (SettingsStore.getValue("feature_communities_v2_prototypes")) { return GroupFilterOrderStore.getSelectedTags()[0]; @@ -134,7 +138,8 @@ export class CommunityPrototypeStore extends AsyncStoreWithClient { } } else if (payload.action === "MatrixActions.accountData") { if (payload.event_type.startsWith("im.vector.group_info.")) { - this.emit(UPDATE_EVENT, payload.event_type.substring("im.vector.group_info.".length)); + const roomId = payload.event_type.substring("im.vector.group_info.".length); + this.emit(CommunityPrototypeStore.getUpdateEventName(roomId), roomId); } } else if (payload.action === "select_tag") { // Automatically select the general chat when switching communities @@ -167,7 +172,7 @@ export class CommunityPrototypeStore extends AsyncStoreWithClient { if (getEffectiveMembership(myMember.membership) === EffectiveMembership.Invite) { // Fake an update for anything that might have started listening before the invite // data was available (eg: RoomPreviewBar after a refresh) - this.emit(UPDATE_EVENT, room.roomId); + this.emit(CommunityPrototypeStore.getUpdateEventName(room.roomId), room.roomId); } } } From 462e0889f05172e06de3927cf81d594af848d748 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Fri, 15 Jan 2021 14:46:38 +0000 Subject: [PATCH 038/275] Fix lint --- src/components/views/rooms/RoomTile.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index 959b2f162a..c985e80010 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -51,7 +51,6 @@ import IconizedContextMenu, { IconizedContextMenuRadio, } from "../context_menus/IconizedContextMenu"; import { CommunityPrototypeStore, IRoomProfile } from "../../../stores/CommunityPrototypeStore"; -import { UPDATE_EVENT } from "../../../stores/AsyncStore"; interface IProps { room: Room; From ea61c979f91f323d6806f4044bb95808c5794074 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sat, 16 Jan 2021 23:29:27 -0700 Subject: [PATCH 039/275] Try a different string --- src/i18n/strings/en_EN.json | 2 +- src/widgets/CapabilityText.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b53bb90c92..384f6d04e9 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -584,7 +584,7 @@ "Send stickers into this room": "Send stickers into this room", "Send stickers into your active room": "Send stickers into your active room", "Change which room you're viewing": "Change which room you're viewing", - "Change which room you're viewing and use permalinks": "Change which room you're viewing and use permalinks", + "Change which room, message, or user you're viewing": "Change which room, message, or user you're viewing", "Change the topic of this room": "Change the topic of this room", "See when the topic changes in this room": "See when the topic changes in this room", "Change the topic of your active room": "Change the topic of your active room", diff --git a/src/widgets/CapabilityText.tsx b/src/widgets/CapabilityText.tsx index 044b7701ba..273d22dc81 100644 --- a/src/widgets/CapabilityText.tsx +++ b/src/widgets/CapabilityText.tsx @@ -61,7 +61,7 @@ export class CapabilityText { [GENERIC_WIDGET_KIND]: _td("Change which room you're viewing"), }, [MatrixCapabilities.MSC2931Navigate]: { - [GENERIC_WIDGET_KIND]: _td("Change which room you're viewing and use permalinks"), + [GENERIC_WIDGET_KIND]: _td("Change which room, message, or user you're viewing"), }, }; From f6a328a55b44ca508a6aaed7ef7f63f5759d110c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sat, 16 Jan 2021 23:34:16 -0700 Subject: [PATCH 040/275] Update widget api --- package.json | 2 +- yarn.lock | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 92b574da34..cb70541f99 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "linkifyjs": "^2.1.9", "lodash": "^4.17.19", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", - "matrix-widget-api": "^0.1.0-beta.10", + "matrix-widget-api": "0.1.0-beta.11", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", diff --git a/yarn.lock b/yarn.lock index b0769c2c04..e2292d66ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1809,6 +1809,11 @@ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== +"@types/events@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + "@types/fbemitter@*": version "2.0.32" resolved "https://registry.yarnpkg.com/@types/fbemitter/-/fbemitter-2.0.32.tgz#8ed204da0f54e9c8eaec31b1eec91e25132d082c" @@ -6580,11 +6585,12 @@ matrix-react-test-utils@^0.2.2: resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853" integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ== -matrix-widget-api@^0.1.0-beta.10: - version "0.1.0-beta.10" - resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.10.tgz#2e4d658d90ff3152c5567089b4ddd21fb44ec1dd" - integrity sha512-yX2UURjM1zVp7snPiOFcH9+FDBdHfAdt5HEAyDUHGJ7w/F2zOtcK/y0dMlZ1+XhxY7Wv0IBZH0US8X/ioJRX1A== +matrix-widget-api@0.1.0-beta.11: + version "0.1.0-beta.11" + resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.11.tgz#3658e244bf82eebea36e64475ebfce86b778b476" + integrity sha512-RxIghopRKTQdmYMJzZg/QR+wcPcKe9S1pZZ31zN/M1LKsvTLThBYdMcP1idKh7MkhpO9eCdCVjJOMJTrqxNzbQ== dependencies: + "@types/events" "^3.0.0" events "^3.2.0" mdast-util-compact@^1.0.0: From cb91d7037f574fecb1d36f4a23717d123f0ca85c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sun, 17 Jan 2021 08:28:52 +0100 Subject: [PATCH 041/275] Added search shortcut MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/structures/LoggedInView.tsx | 8 ++++++++ src/components/structures/RoomView.tsx | 3 +++ 2 files changed, 11 insertions(+) diff --git a/src/components/structures/LoggedInView.tsx b/src/components/structures/LoggedInView.tsx index ec5afd13f0..f34427ba88 100644 --- a/src/components/structures/LoggedInView.tsx +++ b/src/components/structures/LoggedInView.tsx @@ -419,6 +419,14 @@ class LoggedInView extends React.Component { handled = true; } break; + case Key.F: + if (ctrlCmdOnly) { + dis.dispatch({ + action: 'focus_search', + }); + handled = true; + } + break; case Key.BACKTICK: // Ideally this would be CTRL+P for "Profile", but that's // taken by the print dialog. CTRL+I for "Information" diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index 0ee847fbc9..c4e88b5781 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -748,6 +748,9 @@ export default class RoomView extends React.Component { }); } break; + case 'focus_search': + this.onSearchClick(); + break; } }; From 3c199d8c78e324116eaae6e462ca764e8acdffd7 Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Sun, 17 Jan 2021 15:18:17 +0530 Subject: [PATCH 042/275] Improved language search --- src/components/views/elements/LanguageDropdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/LanguageDropdown.js b/src/components/views/elements/LanguageDropdown.js index e37109caff..707983c2a9 100644 --- a/src/components/views/elements/LanguageDropdown.js +++ b/src/components/views/elements/LanguageDropdown.js @@ -24,7 +24,7 @@ import SettingsStore from "../../../settings/SettingsStore"; import { _t } from "../../../languageHandler"; function languageMatchesSearchQuery(query, language) { - if (language.label.toUpperCase().includes(query.toUpperCase())) return true; + if (language.label.toUpperCase().startsWith(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; return false; } From 2c8aaa27dd2e69d445b67bd519c1b23e0a63c1b2 Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Sun, 17 Jan 2021 18:50:33 +0530 Subject: [PATCH 043/275] Increase width of language dropdown --- res/css/views/auth/_LanguageSelector.scss | 1 + res/css/views/auth/_Welcome.scss | 2 +- src/components/views/elements/LanguageDropdown.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/res/css/views/auth/_LanguageSelector.scss b/res/css/views/auth/_LanguageSelector.scss index 781561f876..0823d47720 100644 --- a/res/css/views/auth/_LanguageSelector.scss +++ b/res/css/views/auth/_LanguageSelector.scss @@ -23,6 +23,7 @@ limitations under the License. font-size: $font-14px; font-weight: 600; color: $authpage-lang-color; + width: 160px; } .mx_AuthBody_language .mx_Dropdown_arrow { diff --git a/res/css/views/auth/_Welcome.scss b/res/css/views/auth/_Welcome.scss index f0e2b3de33..6c16c953fa 100644 --- a/res/css/views/auth/_Welcome.scss +++ b/res/css/views/auth/_Welcome.scss @@ -27,6 +27,6 @@ limitations under the License. } .mx_Welcome .mx_AuthBody_language { - width: 120px; + width: 160px; margin-bottom: 10px; } diff --git a/src/components/views/elements/LanguageDropdown.js b/src/components/views/elements/LanguageDropdown.js index 707983c2a9..e37109caff 100644 --- a/src/components/views/elements/LanguageDropdown.js +++ b/src/components/views/elements/LanguageDropdown.js @@ -24,7 +24,7 @@ import SettingsStore from "../../../settings/SettingsStore"; import { _t } from "../../../languageHandler"; function languageMatchesSearchQuery(query, language) { - if (language.label.toUpperCase().startsWith(query.toUpperCase())) return true; + if (language.label.toUpperCase().includes(query.toUpperCase())) return true; if (language.value.toUpperCase() === query.toUpperCase()) return true; return false; } From 8853508363022bcbebea9bc699c7bc046be7368d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sun, 17 Jan 2021 16:36:54 +0100 Subject: [PATCH 044/275] Added search shortcut MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/accessibility/KeyboardShortcuts.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/accessibility/KeyboardShortcuts.tsx b/src/accessibility/KeyboardShortcuts.tsx index 48d0eb2ab1..7a0ba58c97 100644 --- a/src/accessibility/KeyboardShortcuts.tsx +++ b/src/accessibility/KeyboardShortcuts.tsx @@ -168,6 +168,12 @@ const shortcuts: Record = { key: Key.U, }], description: _td("Upload a file"), + }, { + keybinds: [{ + modifiers: [CMD_OR_CTRL], + key: Key.F, + }], + description: _td("Search (must be enabled)"), }, ], From e7384f829a73f938055c3e260f5bb67bc04d6c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sun, 17 Jan 2021 16:44:29 +0100 Subject: [PATCH 045/275] Made search shortcut optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/structures/LoggedInView.tsx | 2 +- .../views/settings/tabs/user/PreferencesUserSettingsTab.js | 1 + src/settings/Settings.ts | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/structures/LoggedInView.tsx b/src/components/structures/LoggedInView.tsx index f34427ba88..5f276f1e7a 100644 --- a/src/components/structures/LoggedInView.tsx +++ b/src/components/structures/LoggedInView.tsx @@ -420,7 +420,7 @@ class LoggedInView extends React.Component { } break; case Key.F: - if (ctrlCmdOnly) { + if (ctrlCmdOnly && SettingsStore.getValue("ctrlFForSearch")) { dis.dispatch({ action: 'focus_search', }); diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js index 4d8493401e..a32549b326 100644 --- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js @@ -52,6 +52,7 @@ export default class PreferencesUserSettingsTab extends React.Component { 'showImages', 'showChatEffects', 'Pill.shouldShowPillAvatar', + 'ctrlFForSearch', ]; static GENERAL_SETTINGS = [ diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index b239b809fe..fd03de1eb5 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -331,6 +331,11 @@ export const SETTINGS: {[setting: string]: ISetting} = { displayName: _td("Show typing notifications"), default: true, }, + "ctrlFForSearch": { + supportedLevels: LEVELS_ACCOUNT_SETTINGS, + displayName: isMac ? _td("Use Command + F to search") : _td("Use Ctrl + F to search"), + default: false, + }, "MessageComposerInput.ctrlEnterToSend": { supportedLevels: LEVELS_ACCOUNT_SETTINGS, displayName: isMac ? _td("Use Command + Enter to send a message") : _td("Use Ctrl + Enter to send a message"), From fb60ba3482c2d7f94b03df28c766269968a90186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sun, 17 Jan 2021 16:45:29 +0100 Subject: [PATCH 046/275] i18n MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/i18n/strings/en_EN.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8739d0cf2f..f0d0be3e1b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -797,6 +797,8 @@ "Enable big emoji in chat": "Enable big emoji in chat", "Send typing notifications": "Send typing notifications", "Show typing notifications": "Show typing notifications", + "Use Command + F to search": "Use Command + F to search", + "Use Ctrl + F to search": "Use Ctrl + F to search", "Use Command + Enter to send a message": "Use Command + Enter to send a message", "Use Ctrl + Enter to send a message": "Use Ctrl + Enter to send a message", "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", @@ -2705,6 +2707,7 @@ "Dismiss read marker and jump to bottom": "Dismiss read marker and jump to bottom", "Jump to oldest unread message": "Jump to oldest unread message", "Upload a file": "Upload a file", + "Search (must be enabled)": "Search (must be enabled)", "Jump to room search": "Jump to room search", "Navigate up/down in the room list": "Navigate up/down in the room list", "Select room from the room list": "Select room from the room list", From 461c0733d9325c4620d876ca82eea46f4d39c6b9 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 18 Jan 2021 11:35:08 +0000 Subject: [PATCH 047/275] Revert strings --- src/i18n/strings/ar.json | 2 +- src/i18n/strings/bg.json | 4 ++-- src/i18n/strings/cs.json | 4 ++-- src/i18n/strings/de_DE.json | 4 ++-- src/i18n/strings/en_EN.json | 20 +++++--------------- src/i18n/strings/eo.json | 4 ++-- src/i18n/strings/es.json | 4 ++-- src/i18n/strings/et.json | 4 ++-- src/i18n/strings/eu.json | 4 ++-- src/i18n/strings/fi.json | 4 ++-- src/i18n/strings/fr.json | 4 ++-- src/i18n/strings/gl.json | 4 ++-- src/i18n/strings/hu.json | 4 ++-- src/i18n/strings/it.json | 4 ++-- src/i18n/strings/kab.json | 4 ++-- src/i18n/strings/lt.json | 4 ++-- src/i18n/strings/nl.json | 4 ++-- src/i18n/strings/pt_BR.json | 4 ++-- src/i18n/strings/ru.json | 4 ++-- src/i18n/strings/sk.json | 4 ++-- src/i18n/strings/sq.json | 4 ++-- src/i18n/strings/sv.json | 4 ++-- src/i18n/strings/tr.json | 4 ++-- src/i18n/strings/uk.json | 4 ++-- src/i18n/strings/zh_Hans.json | 4 ++-- src/i18n/strings/zh_Hant.json | 4 ++-- 26 files changed, 54 insertions(+), 64 deletions(-) diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index 8e8ae3f775..5da09afd23 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -1056,7 +1056,7 @@ "Failed to upload profile picture!": "تعذَّر رفع صورة الملف الشخصي!", "Show more": "أظهر أكثر", "Show less": "أظهر أقل", - "Channel: ": "قناة: ", + "Channel: %(channelName)s": "قناة: %(channelName)s", "This bridge is managed by .": "هذا الجسر يديره .", "Upload": "رفع", "Accept to continue:": "قبول للمتابعة:", diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index ebe4e65a16..e4010e8b64 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -1840,8 +1840,8 @@ "Other users may not trust it": "Други потребители може да не се доверят", "From %(deviceName)s (%(deviceId)s)": "От %(deviceName)s (%(deviceId)s)", "This bridge was provisioned by .": "Мостът е настроен от .", - "Workspace: ": "Работна област: ", - "Channel: ": "Канал: ", + "Workspace: %(networkName)s": "Работна област: %(networkName)s", + "Channel: %(channelName)s": "Канал: %(channelName)s", "Show less": "Покажи по-малко", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Промяната на паролата в момента би нулирало всички ключове за шифроване-от-край-до-край, правейки историята на чата нечетима, освен ако първо не експортирате ключовете, а след промяната на паролата ги импортирате. В бъдеще, това ще бъде подобрено.", "Your homeserver does not support cross-signing.": "Сървърът ви не поддържа кръстосано-подписване.", diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index d4451bb902..3f9d231317 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -1753,8 +1753,8 @@ "Review": "Prohlédnout", "This bridge was provisioned by .": "Toto propojení poskytuje .", "This bridge is managed by .": "Toto propojení spravuje .", - "Workspace: ": "Pracovní oblast: ", - "Channel: ": "Kanál: ", + "Workspace: %(networkName)s": "Pracovní oblast: %(networkName)s", + "Channel: %(channelName)s": "Kanál: %(channelName)s", "Show less": "Skrýt detaily", "Show more": "Více", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Změna hesla resetuje šifrovací klíče pro všechny vaše relace. Pokud si nejdřív nevyexportujete klíče místností a po změně je znovu neimportujete, nedostanete se k historickým zprávám. V budoucnu se toto zjednoduší.", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 972440e80a..8588ccb7d6 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1668,8 +1668,8 @@ "Verify yourself & others to keep your chats safe": "Verifiziere dich & andere, um eure Chats zu schützen", "This bridge was provisioned by .": "Diese Brücke wurde von bereitgestellt.", "This bridge is managed by .": "Diese Brücke wird von verwaltet.", - "Workspace: ": "Arbeitsbereich: ", - "Channel: ": "Kanal: ", + "Workspace: %(networkName)s": "Arbeitsbereich: %(networkName)s", + "Channel: %(channelName)s": "Kanal: %(channelName)s", "Show less": "Weniger zeigen", "Warning: You should only set up key backup from a trusted computer.": "Achtung: Du solltest die Schlüsselsicherung nur auf einem vertrauenswürdigen Gerät einrichten.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Melde dich an um die ausschließlich in dieser Sitzung gespeicherten Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten in jeder Sitzung zu lesen.", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ac45a6b763..c6a724f02f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -411,8 +411,6 @@ "Command error": "Command error", "Usage": "Usage", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Prepends ¯\\_(ツ)_/¯ to a plain-text message", - "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message", - "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message", "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message", "Sends a message as plain text, without interpreting it as markdown": "Sends a message as plain text, without interpreting it as markdown", "Sends a message as html, without interpreting it as markdown": "Sends a message as html, without interpreting it as markdown", @@ -861,9 +859,6 @@ "Fill Screen": "Fill Screen", "Return to call": "Return to call", "%(name)s on hold": "%(name)s on hold", - "Unable to look up phone number": "Unable to look up phone number", - "There was an error looking up the phone number": "There was an error looking up the phone number", - "Dial pad": "Dial pad", "Unknown caller": "Unknown caller", "Incoming voice call": "Incoming voice call", "Incoming video call": "Incoming video call", @@ -965,8 +960,10 @@ "Upload": "Upload", "This bridge was provisioned by .": "This bridge was provisioned by .", "This bridge is managed by .": "This bridge is managed by .", - "Workspace: ": "Workspace: ", - "Channel: ": "Channel: ", + "Workspace: %s": "Workspace: %s", + "Channel: %s": "Channel: %s", + "Show less": "Show less", + "Show more": "Show more", "Failed to upload profile picture!": "Failed to upload profile picture!", "Upload new:": "Upload new:", "No display name": "No display name", @@ -1460,8 +1457,6 @@ "Hide Widgets": "Hide Widgets", "Show Widgets": "Show Widgets", "Search": "Search", - "Start a Conversation": "Start a Conversation", - "Open dial pad": "Open dial pad", "Invites": "Invites", "Favourites": "Favourites", "People": "People", @@ -1530,7 +1525,6 @@ "Jump to first invite.": "Jump to first invite.", "Show %(count)s more|other": "Show %(count)s more", "Show %(count)s more|one": "Show %(count)s more", - "Show less": "Show less", "Use default": "Use default", "All messages": "All messages", "Mentions & Keywords": "Mentions & Keywords", @@ -1593,7 +1587,6 @@ "New published address (e.g. #alias:server)": "New published address (e.g. #alias:server)", "Local Addresses": "Local Addresses", "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)", - "Show more": "Show more", "Error updating flair": "Error updating flair", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.", "Invalid community ID": "Invalid community ID", @@ -2082,8 +2075,6 @@ "We couldn't create your DM. Please check the users you want to invite and try again.": "We couldn't create your DM. Please check the users you want to invite and try again.", "Something went wrong trying to invite the users.": "Something went wrong trying to invite the users.", "We couldn't invite those users. Please check the users you want to invite and try again.": "We couldn't invite those users. Please check the users you want to invite and try again.", - "A call can only be transferred to a single user.": "A call can only be transferred to a single user.", - "Failed to transfer call": "Failed to transfer call", "Failed to find the following users": "Failed to find the following users", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s", "Recent Conversations": "Recent Conversations", @@ -2097,7 +2088,6 @@ "Go": "Go", "Invite someone using their name, email address, username (like ) or share this room.": "Invite someone using their name, email address, username (like ) or share this room.", "Invite someone using their name, username (like ) or share this room.": "Invite someone using their name, username (like ) or share this room.", - "Transfer": "Transfer", "a new master key signature": "a new master key signature", "a new cross-signing key signature": "a new cross-signing key signature", "a device cross-signing signature": "a device cross-signing signature", @@ -2439,7 +2429,7 @@ "Create a new community": "Create a new community", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.", "You’re all caught up": "You’re all caught up", - "You have no visible notifications.": "You have no visible notifications.", + "You have no visible notifications in this room.": "You have no visible notifications in this room.", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.", "%(brand)s failed to get the public room list.": "%(brand)s failed to get the public room list.", "The homeserver may be unavailable or overloaded.": "The homeserver may be unavailable or overloaded.", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index f151d8a857..3545565fa3 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -1720,7 +1720,7 @@ "They don't match": "Ili ne akordas", "To be secure, do this in person or use a trusted way to communicate.": "Por plia sekureco, faru tion persone, aŭ uzu alian fidatan komunikilon.", "Verify yourself & others to keep your chats safe": "Kontrolu vin mem kaj aliajn por sekurigi viajn babilojn", - "Channel: ": "Kanalo: ", + "Channel: %(channelName)s": "Kanalo: %(channelName)s", "Show less": "Montri malpli", "Show more": "Montri pli", "Help": "Helpo", @@ -1760,7 +1760,7 @@ "Review": "Rekontroli", "This bridge was provisioned by .": "Ĉi tiu ponto estas provizita de .", "This bridge is managed by .": "Ĉi tiu ponto estas administrata de .", - "Workspace: ": "Labortablo: ", + "Workspace: %(networkName)s": "Labortablo: %(networkName)s", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ŝanĝo de pasvorto nuntempe restarigos ĉiujn tutvoje ĉifrajn ŝlosilojn en ĉiuj salutaĵoj, malebligante legadon de ĉifrita historio, malse vi unue elportus la ŝlosilojn de viaj ĉambroj kaj reenportus ilin poste. Ĉi tion ni plibonigos ose.", "Your homeserver does not support cross-signing.": "Via hejmservilo ne subtenas delegajn subskribojn.", "Cross-signing and secret storage are enabled.": "Delegaj subskriboj kaj sekreta deponejo estas ŝaltitaj.", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 11c92c9ccf..34c40800f7 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1209,8 +1209,8 @@ "Verify": "Verificar", "Later": "Más tarde", "Upload": "Subir", - "Workspace: ": "Espacio de trabajo: ", - "Channel: ": "Canal: ", + "Workspace: %(networkName)s": "Espacio de trabajo: %(networkName)s", + "Channel: %(channelName)s": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar más", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Cambiar la contraseña reiniciará cualquier clave de encriptación end-to-end en todas las sesiones, haciendo el historial de conversaciones encriptado ilegible, a no ser que primero exportes tus claves de sala y después las reimportes. En un futuro esto será mejorado.", diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 3361242ce5..10f4b6f4a0 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -1804,8 +1804,8 @@ "Waiting for your other session to verify…": "Ootan, et sinu teine sessioon alustaks verifitseerimist…", "This bridge was provisioned by .": "Selle võrgusilla võttis kasutusele .", "This bridge is managed by .": "Seda võrgusilda haldab .", - "Workspace: ": "Tööruum: ", - "Channel: ": "Kanal: ", + "Workspace: %(networkName)s": "Tööruum: %(networkName)s", + "Channel: %(channelName)s": "Kanal: %(channelName)s", "Upload new:": "Lae üles uus:", "Export E2E room keys": "Ekspordi jututubade läbiva krüptimise võtmed", "Your homeserver does not support cross-signing.": "Sinu koduserver ei toeta risttunnustamist.", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index 8809129efe..2740ea2079 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -1805,8 +1805,8 @@ "Verify yourself & others to keep your chats safe": "Egiaztatu zure burua eta besteak txatak seguru mantentzeko", "Review": "Berrikusi", "This bridge was provisioned by .": "Zubi hau erabiltzaileak hornitu du.", - "Workspace: ": "Lan eremua: ", - "Channel: ": "Kanala: ", + "Workspace: %(networkName)s": "Lan eremua: %(networkName)s", + "Channel: %(channelName)s": "Kanala: %(channelName)s", "Show less": "Erakutsi gutxiago", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pasahitza aldatzean oraingo muturretik muturrerako zifratze gako guztiak ezeztatuko ditu saio guztietan, zifratutako txaten historiala ezin izango da irakurri ez badituzu aurretik zure geletako gakoak esportatzen eta gero berriro inportatzen. Etorkizunean hau hobetuko da.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Zure kontuak zeharkako sinatze identitate bat du biltegi sekretuan, baina saio honek ez du oraindik fidagarritzat.", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index e4bcc0623d..842ee436b6 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1876,8 +1876,8 @@ "Review": "Katselmoi", "This bridge was provisioned by .": "Tämän sillan tarjoaa käyttäjä .", "This bridge is managed by .": "Tätä siltaa hallinnoi käyttäjä .", - "Workspace: ": "Työtila: ", - "Channel: ": "Kanava: ", + "Workspace: %(networkName)s": "Työtila: %(networkName)s", + "Channel: %(channelName)s": "Kanava: %(channelName)s", "Delete %(count)s sessions|other": "Poista %(count)s istuntoa", "Enable": "Ota käyttöön", "Backup is not signed by any of your sessions": "Mikään istuntosi ei ole allekirjoittanut varmuuskopiota", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 8b7e2656ea..efae1f7b26 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1809,8 +1809,8 @@ "They match": "Ils correspondent", "They don't match": "Ils ne correspondent pas", "This bridge was provisioned by .": "Cette passerelle a été fournie par .", - "Workspace: ": "Espace de travail : ", - "Channel: ": "Canal : ", + "Workspace: %(networkName)s": "Espace de travail : %(networkName)s", + "Channel: %(channelName)s": "Canal : %(channelName)s", "Show less": "En voir moins", "This room is bridging messages to the following platforms. Learn more.": "Ce salon transmet les messages vers les plateformes suivantes. En savoir plus.", "This room isn’t bridging messages to any platforms. Learn more.": "Ce salon ne transmet les messages à aucune plateforme. En savoir plus.", diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index d43ff020ab..cc3575dbb3 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -1307,8 +1307,8 @@ "Upload": "Subir", "This bridge was provisioned by .": "Esta ponte está proporcionada por .", "This bridge is managed by .": "Esta ponte está xestionada por .", - "Workspace: ": "Espazo de traballo: ", - "Channel: ": "Canal: ", + "Workspace: %(networkName)s": "Espazo de traballo: %(networkName)s", + "Channel: %(channelName)s": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar máis", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao cambiar o contrasinal vas restablecer todas as chaves de cifrado extremo-a-extremo en tódalas sesións, facendo que o historial de conversa cifrado non sexa lexible, a menos que primeiro exportes todas as chaves das salas e as importes posteriormente. No futuro melloraremos o procedemento.", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index d8d3f01f66..2739154c19 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1793,8 +1793,8 @@ "Enable message search in encrypted rooms": "Üzenetek keresésének bekapcsolása a titkosított szobákban", "Review": "Átnéz", "This bridge was provisioned by .": "Ezt a hidat az alábbi felhasználó készítette: .", - "Workspace: ": "Munkahely: ", - "Channel: ": "Csatorna: ", + "Workspace: %(networkName)s": "Munkahely: %(networkName)s", + "Channel: %(channelName)s": "Csatorna: %(channelName)s", "Show less": "Kevesebbet mutat", "Securely cache encrypted messages locally for them to appear in search results, using ": "A titkosított üzenetek kereséséhez azokat biztonságos módon helyileg kell tárolnod, felhasználva: ", " to store messages from ": " üzenetek tárolásához ", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 616071c785..74255a6d2a 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1797,8 +1797,8 @@ "They don't match": "Non corrispondono", "Review": "Controlla", "This bridge was provisioned by .": "Questo bridge è stato fornito da .", - "Workspace: ": "Spazio di lavoro: ", - "Channel: ": "Canale: ", + "Workspace: %(networkName)s": "Spazio di lavoro: %(networkName)s", + "Channel: %(channelName)s": "Canale: %(channelName)s", "Show less": "Mostra meno", "Securely cache encrypted messages locally for them to appear in search results, using ": "Tieni in cache localmente i messaggi cifrati in modo sicuro affinché appaiano nei risultati di ricerca, usando ", " to store messages from ": " per conservare i messaggi da ", diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 74b203efb6..7a9261f25c 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -847,8 +847,8 @@ "Accept to continue:": "Qbel i wakken ad tkemmleḍ:", "This bridge was provisioned by .": "Tileggit-a tella-d sɣur .", "This bridge is managed by .": "Tileggit-a tettusefrak sɣur .", - "Workspace: ": "Tallunt n uxeddim: ", - "Channel: ": "Abadu: ", + "Workspace: %(networkName)s": "Tallunt n uxeddim: %(networkName)s", + "Channel: %(channelName)s": "Abadu: %(channelName)s", "Upload new:": "Asali amaynut:", "New passwords don't match": "Awalen uffiren imaynuten ur mṣadan ara", "Passwords can't be empty": "Awalen uffiren ur ilaq ara ad ilin d ilmawen", diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index b4fc60b931..62b34104a6 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -1953,8 +1953,8 @@ "not found in storage": "saugykloje nerasta", "Cross-signing is not set up.": "Kryžminis pasirašymas nenustatytas.", "Cross-signing is ready for use.": "Kryžminis pasirašymas yra paruoštas naudoti.", - "Channel: ": "Kanalas: ", - "Workspace: ": "Darbo sritis: ", + "Channel: %(channelName)s": "Kanalas: %(channelName)s", + "Workspace: %(networkName)s": "Darbo sritis: %(networkName)s", "This bridge is managed by .": "Šis tiltas yra tvarkomas .", "This bridge was provisioned by .": "Šis tiltas buvo parūpintas .", "Your server isn't responding to some requests.": "Jūsų serveris neatsako į kai kurias užklausas.", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 1277769ad3..1ec887c364 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -1625,8 +1625,8 @@ "Decline (%(counter)s)": "Afwijzen (%(counter)s)", "This bridge was provisioned by .": "Dank aan voor de brug.", "This bridge is managed by .": "Brug onderhouden door .", - "Workspace: ": "Werkruimte: ", - "Channel: ": "Kanaal: ", + "Workspace: %(networkName)s": "Werkruimte: %(networkName)s", + "Channel: %(channelName)s": "Kanaal: %(channelName)s", "Show less": "Minder tonen", "Show more": "Meer tonen", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Momenteel stelt een wachtwoordswijziging alle berichtsleutels in alle sessies opnieuw in, en maakt zo oude versleutelde berichten onleesbaar - tenzij u uw sleutels eerst wegschrijft, en na afloop weer inleest. Dit zal verbeterd worden.", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index d3ecf00c1c..b456c98aed 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -1380,8 +1380,8 @@ "Upload": "Enviar", "This bridge was provisioned by .": "Esta integração foi disponibilizada por .", "This bridge is managed by .": "Esta integração é desenvolvida por .", - "Workspace: ": "Espaço de trabalho: ", - "Channel: ": "Canal: ", + "Workspace: %(networkName)s": "Espaço de trabalho: %(networkName)s", + "Channel: %(channelName)s": "Canal: %(channelName)s", "Show less": "Mostrar menos", "Show more": "Mostrar mais", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao mudar a senha, você apagará todas as chaves de criptografia de ponta a ponta existentes em todas as sessões, fazendo com que o histórico de conversas criptografadas fique ilegível, a não ser que você exporte as salas das chaves criptografadas antes de mudar a senha e então as importe novamente depois. No futuro, isso será melhorado.", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index b99fef0915..bb6dbdf308 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1670,8 +1670,8 @@ "Decline (%(counter)s)": "Отклонить (%(counter)s)", "This bridge was provisioned by .": "Этот мост был подготовлен пользователем .", "This bridge is managed by .": "Этот мост управляется .", - "Workspace: ": "Рабочая область: ", - "Channel: ": "Канал: ", + "Workspace: %(networkName)s": "Рабочая область: %(networkName)s", + "Channel: %(channelName)s": "Канал: %(channelName)s", "Show less": "Показать меньше", "Show more": "Показать больше", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Если вы не экспортируете ключи для этой комнаты и не импортируете их в будущем, смена пароля приведёт к сбросу всех ключей сквозного шифрования и сделает невозможным чтение истории чата. В будущем это будет улучшено.", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 77e7d9de2b..454d86cb64 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -1536,8 +1536,8 @@ "Joins room with given address": "Pridať sa do miestnosti s danou adresou", "Unrecognised room address:": "Nerozpoznaná adresa miestnosti:", "This bridge is managed by .": "Tento most spravuje .", - "Workspace: ": "Pracovisko: ", - "Channel: ": "Kanál: ", + "Workspace: %(networkName)s": "Pracovisko: %(networkName)s", + "Channel: %(channelName)s": "Kanál: %(channelName)s", "Show less": "Zobraziť menej", "Show more": "Zobraziť viac", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla reštartuje všetky šifrovacie kľúče pre všetky vaše relácie. Šifrované správy sa stanú nečitateľnými, pokiaľ najprv nevyexportujete vaše kľúče a po zmene ich nenaimportujete. V budúcnosti sa tento proces zjednoduší.", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index a65892f4d0..827df3fb70 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -1819,8 +1819,8 @@ "To be secure, do this in person or use a trusted way to communicate.": "Për të qenë i sigurt, bëjeni këtë duke qenë vetë i pranishëm ose përdorni për të komunikuar një rrugë të besuar.", "Verify yourself & others to keep your chats safe": "Verifikoni veten & të tjerët, që t’i mbani bisedat tuaja të sigurta", "This bridge was provisioned by .": "Kjo urë është dhënë nga .", - "Workspace: ": "Hapësirë pune: ", - "Channel: ": "Kanal: ", + "Workspace: %(networkName)s": "Hapësirë pune: %(networkName)s", + "Channel: %(channelName)s": "Kanal: %(channelName)s", "Show less": "Shfaq më pak", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ndryshimi i fjalëkalimit do të sjellë zerimin e çfarëdo kyçesh fshehtëzimi skaj-më-skaj në krejt sesionet, duke e bërë të palexueshëm historikun e fshehtëzuar të bisedave, hiq rastin kur i eksportoni më parë kyçet tuaj të dhomës dhe i ri-importoni ata më pas. Në të ardhmen kjo do të përmirësohet.", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "Llogaria juaj ka një identitet cross-signing në depozitë të fshehtë, por s’është ende i besuar në këtë sesion.", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 4824895988..8c053de410 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1692,8 +1692,8 @@ "From %(deviceName)s (%(deviceId)s)": "Från %(deviceName)s (%(deviceId)s)", "This bridge was provisioned by .": "Den här bryggan tillhandahålls av .", "This bridge is managed by .": "Den här bryggan tillhandahålls av .", - "Workspace: ": "Arbetsyta: ", - "Channel: ": "Kanal: ", + "Workspace: %(networkName)s": "Arbetsyta: %(networkName)s", + "Channel: %(channelName)s": "Kanal: %(channelName)s", "Show less": "Visa mindre", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Att byta lösenord återställer just nu alla krypteringsnycklar på alla sessioner, vilket gör krypterad chatthistorik oläslig om du inte först exporterar dina rumsnycklar och sedan importerar dem igen efteråt. Detta kommer att förbättras i framtiden.", "Your homeserver does not support cross-signing.": "Din hemserver stöder inte korssignering.", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index c7711973f9..5a152eeab6 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1410,8 +1410,8 @@ "Other users may not trust it": "Diğer kullanıcılar güvenmeyebilirler", "Later": "Sonra", "Review": "Gözden Geçirme", - "Workspace: ": "Çalışma alanı: ", - "Channel: ": "Kanal: ", + "Workspace: %(networkName)s": "Çalışma alanı: %(networkName)s", + "Channel: %(channelName)s": "Kanal: %(channelName)s", "Show less": "Daha az göster", "Show more": "Daha fazla göster", "in memory": "hafızada", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 37b9472d3c..061c0799ac 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -955,8 +955,8 @@ "Globe": "Глобус", "This bridge was provisioned by .": "Цей місток був підготовленим .", "This bridge is managed by .": "Цей міст керується .", - "Workspace: ": "Робочий простір: ", - "Channel: ": "Канал: ", + "Workspace: %(networkName)s": "Робочий простір: %(networkName)s", + "Channel: %(channelName)s": "Канал: %(channelName)s", "Show less": "Згорнути", "Show more": "Розгорнути", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Змінення пароля призведе до скидання всіх ключів наскрізного шифрування та унеможливить читання історії листування, якщо тільки ви не експортуєте ваші ключі кімнати та не імпортуєте їх згодом. Це буде вдосконалено у майбутньому.", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 45ca22fdcd..672b1befd1 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -2320,8 +2320,8 @@ "Uploading logs": "正在上传日志", "Downloading logs": "正在下载日志", "This bridge was provisioned by .": "桥接由 准备。", - "Workspace: ": "工作区:", - "Channel: ": "频道:", + "Workspace: %(networkName)s": "工作区:%(networkName)s", + "Channel: %(channelName)s": "频道:%(channelName)s", "well formed": "格式正确", "Master private key:": "主私钥:", "Self signing private key:": "自签名私钥:", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index b8cecd3b76..c820d9b1cf 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -1804,8 +1804,8 @@ "To be secure, do this in person or use a trusted way to communicate.": "為了安全,請親自進行或使用可信的通訊方式。", "Review": "評論", "This bridge was provisioned by .": "此橋接是由 設定。", - "Workspace: ": "工作空間:", - "Channel: ": "頻道:", + "Workspace: %(networkName)s": "工作空間:%(networkName)s", + "Channel: %(channelName)s": "頻道:%(channelName)s", "Show less": "顯示較少", "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "變更密碼將會重設所有工作階段上的所有端到端加密金鑰,讓已加密的聊天歷史無法讀取,除非您先匯出您的聊天室金鑰並在稍後重新匯入。未來會有所改善。", "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this session.": "您的帳號在秘密儲存空間中有交叉簽章的身份,但尚未被此工作階段信任。", From 74b5febb9c7cb3e6584574a7c8453a68c31ea399 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 18 Jan 2021 11:38:06 +0000 Subject: [PATCH 048/275] oops strings --- src/i18n/strings/en_EN.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 6137923264..851890bdb7 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -411,6 +411,8 @@ "Command error": "Command error", "Usage": "Usage", "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Prepends ¯\\_(ツ)_/¯ to a plain-text message", + "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message", + "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message", "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message", "Sends a message as plain text, without interpreting it as markdown": "Sends a message as plain text, without interpreting it as markdown", "Sends a message as html, without interpreting it as markdown": "Sends a message as html, without interpreting it as markdown", @@ -859,6 +861,9 @@ "Fill Screen": "Fill Screen", "Return to call": "Return to call", "%(name)s on hold": "%(name)s on hold", + "Unable to look up phone number": "Unable to look up phone number", + "There was an error looking up the phone number": "There was an error looking up the phone number", + "Dial pad": "Dial pad", "Unknown caller": "Unknown caller", "Incoming voice call": "Incoming voice call", "Incoming video call": "Incoming video call", @@ -960,8 +965,8 @@ "Upload": "Upload", "This bridge was provisioned by .": "This bridge was provisioned by .", "This bridge is managed by .": "This bridge is managed by .", - "Workspace: %s": "Workspace: %s", - "Channel: %s": "Channel: %s", + "Workspace: ": "Workspace: ", + "Channel: ": "Channel: ", "Show less": "Show less", "Show more": "Show more", "Failed to upload profile picture!": "Failed to upload profile picture!", @@ -1457,6 +1462,8 @@ "Hide Widgets": "Hide Widgets", "Show Widgets": "Show Widgets", "Search": "Search", + "Start a Conversation": "Start a Conversation", + "Open dial pad": "Open dial pad", "Invites": "Invites", "Favourites": "Favourites", "People": "People", @@ -2077,6 +2084,8 @@ "We couldn't create your DM. Please check the users you want to invite and try again.": "We couldn't create your DM. Please check the users you want to invite and try again.", "Something went wrong trying to invite the users.": "Something went wrong trying to invite the users.", "We couldn't invite those users. Please check the users you want to invite and try again.": "We couldn't invite those users. Please check the users you want to invite and try again.", + "A call can only be transferred to a single user.": "A call can only be transferred to a single user.", + "Failed to transfer call": "Failed to transfer call", "Failed to find the following users": "Failed to find the following users", "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s", "Recent Conversations": "Recent Conversations", @@ -2090,6 +2099,7 @@ "Go": "Go", "Invite someone using their name, email address, username (like ) or share this room.": "Invite someone using their name, email address, username (like ) or share this room.", "Invite someone using their name, username (like ) or share this room.": "Invite someone using their name, username (like ) or share this room.", + "Transfer": "Transfer", "a new master key signature": "a new master key signature", "a new cross-signing key signature": "a new cross-signing key signature", "a device cross-signing signature": "a device cross-signing signature", @@ -2431,7 +2441,7 @@ "Create a new community": "Create a new community", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.", "You’re all caught up": "You’re all caught up", - "You have no visible notifications in this room.": "You have no visible notifications in this room.", + "You have no visible notifications.": "You have no visible notifications.", "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.": "%(brand)s failed to get the protocol list from the homeserver. The homeserver may be too old to support third party networks.", "%(brand)s failed to get the public room list.": "%(brand)s failed to get the public room list.", "The homeserver may be unavailable or overloaded.": "The homeserver may be unavailable or overloaded.", From e9d2daab8f03d29f904acce02c159d4ad3466bda Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Mon, 18 Jan 2021 13:09:39 +0000 Subject: [PATCH 049/275] fix strings --- src/i18n/strings/en_EN.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 851890bdb7..71b390f0fc 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -965,10 +965,8 @@ "Upload": "Upload", "This bridge was provisioned by .": "This bridge was provisioned by .", "This bridge is managed by .": "This bridge is managed by .", - "Workspace: ": "Workspace: ", - "Channel: ": "Channel: ", - "Show less": "Show less", - "Show more": "Show more", + "Workspace: ": "Workspace: ", + "Channel: ": "Channel: ", "Failed to upload profile picture!": "Failed to upload profile picture!", "Upload new:": "Upload new:", "No display name": "No display name", @@ -1532,6 +1530,7 @@ "Jump to first invite.": "Jump to first invite.", "Show %(count)s more|other": "Show %(count)s more", "Show %(count)s more|one": "Show %(count)s more", + "Show less": "Show less", "Use default": "Use default", "All messages": "All messages", "Mentions & Keywords": "Mentions & Keywords", @@ -1594,6 +1593,7 @@ "New published address (e.g. #alias:server)": "New published address (e.g. #alias:server)", "Local Addresses": "Local Addresses", "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)": "Set addresses for this room so users can find this room through your homeserver (%(localDomain)s)", + "Show more": "Show more", "Error updating flair": "Error updating flair", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.", "Invalid community ID": "Invalid community ID", From 792db69f00523b2354f833b660cfb00e798dc8eb Mon Sep 17 00:00:00 2001 From: Szimszon Date: Thu, 14 Jan 2021 10:01:25 +0000 Subject: [PATCH 050/275] Translated using Weblate (Hungarian) Currently translated at 100.0% (2728 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index eb03026096..cb96628e1c 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2978,5 +2978,12 @@ "You have no visible notifications.": "Nincsenek látható értesítések.", "Transfer": "Átadás", "Failed to transfer call": "A hívás átadása nem sikerült", - "A call can only be transferred to a single user.": "Csak egy felhasználónak lehet átadni a hívást." + "A call can only be transferred to a single user.": "Csak egy felhasználónak lehet átadni a hívást.", + "There was an error finding this widget.": "A kisalkalmazás keresésekor hiba történt.", + "Active Widgets": "Aktív kisalkalmazások", + "Open dial pad": "Számlap megnyitása", + "Start a Conversation": "Beszélgetés megkezdése", + "Dial pad": "Tárcsázó számlap", + "There was an error looking up the phone number": "A telefonszám megkeresésekor hiba történt", + "Unable to look up phone number": "A telefonszámot nem sikerült megtalálni" } From eb8a0fc3b2211da024fbdb121da67e61e0611dc3 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Mon, 18 Jan 2021 10:41:31 +0000 Subject: [PATCH 051/275] Translated using Weblate (Russian) Currently translated at 99.9% (2727 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 07cea98506..bde46c6c0e 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2975,5 +2975,12 @@ "You have no visible notifications.": "У вас нет видимых уведомлений.", "Transfer": "Перевод", "Failed to transfer call": "Не удалось перевести звонок", - "A call can only be transferred to a single user.": "Вызов может быть передан только одному пользователю." + "A call can only be transferred to a single user.": "Вызов может быть передан только одному пользователю.", + "There was an error finding this widget.": "При обнаружении этого виджета произошла ошибка.", + "Active Widgets": "Активные виджеты", + "Open dial pad": "Открыть панель набора номера", + "Dial pad": "Панель набора номера", + "Start a Conversation": "Начать разговор", + "There was an error looking up the phone number": "При поиске номера телефона произошла ошибка", + "Unable to look up phone number": "Невозможно найти номер телефона" } From b953e353e030f63307c0edc75956a596810944d5 Mon Sep 17 00:00:00 2001 From: GokdenizK Date: Thu, 14 Jan 2021 11:49:07 +0000 Subject: [PATCH 052/275] Translated using Weblate (Turkish) Currently translated at 81.6% (2228 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/tr/ --- src/i18n/strings/tr.json | 135 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 6ae9341509..f19298b19a 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -2277,5 +2277,138 @@ "This bridge was provisioned by .": "Bu köprü tarafından sağlandı.", "Render LaTeX maths in messages": "Mesajlarda LaTex maths işleyin", "See %(eventType)s events posted to this room": "Bu odaya gönderilen %(eventType)s türü etkinlikleri gör", - "with state key %(stateKey)s": "%(stateKey)s durum anahtarı ile" + "with state key %(stateKey)s": "%(stateKey)s durum anahtarı ile", + "Verify all users in a room to ensure it's secure.": "Güvenli olduğuna emin olmak için odadaki tüm kullanıcıları onaylayın.", + "No recent messages by %(user)s found": "", + "Show %(count)s more|one": "%(count)s adet daha fazla göster", + "Show %(count)s more|other": "%(count)s adet daha fazla göster", + "Activity": "Aktivite", + "Show previews of messages": "Mesajların ön izlemelerini göster", + "Show rooms with unread messages first": "Önce okunmamış mesajları olan odaları göster", + "Use the + to make a new room or explore existing ones below": "Yeni bir oda kurmak yada olan var olan odaları keşfetmek için aşağıdaki + yı kullanın", + "Topic: %(topic)s (edit)": "Konu: %(topic)s (düzenle)", + "Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.": " ", + "Your key share request has been sent - please check your other sessions for key share requests.": "Anahtar paylaşma isteğiniz gönderildi - anahtar paylaşma istekleri için lütfen diğer oturumlarınızı kontrol ediniz.", + "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Onaylamanız için size e-posta gönderdik. Lütfen yönergeleri takip edin ve sonra aşağıdaki butona tıklayın.", + "Customise your appearance": "Görünüşü özelleştir", + "Custom theme URL": "Özel tema URLsi", + "Secure Backup": "Güvenli yedekleme", + "User settings": "Kullanıcı ayarları", + "Community settings": "Topluluk ayarları", + "Room settings": "Oda ayarları", + "Show files": "Dosyaları göster", + "%(count)s people|other": "%(count)s kişi", + "%(count)s people|one": "%(count)s kişi", + "Not encrypted": "Şifrelenmemiş", + "Room Info": "Oda bilgisi", + "Backup version:": "Yedekleme sürümü:", + "Autocomplete": "Otomatik Tamamlama", + "Navigation": "Navigasyon", + "User Autocomplete": "Kullanıcı Otomatik Tamamlama", + "Room Autocomplete": "Otomatik Oda Tamamlama", + "Notification Autocomplete": "Otomatik Bildirim Tamamlama", + "Away": "Uzakta", + "Share Permalink": "Permalink'i Paylaş", + "Resend removal": "Kaldırmayı yeniden gönder", + "Resend edit": "Düzenlemeyi yeniden gönder", + "Quick Reactions": "Hızlı Tepkiler", + "Widgets": "Widgetlar", + "Unpin": "Sabitlemeyi kaldır", + "Create community": "Topluluk oluştur", + "Enter name": "İsim gir", + "Download logs": "Günlükleri indir", + "%(brand)s Android": "%(brand)s Android", + "%(brand)s iOS": "%(brand)s iOS", + "%(brand)s Desktop": "%(brand)s Masaüstü", + "%(brand)s Web": "%(brand)s Ağı", + "User menu": "Kullanıcı menüsü", + "Notification options": "Bildirim ayarları", + "Use default": "Varsayılanı kullan", + "Looks good!": "İyi görünüyor!", + "Security Key": "Güvenlik anahtarı", + "List options": "Liste seçenekleri", + "Sort by": "Göre sırala", + "All settings": "Tüm ayarlar", + "Switch theme": "Temayı değiştir", + "QR Code": "Kare kod (QR)", + "Keys restored": "Anahtarlar geri yüklendi", + "Submit logs": "Günlükleri kaydet", + "Signing In...": "Giriş yapılıyor...", + "Page Down": "Sayfa aşağı", + "Page Up": "Sayfa yukarı", + "New line": "Yeni satır", + "Alt Gr": "Alt Gr", + "Room List": "Oda listesi", + "Matrix rooms": "Matrix odaları", + "%(networkName)s rooms": "%(networkName)s odalar", + "Server name": "Sunucu adı", + "Remove server": "Sunucuyu kaldır", + "Your server": "Senin sunucun", + "All rooms": "Tüm odalar", + "Looks good": "İyi görünüyor", + "Declining …": "Reddediliyor…", + "Accepting …": "Kabul ediliyor…", + "Topic (optional)": "Konu (isteğe bağlı)", + "Featured Users:": "Öne çıkan kullanıcılar:", + "Featured Rooms:": "Öne çıkan odalar:", + "Transfer": "Aktar", + "Hold": "Beklet", + "Resume": "Devam et", + "Approve": "Onayla", + "Show": "Göster", + "Homeserver": "Ana sunucu", + "Information": "Bilgi", + "Role": "Rol", + "About": "Hakkında", + "Modern": "Modern", + "Ctrl": "Ctrl", + "Shift": "Shift", + "Alt": "Alt", + "Calls": "Aramalar", + "Disable": "Devre dışı bırak", + "Syncing...": "Senkronize ediliyor...", + "Feedback": "Geri bildirim", + "Matrix": "Matrix", + "Categories": "Kategoriler", + "Accepting…": "Kabul ediliyor…", + "A-Z": "A-Z", + "Appearance": "Görünüm", + "Room avatar": "Oda avatarı", + "Room options": "Oda ayarları", + "Leave Room": "Odadan ayrıl", + "Forget Room": "Odayı unut", + "Open dial pad": "Arama tuşlarını aç", + "Start a Conversation": "Bir sohbet başlat", + "Mod": "Mod", + "Revoke": "İptal et", + "Complete": "Tamamla", + "Where you’re logged in": "Giriş yaptığınız yer", + "Privacy": "Gizlilik", + "New version available. Update now.": "Yeni sürüm mevcut: Şimdi güncelle.", + "Compact": "Kompakt", + "Message layout": "Mesaj düzeni", + "Use between %(min)s pt and %(max)s pt": "%(min)s ile %(max)s arasında girin", + "Custom font size can only be between %(min)s pt and %(max)s pt": "Özel yazı tipi boyutu %(min)s ile %(max)s arasında olmalı", + "Size must be a number": "Boyut bir sayı olmalıdır", + "Hey you. You're the best!": "Hey sen. Sen en iyisisin!", + "You should:": "Şunu yapmalısınız:", + "not ready": "hazır değil", + "ready": "hazır", + "Secret storage:": "Gizli depolama:", + "Backup key cached:": "Yedekleme anahtarı önbelleğe alındı:", + "Backup key stored:": "Yedekleme anahtarı depolandı:", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Oturumlarınıza erişimi kaybetmeniz ihtimaline karşı, şifreleme anahtarlarınızı hesap verilerinizle yedekleyin. Anahtarlarınız benzersiz bir Kurtarma Anahtarı ile korunacaktır.", + "unexpected type": "Bilinmeyen tür", + "Back up your keys before signing out to avoid losing them.": "Anahtarlarını kaybetmemek için, çıkış yapmadan önce önleri yedekle.", + "Algorithm:": "Algoritma:", + "Backup has a valid signature from unverified session ": "Yedekleme,onaylanmamış oturumdan geçerli bir imzaya sahip", + "Backup has a valid signature from verified session ": "Yedekleme, onaylanmış oturumdan geçerli bir imzaya sahip", + "Backup has an invalid signature from this session": "Yedekleme, bu oturumdan geçersiz bir imzaya sahip", + "Backup has a valid signature from this session": "Yedekleme bu oturumdan geçerli bir imzaya sahip", + "Backup has a signature from unknown session with ID %(deviceId)s": "Yedeklemede, bilinmeyen %(deviceId)s ID'sine sahip bir oturumdan imza var", + "Backup has a signature from unknown user with ID %(deviceId)s": "Yedeklemede, %(deviceId)s ID'sine sahip bilinmeyen bir kullanıcı tarafından imza var.", + "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Yalnızca bu oturumda olabilecek anahtarları kaybetmemek için, oturumu kapatmadan önce bu oturumu anahtar yedeklemeye bağlayın.", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s internet tarayıcısında çalışıyorken şifrelenmiş mesajları güvenli bir şekilde önbelleğe alamaz. Şifrelenmiş mesajların arama sonucunda görünmesi için %(brand)s Masaüstü kullanın.", + "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s, şifrelenmiş iletileri yerel olarak güvenli bir şekilde önbelleğe almak için gereken bazı bileşenlerden yoksun. Bu özelliği denemek istiyorsanız, arama bileşenlerinin eklendiği özel bir masaüstü oluşturun.", + "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Bu oturum anahtarlarınızı yedeklemiyor, ama zaten geri yükleyebileceğiniz ve ileride ekleyebileceğiniz bir yedeğiniz var." } From bad65efaf28d0f38e29affe59e7d336ecaf3e74c Mon Sep 17 00:00:00 2001 From: m4sk1n Date: Thu, 14 Jan 2021 18:02:46 +0000 Subject: [PATCH 053/275] Translated using Weblate (Polish) Currently translated at 78.5% (2143 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/pl/ --- src/i18n/strings/pl.json | 250 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 240 insertions(+), 10 deletions(-) diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 01496c8db1..7a98a8f003 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -771,7 +771,7 @@ "was invited %(count)s times|one": "został(a) zaproszony(-a)", "was banned %(count)s times|one": "został(a) zablokowany(-a)", "was kicked %(count)s times|one": "został wyrzucony", - "Whether or not you're using the Richtext mode of the Rich Text Editor": "Niezależnie od tego, czy używasz trybu Richtext edytora tekstu w formacie RTF", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Czy używasz bądź nie trybu edytora tekstu sformatowanego", "Call in Progress": "Łączenie w toku", "Permission Required": "Wymagane Uprawnienia", "A call is currently being placed!": "W tej chwili trwa rozmowa!", @@ -883,7 +883,7 @@ "Retry": "Ponów", "Unable to create key backup": "Nie można utworzyć kopii zapasowej klucza", "Download": "Pobierz", - "Next": "Następny", + "Next": "Dalej", "No backup found!": "Nie znaleziono kopii zapasowej!", "Checking...": "Sprawdzanie…", "Create a new room with the same name, description and avatar": "Utwórz nowy pokój o tej samej nazwie, opisie i awatarze", @@ -1047,8 +1047,8 @@ "Once enabled, encryption cannot be disabled.": "Po włączeniu szyfrowanie nie może zostać wyłączone.", "To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Aby uniknąć duplikowania problemów, prosimy najpierw przejrzeć istniejące problemy (i dodać +1) lub utworzyć nowy problem, jeżeli nie możesz go znaleźć.", "Go back": "Wróć", - "Whether or not you're logged in (we don't record your username)": "Niezależnie od tego, czy jesteś zalogowany (nie zapisujemy Twojej nazwy użytkownika)", - "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Niezależnie od tego, czy korzystasz z funkcji \"okruchy\" (awatary nad listą pokoi)", + "Whether or not you're logged in (we don't record your username)": "Czy jesteś zalogowany(-a) lub niezalogowany(-a) (nie zapisujemy Twojej nazwy użytkownika)", + "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Czy używasz korzystasz z funkcji „okruchów” (awatary nad listą pokoi)", "Call failed due to misconfigured server": "Połączenie nie udało się przez błędną konfigurację serwera", "Try using turn.matrix.org": "Spróbuj użyć serwera turn.matrix.org", "The file '%(fileName)s' failed to upload.": "Nie udało się przesłać pliku '%(fileName)s'.", @@ -1998,9 +1998,9 @@ "Interactively verify by Emoji": "Zweryfikuj interaktywnie przez Emoji", "Not Trusted": "Nie zaufany(-a)", "Ask this user to verify their session, or manually verify it below.": "Poproś go/ją o zweryfikowanie tej sesji bądź zweryfikuj ją osobiście poniżej.", - "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s%(userId)s zalogował(a) się do nowej sesji bez zweryfikowania jej:", + "%(name)s (%(userId)s) signed in to a new session without verifying it:": "%(name)s%(userId)s zalogował(a) się do nowej sesji bez zweryfikowania jej:", "Verify your other session using one of the options below.": "Zweryfikuj swoje pozostałe sesje używając jednej z opcji poniżej.", - "You signed in to a new session without verifying it:": "Zalogowałeś się do nowej sesji bez jej zweryfikowania;", + "You signed in to a new session without verifying it:": "Zalogowałeś się do nowej sesji bez jej zweryfikowania:", "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s zmienił regułę banującą serwery pasujące do wzorca na %(oldGlob)s ustawiając nowy wzorzec %(newGlob)s z powodu %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s zmienił regułę banującą pokoje pasujące do wzorca na %(oldGlob)s ustawiając nowy wzorzec %(newGlob)s z powodu %(reason)s", "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s zmienił regułę banującą użytkowników pasujących do wzorca na %(oldGlob)s ustawiając nowy wzorzec %(newGlob)s z powodu %(reason)s", @@ -2018,8 +2018,8 @@ "(an error occurred)": "(wystąpił błąd)", "(their device couldn't start the camera / microphone)": "(ich urządzenie nie może uruchomić kamery / mikrofonu)", "(connection failed)": "(połączenie nieudane)", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s usunął(-ęła) alternatywny adres %(addresses)s tego pokoju.", - "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s usunął(-ęła) alternatywny adres %(addresses)s tego pokoju.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|one": "%(senderName)s usunął(-ęła) alternatywny adres %(addresses)s tego pokoju.", + "%(senderName)s removed the alternative addresses %(addresses)s for this room.|other": "%(senderName)s usunął(-ęła) alternatywny adres %(addresses)s tego pokoju.", "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Wszystkie serwery zostały wykluczone z uczestnictwa! Ten pokój nie może być już używany.", "Effects": "Efekty", "Japan": "Japonia", @@ -2028,12 +2028,242 @@ "You've reached the maximum number of simultaneous calls.": "Osiągnięto maksymalną liczbę jednoczesnych połączeń.", "Too Many Calls": "Zbyt wiele połączeń", "No other application is using the webcam": "Kamera nie jest obecnie używana przez inną aplikację", - "Permission is granted to use the webcam": "Przyznano uprawnienia dostępu do kamery", + "Permission is granted to use the webcam": "Przyznano uprawnienia dostępu do kamery", "A microphone and webcam are plugged in and set up correctly": "Mikrofon i kamera są podpięte i skonfigurowane prawidłowo", "Call failed because webcam or microphone could not be accessed. Check that:": "Połączenie nieudane z powodu braku dostępu do kamery bądź mikrofonu. Sprawdź czy:", "Unable to access webcam / microphone": "Nie można uzyskać dostępu do kamery / mikrofonu", "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Nie udało się zestawić połączenia z powodu braku dostępu do mikrofonu. Sprawdź czy mikrofon jest podłączony i poprawnie skonfigurowany.", "Unable to access microphone": "Nie można uzyskać dostępu do mikrofonu", "Forgot password?": "Nie pamiętasz hasła?", - "Use an identity server to invite by email. Manage in Settings.": "Użyj serwera tożsamości, aby zapraszać przez e-mail. Zarządzaj w Ustawieniach." + "Use an identity server to invite by email. Manage in Settings.": "Użyj serwera tożsamości, aby zapraszać przez e-mail. Zarządzaj w Ustawieniach.", + "Got it": "Rozumiem", + "Space used:": "Użyta powierzchnia:", + "This wasn't me": "To nie byłem(-am) ja", + "Verify by emoji": "Weryfikuj z użyciem emoji", + "Your messages are not secure": "Twoje wiadomości nie są bezpieczne", + "Start Verification": "Rozpocznij weryfikację", + "Waiting for %(displayName)s to accept…": "Oczekiwanie na akceptację przez %(displayName)s…", + "Bridges": "Mostki", + "Verify User": "Weryfikuj użytkownika", + "Verification Request": "Żądanie weryfikacji", + "Widgets do not use message encryption.": "Widżety nie używają szyfrowania wiadomości.", + "Automatically invite users": "Automatycznie zapraszaj użytkowników", + "This widget may use cookies.": "Ten widżet może używać plików cookies.", + "Widget added by": "Widżet dodany przez", + "Widget ID": "ID widżetu", + "Room ID": "ID pokoju", + "Your user ID": "Twoje ID użytkownika", + "Your avatar URL": "Adres URL Twojego awataru", + "Your display name": "Twoja nazwa wyświetlana", + "View rules": "Zobacz zasady", + "Quick Reactions": "Szybkie reakcje", + "Error subscribing to list": "Błąd subskrybowania listy", + "Please fill why you're reporting.": "Wypełnij, dlaczego dokonujesz zgłoszenia.", + "Jump to first unread room.": "Przejdź do pierwszego nieprzeczytanego pokoju.", + "Jump to first invite.": "Przejdź do pierwszego zaproszenia.", + "You verified %(name)s": "Zweryfikowałeś(-aś) %(name)s", + "Message Actions": "Działania na wiadomościach", + "This client does not support end-to-end encryption.": "Ten klient nie obsługuje szyfrowania end-to-end.", + "Failed to deactivate user": "Nie udało się zdezaktywować użytkownika", + "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Dla większej liczby wiadomości, może to zająć trochę czasu. Nie odświeżaj klienta w tym czasie.", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Zamierzasz usunąć jedną wiadomość od %(user)s. Nie możesz tego cofnąć. Czy chcesz kontynuować?", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Zamierzasz usunąć %(count)s wiadomości od %(user)s. Nie możesz tego cofnąć. Czy chcesz kontynuować?", + "Remove recent messages by %(user)s": "Usuń ostatnie wiadomości od %(user)s", + "No recent messages by %(user)s found": "Nie znaleziono ostatnich wiadomości od %(user)s", + "Clear personal data": "Wyczyść dane osobiste", + "Sign in and regain access to your account.": "Zaloguj się i odzyskaj dostęp do konta.", + "This account has been deactivated.": "To konto zostało zdezaktywowane.", + "Use bots, bridges, widgets and sticker packs": "Używaj botów, mostków, widżetów i zestawów naklejek", + "Find others by phone or email": "Odnajdź innych z użyciem numeru telefonu lub adresu e-mail", + "Clear all data": "Wyczyść wszystkie dane", + "Please enter verification code sent via text.": "Wprowadź kod weryfikacyjny wysłany wiadomością tekstową.", + "Unable to share phone number": "Nie udało się udostępnić numeru telefonu", + "Unable to share email address": "Nie udało się udostępnić adresu e-mail", + "You can now close this window or log in to your new account.": "Możesz teraz zamknąć to okno, lub zalogować się na swoje nowe konto.", + "Continue with previous account": "Kontynuuj, używając poprzedniego konta", + "Use an email address to recover your account": "Użyj adresu e-mail, aby odzyskać swoje konto", + "Doesn't look like a valid email address": "To nie wygląda na prawidłowy adres e-mail", + "Incompatible local cache": "Niekompatybilna lokalna pamięć podręczna", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "", + "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Niektóre pliki są zbyt duże do wysłania. Ograniczenie wielkości plików to %(limit)s.", + "These files are too large to upload. The file size limit is %(limit)s.": "Te pliki są zbyt duże do wysłania. Ograniczenie wielkości plików to %(limit)s.", + "Remember my selection for this widget": "Zapamiętaj mój wybór dla tego widżetu", + "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Ten plik jest zbyt duży, aby został wysłany. Ograniczenie wielkości plików to %(limit)s, a ten plik waży %(sizeOfThisFile)s.", + "Your browser likely removed this data when running low on disk space.": "Twoja przeglądarka prawdopodobnie usunęła te dane, kiedy brakowało jej miejsca.", + "Missing session data": "Brakujące dane sesji", + "Sign out and remove encryption keys?": "Wylogować się i usunąć klucze szyfrowania?", + "Invited by %(sender)s": "Zaproszony(-a) przez %(sender)s", + "This room doesn't exist. Are you sure you're at the right place?": "Ten pokój nie istnieje. Czy na pewno jesteś we właściwym miejscu?", + "Something went wrong with your invite to %(roomName)s": "Coś poszło nie tak z Twoim zaproszeniem do %(roomName)s", + "You were banned from %(roomName)s by %(memberName)s": "Zostałeś(-aś) zbanowany(-a) z %(roomName)s przez %(memberName)s", + "Could not load user profile": "Nie udało się załadować profilu", + "Your password has been reset.": "Twoje hasło zostało zresetowane.", + "Want more than a community? Get your own server": "Chcesz więcej niż społeczności? Zdobądź własny serwer", + "Are you sure you want to sign out?": "Czy na pewno chcesz się wylogować?", + "Send %(eventType)s events": "Wyślij zdarzenia %(eventType)s", + "Failed to decrypt %(failedCount)s sessions!": "Nie udało się odszyfrować %(failedCount)s sesji!", + "Unable to load backup status": "Nie udało się załadować stanu kopii zapasowej", + "Failed to load group members": "Nie udało się załadować członków grupy", + "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Wysłaliśmy Ci e-mail, aby zweryfikować Twój adres. Podążaj za instrukcjami z niego, a później naciśnij poniższy przycisk.", + "Unable to verify phone number.": "Nie udało się zweryfikować numeru telefonu.", + "Go back to set it again.": "Wróć, aby skonfigurować to ponownie.", + "Upgrade Room Version": "Uaktualnij wersję pokoju", + "Upgrade this room to version %(version)s": "Uaktualnij ten pokój do wersji %(version)s", + "The room upgrade could not be completed": "Uaktualnienie pokoju nie mogło zostać ukończone", + "Failed to upgrade room": "Nie udało się uaktualnić pokoju", + "Backup version:": "Wersja kopii zapasowej:", + "The operation could not be completed": "To działanie nie mogło być ukończone", + "Failed to save your profile": "Nie udało się zapisać profilu", + "Confirm deleting these sessions": "Potwierdź usuwanie tych sesji", + "Unable to load session list": "Nie udało się załadować listy sesji", + "not found locally": "nie odnaleziono lokalnie", + "cached locally": "w lokalnej pamięci podręcznej", + "not found in storage": "nie odnaleziono w pamięci", + "in secret storage": "w tajnej pamięci", + "in memory": "w pamięci", + "Set up": "Konfiguruj", + "Channel: %(channelName)s": "Kanał: %(channelName)s", + "Workspace: %(networkName)s": "Przestrzeń robocza: %(networkName)s", + "This bridge is managed by .": "Ten mostek jest zarządzany przez .", + "Your server isn't responding to some requests.": "Twój serwer nie odpowiada na niektóre zapytania.", + "From %(deviceName)s (%(deviceId)s)": "Z %(deviceName)s (%(deviceId)s)", + "Verify this session by confirming the following number appears on its screen.": "Weryfikuj tę sesję potwierdzając, że następująca liczba pojawia się na jego ekranie.", + "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Oczekiwanie na weryfikację przez Twoją drugą sesję, %(deviceName)s (%(deviceId)s)…", + "Waiting for your other session to verify…": "Oczekiwanie na weryfikację przez Twoją drugą sesję…", + "Waiting for %(displayName)s to verify…": "Oczekiwanie na weryfikację przez %(displayName)s…", + "To be secure, do this in person or use a trusted way to communicate.": "Aby było to bezpieczne, wykonaj to przy tej osobie, lub używając zaufanego sposobu komunikacji.", + "Confirm the emoji below are displayed on both sessions, in the same order:": "Potwierdź, że poniższe emoji są wyświetlane w obu sesjach, w tej samej kolejności:", + "Start": "Rozpocznij", + "Compare a unique set of emoji if you don't have a camera on either device": "Porównaj unikatowy zestaw emoji, jeżeli nie masz aparatu na jednym z urządzeń", + "Compare unique emoji": "Porównaj unikatowe emoji", + "or": "lub", + "Scan this unique code": "Zeskanuj ten unikatowy kod", + "Verify this session by completing one of the following:": "Weryfikuj tę sesję wykonując jedno z następujących:", + "Incoming call": "Połączenie przychodzące", + "Unknown caller": "Nieznany rozmówca", + "Return to call": "Wróć do połączenia", + "Uploading logs": "Wysyłanie logów", + "Downloading logs": "Pobieranie logów", + "Show rooms with unread notifications first": "Pokazuj na początku pokoje z nieprzeczytanymi powiadomieniami", + "Use Command + Enter to send a message": "Użyj Command + Enter, aby wysłać wiadomość", + "Use Ctrl + Enter to send a message": "Użyj Ctrl + Enter, aby wysłać wiadomość", + "How fast should messages be downloaded.": "Jak szybko powinny być pobierane wiadomości.", + "IRC display name width": "Szerokość nazwy wyświetlanej IRC", + "Show chat effects": "Pokazuj efekty czatu", + "Render LaTeX maths in messages": "Renderuj działania LaTeX w wiadomościach", + "Multiple integration managers": "Wiele menedżerów integracji", + "Change notification settings": "Zmień ustawienia powiadomień", + "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", + "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", + "%(senderName)s: %(message)s": "%(senderName)s: %(message)s", + "%(senderName)s is calling": "%(senderName)s dzwoni", + "Waiting for answer": "Oczekiwanie na odpowiedź", + "%(senderName)s started a call": "%(senderName)s rozpoczął(-ęła) połączenie", + "You started a call": "Rozpocząłeś(-ęłaś) połączenie", + "Call ended": "Połączenie zakończone", + "%(senderName)s ended the call": "%(senderName)s zakończył(a) połączenie", + "The person who invited you already left the room.": "Osoba, która Cię zaprosiła, już opuściła pokój.", + "Verify the new login accessing your account: %(name)s": "Zweryfikuj nowe logowanie z dostępem do Twojego konta: %(name)s", + "You joined the call": "Dołączyłeś(-aś) do połączenia", + "%(senderName)s joined the call": "%(senderName)s dołączył(a) do połączenia", + "Call in progress": "Połączenie w trakcie", + "You ended the call": "Zakończyłeś(-aś) połączenie", + "New login. Was this you?": "Nowe logowanie. Czy to byłeś(-aś) Ty?", + "Contact your server admin.": "Skontaktuj się ze swoim administratorem serwera.", + "Your homeserver has exceeded one of its resource limits.": "Twój homeserver przekroczył jeden z limitów zasobów.", + "Your homeserver has exceeded its user limit.": "Twój homeserver przekroczył limit użytkowników.", + "Review": "Przejrzyj", + "Verify all your sessions to ensure your account & messages are safe": "Zweryfikuj wszystkie swoje sesje, aby upewnić się, że Twoje konto i wiadomości są bezpieczne", + "Error leaving room": "Błąd opuszczania pokoju", + "Unexpected server error trying to leave the room": "Nieoczekiwany błąd serwera podczas próby opuszczania pokoju", + "%(num)s days from now": "za %(num)s dni", + "%(num)s hours from now": "za %(num)s godzin", + "%(num)s minutes from now": "za %(num)s minut", + "a few seconds from now": "za kilka sekund", + "See messages posted to your active room": "Zobacz wiadomości publikowane w obecnym pokoju", + "See messages posted to this room": "Zobacz wiadomości publikowane w tym pokoju", + "Send messages as you in your active room": "Wysyłaj wiadomości jako Ty w obecnym pokoju", + "Send messages as you in this room": "Wysyłaj wiadomości jako Ty w tym pokoju", + "The %(capability)s capability": "Możliwość%(capability)s", + "Send %(eventType)s events as you in your active room": "Wysyłaj zdarzenia %(eventType)s jako Ty w obecnym pokoju", + "See %(eventType)s events posted to your active room": "Zobacz zdarzenia %(eventType)s opublikowane w Twoim aktywnym pokoju", + "See %(eventType)s events posted to this room": "Zobacz zdarzenia %(eventType)s opublikowane w tym pokoju", + "Send %(eventType)s events as you in this room": "Wysyłaj zdarzenia %(eventType)s jako Ty w tym pokoju", + "%(senderDisplayName)s set the server ACLs for this room.": "", + "Change the avatar of your active room": "Zmień awatar swojego aktywnego pokoju", + "See when the avatar changes in this room": "Zobacz, gdy awatar tego pokoju zmienia się", + "Change the avatar of this room": "Zmień awatar tego pokoju", + "See when the avatar changes in your active room": "Zobacz, gdy awatar Twojego obecnego pokoju zmienia się", + "See when the name changes in your active room": "Zobacz, gdy nazwa Twojego obecnego pokoju zmienia się", + "Change the name of your active room": "Zmień nazwę swojego obecnego pokoju", + "See when the name changes in this room": "Zobacz, gdy nazwa tego pokoju zmienia się", + "See when the topic changes in your active room": "Zobacz, gdy temat Twojego obecnego pokoju zmienia się", + "Change the topic of your active room": "Zmień temat swojego obecnego pokoju", + "See when the topic changes in this room": "Zobacz, gdy temat tego pokoju zmienia się", + "Manually Verify by Text": "Weryfikuj ręcznie tekstem", + "Everyone in this room is verified": "Wszyscy w tym pokoju są zweryfikowani", + "This room is end-to-end encrypted": "Ten pokój jest szyfrowany end-to-end", + "This message cannot be decrypted": "Ta wiadomość nie może zostać odszyfrowana", + "Scroll to most recent messages": "Przewiń do najnowszych wiadomości", + "Incoming video call": "Przychodzące połączenie wideo", + "Video Call": "Połączenie wideo", + "Fill Screen": "Wypełnij ekran", + "The integration manager is offline or it cannot reach your homeserver.": "Menedżer integracji jest offline, lub nie może połączyć się z Twoim homeserverem.", + "Cannot connect to integration manager": "Nie udało się połączyć z menedżerem integracji", + "Incoming voice call": "Przychodzące połączenie głosowe", + "Voice Call": "Połączenie głosowe", + "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Aby zgłosić błąd związany z bezpieczeństwem Matriksa, przeczytaj Politykę odpowiedzialnego ujawniania informacji Matrix.org.", + "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Czy używasz %(brand)s na urządzeniu, gdzie dotyk jest główną metodą wprowadzania", + "Whether you're using %(brand)s as an installed Progressive Web App": "Czy używasz %(brand)s zainstalowanego jako Progressive Web App", + "Use email or phone to optionally be discoverable by existing contacts.": "Użyj adresu e-mail lub numeru telefonu, aby móc dodatkowo być odkrywanym(-ą) przez istniejące kontakty.", + "Add an email to be able to reset your password.": "Dodaj adres e-mail, aby zresetować swoje hasło.", + "Host account on": "Przechowuj konto na", + "Already have an account? Sign in here": "Masz już konto? Zaloguj się tutaj", + "Sign in instead": "Zaloguj się zamiast tego", + "Learn more": "Dowiedz się więcej", + "New? Create account": "Nowy(-a)? Utwórz konto", + "New here? Create an account": "Nowy(-a)? Utwórz konto", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Element with an existing Matrix account on a different homeserver.": "Możesz użyć własnych opcji serwera aby zalogować się na inny serwer Matrixa, określając inny adres URL serwera. To pozwala Ci na używanie Elementu z użyciem istniejącego konta Matrixa na innym serwerze.", + "Server Options": "Opcje serwera", + "Copy it to your personal cloud storage": "Skopiuj go do osobistego dysku w chmurze", + "Your recovery key is in your Downloads folder.": "Twój klucz przywracania jest w Twoim folderze Pobrane.", + "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Zachowaj jego kopię w bezpiecznym miejscu, np. w menedżerze haseł, czy nawet w sejfie.", + "Your recovery key": "Twój klucz przywracania", + "Make a copy of your recovery key": "Dokonaj kopii swojego klucza przywracania", + "Enter your recovery passphrase a second time to confirm it.": "Wprowadź swoje hasło przywracania drugi raz, aby je potwierdzić.", + "Confirm your recovery passphrase": "Potwierdź swoje hasło przywracania", + "Please enter your recovery passphrase a second time to confirm.": "Wprowadź swoje hasło przywracania drugi raz, aby je potwierdzić.", + "Warning: You should only set up key backup from a trusted computer.": "Ostrzeżenie: Kopia zapasowa klucza powinna być konfigurowana tylko z zaufanego komputera.", + "Warning: you should only set up key backup from a trusted computer.": "Ostrzeżenie: kopia zapasowa klucza powinna być konfigurowana tylko z zaufanego komputera.", + "For maximum security, this should be different from your account password.": "Dla maksymalnego bezpieczeństwa, powinno się ono różnić od hasła do Twojego konta.", + "Enter recovery passphrase": "Wprowadź hasło przywracania", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a recovery passphrase.": "Będziemy przechowywać zaszyfrowaną kopię Twoich kluczy na naszym serwerze. Zabezpiecz swoją kopię zapasową hasłem przywracania.", + "Secure your backup with a recovery passphrase": "Zabezpiecz swoją kopię zapasową z hasłem przywracania", + "Discovery options will appear once you have added an email above.": "Opcje odkrywania pojawią się, gdy dodasz adres e-mail powyżej.", + "Discovery options will appear once you have added a phone number above.": "Opcje odkrywania pojawią się, gdy dodasz numer telefonu powyżej.", + "Show shortcuts to recently viewed rooms above the room list": "Pokazuj skróty do ostatnio wyświetlonych pokoi nad listą pokoi", + "Signature upload failed": "Wysłanie podpisu nie powiodło się", + "Signature upload success": "Wysłanie podpisu udało się", + "Manually export keys": "Ręcznie eksportuj klucze", + "Unable to upload": "Nie można wysłać", + "Recently Direct Messaged": "Ostatnio skontaktowani bezpośrednio", + "Click the button below to confirm your identity.": "Naciśnij poniższy przycisk, aby potwierdzić swoją tożsamość.", + "Confirm to continue": "Potwierdź, aby kontynuować", + "To continue, use Single Sign On to prove your identity.": "Aby kontynuować, użyj Single Sign On do potwierdzenia swojej tożsamości.", + "Integrations not allowed": "Integracje nie są dozwolone", + "Incoming Verification Request": "Oczekująca prośba o weryfikację", + "Waiting for partner to confirm...": "Oczekiwanie na potwierdzenie przez partnera…", + "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Zweryfikuj tego użytkownika, aby oznaczyć go jako zaufanego. Ustawienia użytkownika jako zaufanego dodaje większej pewności, gdy korzystasz z wiadomości szyfrowanych end-to-end.", + "PRO TIP: If you start a bug, please submit debug logs to help us track down the problem.": "PROTIP: Jeżeli zgłaszasz błąd, prosimy wysłać dzienniki debugowania, aby pomóc nam odnaleźć problem.", + "Please view existing bugs on Github first. No match? Start a new one.": "Najpierw zobacz istniejące błędy na GitHubie. Nie znajdziesz niczego? Utwórz nowy.", + "Report a bug": "Zgłoś błąd", + "Comment": "Komentarz", + "Add comment": "Dodaj komentarz", + "Please go into as much detail as you like, so we can track down the problem.": "Napisz tak szczegółowo, jak tylko możesz, abyśmy mogli odnaleźć problem.", + "Tell us below how you feel about %(brand)s so far.": "Powiedz nam, jak na razie podoba Ci się %(brand)s.", + "Rate %(brand)s": "Oceń %(brand)s", + "There was an error finding this widget.": "Wystąpił błąd podczas próby odnalezienia tego widżetu.", + "Active Widgets": "Aktywne widżety", + "Encryption not enabled": "Nie włączono szyfrowania", + "Encryption enabled": "Włączono szyfrowanie" } From 6d6d4194dbf2011f0fe576386d86ed110b185a6b Mon Sep 17 00:00:00 2001 From: Kaede Date: Thu, 14 Jan 2021 03:12:50 +0000 Subject: [PATCH 054/275] Translated using Weblate (Japanese) Currently translated at 50.5% (1380 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/ja/ --- src/i18n/strings/ja.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 98d9fd8724..ac4337a86e 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -1505,5 +1505,8 @@ "Backup version:": "バックアップバージョン:", "Secret storage:": "機密ストレージ:", "Master private key:": "マスター秘密鍵:", - "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "セッションにアクセスできなくなる場合に備えて、アカウントデータとともに暗号鍵をバックアップします。あなたの鍵は一意のリカバリーキーで保護されます。" + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "セッションにアクセスできなくなる場合に備えて、アカウントデータとともに暗号鍵をバックアップします。あなたの鍵は一意のリカバリーキーで保護されます。", + "Add a photo, so people can easily spot your room.": "写真を追加して、あなたの部屋を目立たせましょう。", + "Add a photo so people know it's you.": "写真を追加して、あなただとわかるようにしましょう。", + "Only the two of you are in this conversation, unless either of you invites anyone to join.": "あなたか宛先が誰かを招待しない限りは、この会話は2人だけのものです。" } From 9033c57f8687e732651d311ee130f37a1b7fd959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slobodan=20Simi=C4=87?= Date: Sun, 17 Jan 2021 18:44:32 +0000 Subject: [PATCH 055/275] Translated using Weblate (Serbian) Currently translated at 45.3% (1237 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 407 +++++++++++++++++++++++++++++++++------ 1 file changed, 353 insertions(+), 54 deletions(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index bce9fe6728..9359cb7108 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -1,8 +1,8 @@ { - "This email address is already in use": "Ова мејл адреса се већ користи", + "This email address is already in use": "Ова адреса е-поште се већ користи", "This phone number is already in use": "Овај број телефона се већ користи", - "Failed to verify email address: make sure you clicked the link in the email": "Нисам успео да проверим мејл адресу, постарајте се да сте кликнули на везу у мејлу", - "The remote side failed to pick up": "Друга страна није подигла слушалицу", + "Failed to verify email address: make sure you clicked the link in the email": "Неуспела провера адресе е-поште: морате да кликнете на везу у поруци", + "The remote side failed to pick up": "Друга страна се није јавила", "Unable to capture screen": "Не могу да ухватим садржај екрана", "Existing Call": "Постојећи позив", "You are already in a call.": "Већ сте у позиву.", @@ -36,7 +36,7 @@ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", "Who would you like to add to this community?": "Кога желите додати у ову заједницу?", - "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Упозорење: било која особа додата у заједницу биће јавно видљива било коме ко зна ИБ заједнице", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Упозорење: било која особа додата у заједницу биће јавно видљива било коме ко зна ИД заједнице", "Invite new community members": "Позови нове чланове заједнице", "Invite to Community": "Позови у заједницу", "Which rooms would you like to add to this community?": "Које собе желите додати у ову заједницу?", @@ -51,7 +51,7 @@ "%(brand)s was not given permission to send notifications - please try again": "%(brand)s-у није дато овлашћење за слање обавештења, пробајте поново касније", "Unable to enable Notifications": "Нисам успео да омогућим обавештења", "This email address was not found": "Ова мејл адреса није нађена", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Изгледа да ваша мејл адреса није повезана са Матрикс ИБ-јем на овом кућном серверу.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Изгледа да ваша е-адреса није повезана са Матрикс ИД на овом домаћем серверу.", "Default": "Подразумевано", "Restricted": "Ограничено", "Moderator": "Модератор", @@ -70,7 +70,7 @@ "Missing room_id in request": "Недостаје room_id у захтеву", "Room %(roomId)s not visible": "Соба %(roomId)s није видљива", "Missing user_id in request": "Недостаје user_id у захтеву", - "Call Failed": "Позивање неуспешно", + "Call Failed": "Позив неуспешан", "Call Timeout": "Прекорачено време позивања", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", "Usage": "Коришћење", @@ -87,7 +87,7 @@ "%(senderName)s requested a VoIP conference.": "%(senderName)s је затражио VoIP конференцију.", "%(senderName)s invited %(targetName)s.": "%(senderName)s је позвао %(targetName)s.", "%(senderName)s banned %(targetName)s.": "%(senderName)s је бановао %(targetName)s.", - "%(senderName)s set their display name to %(displayName)s.": "Корисник %(senderName)s је себи поставио приказно име %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s постави приказно име на %(displayName)s.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "Корисник %(senderName)s је себи уклонио приказно име %(oldDisplayName)s.", "%(senderName)s removed their profile picture.": "Корисник %(senderName)s је себи уклонио профилну слику.", "%(senderName)s changed their profile picture.": "Корисник %(senderName)s је себи променио профилну слику.", @@ -258,7 +258,7 @@ "Favourites": "Омиљено", "Rooms": "Собе", "Low priority": "Ниска важност", - "Historical": "Историјско", + "Historical": "Историја", "This room": "Ова соба", "%(roomName)s does not exist.": "Соба %(roomName)s не постоји.", "%(roomName)s is not accessible at this time.": "Соба %(roomName)s није доступна у овом тренутку.", @@ -276,8 +276,8 @@ "Click here to fix": "Кликните овде да бисте поправили", "Who can access this room?": "Ко може приступити овој соби?", "Only people who have been invited": "Само особе које су позване", - "Anyone who knows the room's link, apart from guests": "Било ко ко зна везу ка соби, осим гостију", - "Anyone who knows the room's link, including guests": "Било ко ко зна везу ка соби, укључујући и госте", + "Anyone who knows the room's link, apart from guests": "Свако ко има везу ка соби, осим гостију", + "Anyone who knows the room's link, including guests": "Свако ко има везу ка соби, укључујући и госте", "Publish this room to the public in %(domain)s's room directory?": "Објавити ову собу у јавној фасцикли соба на домену %(domain)s?", "Who can read history?": "Ко може читати историјат?", "Anyone": "Било ко", @@ -292,12 +292,12 @@ "Close": "Затвори", "not specified": "није наведено", "This room has no local addresses": "Ова соба нема локалних адреса", - "Invalid community ID": "Неисправан ИБ заједнице", - "'%(groupId)s' is not a valid community ID": "„%(groupId)s“ није исправан ИБ заједнице", + "Invalid community ID": "Неисправан ИД заједнице", + "'%(groupId)s' is not a valid community ID": "„%(groupId)s“ није исправан ИД заједнице", "Flair": "Беџ", "Showing flair for these communities:": "Приказујем беџ за ове заједнице:", "This room is not showing flair for any communities": "Ова соба не приказује беџеве било које заједнице", - "New community ID (e.g. +foo:%(localDomain)s)": "Нови ИБ заједнице (нпр.: +zajednica:%(localDomain)s)", + "New community ID (e.g. +foo:%(localDomain)s)": "Нови ИД заједнице (нпр.: +zajednica:%(localDomain)s)", "You have enabled URL previews by default.": "Омогућили сте подразумеване претпрегледе адреса.", "You have disabled URL previews by default.": "Онемогућили сте подразумеване претпрегледе адреса.", "URL previews are enabled by default for participants in this room.": "Претпрегледи адреса су подразумевано омогућени за све чланове ове собе.", @@ -404,14 +404,14 @@ "were kicked %(count)s times|one": "избачен", "was kicked %(count)s times|other": "избачен %(count)s пута", "was kicked %(count)s times|one": "избачен", - "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s је променило своје име %(count)s пута", - "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s је променило своје име", - "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s је променило своје име %(count)s пута", - "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s је променило своје име", - "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s је променило свој аватар %(count)s пута", - "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s је променило свој аватар", - "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s је променило свој аватар %(count)s пута", - "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s је променило свој аватар", + "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s промени своје име %(count)s пута", + "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s промени своје име", + "%(oneUser)schanged their name %(count)s times|other": "%(oneUser)s промени своје име %(count)s пута", + "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s промени своје име", + "%(severalUsers)schanged their avatar %(count)s times|other": "%(severalUsers)s промени свој аватар %(count)s пута", + "%(severalUsers)schanged their avatar %(count)s times|one": "%(severalUsers)s промени свој аватар", + "%(oneUser)schanged their avatar %(count)s times|other": "%(oneUser)s промени свој аватар %(count)s пута", + "%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)s промени свој аватар", "%(items)s and %(count)s others|other": "%(items)s и %(count)s других", "%(items)s and %(count)s others|one": "%(items)s и још један", "%(items)s and %(lastItem)s": "%(items)s и %(lastItem)s", @@ -424,20 +424,20 @@ "And %(count)s more...|other": "И %(count)s других...", "ex. @bob:example.com": "нпр.: @pera:domen.rs", "Add User": "Додај корисника", - "Matrix ID": "Матрикс ИБ", - "Matrix Room ID": "ИБ Матрикс собе", + "Matrix ID": "Матрикс ИД", + "Matrix Room ID": "ИД Матрикс собе", "email address": "мејл адреса", "Try using one of the following valid address types: %(validTypesList)s.": "Пробајте са једним од следећих исправних типова адреса: %(validTypesList)s.", "You have entered an invalid address.": "Унели сте неисправну адресу.", "Confirm Removal": "Потврди уклањање", "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Да ли сте сигурни да желите уклонити (обрисати) овај догађај? Знајте да брисање назива собе или мењање теме може опозвати измену.", - "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ИБ-јеви заједнице могу садржати само знакове a-z, 0-9, или '=_-./'", - "Community IDs cannot be empty.": "ИБ-јеви заједнице не могу бити празни.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ИД заједнице могу садржати само знакове a-z, 0-9, или =_-./", + "Community IDs cannot be empty.": "ИД заједнице не могу бити празни.", "Something went wrong whilst creating your community": "Нешто је пошло наопако приликом стварања ваше заједнице", "Create Community": "Направи заједницу", "Community Name": "Назив заједнице", "Example": "Пример", - "Community ID": "ИБ заједнице", + "Community ID": "ИД заједнице", "example": "пример", "Create": "Направи", "Create Room": "Направи собу", @@ -447,9 +447,9 @@ "An error has occurred.": "Догодила се грешка.", "OK": "У реду", "Unable to restore session": "Не могу да повратим сесију", - "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако сте претходно користили новије издање %(brand)s-а, ваша сесија може бити некомпатибилна са овим издањем. Затворите овај прозор и вратите се на новије издање.", + "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако сте претходно користили новије издање апликације %(brand)s, ваша сесија може бити некомпатибилна са овим издањем. Затворите овај прозор и вратите се на новије издање.", "Invalid Email Address": "Неисправна мејл адреса", - "This doesn't appear to be a valid email address": "Изгледа да ово није исправна мејл адреса", + "This doesn't appear to be a valid email address": "Ово не изгледа као исправна адреса е-поште", "Verification Pending": "Чека се на проверу", "Please check your email and click on the link it contains. Once this is done, click continue.": "Проверите ваш мејл и кликните на везу унутар њега. Када ово урадите, кликните на дугме „настави“.", "Unable to add email address": "Не могу да додам мејл адресу", @@ -514,13 +514,13 @@ "Old cryptography data detected": "Нађени су стари криптографски подаци", "The platform you're on": "Платформа коју користите", "The version of %(brand)s": "%(brand)s издање", - "Your language of choice": "Ваш жељени језик", + "Your language of choice": "Ваш изабрани језик", "Which officially provided instance you are using, if any": "Коју званичну инстанцу користите, ако користите", "Whether or not you're using the Richtext mode of the Rich Text Editor": "Да ли користите режим богатог текста у уређивачу богатог текста", - "Your homeserver's URL": "Адреса вашег кућног сервера", + "Your homeserver's URL": "УРЛ вашег кућног сервера", "Analytics": "Аналитика", "The information being sent to us to help make %(brand)s better includes:": "У податке које нам шаљете зарад побољшавања %(brand)s-а спадају:", - "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ако страница садржи поверљиве податке (као што је назив собе, корисника или ИБ-ја групе), ти подаци се уклањају пре слања на сервер.", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ако страница садржи поверљиве податке (као што је назив собе, ИД корисника или групе), ти подаци се уклањају пре слања на сервер.", "%(oldDisplayName)s changed their display name to %(displayName)s.": "Корисник %(oldDisplayName)s је променио приказно име у %(displayName)s.", "Failed to set direct chat tag": "Нисам успео да поставим ознаку директног ћаскања", "Failed to remove tag %(tagName)s from room": "Нисам успео да скинем ознаку %(tagName)s са собе", @@ -612,11 +612,11 @@ "Upload an avatar:": "Отпреми аватар:", "This server does not support authentication with a phone number.": "Овај сервер не подржава идентификацију преко броја мобилног.", "Displays action": "Приказује радњу", - "Bans user with given id": "Забрањује приступ кориснику са датим иб-јем", + "Bans user with given id": "Забрањује приступ кориснику са датим ИД", "Define the power level of a user": "Дефинише ниво моћи корисника", - "Deops user with given id": "Укида админа за корисника са датим иб-јем", - "Invites user with given id to current room": "Позива корисника са датим иб-јем у тренутну собу", - "Kicks user with given id": "Избацује корисника са датим иб-јем", + "Deops user with given id": "Укида админа за корисника са датим ИД", + "Invites user with given id to current room": "Позива корисника са датим ИД у тренутну собу", + "Kicks user with given id": "Избацује корисника са датим ИД", "Changes your display nickname": "Мења ваш приказни надимак", "Searches DuckDuckGo for results": "Претражује DuckDuckGo за резултате", "Ignores a user, hiding their messages from you": "Занемарује корисника и тиме скрива њихове поруке од вас", @@ -627,7 +627,7 @@ "Notify the whole room": "Обавести све у соби", "Room Notification": "Собно обавештење", "Users": "Корисници", - "Session ID": "ИБ сесије", + "Session ID": "ИД сесије", "Passphrases must match": "Фразе се морају подударати", "Passphrase must not be empty": "Фразе не смеју бити празне", "Export room keys": "Извези кључеве собе", @@ -727,7 +727,7 @@ "When I'm invited to a room": "Када сам позван у собу", "Can't update user notification settings": "Не могу да ажурирам корисничка подешавања обавештења", "Notify for all other messages/rooms": "Обавести за све друге поруке и собе", - "Unable to look up room ID from server": "Не могу да погледам ИБ собе на серверу", + "Unable to look up room ID from server": "Не могу да потражим ИД собе на серверу", "Couldn't find a matching Matrix room": "Не могу да нађем одговарајућу Матрикс собу", "Invite to this room": "Позови у ову собу", "You cannot delete this message. (%(code)s)": "Не можете обрисати ову поруку. (%(code)s)", @@ -762,8 +762,8 @@ "Thank you!": "Хвала вам!", "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Са вашим тренутним прегледачем изглед и угођај ове апликације може бити скроз неправилан и неке могућности можда неће радити. Уколико желите да ипак пробате, можете наставити али ћете бити без подршке за било које проблеме на које налетите!", "Checking for an update...": "Проверавам ажурирања...", - "Every page you use in the app": "Свака страница коју будете користили у апликацији", - "e.g. ": "Нпр.: ", + "Every page you use in the app": "Свака страница коју користите у апликацији", + "e.g. ": "нпр. ", "Your device resolution": "Резолуција вашег уређаја", "Popout widget": "Виџет за искакање", "Missing roomId.": "Недостаје roomId.", @@ -777,7 +777,7 @@ "Logs sent": "Записници су послати", "Failed to send logs: ": "Нисам успео да пошаљем записнике: ", "Submit debug logs": "Пошаљи записнике за поправљање грешака", - "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Записници за поправљање грешака садрже податке о коришћењу апликације међу којима се налази ваше корисничко име, ИБ-јеви или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Записници за поправљање грешака садрже податке о коришћењу апликације међу којима се налази ваше корисничко име, ИД или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", "Unable to join community": "Не могу да приступим заједници", "Unable to leave community": "Не могу да напустим заједницу", "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Измене које сте начинили у имену ваше заједнице и на аватару можда неће бити видљиве другим корисницима највише 30 минута.", @@ -786,14 +786,14 @@ "Who can join this community?": "Ко може приступити овој заједници?", "Everyone": "Свако", "Opens the Developer Tools dialog": "Отвори прозор програмерских алатки", - "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ако сте пријавили грешку преко Гитхаба, извештаји за поправљање грешака нам могу помоћи да лакше нађемо узрок. Извештаји садрже податке о коришћењу апликације и међу њих спада ваше корисничко име, ИБ-јеви или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ако сте пријавили грешку преко Гитхаба, извештаји за поправљање грешака нам могу помоћи да лакше нађемо узрок. Извештаји садрже податке о коришћењу апликације и међу њих спада ваше корисничко име, ИД или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", "Always show encryption icons": "Увек прикажи иконице шифровања", "Send Logs": "Пошаљи записнике", "Clear Storage and Sign Out": "Очисти складиште и одјави ме", "Refresh": "Освежи", "We encountered an error trying to restore your previous session.": "Наишли смо на грешку приликом повраћаја ваше претходне сесије.", "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Чишћење складишта вашег прегледача може решити проблем али ће вас то одјавити и учинити шифровани историјат ћаскања нечитљивим.", - "e.g. %(exampleValue)s": "нпр.: %(exampleValue)s", + "e.g. %(exampleValue)s": "нпр. %(exampleValue)s", "Send analytics data": "Пошаљи аналитичке податке", "Enable widget screenshots on supported widgets": "Омогући снимке екрана виџета у подржаним виџетима", "Muted Users": "Утишани корисници", @@ -807,7 +807,7 @@ "Review terms and conditions": "Погледај услове коришћења", "Share Link to User": "Подели везу са корисником", "Share room": "Подели собу", - "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Ово ће учинити ваш налог трајно неупотребљивим. Нећете моћи да се пријавите и нико се неће моћи поново регистровати са истим корисничким ИБ-јем. Ово ће учинити да ваш налог напусти све собе у којима учествује и уклониће појединости вашег налога са идентитетског сервера. Ова радња се не може опозвати.", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Ово ће учинити ваш налог трајно неупотребљивим. Нећете моћи да се пријавите и нико се неће моћи поново да се региструје са истим корисничким ИД. Ово ће учинити да ваш налог напусти све собе у којима учествује и уклониће појединости вашег налога са идентитетског сервера. Ова радња се не може опозвати.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Деактивирањем вашег налога се ваше поруке неће заборавити. Ако желите да заборавимо ваше поруке, штиклирајте кућицу испод.", "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Видљивост порука у Матриксу је слична мејловима. Оне поруке које заборавимо нећемо делити са новим и нерегистрованим корисницима али постојећи корисници који су имали приступ овим порукама ће и даље моћи да виде своју копију.", "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Заборавите све моје поруке које сам послао када се мој налог деактивира (Упозорење: овим ће будући корисници видети непотпуне разговоре)", @@ -831,7 +831,7 @@ "Demote": "Снизите чин", "Whether or not you're logged in (we don't record your username)": "Да ли сте пријављени (не бележимо ваше корисничко име)", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Датотека „%(fileName)s“ премашује ограничење величине отпремања на овом кућном серверу", - "Unable to load! Check your network connectivity and try again.": "Нисам могао да учитам! Проверите вашу мрежну везу и пробајте поново.", + "Unable to load! Check your network connectivity and try again.": "Не могу да учитам! Проверите повезаност и пробајте поново.", "Failed to invite users to the room:": "Нисам успео да позовем кориснике у собу:", "Upgrades a room to a new version": "Надограђује собу на ново издање", "Gets or sets the room topic": "Добавља или поставља тему собе", @@ -863,17 +863,17 @@ "The username field must not be blank.": "Поље корисничког имена не може бити празно.", "Username": "Корисничко име", "Not sure of your password? Set a new one": "Не сећате се лозинке? Поставите нову", - "Are you sure you want to sign out?": "Да ли сте сигурни да се желите одјавити?", - "Call failed due to misconfigured server": "Позив није успео због погрешно подешеног сервера", - "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Замолите администратора вашег сервера (%(homeserverDomain)s) да подеси TURN сервер како би позиви радили поуздано.", - "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Или, можете покушати да користите јавни сервер на turn.matrix.org, али ово неће бити толико поуздано, и поделиће вашу IP адресу са тим сервером. Ово такође можете мењати у Подешавањима.", - "Try using turn.matrix.org": "Покушајте да користите turn.matrix.org", + "Are you sure you want to sign out?": "Заиста желите да се одјавите?", + "Call failed due to misconfigured server": "Позив неуспешан због лоше подешеног сервера", + "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Замолите администратора вашег сервера (%(homeserverDomain)s) да подеси „TURN“ сервер како би позиви радили поуздано.", + "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Можете покушати и да користите јавни сервер на turn.matrix.org, али ово неће бити толико поуздано и откриће вашу ИП адресу серверу. Овим можете управљати у Поставкама.", + "Try using turn.matrix.org": "Пробајте turn.matrix.org", "Use Single Sign On to continue": "Користи јединствену пријаву за наставак", "Confirm adding this email address by using Single Sign On to prove your identity.": "Потврдите додавање ове е-адресе коришћењем јединствене пријаве за доказивање вашег идентитета.", "Single Sign On": "Јединствена пријава", "Confirm adding email": "Потврди додавање е-адресе", "Click the button below to confirm adding this email address.": "Кликните на дугме испод за потврђивање додавања ове е-адресе.", - "Add Email Address": "Додај е-адресу", + "Add Email Address": "Додај адресу е-поште", "Room name or address": "Назив собе или адреса", "Identity server has no terms of service": "Идентитетски сервер нема услове коришћења", "Changes your avatar in all rooms": "Промените ваш аватар у свим собама", @@ -920,7 +920,7 @@ "Scroll to most recent messages": "Пребаци на најновије поруке", "Emoji picker": "Бирач емоџија", "Send a message…": "Пошаљи поруку…", - "Direct Messages": "Непосредне поруке", + "Direct Messages": "Директне поруке", "Create room": "Направи собу", "People": "Људи", "Forget this room": "Заборави ову собу", @@ -1035,13 +1035,312 @@ "Looks good": "Изгледа добро", "Show advanced": "Прикажи напредно", "Recent Conversations": "Недавни разговори", - "Recently Direct Messaged": "Недавно послате непосредне поруке", + "Recently Direct Messaged": "Недавне директне поруке", "Start a conversation with someone using their name, username (like ) or email address.": "Започните разговор са неким користећи њихово име, корисничко име (као нпр.: ) или мејл адресу.", "Go": "Напред", "Go to Element": "Иди у Елемент", "We’re excited to announce Riot is now Element!": "Са одушевљењем објављујемо да је Рајот (Riot) сада Елемент (Element)!", "Learn more at element.io/previously-riot": "Сазнајте више на страници element.io/previously-riot", "Looks good!": "Изгледа добро!", - "Send a Direct Message": "Пошаљи непосредну поруку", - "Switch theme": "Промени тему" + "Send a Direct Message": "Пошаљи директну поруку", + "Switch theme": "Промени тему", + "Error upgrading room": "Грешка при надоградњи собе", + "You do not have the required permissions to use this command.": "Немате потребне дозволе за коришћење ове команде.", + "Sends a message as html, without interpreting it as markdown": "Шаље поруку као ХТМЛ, без маркдаун интерпретације", + "Sends a message as plain text, without interpreting it as markdown": "Шаље поруку као обичан текст, без маркдаун интерпретације", + "Prepends ( ͡° ͜ʖ ͡°) to a plain-text message": "Придодаје ( ͡° ͜ʖ ͡°) обичној поруци", + "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Придодаје ┬──┬ ノ( ゜-゜ノ) обичној поруци", + "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Придодаје (╯°□°)╯︵ ┻━┻ обичној поруци", + "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Придодаје ¯\\_(ツ)_/¯ обичној поруци", + "Other": "Остало", + "Effects": "Ефекти", + "Actions": "Радње", + "Messages": "Поруке", + "Setting up keys": "Постављам кључеве", + "Are you sure you want to cancel entering passphrase?": "Заиста желите да откажете унос фразе?", + "Cancel entering passphrase?": "Отказати унос фразе?", + "Custom (%(level)s)": "Посебан %(level)s", + "Sign In": "Пријави се", + "Create Account": "Направи налог", + "Use your account or create a new one to continue.": "Користите постојећи или направите нови да наставите.", + "Sign In or Create Account": "Пријавите се или направите налог", + "Zimbabwe": "Зимбабве", + "Zambia": "Замбија", + "Yemen": "Јемен", + "Western Sahara": "Западна Сахара", + "Wallis & Futuna": "Валис и Футуна", + "Vietnam": "Вијетнам", + "Venezuela": "Венезуела", + "Vatican City": "Ватикан", + "Vanuatu": "Вануату", + "Uzbekistan": "Узбекистан", + "Uruguay": "Уругвај", + "United Arab Emirates": "Уједињени Арапски Емирати", + "Ukraine": "Украјина", + "Uganda": "Уганда", + "U.S. Virgin Islands": "Америчка Девичанска острва", + "Tuvalu": "Тувалу", + "Turks & Caicos Islands": "Туркс и Кајкос острва", + "Turkmenistan": "Туркменистан", + "Turkey": "Турска", + "Tunisia": "Тунис", + "Trinidad & Tobago": "Тринидад и Тобаго", + "Tonga": "Тонга", + "Tokelau": "Токелау", + "Togo": "Того", + "Timor-Leste": "Источни Тимор", + "Thailand": "Тајланд", + "Tanzania": "Танзанија", + "Tajikistan": "Таџикистан", + "Taiwan": "Тајван", + "São Tomé & Príncipe": "Сао Томе и Принципе", + "Syria": "Сирија", + "Switzerland": "Швајцарска", + "Sweden": "Шведска", + "Swaziland": "Свазиленд", + "Svalbard & Jan Mayen": "Свалбард и Јан Мајен", + "Suriname": "Суринам", + "Sudan": "Судан", + "St. Vincent & Grenadines": "Ст. Винсент и Гренадини", + "St. Pierre & Miquelon": "Ст. Пјер и Микелон", + "St. Martin": "Ст. Мартин", + "St. Lucia": "Ст. Луција", + "St. Kitts & Nevis": "Ст. Китс и Невис", + "St. Helena": "Ст. Хелена", + "St. Barthélemy": "Ст. Бартоломеј", + "Sri Lanka": "Шри Ланка", + "Spain": "Шпанија", + "South Sudan": "Јужни Судан", + "South Korea": "Јужна Кореја", + "South Georgia & South Sandwich Islands": "Јужна Џорџија и Јужна Сендвич острва", + "South Africa": "Јужна Африка", + "Somalia": "Сомалија", + "Solomon Islands": "Соломонова острва", + "Slovenia": "Словенија", + "Slovakia": "Словачка", + "Sint Maarten": "Свети Мартин", + "Singapore": "Сингапур", + "Sierra Leone": "Сијера Леоне", + "Seychelles": "Сејшели", + "Serbia": "Србија", + "Senegal": "Сенегал", + "Saudi Arabia": "Саудијска Арабија", + "San Marino": "Сан Марино", + "Samoa": "Самоа", + "Rwanda": "Руанда", + "Russia": "Русија", + "Romania": "Румунија", + "Qatar": "Катар", + "Puerto Rico": "Порторико", + "Portugal": "Португалија", + "Poland": "Пољска", + "Pitcairn Islands": "Питкарнова острва", + "Philippines": "Филипини", + "Peru": "Перу", + "Paraguay": "Парагвај", + "Papua New Guinea": "Папуа Нова Гвинеја", + "Panama": "Панама", + "Palestine": "Палестина", + "Palau": "Палау", + "Pakistan": "Пакистан", + "Oman": "Оман", + "Norway": "Норвешка", + "Northern Mariana Islands": "Северна Маријанска острва", + "North Korea": "Северна Кореја", + "Norfolk Island": "Норфолк", + "Niue": "Ниуе", + "Nigeria": "Нигерија", + "Niger": "Нигер", + "Nicaragua": "Никарагва", + "New Zealand": "Нови Зеланд", + "New Caledonia": "Нова Каледонија", + "Netherlands": "Холандија", + "Nepal": "Непал", + "Nauru": "Науру", + "Namibia": "Намибија", + "Myanmar": "Мјанмар", + "Mozambique": "Мозамбик", + "Morocco": "Мароко", + "Montserrat": "Монсерат", + "Montenegro": "Црна Гора", + "Mongolia": "Монголија", + "Monaco": "Монако", + "Moldova": "Молдавија", + "Micronesia": "Микронезија", + "Mexico": "Мексико", + "Mayotte": "Мајот", + "Mauritius": "Маурицијус", + "Mauritania": "Мауританија", + "Martinique": "Мартиник", + "Marshall Islands": "Маршалова острва", + "Malta": "Малта", + "Mali": "Мали", + "Maldives": "Малдиви", + "Malaysia": "Малезија", + "Malawi": "Малави", + "Madagascar": "Мадагаскар", + "Macedonia": "Македонија", + "Macau": "Макао", + "Luxembourg": "Луксембург", + "Lithuania": "Литванија", + "Liechtenstein": "Лихтенштајн", + "Libya": "Либија", + "Liberia": "Либерија", + "Lesotho": "Лесото", + "Lebanon": "Либан", + "Latvia": "Летонија", + "Laos": "Лаос", + "Kyrgyzstan": "Киргистан", + "Kuwait": "Кувајт", + "Kiribati": "Кирибати", + "Kenya": "Кенија", + "Kazakhstan": "Казахстан", + "Jordan": "Јордан", + "Jersey": "Џерси", + "Japan": "Јапан", + "Jamaica": "Јамајка", + "Italy": "Италија", + "Israel": "Израел", + "Isle of Man": "Острво Ман", + "Ireland": "Ирска", + "Iraq": "Ирак", + "Iran": "Иран", + "Indonesia": "Индонезија", + "India": "Индија", + "Iceland": "Исланд", + "Hungary": "Мађарска", + "Hong Kong": "Хонг Конг", + "Honduras": "Хондурас", + "Heard & McDonald Islands": "Хердова и Мекдоналдсова острва", + "Haiti": "Хаити", + "Guyana": "Гвајана", + "Guinea-Bissau": "Гвинеја Бисау", + "Guinea": "Гвинеја", + "Guernsey": "Гернзи", + "Guatemala": "Гватемала", + "Guam": "Гуам", + "Guadeloupe": "Гвадалупе", + "Grenada": "Гренада", + "Greenland": "Гренланд", + "Greece": "Грчка", + "Gibraltar": "Гибралтар", + "Ghana": "Гана", + "Germany": "Немачка", + "Georgia": "Грузија", + "Gambia": "Гамбија", + "Gabon": "Габон", + "French Southern Territories": "Француске јужне територије", + "French Polynesia": "Француска Полинезија", + "French Guiana": "Француска Гвајана", + "France": "Француска", + "Finland": "Финска", + "Fiji": "Фиџи", + "Faroe Islands": "Фарска острва", + "Falkland Islands": "Фокландска острва", + "Ethiopia": "Етиопија", + "Estonia": "Естонија", + "Eritrea": "Еритреја", + "Equatorial Guinea": "Екваторијална Гвинеја", + "El Salvador": "Ел Салвадор", + "Egypt": "Египат", + "Ecuador": "Еквадор", + "Dominican Republic": "Доминиканска република", + "Dominica": "Доминикана", + "Djibouti": "Џибути", + "Denmark": "Данска", + "Côte d’Ivoire": "Обала Слоноваче", + "Czech Republic": "Чешка република", + "Cyprus": "Кипар", + "Curaçao": "Курасао", + "Cuba": "Куба", + "Croatia": "Хрватска", + "Costa Rica": "Костарика", + "Cook Islands": "Кукова острва", + "Congo - Kinshasa": "Конго - Киншаса", + "Congo - Brazzaville": "Конго - Бразавил", + "Comoros": "Комори", + "Colombia": "Колумбија", + "Cocos (Keeling) Islands": "Кокосова (Килинг) острва", + "Christmas Island": "Божићна острва", + "China": "Кина", + "Chile": "Чиле", + "Chad": "Чад", + "Central African Republic": "Централно-афричка република", + "Cayman Islands": "Кајманска острва", + "Caribbean Netherlands": "Холандски Кариби", + "Cape Verde": "Зеленортска острва", + "Canada": "Канада", + "Cameroon": "Камерун", + "Cambodia": "Камбоџа", + "Burundi": "Бурунди", + "Burkina Faso": "Буркина Фасо", + "Bulgaria": "Бугарска", + "Brunei": "Брунеји", + "British Virgin Islands": "Британска Девичанска острва", + "British Indian Ocean Territory": "Британска територија индијског океана", + "Brazil": "Бразил", + "Bouvet Island": "Буветска острва", + "Botswana": "Боцвана", + "Bosnia": "Босна", + "Bolivia": "Боливија", + "Bhutan": "Бутан", + "Bermuda": "Бермуда", + "Benin": "Бенин", + "Belize": "Белиз", + "Belgium": "Белгија", + "Belarus": "Белорусија", + "Barbados": "Барбадос", + "Bangladesh": "Бангладеш", + "Bahrain": "Бахреин", + "Bahamas": "Бахами", + "Azerbaijan": "Азербејџан", + "Austria": "Аустрија", + "Australia": "Аустралија", + "Aruba": "Аруба", + "Armenia": "Јерменија", + "Argentina": "Аргентина", + "Antigua & Barbuda": "Антигва и Барбуда", + "Antarctica": "Антарктик", + "Anguilla": "Ангила", + "Angola": "Ангола", + "Andorra": "Андора", + "American Samoa": "Америчка Самоа", + "Algeria": "Алжир", + "Albania": "Албанија", + "Åland Islands": "Аландска острва", + "Afghanistan": "Авганистан", + "United States": "Сједињене Америчке Државе", + "United Kingdom": "Уједињено Краљевство", + "%(name)s is requesting verification": "%(name)s тражи верификацију", + "Trust": "Веруј", + "Only continue if you trust the owner of the server.": "Наставите само ако верујете власнику сервера.", + "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Ова радња захтева приступ серверу идентитета за валидацију адресе е-поште или телефонског броја али изгледа да сервер нема „услове услуге“.", + "Name or Matrix ID": "Име или Матрикс ИД", + "The server does not support the room version specified.": "Сервер не подржава наведену верзију собе.", + "The file '%(fileName)s' failed to upload.": "Фајл „%(fileName)s“ није отпремљен.", + "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Тренутно није могуће одговорити и приложити фајл. Желите ли да пошаљете само фајл без одговора?", + "Replying With Files": "Одговори са фајловима", + "This will end the conference for everyone. Continue?": "Ово ће завршити конференцију за све. Да наставим?", + "End conference": "Завршите конференцију", + "You've reached the maximum number of simultaneous calls.": "Достигли сте максималан број истовремених позива.", + "Too Many Calls": "Превише позива", + "No other application is using the webcam": "Друга апликације не користи камеру", + "Call failed because webcam or microphone could not be accessed. Check that:": "Позив није успео јер камера или микрофон нису доступни. Проверите да:", + "Permission is granted to use the webcam": "Постоји дозвола за коришћење камере", + "A microphone and webcam are plugged in and set up correctly": "Микрофон и камера су прикључени и исправно подешени", + "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Позив није успео јер микрофон није доступан. Проверите да ли је прикључен и исправно подешен.", + "Unable to access webcam / microphone": "Не могу да приступим камери/микрофону", + "Unable to access microphone": "Не могу да приступим микрофону", + "The call was answered on another device.": "На позив је одговорено на другом уређају.", + "Answered Elsewhere": "Одговорен другде", + "The call could not be established": "Позив није могао да се успостави", + "The other party declined the call.": "Друга страна је одбила позив.", + "Call Declined": "Позив одбијен", + "Your user agent": "Ваш кориснички агент", + "Whether you're using %(brand)s on a device where touch is the primary input mechanism": "Било да користите %(brand)s на уређају где је додир главни начин уноса", + "Add Phone Number": "Додај број телефона", + "Click the button below to confirm adding this phone number.": "Кликните на дугме испод за потврду додавања броја телефона.", + "Confirm adding phone number": "Потврда додавања броја телефона", + "Confirm adding this phone number by using Single Sign On to prove your identity.": "Потврдите додавање броја телефона помоћу јединствене пријаве да докажете свој идентитет.", + "About": "О програму" } From d8c01b6ffdb8b2026d02c5b7e328918835fbd171 Mon Sep 17 00:00:00 2001 From: MamasLT Date: Sat, 16 Jan 2021 17:26:47 +0000 Subject: [PATCH 056/275] Translated using Weblate (Lithuanian) Currently translated at 71.2% (1944 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/lt/ --- src/i18n/strings/lt.json | 44 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index 62b34104a6..7edb8f0c55 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -2047,5 +2047,47 @@ "Please view existing bugs on Github first. No match? Start a new one.": "Pirmiausia peržiūrėkite Github'e esančius pranešimus apie klaidas. Jokio atitikmens? Pradėkite naują pranešimą.", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Paprastai tai turi įtakos tik kambario apdorojimui serveryje. Jei jūs turite problemų su savo %(brand)s, praneškite apie klaidą.", "Report a bug": "Pranešti apie klaidą", - "Invite someone using their name, email address, username (like ) or share this room.": "Pakviesti ką nors, naudojant jų vardą, el. pašto adresą, vartotojo vardą (pvz.: ) arba bendrinti šį kambarį." + "Invite someone using their name, email address, username (like ) or share this room.": "Pakviesti ką nors, naudojant jų vardą, el. pašto adresą, vartotojo vardą (pvz.: ) arba bendrinti šį kambarį.", + "Azerbaijan": "Azerbaidžanas", + "Austria": "Austrija", + "Australia": "Australija", + "Aruba": "Aruba", + "Armenia": "Armėnija", + "Argentina": "Argentina", + "Antigua & Barbuda": "Antigva ir Barbuda", + "Antarctica": "Antarktida", + "Anguilla": "Angilija", + "Angola": "Angola", + "Andorra": "Andora", + "American Samoa": "Amerikos Samoa", + "Algeria": "Alžyras", + "Albania": "Albanija", + "Åland Islands": "Alandų Salos", + "Afghanistan": "Afganistanas", + "United States": "Jungtinės Amerikos Valstijos", + "United Kingdom": "Jungtinė Karalystė", + "You've reached the maximum number of simultaneous calls.": "Pasiekėte maksimalų vienu metu vykdomų skambučių skaičių.", + "Too Many Calls": "Per Daug Skambučių", + "No other application is using the webcam": "Jokia kita programa nenaudoja kameros", + "Permission is granted to use the webcam": "Suteiktas leidimas naudoti kamerą", + "A microphone and webcam are plugged in and set up correctly": "Mikrofonas ir kamera yra prijungti ir tinkamai nustatyti", + "Call failed because webcam or microphone could not be accessed. Check that:": "Skambutis nepavyko, nes kamera arba mikrofonas negali būti pasiekta. Patikrinkite tai:", + "Unable to access webcam / microphone": "Nepavyksta pasiekti kameros / mikrofono", + "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Skambutis nepavyko, nes mikrofonas negali būti pasiektas. Patikrinkite, ar mikrofonas yra prijungtas ir tinkamai nustatytas.", + "Unable to access microphone": "Nepavyksta pasiekti mikrofono", + "Local Addresses": "Vietiniai Adresai", + "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Jei anksčiau naudojote naujesnę %(brand)s versiją, jūsų seansas gali būti nesuderinamas su šia versija. Uždarykite šį langą ir grįžkite į naujesnę versiją.", + "We encountered an error trying to restore your previous session.": "Bandant atkurti ankstesnį seansą įvyko klaida.", + "The internet connection either session is using": "Interneto ryšys, naudojamas bet kurio seanso", + "This session, or the other session": "Šis seansas, arba kitas seansas", + "Confirm this user's session by comparing the following with their User Settings:": "Patvirtinkite šio vartotojo seansą, palygindami tai, kas nurodyta toliau, su jo Vartotojo Nustatymais:", + "Confirm by comparing the following with the User Settings in your other session:": "Patvirtinkite, palygindami tai, kas nurodyta toliau, su Vartotojo Nustatymais kitame jūsų seanse:", + "Clear all data in this session?": "Išvalyti visus duomenis šiame seanse?", + "%(count)s sessions|one": "%(count)s seansas", + "Yours, or the other users’ session": "Jūsų, arba kito vartotojo seansas", + "Re-request encryption keys from your other sessions.": "Iš naujo prašyti šifravimo raktų iš kitų jūsų seansų.", + "If your other sessions do not have the key for this message you will not be able to decrypt them.": "Jei jūsų kiti seansai neturi šios žinutės rakto, jūs negalėsite jos iššifruoti.", + "Missing session data": "Trūksta seanso duomenų", + "Successfully restored %(sessionCount)s keys": "Sėkmingai atkurti %(sessionCount)s raktai", + "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Įspėjimas: Jūsų asmeniniai duomenys (įskaitant šifravimo raktus) vis dar yra saugomi šiame seanse. Išvalykite juos, jei baigėte naudoti šį seansą, arba norite prisijungti prie kitos paskyros." } From b9f10a7ea2185c350121f7b30432fff4731b914b Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Wed, 13 Jan 2021 16:54:37 +0000 Subject: [PATCH 057/275] Translated using Weblate (Albanian) Currently translated at 99.6% (2719 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 02d206fefe..4069a32968 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2974,5 +2974,12 @@ "You have no visible notifications.": "S’keni njoftime të dukshme.", "Transfer": "Shpërngule", "Failed to transfer call": "S’u arrit të shpërngulej thirrje", - "A call can only be transferred to a single user.": "Një thirrje mund të shpërngulet vetëm te një përdorues." + "A call can only be transferred to a single user.": "Një thirrje mund të shpërngulet vetëm te një përdorues.", + "There was an error finding this widget.": "Pati një gabim në gjetjen e këtij widget-i.", + "Active Widgets": "Widget-e Aktivë", + "Open dial pad": "Hap butonat e numrave", + "Start a Conversation": "Filloni një Bisedë", + "Dial pad": "Butona numrash", + "There was an error looking up the phone number": "Pati një gabim gjatë kërkimit të numrit të telefonit", + "Unable to look up phone number": "S’arrihet të kërkohet numër telefoni" } From d06ab7bc532db6f950ed8e3eb24465f6ff639c58 Mon Sep 17 00:00:00 2001 From: Rachida S Date: Thu, 14 Jan 2021 16:40:15 +0000 Subject: [PATCH 058/275] Translated using Weblate (Kabyle) Currently translated at 93.2% (2545 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/kab/ --- src/i18n/strings/kab.json | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/kab.json b/src/i18n/strings/kab.json index 8d59a43116..6c282af33c 100644 --- a/src/i18n/strings/kab.json +++ b/src/i18n/strings/kab.json @@ -2731,5 +2731,23 @@ "The call was answered on another device.": "Tiririt ɣef usiwel tella-d ɣef yibenk-nniḍen.", "Answered Elsewhere": "Yerra-d seg wadeg-nniḍen", "The call could not be established": "Asiwel ur yeqεid ara", - "The other party declined the call.": "Amdan-nniḍen yugi asiwel." + "The other party declined the call.": "Amdan-nniḍen yugi asiwel.", + "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s isenfel iɣewwaren n unekcum ɣer texxamt-a.", + "Decide where your account is hosted": "Wali anida ara yezdeɣ umiḍan-ik·im", + "Host account on": "Sezdeɣ amiḍan deg", + "Already have an account? Sign in here": "Tesεiḍ yakan amiḍan? Kcem ɣer da", + "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s neɣ %(usernamePassword)s", + "Continue with %(ssoButtons)s": "Kemmel s %(ssoButtons)s", + "That username already exists, please try another.": "Isem-a n useqdac yella yakan, ttxil-k·m εreḍ wayeḍ.", + "Go to Home View": "Uɣal ɣer usebter agejdan", + "Send videos as you in this room": "Azen tividyutin deg texxamt-a am wakken d kečč", + "See images posted to your active room": "Wali tignatin i d-yeffɣen deg texxamt-a iremden", + "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s yesbadu ACLs n uqeddac i texxamt-a.", + "Takes the call in the current room off hold": "Uɣal ɣer usiwel ara iteddun deg -texxamt-a", + "Places the call in the current room on hold": "Seḥbes asiwel deg texxamt-a i kra n wakud", + "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Yerna ┬──┬ ノ( ゜-゜ノ) ɣer tazwara n yizen", + "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Yerna (╯°□°)╯︵ ┻━┻ ɣer tazwara n yizen", + "This will end the conference for everyone. Continue?": "Aya ad yeḥbes asarag i yal yiwen. Kemmel?", + "End conference": "Kfu asarag", + "Call failed because microphone could not be accessed. Check that a microphone is plugged in and set up correctly.": "Tawuri tecceḍ acku asawaḍ ur yessaweḍ ara ad yekcem. Senqed ma yella usawaḍ yeqqnen yerna yettusbadu akken iwata." } From c4570cdaee41b02510aae390e10abdc925d864fa Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 18 Jan 2021 15:09:22 +0000 Subject: [PATCH 059/275] Upgrade matrix-js-sdk to 9.5.0 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 050e2562a0..4bdcc3b6b8 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "9.5.0-rc.1", + "matrix-js-sdk": "9.5.0", "matrix-widget-api": "^0.1.0-beta.10", "minimist": "^1.2.5", "pako": "^1.0.11", diff --git a/yarn.lock b/yarn.lock index 00f97f966c..cb4fa0e13a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6553,10 +6553,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@9.5.0-rc.1: - version "9.5.0-rc.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.0-rc.1.tgz#91c2f0ff969baea1416611a39354ca016cc1b7c6" - integrity sha512-TOWU6QKfc3BBTdLyzKMnc0trsaw9sQw3/LaNU/ZqP1LuVDK+qRQxcUfsev0EFfRKURIcI7KvtzRiV+DakN/X+Q== +matrix-js-sdk@9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.0.tgz#2f54e73b0fbb03e85b3f81f41da9d33b028c4b30" + integrity sha512-Fg1SGrZ4N2WAtgbK5mEoOfDwTGV83noJ3VUJ9z3rparbQCBr8Rd8ppHBD8RgshVWGdJMPJ4EQBwhQUgHeyhz9g== dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" From 5cf6d578838f8ec944e24842aeeb2783f478c95a Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 18 Jan 2021 15:14:52 +0000 Subject: [PATCH 060/275] Prepare changelog for v3.12.0 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef56762a31..8c460b4f81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +Changes in [3.12.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.12.0) (2021-01-18) +===================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.12.0-rc.1...v3.12.0) + + * Upgrade to JS SDK 9.5.0 + * Fix incoming call box on dark theme + [\#5543](https://github.com/matrix-org/matrix-react-sdk/pull/5543) + Changes in [3.12.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.12.0-rc.1) (2021-01-13) =============================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.11.1...v3.12.0-rc.1) From 5a54bb0e7f5a41622f42b549b1cb654543824a97 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 18 Jan 2021 15:14:53 +0000 Subject: [PATCH 061/275] v3.12.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4bdcc3b6b8..807bcaf9f4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.12.0-rc.1", + "version": "3.12.0", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 5455b90c980a207541c70c61c66ee3f6fc289819 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 18 Jan 2021 15:16:18 +0000 Subject: [PATCH 062/275] Resetting package fields for development --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 807bcaf9f4..710d1e784a 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "matrix-gen-i18n": "scripts/gen-i18n.js", "matrix-prune-i18n": "scripts/prune-i18n.js" }, - "main": "./lib/index.js", + "main": "./src/index.js", "matrix_src_main": "./src/index.js", "matrix_lib_main": "./lib/index.js", "matrix_lib_typings": "./lib/index.d.ts", @@ -188,6 +188,5 @@ "transformIgnorePatterns": [ "/node_modules/(?!matrix-js-sdk).+$" ] - }, - "typings": "./lib/index.d.ts" + } } From 6c8e6096da01cdc3153d2b120d9e9e3f5a482078 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Mon, 18 Jan 2021 15:16:31 +0000 Subject: [PATCH 063/275] Reset matrix-js-sdk back to develop branch --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 710d1e784a..eb97ff1995 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "9.5.0", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "matrix-widget-api": "^0.1.0-beta.10", "minimist": "^1.2.5", "pako": "^1.0.11", diff --git a/yarn.lock b/yarn.lock index cb4fa0e13a..eefe6e071e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6553,10 +6553,9 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@9.5.0: +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "9.5.0" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.0.tgz#2f54e73b0fbb03e85b3f81f41da9d33b028c4b30" - integrity sha512-Fg1SGrZ4N2WAtgbK5mEoOfDwTGV83noJ3VUJ9z3rparbQCBr8Rd8ppHBD8RgshVWGdJMPJ4EQBwhQUgHeyhz9g== + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/214a9df3823e602400b24d9a81cfc7b7df0a863b" dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" From 1c771a258f56e6788ff03cfde7f5cff0861d7d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 18 Jan 2021 15:50:43 +0000 Subject: [PATCH 064/275] Translated using Weblate (Estonian) Currently translated at 100.0% (2728 of 2728 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index e00395706d..2d86a6961e 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2991,5 +2991,7 @@ "Start a Conversation": "Alusta vestlust", "Dial pad": "Numbriklahvistik", "There was an error looking up the phone number": "Telefoninumbri otsimisel tekkis viga", - "Unable to look up phone number": "Telefoninumbrit ei õnnestu leida" + "Unable to look up phone number": "Telefoninumbrit ei õnnestu leida", + "Channel: ": "Kanal: ", + "Workspace: ": "Tööruum: " } From 530a242aaeafbc54510f5cbbbcd948a865eecec3 Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Mon, 18 Jan 2021 21:41:10 +0530 Subject: [PATCH 065/275] Fixed continue button while selecting home server --- src/components/views/dialogs/ServerPickerDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ServerPickerDialog.tsx b/src/components/views/dialogs/ServerPickerDialog.tsx index 65d53f0870..bdc3a71826 100644 --- a/src/components/views/dialogs/ServerPickerDialog.tsx +++ b/src/components/views/dialogs/ServerPickerDialog.tsx @@ -151,7 +151,7 @@ export default class ServerPickerDialog extends React.PureComponent Date: Mon, 18 Jan 2021 16:52:12 +0000 Subject: [PATCH 066/275] Translated using Weblate (Hungarian) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index cb96628e1c..7fd2aa0daf 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2985,5 +2985,8 @@ "Start a Conversation": "Beszélgetés megkezdése", "Dial pad": "Tárcsázó számlap", "There was an error looking up the phone number": "A telefonszám megkeresésekor hiba történt", - "Unable to look up phone number": "A telefonszámot nem sikerült megtalálni" + "Unable to look up phone number": "A telefonszámot nem sikerült megtalálni", + "Workspace: ": "Munkaterület: ", + "Change which room, message, or user you're viewing": "Azon szoba, üzenet vagy felhasználó megváltoztatása amit éppen néz", + "Channel: ": "Csatorna: " } From 5e826796b1cc03f025eb1d341b8d8ea13ecbcd8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Mon, 18 Jan 2021 16:24:10 +0000 Subject: [PATCH 067/275] Translated using Weblate (Estonian) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 2d86a6961e..9ff8b2c974 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2993,5 +2993,6 @@ "There was an error looking up the phone number": "Telefoninumbri otsimisel tekkis viga", "Unable to look up phone number": "Telefoninumbrit ei õnnestu leida", "Channel: ": "Kanal: ", - "Workspace: ": "Tööruum: " + "Workspace: ": "Tööruum: ", + "Change which room, message, or user you're viewing": "Muuda jututuba, sõnumit või kasutajat, mida hetkel vaatad" } From 1f219d8530bd3d5fbe383a9f4235fd648be872f8 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 17:40:32 -0700 Subject: [PATCH 068/275] Simple support for generics off the settings store Ideally the settings store returns the right type, but for now we can feed it the type we need/expect. --- src/settings/SettingsStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings/SettingsStore.ts b/src/settings/SettingsStore.ts index 1b718a72b3..6dc2a76ae8 100644 --- a/src/settings/SettingsStore.ts +++ b/src/settings/SettingsStore.ts @@ -276,7 +276,7 @@ export default class SettingsStore { * @param {boolean} excludeDefault True to disable using the default value. * @return {*} The value, or null if not found */ - public static getValue(settingName: string, roomId: string = null, excludeDefault = false): any { + public static getValue(settingName: string, roomId: string = null, excludeDefault = false): T { // Verify that the setting is actually a setting if (!SETTINGS[settingName]) { throw new Error("Setting '" + settingName + "' does not appear to be a setting."); From 39ce5d06e6246338a41b70c543293a5d38480361 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 17:40:52 -0700 Subject: [PATCH 069/275] Describe how the widget layouts are supposed to look in time --- docs/widget-layouts.md | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 docs/widget-layouts.md diff --git a/docs/widget-layouts.md b/docs/widget-layouts.md new file mode 100644 index 0000000000..e49f2a2e60 --- /dev/null +++ b/docs/widget-layouts.md @@ -0,0 +1,61 @@ +# Widget layout support + +Rooms can have a default widget layout to auto-pin certain widgets, make the container different +sizes, etc. These are defined through the `io.element.widgets.layout` state event (empty state key). + +Full example content: +```json5 +{ + "widgets": { + "first-widget-id": { + "container": "top", + "index": 0, + "width": 60, + "height": 40 + }, + "second-widget-id": { + "container": "right" + } + } +} +``` + +As shown, there are two containers possible for widgets. These containers have different behaviour +and interpret the other options differently. + +## `top` container + +This is the "App Drawer" or any pinned widgets in a room. This is by far the most versatile container +though does introduce potential usability issues upon members of the room (widgets take up space and +therefore less messages can be shown). + +The `index` for a widget determines which order the widgets show up in from left to right. Widgets +without an `index` will show up as the rightmost widgets. Tiebreaks (same `index` or multiple defined +without an `index`) are resolved by comparing widget IDs. A maximum of 3 widgets can be in the top +container - any which exceed this will be ignored. Smaller numbers represent leftmost widgets. + +The `width` is relative width within the container in percentage points. This will be clamped to a +range of 0-100 (inclusive). The rightmost widget will have its percentage adjusted to fill the +container appropriately, shrinking and growing if required. For example, if three widgets are in the +top container at 40% width each then the 3rd widget will be shrunk to 20% because 120% > 100%. +Similarly, if all three widgets were set to 10% width each then the 3rd widget would grow to be 80%. + +Note that the client may impose minimum widths on the widgets, such as a 10% minimum to avoid pinning +hidden widgets. In general, widgets defined in the 30-70% range each will be free of these restrictions. + +The `height` is not in fact applied per-widget but is recorded per-widget for potential future +capabilities in future containers. The top container will take the tallest `height` and use that for +the height of the whole container, and thus all widgets in that container. The `height` is relative +to the container, like with `width`, meaning that 100% will consume as much space as the client is +willing to sacrifice to the widget container. Like with `width`, the client may impose minimums to avoid +the container being uselessly small. Heights in the 30-100% range are generally acceptable. The height +is also clamped to be within 0-100, inclusive. + +## `right` container + +This is the default container and has no special configuration. Widgets which overflow from the top +container will be put in this container instead. Putting a widget in the right container does not +automatically show it - it only mentions that widgets should not be in another container. + +The behaviour of this container may change in the future. + From 4ee29d4e638b6dc5af66582bc44e243237d12655 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 17:41:17 -0700 Subject: [PATCH 070/275] Split out ready states of stores to its own store --- src/stores/AsyncStoreWithClient.ts | 54 ++++++++------------ src/stores/ReadyWatchingStore.ts | 81 ++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 32 deletions(-) create mode 100644 src/stores/ReadyWatchingStore.ts diff --git a/src/stores/AsyncStoreWithClient.ts b/src/stores/AsyncStoreWithClient.ts index 1ed7c6a547..3050555ad4 100644 --- a/src/stores/AsyncStoreWithClient.ts +++ b/src/stores/AsyncStoreWithClient.ts @@ -18,22 +18,33 @@ import { MatrixClient } from "matrix-js-sdk/src/client"; import { AsyncStore } from "./AsyncStore"; import { ActionPayload } from "../dispatcher/payloads"; import { Dispatcher } from "flux"; -import { MatrixClientPeg } from "../MatrixClientPeg"; +import { ReadyWatchingStore } from "./ReadyWatchingStore"; export abstract class AsyncStoreWithClient extends AsyncStore { - protected matrixClient: MatrixClient; - - protected abstract async onAction(payload: ActionPayload); + private readyStore: ReadyWatchingStore; protected constructor(dispatcher: Dispatcher, initialState: T = {}) { super(dispatcher, initialState); - if (MatrixClientPeg.get()) { - this.matrixClient = MatrixClientPeg.get(); + // Create an anonymous class to avoid code duplication + const asyncStore = this; + this.readyStore = new (class extends ReadyWatchingStore { + public get mxClient(): MatrixClient { + return this.matrixClient; + } - // noinspection JSIgnoredPromiseFromCall - this.onReady(); - } + protected async onReady(): Promise { + return asyncStore.onReady(); + } + + protected async onNotReady(): Promise { + return asyncStore.onNotReady(); + } + })(dispatcher); + } + + protected get matrixClient(): MatrixClient { + return this.readyStore.mxClient; } protected async onReady() { @@ -44,30 +55,9 @@ export abstract class AsyncStoreWithClient extends AsyncStore< // Default implementation is to do nothing. } + protected abstract async onAction(payload: ActionPayload); + protected async onDispatch(payload: ActionPayload) { await this.onAction(payload); - - if (payload.action === 'MatrixActions.sync') { - // Only set the client on the transition into the PREPARED state. - // Everything after this is unnecessary (we only need to know once we have a client) - // and we intentionally don't set the client before this point to avoid stores - // updating for every event emitted during the cached sync. - if (!(payload.prevState === 'PREPARED' && payload.state !== 'PREPARED')) { - return; - } - - if (this.matrixClient !== payload.matrixClient) { - if (this.matrixClient) { - await this.onNotReady(); - } - this.matrixClient = payload.matrixClient; - await this.onReady(); - } - } else if (payload.action === 'on_client_not_viable' || payload.action === 'on_logged_out') { - if (this.matrixClient) { - await this.onNotReady(); - this.matrixClient = null; - } - } } } diff --git a/src/stores/ReadyWatchingStore.ts b/src/stores/ReadyWatchingStore.ts new file mode 100644 index 0000000000..9a28fe75fa --- /dev/null +++ b/src/stores/ReadyWatchingStore.ts @@ -0,0 +1,81 @@ +/* + * Copyright 2021 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { MatrixClient } from "matrix-js-sdk/src/client"; +import { MatrixClientPeg } from "../MatrixClientPeg"; +import { ActionPayload } from "../dispatcher/payloads"; +import { Dispatcher } from "flux"; +import { IDestroyable } from "../utils/IDestroyable"; +import { EventEmitter } from "events"; + +export abstract class ReadyWatchingStore extends EventEmitter implements IDestroyable { + protected matrixClient: MatrixClient; + private readonly dispatcherRef: string; + + constructor(protected readonly dispatcher: Dispatcher) { + super(); + + this.dispatcherRef = this.dispatcher.register(this.onAction); + + if (MatrixClientPeg.get()) { + this.matrixClient = MatrixClientPeg.get(); + + // noinspection JSIgnoredPromiseFromCall + this.onReady(); + } + } + + public get mxClient(): MatrixClient { + return this.matrixClient; // for external readonly access + } + + public destroy() { + this.dispatcher.unregister(this.dispatcherRef); + } + + protected async onReady() { + // Default implementation is to do nothing. + } + + protected async onNotReady() { + // Default implementation is to do nothing. + } + + private onAction = async (payload: ActionPayload) => { + if (payload.action === 'MatrixActions.sync') { + // Only set the client on the transition into the PREPARED state. + // Everything after this is unnecessary (we only need to know once we have a client) + // and we intentionally don't set the client before this point to avoid stores + // updating for every event emitted during the cached sync. + if (!(payload.prevState === 'PREPARED' && payload.state !== 'PREPARED')) { + return; + } + + if (this.matrixClient !== payload.matrixClient) { + if (this.matrixClient) { + await this.onNotReady(); + } + this.matrixClient = payload.matrixClient; + await this.onReady(); + } + } else if (payload.action === 'on_client_not_viable' || payload.action === 'on_logged_out') { + if (this.matrixClient) { + await this.onNotReady(); + this.matrixClient = null; + } + } + }; +} From 0001e1e684d890efdd18daacef9e4e99c94aa0a9 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 17:41:42 -0700 Subject: [PATCH 071/275] Support initial ordering and calculation for widgets by layout --- src/@types/global.d.ts | 2 + src/settings/Settings.ts | 6 +- src/stores/widgets/WidgetLayoutStore.ts | 274 ++++++++++++++++++++++++ src/utils/numbers.ts | 30 +++ 4 files changed, 311 insertions(+), 1 deletion(-) create mode 100644 src/stores/widgets/WidgetLayoutStore.ts create mode 100644 src/utils/numbers.ts diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index 741798761f..2a28c8e43f 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -36,6 +36,7 @@ import {Analytics} from "../Analytics"; import CountlyAnalytics from "../CountlyAnalytics"; import UserActivity from "../UserActivity"; import {ModalWidgetStore} from "../stores/ModalWidgetStore"; +import { WidgetLayoutStore } from "../stores/widgets/WidgetLayoutStore"; declare global { interface Window { @@ -59,6 +60,7 @@ declare global { mxNotifier: typeof Notifier; mxRightPanelStore: RightPanelStore; mxWidgetStore: WidgetStore; + mxWidgetLayoutStore: WidgetLayoutStore; mxCallHandler: CallHandler; mxAnalytics: Analytics; mxCountlyAnalytics: typeof CountlyAnalytics; diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 6ca009df61..25d7682033 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -633,7 +633,11 @@ export const SETTINGS: {[setting: string]: ISetting} = { displayName: _td("Show chat effects"), default: true, }, - "Widgets.pinned": { + "Widgets.pinned": { // deprecated + supportedLevels: LEVELS_ROOM_OR_ACCOUNT, + default: {}, + }, + "Widgets.layout": { supportedLevels: LEVELS_ROOM_OR_ACCOUNT, default: {}, }, diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts new file mode 100644 index 0000000000..fddfaf65b3 --- /dev/null +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -0,0 +1,274 @@ +/* + * Copyright 2021 The Matrix.org Foundation C.I.C. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import SettingsStore from "../../settings/SettingsStore"; +import { Room } from "matrix-js-sdk/src/models/room"; +import WidgetStore, { IApp } from "../WidgetStore"; +import { WidgetType } from "../../widgets/WidgetType"; +import { clamp, defaultNumber } from "../../utils/numbers"; +import { EventEmitter } from "events"; +import { AsyncStoreWithClient } from "../AsyncStoreWithClient"; +import defaultDispatcher from "../../dispatcher/dispatcher"; +import { ReadyWatchingStore } from "../ReadyWatchingStore"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; + +export const WIDGET_LAYOUT_EVENT_TYPE = "io.element.widgets.layout"; + +export enum Container { + // "Top" is the app drawer, and currently the only sensible value. + Top = "top", + + // "Right" is the right panel, and the default for widgets. Setting + // this as a container on a widget is essentially like saying "no + // changes needed", though this may change in the future. + Right = "right", + + // ... more as needed. Note that most of this code assumes that there + // are only two containers, and that only the top container is special. +} + +interface IStoredLayout { + // Where to store the widget. Required. + container: Container; + + // The index (order) to position the widgets in. Only applies for + // ordered containers (like the top container). Smaller numbers first, + // and conflicts resolved by comparing widget IDs. + index?: number; + + // Percentage (integer) for relative width of the container to consume. + // Clamped to 0-100 and may have minimums imposed upon it. Only applies + // to containers which support inner resizing (currently only the top + // container). + width?: number; + + // Percentage (integer) for relative height of the container. Note that + // this only applies to the top container currently, and that container + // will take the highest value among widgets in the container. Clamped + // to 0-100 and may have minimums imposed on it. + height?: number; + + // TODO: [Deferred] Maximizing (fullscreen) widgets by default. +} + +interface ILayoutStateEvent { + // TODO: [Deferred] Forced layout (fixed with no changes) + + // The widget layouts. + widgets: { + [widgetId: string]: IStoredLayout; + }; +} + +interface ILayoutSettings extends ILayoutStateEvent { + overrides?: string; // event ID for layout state event, if present +} + +// Dev note: "Pinned" widgets are ones in the top container. +const MAX_PINNED = 3; + +const MIN_WIDGET_WIDTH_PCT = 10; // Don't make anything smaller than 10% width +const MIN_WIDGET_HEIGHT_PCT = 20; + +export class WidgetLayoutStore extends ReadyWatchingStore { + private static internalInstance: WidgetLayoutStore; + + private byRoom: { + [roomId: string]: { + // @ts-ignore - TS wants a string key, but we know better + [container: Container]: { + ordered: IApp[]; + height?: number; + distributions?: number[]; + }; + }; + } = {}; + + private constructor() { + super(defaultDispatcher); + } + + public static get instance(): WidgetLayoutStore { + if (!WidgetLayoutStore.internalInstance) { + WidgetLayoutStore.internalInstance = new WidgetLayoutStore(); + } + return WidgetLayoutStore.internalInstance; + } + + public static emissionForRoom(room: Room): string { + return `update_${room.roomId}`; + } + + private emitFor(room: Room) { + this.emit(WidgetLayoutStore.emissionForRoom(room)); + } + + protected async onReady(): Promise { + this.byRoom = {}; + for (const room of this.matrixClient.getVisibleRooms()) { + this.recalculateRoom(room); + } + + this.matrixClient.on("RoomState.events", this.updateRoomFromState); + // TODO: Register settings listeners + // TODO: Register WidgetStore listener + } + + protected async onNotReady(): Promise { + this.byRoom = {}; + } + + private updateRoomFromState = (ev: MatrixEvent) => { + if (ev.getType() !== WIDGET_LAYOUT_EVENT_TYPE) return; + const room = this.matrixClient.getRoom(ev.getRoomId()); + this.recalculateRoom(room); + }; + + private recalculateRoom(room: Room) { + const widgets = WidgetStore.instance.getApps(room.roomId); + if (!widgets?.length) { + this.byRoom[room.roomId] = {}; + this.emitFor(room); + return; + } + + const layoutEv = room.currentState.getStateEvents(WIDGET_LAYOUT_EVENT_TYPE, ""); + const legacyPinned = SettingsStore.getValue("Widgets.pinned", room.roomId); + let userLayout = SettingsStore.getValue("Widgets.layout", room.roomId); + + if (layoutEv && userLayout && userLayout.overrides !== layoutEv.getId()) { + // For some other layout that we don't really care about. The user can reset this + // by updating their personal layout. + userLayout = null; + } + + const roomLayout: ILayoutStateEvent = layoutEv ? layoutEv.getContent() : null; + + // We essentially just need to find the top container's widgets because we + // only have two containers. Anything not in the top widget by the end of this + // function will go into the right container. + const topWidgets: IApp[] = []; + const rightWidgets: IApp[] = []; + for (const widget of widgets) { + if (WidgetType.JITSI.matches(widget.type)) { + topWidgets.push(widget); + continue; + } + + const stateContainer = roomLayout?.widgets?.[widget.id]?.container; + const manualContainer = userLayout?.widgets?.[widget.id]?.container; + const isLegacyPinned = !!legacyPinned?.[widget.id]; + const defaultContainer = WidgetType.JITSI.matches(widget.type) ? Container.Top : Container.Right; + + if (manualContainer === Container.Right) { + rightWidgets.push(widget); + } else if (manualContainer === Container.Top || stateContainer === Container.Top) { + topWidgets.push(widget); + } else if (isLegacyPinned && !stateContainer) { + topWidgets.push(widget); + } else { + (defaultContainer === Container.Top ? topWidgets : rightWidgets).push(widget); + } + } + + // Trim to MAX_PINNED + const runoff = topWidgets.slice(MAX_PINNED); + rightWidgets.push(...runoff); + + // Order the widgets in the top container, putting autopinned Jitsi widgets first + // unless they have a specific order in mind + topWidgets.sort((a, b) => { + const layoutA = roomLayout?.widgets?.[a.id]; + const layoutB = roomLayout?.widgets?.[b.id]; + + const userLayoutA = userLayout?.widgets?.[a.id]; + const userLayoutB = userLayout?.widgets?.[b.id]; + + // Jitsi widgets are defaulted to be the leftmost widget whereas other widgets + // default to the right side. + const defaultA = WidgetType.JITSI.matches(a.type) ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER; + const defaultB = WidgetType.JITSI.matches(b.type) ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER; + + const orderA = defaultNumber(userLayoutA, defaultNumber(layoutA?.index, defaultA)); + const orderB = defaultNumber(userLayoutB, defaultNumber(layoutB?.index, defaultB)); + + if (orderA === orderB) { + // We just need a tiebreak + return a.id.localeCompare(b.id); + } + + return orderA - orderB; + }); + + // Determine width distribution and height of the top container now (the only relevant one) + const widths: number[] = []; + let maxHeight = 0; + let doAutobalance = true; + for (let i = 0; i < topWidgets.length; i++) { + const widget = topWidgets[i]; + const widgetLayout = roomLayout?.widgets?.[widget.id]; + const userWidgetLayout = userLayout?.widgets?.[widget.id]; + + if (Number.isFinite(userWidgetLayout?.width) || Number.isFinite(widgetLayout?.width)) { + const val = userWidgetLayout?.width || widgetLayout?.width; + const normalized = clamp(val, MIN_WIDGET_WIDTH_PCT, 100); + widths.push(normalized); + doAutobalance = false; // a manual width was specified + } else { + widths.push(100); // we'll figure this out later + } + + const defRoomHeight = defaultNumber(widgetLayout?.height, MIN_WIDGET_HEIGHT_PCT); + const h = defaultNumber(userWidgetLayout?.height, defRoomHeight); + maxHeight = Math.max(maxHeight, clamp(h, MIN_WIDGET_HEIGHT_PCT, 100)); + } + let remainingWidth = 100; + for (const width of widths) { + remainingWidth -= width; + } + if (topWidgets.length > 1 && remainingWidth < MIN_WIDGET_WIDTH_PCT) { + const toReclaim = MIN_WIDGET_WIDTH_PCT - remainingWidth; + for (let i = 0; i < widths.length - 1; i++) { + widths[i] = widths[i] - (toReclaim / (widths.length - 1)); + } + widths[widths.length - 1] = MIN_WIDGET_WIDTH_PCT; + } + if (doAutobalance) { + for (let i = 0; i < widths.length; i++) { + widths[i] = 100 / widths.length; + } + } + + // Finally, fill in our cache and update + this.byRoom[room.roomId] = { + [Container.Top]: { + ordered: topWidgets, + distributions: widths, + height: maxHeight, + }, + [Container.Right]: { + ordered: rightWidgets, + }, + }; + this.emitFor(room); + } + + public getContainerWidgets(room: Room, container: Container): IApp[] { + return this.byRoom[room.roomId]?.[container]?.ordered || []; + } +} + +window.mxWidgetLayoutStore = WidgetLayoutStore.instance; diff --git a/src/utils/numbers.ts b/src/utils/numbers.ts new file mode 100644 index 0000000000..1bf48c5117 --- /dev/null +++ b/src/utils/numbers.ts @@ -0,0 +1,30 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/** + * Returns the default number if the given value, i, is not a number. Otherwise + * returns the given value. + * @param {*} i The value to check. + * @param {number} def The default value. + * @returns {number} Either the value or the default value, whichever is a number. + */ +export function defaultNumber(i: unknown, def: number): number { + return Number.isFinite(i) ? Number(i) : def; +} + +export function clamp(i: number, min: number, max: number): number { + return Math.min(Math.max(i, min), max); +} From 2548a438ae810444b379e6c760dbb305f63a2f7e Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 17:41:54 -0700 Subject: [PATCH 072/275] Render ordering changes in the AppsDrawer --- src/components/views/rooms/AppsDrawer.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 3208844bc5..924cda0b64 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -30,10 +30,10 @@ import {IntegrationManagers} from "../../../integrations/IntegrationManagers"; import SettingsStore from "../../../settings/SettingsStore"; import {useLocalStorageState} from "../../../hooks/useLocalStorageState"; import ResizeNotifier from "../../../utils/ResizeNotifier"; -import WidgetStore from "../../../stores/WidgetStore"; import ResizeHandle from "../elements/ResizeHandle"; import Resizer from "../../../resizer/resizer"; import PercentageDistributor from "../../../resizer/distributors/percentage"; +import {Container, WidgetLayoutStore} from "../../../stores/widgets/WidgetLayoutStore"; export default class AppsDrawer extends React.Component { static propTypes = { @@ -62,13 +62,13 @@ export default class AppsDrawer extends React.Component { componentDidMount() { ScalarMessaging.startListening(); - WidgetStore.instance.on(this.props.room.roomId, this._updateApps); + WidgetLayoutStore.instance.on(WidgetLayoutStore.emissionForRoom(this.props.room), this._updateApps); this.dispatcherRef = dis.register(this.onAction); } componentWillUnmount() { ScalarMessaging.stopListening(); - WidgetStore.instance.off(this.props.room.roomId, this._updateApps); + WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(this.props.room), this._updateApps); if (this.dispatcherRef) dis.unregister(this.dispatcherRef); if (this._resizeContainer) { this.resizer.detach(); @@ -190,7 +190,7 @@ export default class AppsDrawer extends React.Component { } }; - _getApps = () => WidgetStore.instance.getPinnedApps(this.props.room.roomId); + _getApps = () => WidgetLayoutStore.instance.getContainerWidgets(this.props.room, Container.Top); _updateApps = () => { this.setState({ From cfb583d193d2dab9f5b2244bf12e4258741a7705 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 18:48:07 -0700 Subject: [PATCH 073/275] Calculate widget widths in the WidgetLayoutStore Note that this ditches all previously set width values, however this is probably acceptable for now. Trying to remain backwards compatible gets tricky on top of already tricky code, and the impact of Element forgetting widths is not as severe as forgetting which widgets were/are pinned. --- src/components/views/rooms/AppsDrawer.js | 39 +++----- src/stores/widgets/WidgetLayoutStore.ts | 115 ++++++++++++++++++----- src/utils/WidgetUtils.ts | 2 +- src/utils/numbers.ts | 4 + 4 files changed, 111 insertions(+), 49 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 924cda0b64..5982c52d98 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -102,11 +102,10 @@ export default class AppsDrawer extends React.Component { }, onResizeStop: () => { this._resizeContainer.classList.remove("mx_AppsDrawer_resizing"); - // persist to localStorage - localStorage.setItem(this._getStorageKey(), JSON.stringify([ - this.state.apps.map(app => app.id), - ...this.state.apps.slice(1).map((_, i) => this.resizer.forHandleAt(i).size), - ])); + WidgetLayoutStore.instance.setResizerDistributions( + this.props.room, Container.Top, + this.state.apps.slice(1).map((_, i) => this.resizer.forHandleAt(i).size), + ); }, }; // pass a truthy container for now, we won't call attach until we update it @@ -128,8 +127,6 @@ export default class AppsDrawer extends React.Component { this._loadResizerPreferences(); }; - _getStorageKey = () => `mx_apps_drawer-${this.props.room.roomId}`; - _getAppsHash = (apps) => apps.map(app => app.id).join("~"); componentDidUpdate(prevProps, prevState) { @@ -147,24 +144,16 @@ export default class AppsDrawer extends React.Component { }; _loadResizerPreferences = () => { - try { - const [[...lastIds], ...sizes] = JSON.parse(localStorage.getItem(this._getStorageKey())); - // Every app was included in the last split, reuse the last sizes - if (this.state.apps.length <= lastIds.length && this.state.apps.every((app, i) => lastIds[i] === app.id)) { - sizes.forEach((size, i) => { - const distributor = this.resizer.forHandleAt(i); - if (distributor) { - distributor.size = size; - distributor.finish(); - } - }); - return; - } - } catch (e) { - // this is expected - } - - if (this.state.apps) { + const distributions = WidgetLayoutStore.instance.getResizerDistributions(this.props.room, Container.Top); + if (this.state.apps && (this.state.apps.length - 1) === distributions.length) { + distributions.forEach((size, i) => { + const distributor = this.resizer.forHandleAt(i); + if (distributor) { + distributor.size = size; + distributor.finish(); + } + }); + } else if (this.state.apps) { const distributors = this.resizer.getDistributors(); distributors.forEach(d => d.item.clearSize()); distributors.forEach(d => d.start()); diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index fddfaf65b3..7d22f6729e 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -18,12 +18,11 @@ import SettingsStore from "../../settings/SettingsStore"; import { Room } from "matrix-js-sdk/src/models/room"; import WidgetStore, { IApp } from "../WidgetStore"; import { WidgetType } from "../../widgets/WidgetType"; -import { clamp, defaultNumber } from "../../utils/numbers"; -import { EventEmitter } from "events"; -import { AsyncStoreWithClient } from "../AsyncStoreWithClient"; +import { clamp, defaultNumber, sum } from "../../utils/numbers"; import defaultDispatcher from "../../dispatcher/dispatcher"; import { ReadyWatchingStore } from "../ReadyWatchingStore"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { SettingLevel } from "../../settings/SettingLevel"; export const WIDGET_LAYOUT_EVENT_TYPE = "io.element.widgets.layout"; @@ -117,13 +116,11 @@ export class WidgetLayoutStore extends ReadyWatchingStore { } protected async onReady(): Promise { - this.byRoom = {}; - for (const room of this.matrixClient.getVisibleRooms()) { - this.recalculateRoom(room); - } + this.updateAllRooms(); this.matrixClient.on("RoomState.events", this.updateRoomFromState); - // TODO: Register settings listeners + SettingsStore.watchSetting("Widgets.pinned", null, this.updateFromSettings); + SettingsStore.watchSetting("Widgets.layout", null, this.updateFromSettings); // TODO: Register WidgetStore listener } @@ -131,10 +128,26 @@ export class WidgetLayoutStore extends ReadyWatchingStore { this.byRoom = {}; } + private updateAllRooms() { + this.byRoom = {}; + for (const room of this.matrixClient.getVisibleRooms()) { + this.recalculateRoom(room); + } + } + private updateRoomFromState = (ev: MatrixEvent) => { if (ev.getType() !== WIDGET_LAYOUT_EVENT_TYPE) return; const room = this.matrixClient.getRoom(ev.getRoomId()); - this.recalculateRoom(room); + if (room) this.recalculateRoom(room); + }; + + private updateFromSettings = (settingName: string, roomId: string, /* and other stuff */) => { + if (roomId) { + const room = this.matrixClient.getRoom(roomId); + if (room) this.recalculateRoom(room); + } else { + this.updateAllRooms(); + } }; private recalculateRoom(room: Room) { @@ -145,6 +158,8 @@ export class WidgetLayoutStore extends ReadyWatchingStore { return; } + const beforeChanges = JSON.stringify(this.byRoom[room.roomId]); + const layoutEv = room.currentState.getStateEvents(WIDGET_LAYOUT_EVENT_TYPE, ""); const legacyPinned = SettingsStore.getValue("Widgets.pinned", room.roomId); let userLayout = SettingsStore.getValue("Widgets.layout", room.roomId); @@ -239,36 +254,90 @@ export class WidgetLayoutStore extends ReadyWatchingStore { for (const width of widths) { remainingWidth -= width; } - if (topWidgets.length > 1 && remainingWidth < MIN_WIDGET_WIDTH_PCT) { - const toReclaim = MIN_WIDGET_WIDTH_PCT - remainingWidth; - for (let i = 0; i < widths.length - 1; i++) { - widths[i] = widths[i] - (toReclaim / (widths.length - 1)); - } - widths[widths.length - 1] = MIN_WIDGET_WIDTH_PCT; - } if (doAutobalance) { for (let i = 0; i < widths.length; i++) { widths[i] = 100 / widths.length; } } + // TODO: There is probably a more efficient way to do this. + // All we're doing is making sure that our widths sum up to 100 and take + // any excess width off all widgets equally to keep the proportions. + let toReclaim = sum(...widths) - 100; + while (toReclaim > 0 && topWidgets.length > 0) { + for (let i = 0; i < widths.length; i++) { + if (toReclaim <= 0) break; + const w = widths[i]; + const adjusted = clamp(w - 1, MIN_WIDGET_WIDTH_PCT, 100); + if (adjusted !== w) { + toReclaim -= 1; + widths[i] = adjusted; + } + } + } + // Finally, fill in our cache and update - this.byRoom[room.roomId] = { - [Container.Top]: { + this.byRoom[room.roomId] = {}; + if (topWidgets.length) { + this.byRoom[room.roomId][Container.Top] = { ordered: topWidgets, distributions: widths, height: maxHeight, - }, - [Container.Right]: { + }; + } + if (rightWidgets.length) { + this.byRoom[room.roomId][Container.Right] = { ordered: rightWidgets, - }, - }; - this.emitFor(room); + }; + } + + const afterChanges = JSON.stringify(this.byRoom[room.roomId]); + if (afterChanges !== beforeChanges) { + this.emitFor(room); + } } public getContainerWidgets(room: Room, container: Container): IApp[] { return this.byRoom[room.roomId]?.[container]?.ordered || []; } + + public getResizerDistributions(room: Room, container: Container): string[] { // yes, string. + let distributions = this.byRoom[room.roomId]?.[container]?.distributions; + if (!distributions || distributions.length < 2) return []; + + // The distributor actually expects to be fed N-1 sizes and expands the middle section + // instead of the edges. Therefore, we need to return [0] when there's two widgets or + // [0, 2] when there's three (skipping [1] because it's irrelevant). + + if (distributions.length === 2) distributions = [distributions[0]]; + if (distributions.length === 3) distributions = [distributions[0], distributions[2]]; + return distributions.map(d => `${d.toFixed(1)}%`); // actual percents - these are decoded later + } + + public setResizerDistributions(room: Room, container: Container, distributions: string[]) { + if (container !== Container.Top) return; // ignore - not relevant + + const numbers = distributions.map(d => Number(Number(d.substring(0, d.length - 1)).toFixed(1))); + const widgets = this.getContainerWidgets(room, container); + + // From getResizerDistributions, we need to fill in the middle size if applicable. + const remaining = 100 - sum(...numbers); + if (numbers.length === 2) numbers.splice(1, 0, remaining); + if (numbers.length === 1) numbers.push(remaining); + + const localLayout = {}; + widgets.forEach((w, i) => { + localLayout[w.id] = { + width: numbers[i], + index: i, + }; + }); + const layoutEv = room.currentState.getStateEvents(WIDGET_LAYOUT_EVENT_TYPE, ""); + SettingsStore.setValue("Widgets.layout", room.roomId, SettingLevel.ROOM_ACCOUNT, { + overrides: layoutEv?.getId(), + widgets: localLayout, + }); + } } window.mxWidgetLayoutStore = WidgetLayoutStore.instance; diff --git a/src/utils/WidgetUtils.ts b/src/utils/WidgetUtils.ts index 986c68342c..815900d97a 100644 --- a/src/utils/WidgetUtils.ts +++ b/src/utils/WidgetUtils.ts @@ -28,7 +28,7 @@ import {WidgetType} from "../widgets/WidgetType"; import {objectClone} from "./objects"; import {_t} from "../languageHandler"; import {Capability, IWidgetData, MatrixCapabilities} from "matrix-widget-api"; -import {IApp} from "../stores/WidgetStore"; // TODO @@ +import {IApp} from "../stores/WidgetStore"; // How long we wait for the state event echo to come back from the server // before waitFor[Room/User]Widget rejects its promise diff --git a/src/utils/numbers.ts b/src/utils/numbers.ts index 1bf48c5117..e26db0d5aa 100644 --- a/src/utils/numbers.ts +++ b/src/utils/numbers.ts @@ -28,3 +28,7 @@ export function defaultNumber(i: unknown, def: number): number { export function clamp(i: number, min: number, max: number): number { return Math.min(Math.max(i, min), max); } + +export function sum(...i: number[]): number { + return [...i].reduce((p, c) => c + p, 0); +} From 0d29d15a464eab3a66278c963026033ca8be9f1d Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 19:27:11 -0700 Subject: [PATCH 074/275] Support room-defined height as well Much like widget widths, it is acceptable for us to forget what everyone's height was previously at. --- src/components/views/rooms/AppsDrawer.js | 26 ++++++++++-- src/hooks/useStateCallback.ts | 28 +++++++++++++ src/stores/widgets/WidgetLayoutStore.ts | 50 +++++++++++++++++++----- src/utils/numbers.ts | 8 ++++ 4 files changed, 98 insertions(+), 14 deletions(-) create mode 100644 src/hooks/useStateCallback.ts diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 5982c52d98..5efcefc4bc 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -28,12 +28,13 @@ import WidgetUtils from '../../../utils/WidgetUtils'; import WidgetEchoStore from "../../../stores/WidgetEchoStore"; import {IntegrationManagers} from "../../../integrations/IntegrationManagers"; import SettingsStore from "../../../settings/SettingsStore"; -import {useLocalStorageState} from "../../../hooks/useLocalStorageState"; import ResizeNotifier from "../../../utils/ResizeNotifier"; import ResizeHandle from "../elements/ResizeHandle"; import Resizer from "../../../resizer/resizer"; import PercentageDistributor from "../../../resizer/distributors/percentage"; import {Container, WidgetLayoutStore} from "../../../stores/widgets/WidgetLayoutStore"; +import {clamp, percentageOf, percentageWithin} from "../../../utils/numbers"; +import {useStateCallback} from "../../../hooks/useStateCallback"; export default class AppsDrawer extends React.Component { static propTypes = { @@ -237,7 +238,7 @@ export default class AppsDrawer extends React.Component { return (
    { - const [height, setHeight] = useLocalStorageState("pvr_" + id, 280); // old fixed height was 273px + let defaultHeight = WidgetLayoutStore.instance.getContainerHeight(room, Container.Top); + + // Arbitrary defaults to avoid NaN problems. 100 px or 3/4 of the visible window. + if (!minHeight) minHeight = 100; + if (!maxHeight) maxHeight = (window.innerHeight / 4) * 3; + + // Convert from percentage to height. Note that the default height is 280px. + if (defaultHeight) { + defaultHeight = clamp(defaultHeight, 0, 100); + defaultHeight = percentageWithin(defaultHeight / 100, minHeight, maxHeight); + } else { + defaultHeight = 280; + } + + const [height, setHeight] = useStateCallback(defaultHeight, newHeight => { + newHeight = percentageOf(newHeight, minHeight, maxHeight) * 100; + WidgetLayoutStore.instance.setContainerHeight(room, Container.Top, newHeight) + }); return (initialValue: T, callback: (v: T) => void): [T, Dispatch>] => { + const [value, setValue] = useState(initialValue); + const interceptSetValue = (newVal: T) => { + setValue(newVal); + callback(newVal); + }; + return [value, interceptSetValue]; +}; diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 7d22f6729e..12051d35bc 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -63,13 +63,15 @@ interface IStoredLayout { // TODO: [Deferred] Maximizing (fullscreen) widgets by default. } +interface IWidgetLayouts { + [widgetId: string]: IStoredLayout; +} + interface ILayoutStateEvent { // TODO: [Deferred] Forced layout (fixed with no changes) // The widget layouts. - widgets: { - [widgetId: string]: IStoredLayout; - }; + widgets: IWidgetLayouts; } interface ILayoutSettings extends ILayoutStateEvent { @@ -79,8 +81,11 @@ interface ILayoutSettings extends ILayoutStateEvent { // Dev note: "Pinned" widgets are ones in the top container. const MAX_PINNED = 3; -const MIN_WIDGET_WIDTH_PCT = 10; // Don't make anything smaller than 10% width -const MIN_WIDGET_HEIGHT_PCT = 20; +// These two are whole percentages and don't really mean anything. Later values will decide +// minimum, but these help determine proportions during our calculations here. In fact, these +// values should be *smaller* than the actual minimums imposed by later components. +const MIN_WIDGET_WIDTH_PCT = 10; // 10% +const MIN_WIDGET_HEIGHT_PCT = 2; // 2% export class WidgetLayoutStore extends ReadyWatchingStore { private static internalInstance: WidgetLayoutStore; @@ -230,7 +235,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { // Determine width distribution and height of the top container now (the only relevant one) const widths: number[] = []; - let maxHeight = 0; + let maxHeight = null; // null == default let doAutobalance = true; for (let i = 0; i < topWidgets.length; i++) { const widget = topWidgets[i]; @@ -246,9 +251,11 @@ export class WidgetLayoutStore extends ReadyWatchingStore { widths.push(100); // we'll figure this out later } - const defRoomHeight = defaultNumber(widgetLayout?.height, MIN_WIDGET_HEIGHT_PCT); - const h = defaultNumber(userWidgetLayout?.height, defRoomHeight); - maxHeight = Math.max(maxHeight, clamp(h, MIN_WIDGET_HEIGHT_PCT, 100)); + if (widgetLayout?.height || userWidgetLayout?.height) { + const defRoomHeight = defaultNumber(widgetLayout?.height, MIN_WIDGET_HEIGHT_PCT); + const h = defaultNumber(userWidgetLayout?.height, defRoomHeight); + maxHeight = Math.max(maxHeight, clamp(h, MIN_WIDGET_HEIGHT_PCT, 100)); + } } let remainingWidth = 100; for (const width of widths) { @@ -330,12 +337,35 @@ export class WidgetLayoutStore extends ReadyWatchingStore { localLayout[w.id] = { width: numbers[i], index: i, + height: this.byRoom[room.roomId]?.[container]?.height || MIN_WIDGET_HEIGHT_PCT, }; }); + this.updateUserLayout(room, localLayout); + } + + public getContainerHeight(room: Room, container: Container): number { + return this.byRoom[room.roomId]?.[container]?.height; // let the default get returned if needed + } + + public setContainerHeight(room: Room, container: Container, height: number) { + const widgets = this.getContainerWidgets(room, container); + const widths = this.byRoom[room.roomId]?.[container]?.distributions; + const localLayout = {}; + widgets.forEach((w, i) => { + localLayout[w.id] = { + width: widths[i], + index: i, + height: height, + }; + }); + this.updateUserLayout(room, localLayout); + } + + private updateUserLayout(room: Room, newLayout: IWidgetLayouts) { const layoutEv = room.currentState.getStateEvents(WIDGET_LAYOUT_EVENT_TYPE, ""); SettingsStore.setValue("Widgets.layout", room.roomId, SettingLevel.ROOM_ACCOUNT, { overrides: layoutEv?.getId(), - widgets: localLayout, + widgets: newLayout, }); } } diff --git a/src/utils/numbers.ts b/src/utils/numbers.ts index e26db0d5aa..c8b9e7248f 100644 --- a/src/utils/numbers.ts +++ b/src/utils/numbers.ts @@ -32,3 +32,11 @@ export function clamp(i: number, min: number, max: number): number { export function sum(...i: number[]): number { return [...i].reduce((p, c) => c + p, 0); } + +export function percentageWithin(pct: number, min: number, max: number): number { + return (pct * (max - min)) + min; +} + +export function percentageOf(val: number, min: number, max: number): number { + return (val - min) / max; +} From 5b5c338200f0666ebf50bb9d644001b3e8a0fdf3 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 19:31:11 -0700 Subject: [PATCH 075/275] Render layout changes in the timeline --- src/TextForEvent.js | 7 +++++++ src/components/views/rooms/EventTile.js | 2 ++ src/i18n/strings/en_EN.json | 1 + 3 files changed, 10 insertions(+) diff --git a/src/TextForEvent.js b/src/TextForEvent.js index 56e9abc0f2..3afe41d216 100644 --- a/src/TextForEvent.js +++ b/src/TextForEvent.js @@ -19,6 +19,7 @@ import * as Roles from './Roles'; import {isValid3pidInvite} from "./RoomInvite"; import SettingsStore from "./settings/SettingsStore"; import {ALL_RULE_TYPES, ROOM_RULE_TYPES, SERVER_RULE_TYPES, USER_RULE_TYPES} from "./mjolnir/BanList"; +import {WIDGET_LAYOUT_EVENT_TYPE} from "./stores/widgets/WidgetLayoutStore"; function textForMemberEvent(ev) { // XXX: SYJS-16 "sender is sometimes null for join messages" @@ -477,6 +478,11 @@ function textForWidgetEvent(event) { } } +function textForWidgetLayoutEvent(event) { + const senderName = event.sender?.name || event.getSender(); + return _t("%(senderName)s has updated the widget layout", {senderName}); +} + function textForMjolnirEvent(event) { const senderName = event.getSender(); const {entity: prevEntity} = event.getPrevContent(); @@ -583,6 +589,7 @@ const stateHandlers = { // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 'im.vector.modular.widgets': textForWidgetEvent, + [WIDGET_LAYOUT_EVENT_TYPE]: textForWidgetLayoutEvent, }; // Add all the Mjolnir stuff to the renderer diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js index 11277daa57..4df74f77ce 100644 --- a/src/components/views/rooms/EventTile.js +++ b/src/components/views/rooms/EventTile.js @@ -37,6 +37,7 @@ import {E2E_STATE} from "./E2EIcon"; import {toRem} from "../../../utils/units"; import {WidgetType} from "../../../widgets/WidgetType"; import RoomAvatar from "../avatars/RoomAvatar"; +import {WIDGET_LAYOUT_EVENT_TYPE} from "../../../stores/widgets/WidgetLayoutStore"; const eventTileTypes = { 'm.room.message': 'messages.MessageEvent', @@ -65,6 +66,7 @@ const stateEventTileTypes = { 'm.room.server_acl': 'messages.TextualEvent', // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111) 'im.vector.modular.widgets': 'messages.TextualEvent', + [WIDGET_LAYOUT_EVENT_TYPE]: 'messages.TextualEvent', 'm.room.tombstone': 'messages.TextualEvent', 'm.room.join_rules': 'messages.TextualEvent', 'm.room.guest_access': 'messages.TextualEvent', diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 274bd247e2..2dbb6610f5 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -548,6 +548,7 @@ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", + "%(senderName)s has updated the widget layout": "%(senderName)s has updated the widget layout", "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s removed the rule banning users matching %(glob)s", "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s removed the rule banning rooms matching %(glob)s", "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s removed the rule banning servers matching %(glob)s", From 1768d6ea5f9025c382be0ac929eef0cece878022 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 20:26:47 -0700 Subject: [PATCH 076/275] Move all widget pinning logic to the WidgetLayoutStore --- src/components/structures/RoomView.tsx | 5 +- .../views/context_menus/WidgetContextMenu.tsx | 11 +- .../views/messages/MJitsiWidgetEvent.tsx | 7 +- .../views/right_panel/RoomSummaryCard.tsx | 12 +- .../views/right_panel/WidgetCard.tsx | 20 +- src/stores/WidgetStore.ts | 180 +----------------- src/stores/widgets/WidgetLayoutStore.ts | 83 +++++++- 7 files changed, 116 insertions(+), 202 deletions(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index 0ee847fbc9..027c6b3cc3 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -78,6 +78,7 @@ import {UPDATE_EVENT} from "../../stores/AsyncStore"; import Notifier from "../../Notifier"; import {showToast as showNotificationsToast} from "../../toasts/DesktopNotificationsToast"; import { RoomNotificationStateStore } from "../../stores/notifications/RoomNotificationStateStore"; +import { Container, WidgetLayoutStore } from "../../stores/widgets/WidgetLayoutStore"; const DEBUG = false; let debuglog = function(msg: string) {}; @@ -280,8 +281,8 @@ export default class RoomView extends React.Component { private checkWidgets = (room) => { this.setState({ - hasPinnedWidgets: WidgetStore.instance.getPinnedApps(room.roomId).length > 0, - }) + hasPinnedWidgets: WidgetLayoutStore.instance.getContainerWidgets(room, Container.Top).length > 0, + }); }; private onReadReceiptsChange = () => { diff --git a/src/components/views/context_menus/WidgetContextMenu.tsx b/src/components/views/context_menus/WidgetContextMenu.tsx index 4662c74d78..c1af86eae6 100644 --- a/src/components/views/context_menus/WidgetContextMenu.tsx +++ b/src/components/views/context_menus/WidgetContextMenu.tsx @@ -20,7 +20,7 @@ import {MatrixCapabilities} from "matrix-widget-api"; import IconizedContextMenu, {IconizedContextMenuOption, IconizedContextMenuOptionList} from "./IconizedContextMenu"; import {ChevronFace} from "../../structures/ContextMenu"; import {_t} from "../../../languageHandler"; -import WidgetStore, {IApp} from "../../../stores/WidgetStore"; +import {IApp} from "../../../stores/WidgetStore"; import WidgetUtils from "../../../utils/WidgetUtils"; import {WidgetMessagingStore} from "../../../stores/widgets/WidgetMessagingStore"; import RoomContext from "../../../contexts/RoomContext"; @@ -30,6 +30,7 @@ import Modal from "../../../Modal"; import QuestionDialog from "../dialogs/QuestionDialog"; import {WidgetType} from "../../../widgets/WidgetType"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; +import { Container, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; interface IProps extends React.ComponentProps { app: IApp; @@ -56,7 +57,7 @@ const WidgetContextMenu: React.FC = ({ let unpinButton; if (showUnpin) { const onUnpinClick = () => { - WidgetStore.instance.unpinWidget(room.roomId, app.id); + WidgetLayoutStore.instance.moveToContainer(room, app, Container.Right); onFinished(); }; @@ -137,13 +138,13 @@ const WidgetContextMenu: React.FC = ({ revokeButton = ; } - const pinnedWidgets = WidgetStore.instance.getPinnedApps(roomId); + const pinnedWidgets = WidgetLayoutStore.instance.getContainerWidgets(room, Container.Top); const widgetIndex = pinnedWidgets.findIndex(widget => widget.id === app.id); let moveLeftButton; if (showUnpin && widgetIndex > 0) { const onClick = () => { - WidgetStore.instance.movePinnedWidget(roomId, app.id, -1); + WidgetLayoutStore.instance.moveWithinContainer(room, Container.Top, app, -1); onFinished(); }; @@ -153,7 +154,7 @@ const WidgetContextMenu: React.FC = ({ let moveRightButton; if (showUnpin && widgetIndex < pinnedWidgets.length - 1) { const onClick = () => { - WidgetStore.instance.movePinnedWidget(roomId, app.id, 1); + WidgetLayoutStore.instance.moveWithinContainer(room, Container.Top, app, 1); onFinished(); }; diff --git a/src/components/views/messages/MJitsiWidgetEvent.tsx b/src/components/views/messages/MJitsiWidgetEvent.tsx index b87efd472a..3ff11f7b6f 100644 --- a/src/components/views/messages/MJitsiWidgetEvent.tsx +++ b/src/components/views/messages/MJitsiWidgetEvent.tsx @@ -19,6 +19,8 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { _t } from "../../../languageHandler"; import WidgetStore from "../../../stores/WidgetStore"; import EventTileBubble from "./EventTileBubble"; +import { MatrixClientPeg } from "../../../MatrixClientPeg"; +import { Container, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; interface IProps { mxEvent: MatrixEvent; @@ -33,9 +35,12 @@ export default class MJitsiWidgetEvent extends React.PureComponent { const url = this.props.mxEvent.getContent()['url']; const prevUrl = this.props.mxEvent.getPrevContent()['url']; const senderName = this.props.mxEvent.sender?.name || this.props.mxEvent.getSender(); + const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); + const widgetId = this.props.mxEvent.getStateKey(); + const widget = WidgetStore.instance.getRoom(room.roomId).widgets.find(w => w.id === widgetId); let joinCopy = _t('Join the conference at the top of this room'); - if (!WidgetStore.instance.isPinned(this.props.mxEvent.getRoomId(), this.props.mxEvent.getStateKey())) { + if (widget && WidgetLayoutStore.instance.isInContainer(room, widget, Container.Right)) { joinCopy = _t('Join the conference from the room information card on the right'); } diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index ebc07e76b8..f405cde11d 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -37,13 +37,14 @@ import SettingsStore from "../../../settings/SettingsStore"; import TextWithTooltip from "../elements/TextWithTooltip"; import WidgetAvatar from "../avatars/WidgetAvatar"; import AccessibleTooltipButton from "../elements/AccessibleTooltipButton"; -import WidgetStore, {IApp, MAX_PINNED} from "../../../stores/WidgetStore"; +import WidgetStore, {IApp} from "../../../stores/WidgetStore"; import { E2EStatus } from "../../../utils/ShieldUtils"; import RoomContext from "../../../contexts/RoomContext"; import {UIFeature} from "../../../settings/UIFeature"; import {ChevronFace, ContextMenuTooltipButton, useContextMenu} from "../../structures/ContextMenu"; import WidgetContextMenu from "../context_menus/WidgetContextMenu"; import {useRoomMemberCount} from "../../../hooks/useRoomMembers"; +import { Container, MAX_PINNED, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; interface IProps { room: Room; @@ -78,6 +79,7 @@ export const useWidgets = (room: Room) => { useEffect(updateApps, [room]); useEventEmitter(WidgetStore.instance, room.roomId, updateApps); + useEventEmitter(WidgetLayoutStore.instance, WidgetLayoutStore.emissionForRoom(room), updateApps); return apps; }; @@ -102,10 +104,10 @@ const AppRow: React.FC = ({ app, room }) => { }); }; - const isPinned = WidgetStore.instance.isPinned(room.roomId, app.id); + const isPinned = WidgetLayoutStore.instance.isInContainer(room, app, Container.Top); const togglePin = isPinned - ? () => { WidgetStore.instance.unpinWidget(room.roomId, app.id); } - : () => { WidgetStore.instance.pinWidget(room.roomId, app.id); }; + ? () => { WidgetLayoutStore.instance.moveToContainer(room, app, Container.Right); } + : () => { WidgetLayoutStore.instance.moveToContainer(room, app, Container.Top); }; const [menuDisplayed, handle, openMenu, closeMenu] = useContextMenu(); let contextMenu; @@ -120,7 +122,7 @@ const AppRow: React.FC = ({ app, room }) => { />; } - const cannotPin = !isPinned && !WidgetStore.instance.canPin(room.roomId, app.id); + const cannotPin = !isPinned && !WidgetLayoutStore.instance.canAddToContainer(room, Container.Top); let pinTitle: string; if (cannotPin) { diff --git a/src/components/views/right_panel/WidgetCard.tsx b/src/components/views/right_panel/WidgetCard.tsx index 593bd0dde7..56e522e206 100644 --- a/src/components/views/right_panel/WidgetCard.tsx +++ b/src/components/views/right_panel/WidgetCard.tsx @@ -14,22 +14,22 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, {useContext, useEffect} from "react"; -import {Room} from "matrix-js-sdk/src/models/room"; +import React, { useContext, useEffect } from "react"; +import { Room } from "matrix-js-sdk/src/models/room"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import BaseCard from "./BaseCard"; import WidgetUtils from "../../../utils/WidgetUtils"; import AppTile from "../elements/AppTile"; -import {_t} from "../../../languageHandler"; -import {useWidgets} from "./RoomSummaryCard"; -import {RightPanelPhases} from "../../../stores/RightPanelStorePhases"; +import { _t } from "../../../languageHandler"; +import { useWidgets } from "./RoomSummaryCard"; +import { RightPanelPhases } from "../../../stores/RightPanelStorePhases"; import defaultDispatcher from "../../../dispatcher/dispatcher"; -import {SetRightPanelPhasePayload} from "../../../dispatcher/payloads/SetRightPanelPhasePayload"; -import {Action} from "../../../dispatcher/actions"; -import WidgetStore from "../../../stores/WidgetStore"; -import {ChevronFace, ContextMenuButton, useContextMenu} from "../../structures/ContextMenu"; +import { SetRightPanelPhasePayload } from "../../../dispatcher/payloads/SetRightPanelPhasePayload"; +import { Action } from "../../../dispatcher/actions"; +import { ChevronFace, ContextMenuButton, useContextMenu } from "../../structures/ContextMenu"; import WidgetContextMenu from "../context_menus/WidgetContextMenu"; +import { Container, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; interface IProps { room: Room; @@ -42,7 +42,7 @@ const WidgetCard: React.FC = ({ room, widgetId, onClose }) => { const apps = useWidgets(room); const app = apps.find(a => a.id === widgetId); - const isPinned = app && WidgetStore.instance.isPinned(room.roomId, app.id); + const isPinned = app && WidgetLayoutStore.instance.isInContainer(room, app, Container.Top); const [menuDisplayed, handle, openMenu, closeMenu] = useContextMenu(); diff --git a/src/stores/WidgetStore.ts b/src/stores/WidgetStore.ts index c9cf0a1c70..2f06dfcb80 100644 --- a/src/stores/WidgetStore.ts +++ b/src/stores/WidgetStore.ts @@ -21,16 +21,12 @@ import { IWidget } from "matrix-widget-api"; import { ActionPayload } from "../dispatcher/payloads"; import { AsyncStoreWithClient } from "./AsyncStoreWithClient"; import defaultDispatcher from "../dispatcher/dispatcher"; -import SettingsStore from "../settings/SettingsStore"; import WidgetEchoStore from "../stores/WidgetEchoStore"; -import RoomViewStore from "../stores/RoomViewStore"; import ActiveWidgetStore from "../stores/ActiveWidgetStore"; import WidgetUtils from "../utils/WidgetUtils"; -import {SettingLevel} from "../settings/SettingLevel"; import {WidgetType} from "../widgets/WidgetType"; import {UPDATE_EVENT} from "./AsyncStore"; import { MatrixClientPeg } from "../MatrixClientPeg"; -import { arrayDiff, arrayHasDiff, arrayUnion } from "../utils/arrays"; interface IState {} @@ -41,15 +37,10 @@ export interface IApp extends IWidget { avatar_url: string; // MSC2765 https://github.com/matrix-org/matrix-doc/pull/2765 } -type PinnedWidgets = Record; - interface IRoomWidgets { widgets: IApp[]; - pinned: PinnedWidgets; } -export const MAX_PINNED = 3; - function widgetUid(app: IApp): string { return `${app.roomId ?? MatrixClientPeg.get().getUserId()}::${app.id}`; } @@ -65,7 +56,6 @@ export default class WidgetStore extends AsyncStoreWithClient { private constructor() { super(defaultDispatcher, {}); - SettingsStore.watchSetting("Widgets.pinned", null, this.onPinnedWidgetsChange); WidgetEchoStore.on("update", this.onWidgetEchoStoreUpdate); } @@ -76,7 +66,6 @@ export default class WidgetStore extends AsyncStoreWithClient { private initRoom(roomId: string) { if (!this.roomMap.has(roomId)) { this.roomMap.set(roomId, { - pinned: {}, // ordered widgets: [], }); } @@ -85,16 +74,6 @@ export default class WidgetStore extends AsyncStoreWithClient { protected async onReady(): Promise { this.matrixClient.on("RoomState.events", this.onRoomStateEvents); this.matrixClient.getRooms().forEach((room: Room) => { - const pinned = SettingsStore.getValue("Widgets.pinned", room.roomId); - - if (pinned || WidgetUtils.getRoomWidgets(room).length) { - this.initRoom(room.roomId); - } - - if (pinned) { - this.getRoom(room.roomId).pinned = pinned; - } - this.loadRoomWidgets(room); }); this.emit(UPDATE_EVENT); @@ -128,7 +107,7 @@ export default class WidgetStore extends AsyncStoreWithClient { private loadRoomWidgets(room: Room) { if (!room) return; - const roomInfo = this.roomMap.get(room.roomId); + const roomInfo = this.roomMap.get(room.roomId) || {}; roomInfo.widgets = []; // first clean out old widgets from the map which originate from this room @@ -138,6 +117,7 @@ export default class WidgetStore extends AsyncStoreWithClient { this.widgetMap.delete(widgetUid(app)); }); + let edited = false; this.generateApps(room).forEach(app => { // Sanity check for https://github.com/vector-im/element-web/issues/15705 const existingApp = this.widgetMap.get(widgetUid(app)); @@ -150,12 +130,16 @@ export default class WidgetStore extends AsyncStoreWithClient { this.widgetMap.set(widgetUid(app), app); roomInfo.widgets.push(app); + edited = true; }); + if (edited && !this.roomMap.has(room.roomId)) { + this.roomMap.set(room.roomId, roomInfo); + } this.emit(room.roomId); } private onRoomStateEvents = (ev: MatrixEvent) => { - if (ev.getType() !== "im.vector.modular.widgets") return; + if (ev.getType() !== "im.vector.modular.widgets") return; // TODO: Support m.widget too const roomId = ev.getRoomId(); this.initRoom(roomId); this.loadRoomWidgets(this.matrixClient.getRoom(roomId)); @@ -166,156 +150,6 @@ export default class WidgetStore extends AsyncStoreWithClient { return this.roomMap.get(roomId); }; - private onPinnedWidgetsChange = (settingName: string, roomId: string) => { - this.initRoom(roomId); - - const pinned: PinnedWidgets = SettingsStore.getValue(settingName, roomId); - - // Sanity check for https://github.com/vector-im/element-web/issues/15705 - const roomInfo = this.getRoom(roomId); - const remappedPinned: PinnedWidgets = {}; - for (const widgetId of Object.keys(pinned)) { - const isPinned = pinned[widgetId]; - if (!roomInfo.widgets?.some(w => w.id === widgetId)) { - console.warn(`Skipping pinned widget update for ${widgetId} in ${roomId} -- wrong room`); - } else { - remappedPinned[widgetId] = isPinned; - } - } - roomInfo.pinned = remappedPinned; - - this.emit(roomId); - this.emit(UPDATE_EVENT); - }; - - public isPinned(roomId: string, widgetId: string) { - return !!this.getPinnedApps(roomId).find(w => w.id === widgetId); - } - - // dev note: we don't need the widgetId on this function, but the contract makes more sense - // when we require it. - public canPin(roomId: string, widgetId: string) { - return this.getPinnedApps(roomId).length < MAX_PINNED; - } - - public pinWidget(roomId: string, widgetId: string) { - const roomInfo = this.getRoom(roomId); - if (!roomInfo) return; - - // When pinning, first confirm all the widgets (Jitsi) which were autopinned so that the order is correct - const autoPinned = this.getPinnedApps(roomId).filter(app => !roomInfo.pinned[app.id]); - autoPinned.forEach(app => { - this.setPinned(roomId, app.id, true); - }); - - this.setPinned(roomId, widgetId, true); - - // Show the apps drawer upon the user pinning a widget - if (RoomViewStore.getRoomId() === roomId) { - defaultDispatcher.dispatch({ - action: "appsDrawer", - show: true, - }); - } - } - - public unpinWidget(roomId: string, widgetId: string) { - this.setPinned(roomId, widgetId, false); - } - - private setPinned(roomId: string, widgetId: string, value: boolean) { - const roomInfo = this.getRoom(roomId); - if (!roomInfo) return; - if (roomInfo.pinned[widgetId] === false && value) { - // delete this before write to maintain the correct object insertion order - delete roomInfo.pinned[widgetId]; - } - roomInfo.pinned[widgetId] = value; - - // Clean up the pinned record - Object.keys(roomInfo).forEach(wId => { - if (!roomInfo.widgets.some(w => w.id === wId) || !roomInfo.pinned[wId]) { - delete roomInfo.pinned[wId]; - } - }); - - SettingsStore.setValue("Widgets.pinned", roomId, SettingLevel.ROOM_ACCOUNT, roomInfo.pinned); - this.emit(roomId); - this.emit(UPDATE_EVENT); - } - - public movePinnedWidget(roomId: string, widgetId: string, delta: 1 | -1) { - // TODO simplify this by changing the storage medium of pinned to an array once the Jitsi default-on goes away - const roomInfo = this.getRoom(roomId); - if (!roomInfo || roomInfo.pinned[widgetId] === false) return; - - const pinnedApps = this.getPinnedApps(roomId).map(app => app.id); - const i = pinnedApps.findIndex(id => id === widgetId); - - if (delta > 0) { - pinnedApps.splice(i, 2, pinnedApps[i + 1], pinnedApps[i]); - } else { - pinnedApps.splice(i - 1, 2, pinnedApps[i], pinnedApps[i - 1]); - } - - const reorderedPinned: IRoomWidgets["pinned"] = {}; - pinnedApps.forEach(id => { - reorderedPinned[id] = true; - }); - Object.keys(roomInfo.pinned).forEach(id => { - if (reorderedPinned[id] === undefined) { - reorderedPinned[id] = roomInfo.pinned[id]; - } - }); - roomInfo.pinned = reorderedPinned; - - SettingsStore.setValue("Widgets.pinned", roomId, SettingLevel.ROOM_ACCOUNT, roomInfo.pinned); - this.emit(roomId); - this.emit(UPDATE_EVENT); - } - - public getPinnedApps(roomId: string): IApp[] { - // returns the apps in the order they were pinned with, up to the maximum - const roomInfo = this.getRoom(roomId); - if (!roomInfo) return []; - - // Show Jitsi widgets even if the user already had the maximum pinned, instead of their latest pinned, - // except if the user already explicitly unpinned the Jitsi widget - const priorityWidget = roomInfo.widgets.find(widget => { - return roomInfo.pinned[widget.id] === undefined && WidgetType.JITSI.matches(widget.type); - }); - - const order = Object.keys(roomInfo.pinned).filter(k => roomInfo.pinned[k]); - const apps = order - .map(wId => Array.from(this.widgetMap.values()) - .find(w2 => w2.roomId === roomId && w2.id === wId)) - .filter(Boolean) - .slice(0, priorityWidget ? MAX_PINNED - 1 : MAX_PINNED); - if (priorityWidget) { - apps.push(priorityWidget); - } - - // Sanity check for https://github.com/vector-im/element-web/issues/15705 - // We union the app IDs the above generated with the roomInfo's known widgets to - // get a list of IDs which both exist. We then diff that against the generated app - // IDs above to ensure that all of the app IDs are captured by the union with the - // room - if we grabbed a widget that wasn't part of the roomInfo's list, it wouldn't - // be in the union and thus result in a diff. - const appIds = apps.map(a => widgetUid(a)); - const roomAppIds = roomInfo.widgets.map(a => widgetUid(a)); - const roomAppIdsUnion = arrayUnion(appIds, roomAppIds); - const missingSomeApps = arrayHasDiff(roomAppIdsUnion, appIds); - if (missingSomeApps) { - const diff = arrayDiff(roomAppIdsUnion, appIds); - console.warn( - `${roomId} appears to have a conflict for which widgets belong to it. ` + - `Widget UIDs are: `, [...diff.added, ...diff.removed], - ); - } - - return apps; - } - public getApps(roomId: string): IApp[] { const roomInfo = this.getRoom(roomId); return roomInfo?.widgets || []; diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 12051d35bc..4065dd2469 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -23,6 +23,8 @@ import defaultDispatcher from "../../dispatcher/dispatcher"; import { ReadyWatchingStore } from "../ReadyWatchingStore"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { SettingLevel } from "../../settings/SettingLevel"; +import { arrayFastClone } from "../../utils/arrays"; +import { UPDATE_EVENT } from "../AsyncStore"; export const WIDGET_LAYOUT_EVENT_TYPE = "io.element.widgets.layout"; @@ -79,7 +81,7 @@ interface ILayoutSettings extends ILayoutStateEvent { } // Dev note: "Pinned" widgets are ones in the top container. -const MAX_PINNED = 3; +export const MAX_PINNED = 3; // These two are whole percentages and don't really mean anything. Later values will decide // minimum, but these help determine proportions during our calculations here. In fact, these @@ -126,19 +128,19 @@ export class WidgetLayoutStore extends ReadyWatchingStore { this.matrixClient.on("RoomState.events", this.updateRoomFromState); SettingsStore.watchSetting("Widgets.pinned", null, this.updateFromSettings); SettingsStore.watchSetting("Widgets.layout", null, this.updateFromSettings); - // TODO: Register WidgetStore listener + WidgetStore.instance.on(UPDATE_EVENT, this.updateAllRooms); } protected async onNotReady(): Promise { this.byRoom = {}; } - private updateAllRooms() { + private updateAllRooms = () => { this.byRoom = {}; for (const room of this.matrixClient.getVisibleRooms()) { this.recalculateRoom(room); } - } + }; private updateRoomFromState = (ev: MatrixEvent) => { if (ev.getType() !== WIDGET_LAYOUT_EVENT_TYPE) return; @@ -222,8 +224,8 @@ export class WidgetLayoutStore extends ReadyWatchingStore { const defaultA = WidgetType.JITSI.matches(a.type) ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER; const defaultB = WidgetType.JITSI.matches(b.type) ? Number.MIN_SAFE_INTEGER : Number.MAX_SAFE_INTEGER; - const orderA = defaultNumber(userLayoutA, defaultNumber(layoutA?.index, defaultA)); - const orderB = defaultNumber(userLayoutB, defaultNumber(layoutB?.index, defaultB)); + const orderA = defaultNumber(userLayoutA?.index, defaultNumber(layoutA?.index, defaultA)); + const orderB = defaultNumber(userLayoutB?.index, defaultNumber(layoutB?.index, defaultB)); if (orderA === orderB) { // We just need a tiebreak @@ -308,6 +310,14 @@ export class WidgetLayoutStore extends ReadyWatchingStore { return this.byRoom[room.roomId]?.[container]?.ordered || []; } + public isInContainer(room: Room, widget: IApp, container: Container): boolean { + return this.getContainerWidgets(room, container).some(w => w.id === widget.id); + } + + public canAddToContainer(room: Room, container: Container): boolean { + return this.getContainerWidgets(room, container).length < MAX_PINNED; + } + public getResizerDistributions(room: Room, container: Container): string[] { // yes, string. let distributions = this.byRoom[room.roomId]?.[container]?.distributions; if (!distributions || distributions.length < 2) return []; @@ -335,6 +345,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { const localLayout = {}; widgets.forEach((w, i) => { localLayout[w.id] = { + container: container, width: numbers[i], index: i, height: this.byRoom[room.roomId]?.[container]?.height || MIN_WIDGET_HEIGHT_PCT, @@ -353,6 +364,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { const localLayout = {}; widgets.forEach((w, i) => { localLayout[w.id] = { + container: container, width: widths[i], index: i, height: height, @@ -361,7 +373,66 @@ export class WidgetLayoutStore extends ReadyWatchingStore { this.updateUserLayout(room, localLayout); } + public moveWithinContainer(room: Room, container: Container, widget: IApp, delta: number) { + const widgets = arrayFastClone(this.getContainerWidgets(room, container)); + const currentIdx = widgets.findIndex(w => w.id === widget.id); + if (currentIdx < 0) return; // no change needed + + widgets.splice(currentIdx, 1); // remove existing widget + const newIdx = clamp(currentIdx + delta, 0, widgets.length); + widgets.splice(newIdx, 0, widget); + + const widths = this.byRoom[room.roomId]?.[container]?.distributions; + const height = this.byRoom[room.roomId]?.[container]?.height; + const localLayout = {}; + widgets.forEach((w, i) => { + localLayout[w.id] = { + container: container, + width: widths[i], + index: i, + height: height, + }; + }); + this.updateUserLayout(room, localLayout); + } + + public moveToContainer(room: Room, widget: IApp, toContainer: Container) { + const allWidgets = this.getAllWidgets(room); + if (!allWidgets.some(([w])=> w.id === widget.id)) return; // invalid + this.updateUserLayout(room, {[widget.id]:{container: toContainer}}); + } + + private getAllWidgets(room: Room): [IApp, Container][] { + const containers = this.byRoom[room.roomId]; + if (!containers) return []; + + const ret = []; + for (const container of Object.keys(containers)) { + const widgets = containers[container].ordered; + for (const widget of widgets) { + ret.push([widget, container]); + } + } + return ret; + } + private updateUserLayout(room: Room, newLayout: IWidgetLayouts) { + // Polyfill any missing widgets + const allWidgets = this.getAllWidgets(room); + for (const [widget, container] of allWidgets) { + const containerWidgets = this.getContainerWidgets(room, container); + const idx = containerWidgets.findIndex(w => w.id === widget.id); + const widths = this.byRoom[room.roomId]?.[container]?.distributions; + if (!newLayout[widget.id]) { + newLayout[widget.id] = { + container: container, + index: idx, + height: this.byRoom[room.roomId]?.[container]?.height, + width: widths?.[idx], + }; + } + } + const layoutEv = room.currentState.getStateEvents(WIDGET_LAYOUT_EVENT_TYPE, ""); SettingsStore.setValue("Widgets.layout", room.roomId, SettingLevel.ROOM_ACCOUNT, { overrides: layoutEv?.getId(), From 7ff76b250010b6c71a456895452a0ad1fd31d568 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 20:28:09 -0700 Subject: [PATCH 077/275] Don't forget to run cleanup --- src/stores/widgets/WidgetLayoutStore.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 4065dd2469..94d77df78b 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -103,6 +103,9 @@ export class WidgetLayoutStore extends ReadyWatchingStore { }; } = {}; + private pinnedRef: string; + private layoutRef: string; + private constructor() { super(defaultDispatcher); } @@ -126,13 +129,17 @@ export class WidgetLayoutStore extends ReadyWatchingStore { this.updateAllRooms(); this.matrixClient.on("RoomState.events", this.updateRoomFromState); - SettingsStore.watchSetting("Widgets.pinned", null, this.updateFromSettings); - SettingsStore.watchSetting("Widgets.layout", null, this.updateFromSettings); + this.pinnedRef = SettingsStore.watchSetting("Widgets.pinned", null, this.updateFromSettings); + this.layoutRef = SettingsStore.watchSetting("Widgets.layout", null, this.updateFromSettings); WidgetStore.instance.on(UPDATE_EVENT, this.updateAllRooms); } protected async onNotReady(): Promise { this.byRoom = {}; + + SettingsStore.unwatchSetting(this.pinnedRef); + SettingsStore.unwatchSetting(this.layoutRef); + WidgetStore.instance.off(UPDATE_EVENT, this.updateAllRooms); } private updateAllRooms = () => { From 5c393cc2d0a3f40886132784f92264902d22715c Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 20:29:51 -0700 Subject: [PATCH 078/275] Add in some local echo support to make changes appear faster --- src/stores/widgets/WidgetLayoutStore.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 94d77df78b..7d695578cd 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -444,7 +444,8 @@ export class WidgetLayoutStore extends ReadyWatchingStore { SettingsStore.setValue("Widgets.layout", room.roomId, SettingLevel.ROOM_ACCOUNT, { overrides: layoutEv?.getId(), widgets: newLayout, - }); + }).catch(() => this.recalculateRoom(room)); + this.recalculateRoom(room); // call to try local echo on changes (the catch above undoes any errors) } } From 04d1f5dd28948be4bcca1b14e30bb5b6a5d04baa Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 20:42:21 -0700 Subject: [PATCH 079/275] Implement a "Copy my layout to the room" button --- .../views/right_panel/RoomSummaryCard.tsx | 11 +++++++- src/i18n/strings/en_EN.json | 1 + src/stores/widgets/WidgetLayoutStore.ts | 26 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index f405cde11d..00ee1945d8 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -186,9 +186,18 @@ const AppsSection: React.FC = ({ room }) => { } }; + let copyLayoutBtn = null; + if (apps.length > 0 && WidgetLayoutStore.instance.canCopyLayoutToRoom(room)) { + copyLayoutBtn = ( + WidgetLayoutStore.instance.copyLayoutToRoom(room)}> + { _t("Set my room layout for everyone") } + + ); + } + return { apps.map(app => ) } - + { copyLayoutBtn } { apps.length > 0 ? _t("Edit widgets, bridges & bots") : _t("Add widgets, bridges & bots") } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2dbb6610f5..356de3730a 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1636,6 +1636,7 @@ "Unpin": "Unpin", "Unpin a widget to view it in this panel": "Unpin a widget to view it in this panel", "Options": "Options", + "Set my room layout for everyone": "Set my room layout for everyone", "Widgets": "Widgets", "Edit widgets, bridges & bots": "Edit widgets, bridges & bots", "Add widgets, bridges & bots": "Add widgets, bridges & bots", diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 7d695578cd..b9350328f6 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -409,6 +409,32 @@ export class WidgetLayoutStore extends ReadyWatchingStore { this.updateUserLayout(room, {[widget.id]:{container: toContainer}}); } + public canCopyLayoutToRoom(room: Room): boolean { + if (!this.matrixClient) return false; // not ready yet + return room.currentState.maySendStateEvent(WIDGET_LAYOUT_EVENT_TYPE, this.matrixClient.getUserId()); + } + + public copyLayoutToRoom(room: Room) { + const allWidgets = this.getAllWidgets(room); + const evContent: ILayoutStateEvent = {widgets: {}}; + for (const [widget, container] of allWidgets) { + evContent.widgets[widget.id] = {container}; + if (container === Container.Top) { + const containerWidgets = this.getContainerWidgets(room, container); + const idx = containerWidgets.findIndex(w => w.id === widget.id); + const widths = this.byRoom[room.roomId]?.[container]?.distributions; + const height = this.byRoom[room.roomId]?.[container]?.height; + evContent.widgets[widget.id] = { + ...evContent.widgets[widget.id], + height: height ? Math.round(height) : null, + width: widths[idx] ? Math.round(widths[idx]) : null, + index: idx, + }; + } + } + this.matrixClient.sendStateEvent(room.roomId, WIDGET_LAYOUT_EVENT_TYPE, evContent, ""); + } + private getAllWidgets(room: Room): [IApp, Container][] { const containers = this.byRoom[room.roomId]; if (!containers) return []; From 6227d3c183d3c589bfc9381a8e6a6a06ba2cffc2 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 20:53:15 -0700 Subject: [PATCH 080/275] Appease the linters --- src/components/views/rooms/AppsDrawer.js | 2 +- src/hooks/useSettings.ts | 6 +++--- src/stores/AsyncStoreWithClient.ts | 4 ++-- src/stores/room-list/RoomListStore.ts | 2 +- src/stores/widgets/WidgetLayoutStore.ts | 10 ++++------ 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 5efcefc4bc..4aa9efa3fd 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -287,7 +287,7 @@ const PersistentVResizer = ({ const [height, setHeight] = useStateCallback(defaultHeight, newHeight => { newHeight = percentageOf(newHeight, minHeight, maxHeight) * 100; - WidgetLayoutStore.instance.setContainerHeight(room, Container.Top, newHeight) + WidgetLayoutStore.instance.setContainerHeight(room, Container.Top, newHeight); }); return { - const [value, setValue] = useState(SettingsStore.getValue(settingName, roomId, excludeDefault)); +export const useSettingValue = (settingName: string, roomId: string = null, excludeDefault = false) => { + const [value, setValue] = useState(SettingsStore.getValue(settingName, roomId, excludeDefault)); useEffect(() => { const ref = SettingsStore.watchSetting(settingName, roomId, () => { - setValue(SettingsStore.getValue(settingName, roomId, excludeDefault)); + setValue(SettingsStore.getValue(settingName, roomId, excludeDefault)); }); // clean-up return () => { diff --git a/src/stores/AsyncStoreWithClient.ts b/src/stores/AsyncStoreWithClient.ts index 3050555ad4..38e709d8c2 100644 --- a/src/stores/AsyncStoreWithClient.ts +++ b/src/stores/AsyncStoreWithClient.ts @@ -21,13 +21,13 @@ import { Dispatcher } from "flux"; import { ReadyWatchingStore } from "./ReadyWatchingStore"; export abstract class AsyncStoreWithClient extends AsyncStore { - private readyStore: ReadyWatchingStore; + protected readyStore: ReadyWatchingStore; protected constructor(dispatcher: Dispatcher, initialState: T = {}) { super(dispatcher, initialState); // Create an anonymous class to avoid code duplication - const asyncStore = this; + const asyncStore = this; // eslint-disable-line @typescript-eslint/no-this-alias this.readyStore = new (class extends ReadyWatchingStore { public get mxClient(): MatrixClient { return this.matrixClient; diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index b2fe630760..cc9e00d29b 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -114,7 +114,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // Public for test usage. Do not call this. public async makeReady(forcedClient?: MatrixClient) { if (forcedClient) { - super.matrixClient = forcedClient; + super.readyStore.matrixClient = forcedClient; } this.checkLoggingEnabled(); diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index b9350328f6..9742712fcf 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -155,7 +155,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { if (room) this.recalculateRoom(room); }; - private updateFromSettings = (settingName: string, roomId: string, /* and other stuff */) => { + private updateFromSettings = (settingName: string, roomId: string /* and other stuff */) => { if (roomId) { const room = this.matrixClient.getRoom(roomId); if (room) this.recalculateRoom(room); @@ -266,10 +266,6 @@ export class WidgetLayoutStore extends ReadyWatchingStore { maxHeight = Math.max(maxHeight, clamp(h, MIN_WIDGET_HEIGHT_PCT, 100)); } } - let remainingWidth = 100; - for (const width of widths) { - remainingWidth -= width; - } if (doAutobalance) { for (let i = 0; i < widths.length; i++) { widths[i] = 100 / widths.length; @@ -406,7 +402,9 @@ export class WidgetLayoutStore extends ReadyWatchingStore { public moveToContainer(room: Room, widget: IApp, toContainer: Container) { const allWidgets = this.getAllWidgets(room); if (!allWidgets.some(([w])=> w.id === widget.id)) return; // invalid - this.updateUserLayout(room, {[widget.id]:{container: toContainer}}); + this.updateUserLayout(room, { + [widget.id]: {container: toContainer}, + }); } public canCopyLayoutToRoom(room: Room): boolean { From 6d770cb4d126e13c63f8d994c0a0ae3826fbabaf Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 21:00:47 -0700 Subject: [PATCH 081/275] Appease the linter 2 --- src/stores/ReadyWatchingStore.ts | 4 ++++ src/stores/room-list/RoomListStore.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/stores/ReadyWatchingStore.ts b/src/stores/ReadyWatchingStore.ts index 9a28fe75fa..4bb577c784 100644 --- a/src/stores/ReadyWatchingStore.ts +++ b/src/stores/ReadyWatchingStore.ts @@ -42,6 +42,10 @@ export abstract class ReadyWatchingStore extends EventEmitter implements IDestro return this.matrixClient; // for external readonly access } + public useUnitTestClient(cli: MatrixClient) { + this.matrixClient = cli; + } + public destroy() { this.dispatcher.unregister(this.dispatcherRef); } diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index cc9e00d29b..febd9aad9b 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -114,7 +114,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // Public for test usage. Do not call this. public async makeReady(forcedClient?: MatrixClient) { if (forcedClient) { - super.readyStore.matrixClient = forcedClient; + super.readyStore.useUnitTestClient(forcedClient); } this.checkLoggingEnabled(); From ab51404421f9bb060962f200b0af28a0afb34e54 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Mon, 18 Jan 2021 21:07:44 -0700 Subject: [PATCH 082/275] Appease the tests? --- src/stores/room-list/RoomListStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index febd9aad9b..8c17da06fe 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -114,7 +114,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient { // Public for test usage. Do not call this. public async makeReady(forcedClient?: MatrixClient) { if (forcedClient) { - super.readyStore.useUnitTestClient(forcedClient); + this.readyStore.useUnitTestClient(forcedClient); } this.checkLoggingEnabled(); From f06aa00240d59d4d15b9cf4d2736f2058d5133bc Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 19 Jan 2021 00:22:02 -0700 Subject: [PATCH 083/275] Fix percentage calculation --- src/utils/numbers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/numbers.ts b/src/utils/numbers.ts index c8b9e7248f..6ba19d0bef 100644 --- a/src/utils/numbers.ts +++ b/src/utils/numbers.ts @@ -38,5 +38,5 @@ export function percentageWithin(pct: number, min: number, max: number): number } export function percentageOf(val: number, min: number, max: number): number { - return (val - min) / max; + return (val - min) / (max - min); } From 3eae714269b5e331596da372089b2dd98556bea1 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Tue, 19 Jan 2021 21:32:52 +1300 Subject: [PATCH 084/275] Update code_style.md - Remove invalid single quotes item - Add TypeScript section - Add item regarding React function components and hooks Signed-off-by: Clemens Zeidler --- code_style.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/code_style.md b/code_style.md index fe04d2cc3d..c90ad359b3 100644 --- a/code_style.md +++ b/code_style.md @@ -35,12 +35,6 @@ General Style - lowerCamelCase for functions and variables. - Single line ternary operators are fine. - UPPER_SNAKE_CASE for constants -- Single quotes for strings by default, for consistency with most JavaScript styles: - - ```javascript - "bad" // Bad - 'good' // Good - ``` - Use parentheses or `` ` `` instead of `\` for line continuation where ever possible - Open braces on the same line (consistent with Node): @@ -164,6 +158,14 @@ ECMAScript - Apart from that, newer ES features should be used whenever the author deems them to be appropriate. - Flow annotations are welcome and encouraged. +TypeScript +---------- +- TypeScript is preferred over the use of JavaScript +- Its desirable to convert existing JavaScript files to TypeScript. TypeScript conversions should be done in small + chunks without functional changes to ease the review process. +- Use full type definitions for function parameters and return values. +- Avoid `any` types and `any` casts + React ----- - Pull out functions in props to the class, generally as specific event handlers: @@ -201,6 +203,8 @@ React this.state = { counter: 0 }; } ``` +- Prefer class components over function components and hooks (not a strict rule though) + - Think about whether your component really needs state: are you duplicating information in component state that could be derived from the model? From 0359a977befde8850100b5ff4968b21453f56046 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 19 Jan 2021 07:19:39 -0700 Subject: [PATCH 085/275] Update docs/widget-layouts.md Co-authored-by: David Baker --- docs/widget-layouts.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/widget-layouts.md b/docs/widget-layouts.md index e49f2a2e60..215b026b0f 100644 --- a/docs/widget-layouts.md +++ b/docs/widget-layouts.md @@ -27,7 +27,7 @@ and interpret the other options differently. This is the "App Drawer" or any pinned widgets in a room. This is by far the most versatile container though does introduce potential usability issues upon members of the room (widgets take up space and -therefore less messages can be shown). +therefore fewer messages can be shown). The `index` for a widget determines which order the widgets show up in from left to right. Widgets without an `index` will show up as the rightmost widgets. Tiebreaks (same `index` or multiple defined @@ -58,4 +58,3 @@ container will be put in this container instead. Putting a widget in the right c automatically show it - it only mentions that widgets should not be in another container. The behaviour of this container may change in the future. - From a22049a67969cf1658be64193b0e6beb06dd025f Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 19 Jan 2021 14:36:21 +0000 Subject: [PATCH 086/275] Use const / let instead of var --- scripts/reskindex.js | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/scripts/reskindex.js b/scripts/reskindex.js index 9fb0e1a7c0..a57fd9cbe3 100755 --- a/scripts/reskindex.js +++ b/scripts/reskindex.js @@ -1,29 +1,29 @@ #!/usr/bin/env node -var fs = require('fs'); -var path = require('path'); -var glob = require('glob'); -var args = require('minimist')(process.argv); -var chokidar = require('chokidar'); +const fs = require('fs'); +const path = require('path'); +const glob = require('glob'); +const args = require('minimist')(process.argv); +const chokidar = require('chokidar'); -var componentIndex = path.join('src', 'component-index.js'); -var componentIndexTmp = componentIndex+".tmp"; -var componentsDir = path.join('src', 'components'); -var componentJsGlob = '**/*.js'; -var componentTsGlob = '**/*.tsx'; -var prevFiles = []; +const componentIndex = path.join('src', 'component-index.js'); +const componentIndexTmp = componentIndex+".tmp"; +const componentsDir = path.join('src', 'components'); +const componentJsGlob = '**/*.js'; +const componentTsGlob = '**/*.tsx'; +let prevFiles = []; function reskindex() { - var jsFiles = glob.sync(componentJsGlob, {cwd: componentsDir}).sort(); - var tsFiles = glob.sync(componentTsGlob, {cwd: componentsDir}).sort(); - var files = [...tsFiles, ...jsFiles]; + const jsFiles = glob.sync(componentJsGlob, {cwd: componentsDir}).sort(); + const tsFiles = glob.sync(componentTsGlob, {cwd: componentsDir}).sort(); + const files = [...tsFiles, ...jsFiles]; if (!filesHaveChanged(files, prevFiles)) { return; } prevFiles = files; - var header = args.h || args.header; + const header = args.h || args.header; - var strm = fs.createWriteStream(componentIndexTmp); + const strm = fs.createWriteStream(componentIndexTmp); if (header) { strm.write(fs.readFileSync(header)); @@ -38,11 +38,11 @@ function reskindex() { strm.write(" */\n\n"); strm.write("let components = {};\n"); - for (var i = 0; i < files.length; ++i) { - var file = files[i].replace('.js', '').replace('.tsx', ''); + for (let i = 0; i < files.length; ++i) { + const file = files[i].replace('.js', '').replace('.tsx', ''); - var moduleName = (file.replace(/\//g, '.')); - var importName = moduleName.replace(/\./g, "$"); + const moduleName = (file.replace(/\//g, '.')); + const importName = moduleName.replace(/\./g, "$"); strm.write("import " + importName + " from './components/" + file + "';\n"); strm.write(importName + " && (components['"+moduleName+"'] = " + importName + ");"); @@ -67,7 +67,7 @@ function filesHaveChanged(files, prevFiles) { return true; } // Check for name changes - for (var i = 0; i < files.length; i++) { + for (const i = 0; i < files.length; i++) { if (prevFiles[i] !== files[i]) { return true; } @@ -81,7 +81,7 @@ if (!args.w) { return; } -var watchDebouncer = null; +let watchDebouncer = null; chokidar.watch(path.join(componentsDir, componentJsGlob)).on('all', (event, path) => { if (path === componentIndex) return; if (watchDebouncer) clearTimeout(watchDebouncer); From 0e137bd0f60393d1bf3d41495beb4cf930d242c6 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 19 Jan 2021 14:42:10 +0000 Subject: [PATCH 087/275] Fix code style --- scripts/reskindex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/reskindex.js b/scripts/reskindex.js index a57fd9cbe3..e3ebefd78d 100755 --- a/scripts/reskindex.js +++ b/scripts/reskindex.js @@ -53,7 +53,7 @@ function reskindex() { strm.write("export {components};\n"); strm.end(); fs.rename(componentIndexTmp, componentIndex, function(err) { - if(err) { + if (err) { console.error("Error moving new index into place: " + err); } else { console.log('Reskindex: completed'); From 4e5f25206a416177fdc8e3ff0a7bb4dfa7ef8e11 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 19 Jan 2021 14:45:03 +0000 Subject: [PATCH 088/275] Ensure component index has been written before renaming This ensures we correctly wait for `component-index.js.tmp` to be written to disk before trying to rename into place. This fixes an issue where stray temp files were being strewn about the repos after renaming failures. --- scripts/reskindex.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/reskindex.js b/scripts/reskindex.js index e3ebefd78d..1770073aad 100755 --- a/scripts/reskindex.js +++ b/scripts/reskindex.js @@ -2,6 +2,7 @@ const fs = require('fs'); const path = require('path'); const glob = require('glob'); +const util = require('util'); const args = require('minimist')(process.argv); const chokidar = require('chokidar'); @@ -12,7 +13,7 @@ const componentJsGlob = '**/*.js'; const componentTsGlob = '**/*.tsx'; let prevFiles = []; -function reskindex() { +async function reskindex() { const jsFiles = glob.sync(componentJsGlob, {cwd: componentsDir}).sort(); const tsFiles = glob.sync(componentTsGlob, {cwd: componentsDir}).sort(); const files = [...tsFiles, ...jsFiles]; @@ -51,7 +52,8 @@ function reskindex() { } strm.write("export {components};\n"); - strm.end(); + // Ensure the file has been fully written to disk before proceeding + await util.promisify(strm.end); fs.rename(componentIndexTmp, componentIndex, function(err) { if (err) { console.error("Error moving new index into place: " + err); From 64b8839953db741b23404525bfacdbe436348291 Mon Sep 17 00:00:00 2001 From: Nikita Epifanov Date: Tue, 19 Jan 2021 06:31:23 +0000 Subject: [PATCH 089/275] Translated using Weblate (Russian) Currently translated at 99.9% (2727 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index bde46c6c0e..4a15984add 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -2982,5 +2982,8 @@ "Dial pad": "Панель набора номера", "Start a Conversation": "Начать разговор", "There was an error looking up the phone number": "При поиске номера телефона произошла ошибка", - "Unable to look up phone number": "Невозможно найти номер телефона" + "Unable to look up phone number": "Невозможно найти номер телефона", + "Change which room, message, or user you're viewing": "Измените комнату, сообщение или пользователя, которого вы просматриваете", + "Channel: ": "Канал: ", + "Workspace: ": "Рабочая область: " } From 47be6d20ef47b6d80ef28cef4b0d423ad9e50212 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 19 Jan 2021 02:42:00 +0000 Subject: [PATCH 090/275] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 32a42332e6..393f644c3e 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2993,5 +2993,8 @@ "Start a Conversation": "開始對話", "Dial pad": "撥號鍵盤", "There was an error looking up the phone number": "尋找電話號碼時發生錯誤", - "Unable to look up phone number": "無法查詢電話號碼" + "Unable to look up phone number": "無法查詢電話號碼", + "Channel: ": "頻道:", + "Workspace: ": "工作空間:", + "Change which room, message, or user you're viewing": "變更您正在檢視的聊天室、訊息或使用者" } From f118f1899f495b8947f3daf1ab2084b88305856e Mon Sep 17 00:00:00 2001 From: waclaw66 Date: Tue, 19 Jan 2021 07:17:16 +0000 Subject: [PATCH 091/275] Translated using Weblate (Czech) Currently translated at 99.9% (2728 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 76bec190bf..ffe3d84881 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -2904,5 +2904,7 @@ "Start a Conversation": "Zahájit konverzaci", "Dial pad": "Číselník", "There was an error looking up the phone number": "Při vyhledávání telefonního čísla došlo k chybě", - "Unable to look up phone number": "Nelze nalézt telefonní číslo" + "Unable to look up phone number": "Nelze nalézt telefonní číslo", + "Channel: ": "Kanál: ", + "Change which room, message, or user you're viewing": "Změňte, kterou místnost, zprávu nebo uživatele si prohlížíte" } From 91562b7207d2284ddce4547697cc2fcafdbf2ed9 Mon Sep 17 00:00:00 2001 From: XoseM Date: Tue, 19 Jan 2021 06:39:47 +0000 Subject: [PATCH 092/275] Translated using Weblate (Galician) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 421a64aba0..aebf672fa9 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -936,7 +936,7 @@ "This room has no topic.": "Esta sala non ten asunto.", "Sets the room name": "Establecer nome da sala", "Use an identity server": "Usar un servidor de identidade", - "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Usar un servidor de identidade para convidar por email. Preme continuar para usar o servidor de identidade por omisión (%(defaultIdentityServerName)s) ou cambiao en Axustes.", + "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Usar un servidor de identidade para convidar por email. Preme continuar para usar o servidor de identidade por defecto (%(defaultIdentityServerName)s) ou cambiao en Axustes.", "Use an identity server to invite by email. Manage in Settings.": "Usar un servidor de indentidade para convidar por email. Xestionao en Axustes.", "Command failed": "O comando fallou", "Could not find user in room": "Non se atopa a usuaria na sala", @@ -1494,7 +1494,7 @@ "Key backup": "Copia da Chave", "Message search": "Buscar mensaxe", "Cross-signing": "Sinatura cruzada", - "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "A administración do servidor desactivou por omisión o cifrado extremo-a-extremo en salas privadas e Mensaxes Directas.", + "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.": "A administración do servidor desactivou por defecto o cifrado extremo-a-extremo en salas privadas e Mensaxes Directas.", "A session's public name is visible to people you communicate with": "Un nome público de sesión é visible para a xente coa que te comunicas", "Missing media permissions, click the button below to request.": "Falta permiso acceso multimedia, preme o botón para solicitalo.", "Request media permissions": "Solicitar permiso a multimedia", @@ -1833,7 +1833,7 @@ "Add a new server...": "Engadir un novo servidor...", "%(networkName)s rooms": "Salas de %(networkName)s", "That doesn't look like a valid email address": "Non semella un enderezo de email válido", - "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Usa un servidor de identidade para convidar por email. Usa valor por omisión (%(defaultIdentityServerName)s) ou xestionao en Axustes.", + "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Usa un servidor de identidade para convidar por email. Usa o valor por defecto (%(defaultIdentityServerName)s) ou xestionao en Axustes.", "Use an identity server to invite by email. Manage in Settings.": "Usa un servidor de identidade para convidar por email. Xestionao en Axustes.", "The following users may not exist": "As seguintes usuarias poderían non existir", "Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?": "Non se atopou o perfil dos IDs Matrix da lista inferior - ¿Desexas convidalas igualmente?", @@ -2360,7 +2360,7 @@ "Set the name of a font installed on your system & %(brand)s will attempt to use it.": "Escolle unha das tipografías instaladas no teu sistema e %(brand)s intentará utilizalas.", "Make this room low priority": "Marcar a sala como de baixa prioridade", "Low priority rooms show up at the bottom of your room list in a dedicated section at the bottom of your room list": "As salas de baixa prioridade aparecen abaixo na lista de salas, nunha sección dedicada no final da lista", - "Use default": "Usar por omisión", + "Use default": "Usar por defecto", "Mentions & Keywords": "Mencións e Palabras chave", "Notification options": "Opcións de notificación", "Favourited": "Con marca de Favorita", @@ -2990,5 +2990,8 @@ "Start a Conversation": "Iniciar unha Conversa", "Dial pad": "Marcador", "There was an error looking up the phone number": "Houbo un erro buscando o número de teléfono", - "Unable to look up phone number": "Non atopamos o número de teléfono" + "Unable to look up phone number": "Non atopamos o número de teléfono", + "Channel: ": "Canle: ", + "Workspace: ": "Espazo de traballo: ", + "Change which room, message, or user you're viewing": "Cambia a sala, mensaxe ou usuaria que estás vendo" } From 0a0f427cd754bc2bb13f50b3d6912c2b2a345396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slobodan=20Simi=C4=87?= Date: Mon, 18 Jan 2021 19:53:15 +0000 Subject: [PATCH 093/275] Translated using Weblate (Serbian) Currently translated at 45.9% (1253 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 9359cb7108..301af81119 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -517,7 +517,7 @@ "Your language of choice": "Ваш изабрани језик", "Which officially provided instance you are using, if any": "Коју званичну инстанцу користите, ако користите", "Whether or not you're using the Richtext mode of the Rich Text Editor": "Да ли користите режим богатог текста у уређивачу богатог текста", - "Your homeserver's URL": "УРЛ вашег кућног сервера", + "Your homeserver's URL": "УРЛ вашег домаћег сервера", "Analytics": "Аналитика", "The information being sent to us to help make %(brand)s better includes:": "У податке које нам шаљете зарад побољшавања %(brand)s-а спадају:", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ако страница садржи поверљиве податке (као што је назив собе, ИД корисника или групе), ти подаци се уклањају пре слања на сервер.", @@ -588,7 +588,7 @@ "Account": "Налог", "Access Token:": "Приступни жетон:", "click to reveal": "кликни за приказ", - "Homeserver is": "Кућни сервер је", + "Homeserver is": "Домаћи сервер је", "Identity Server is": "Идентитетски сервер је", "%(brand)s version:": "%(brand)s издање:", "olm version:": "olm издање:", @@ -603,10 +603,10 @@ "Incorrect username and/or password.": "Нетачно корисничко име и/или лозинка.", "Please note you are logging into the %(hs)s server, not matrix.org.": "Знајте да се пријављујете на сервер %(hs)s, не на matrix.org.", "The phone number entered looks invalid": "Унети број телефона не изгледа исправно", - "This homeserver doesn't offer any login flows which are supported by this client.": "Овај кућни сервер не пружа било који начин пријаве унутар овог клијента.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Овај домаћи сервер не пружа било који начин пријаве унутар овог клијента.", "Error: Problem communicating with the given homeserver.": "Грешка: проблем у комуницирању са датим кућним сервером.", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не могу да се повежем на кућни сервер преко HTTP-а када се користи HTTPS адреса у траци вашег прегледача. Или користите HTTPS или омогућите небезбедне скрипте.", - "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не могу да се повежем на кућни сервер. Проверите вашу интернет везу, постарајте се да верујете SSL сертификату кућног сервера и да проширење прегледача не блокира захтеве.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не могу да се повежем на сервер преко ХТТП када је ХТТПС УРЛ у траци вашег прегледача. Или користите HTTPS или омогућите небезбедне скрипте.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не могу да се повежем на домаћи сервер. Проверите вашу интернет везу, постарајте се да је ССЛ сертификат сервера од поверења и да проширење прегледача не блокира захтеве.", "Failed to fetch avatar URL": "Нисам успео да добавим адресу аватара", "Set a display name:": "Постави приказно име:", "Upload an avatar:": "Отпреми аватар:", @@ -801,9 +801,9 @@ "To continue, please enter your password:": "Да бисте наставили, унесите вашу лозинку:", "Collapse Reply Thread": "Скупи нит са одговорима", "Can't leave Server Notices room": "Не могу да напустим собу са напоменама сервера", - "This room is used for important messages from the Homeserver, so you cannot leave it.": "Ова соба се користи за важне поруке са Кућног сервера, не можете изаћи из ове собе.", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Ова соба се користи за важне поруке са сервера. Не можете напустити ову собу.", "Terms and Conditions": "Услови коришћења", - "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Да бисте наставили са коришћењем Кућног сервера %(homeserverDomain)s морате погледати и пристати на наше услове коришћења.", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Да наставите са коришћењем сервера %(homeserverDomain)s морате погледати и пристати на наше услове коришћења.", "Review terms and conditions": "Погледај услове коришћења", "Share Link to User": "Подели везу са корисником", "Share room": "Подели собу", @@ -830,7 +830,7 @@ "Demote yourself?": "Снизите чин себи?", "Demote": "Снизите чин", "Whether or not you're logged in (we don't record your username)": "Да ли сте пријављени (не бележимо ваше корисничко име)", - "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Датотека „%(fileName)s“ премашује ограничење величине отпремања на овом кућном серверу", + "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Фајл „%(fileName)s“ премашује ограничење величине отпремања на овом серверу", "Unable to load! Check your network connectivity and try again.": "Не могу да учитам! Проверите повезаност и пробајте поново.", "Failed to invite users to the room:": "Нисам успео да позовем кориснике у собу:", "Upgrades a room to a new version": "Надограђује собу на ново издање", @@ -958,7 +958,7 @@ "Suggestions": "Предлози", "Invite someone using their name, username (like ), email address or share this room.": "Позовите некога уз помоћ њихово имена, корисничког имена (типа ), мејл адресе или поделите ову собу.", "Report bugs & give feedback": "Пријави грешке и пошаљи повратне податке", - "Report Content to Your Homeserver Administrator": "Пријави садржај администратору вашег кућног сервера", + "Report Content to Your Homeserver Administrator": "Пријави садржај администратору вашег домаћег сервера", "Room Settings - %(roomName)s": "Подешавања собе - %(roomName)s", "Terms of Service": "Услови коришћења", "To continue you need to accept the terms of this service.": "За наставак, морате прихватити услове коришћења ове услуге.", @@ -1342,5 +1342,21 @@ "Click the button below to confirm adding this phone number.": "Кликните на дугме испод за потврду додавања броја телефона.", "Confirm adding phone number": "Потврда додавања броја телефона", "Confirm adding this phone number by using Single Sign On to prove your identity.": "Потврдите додавање броја телефона помоћу јединствене пријаве да докажете свој идентитет.", - "About": "О програму" + "About": "О програму", + "Homeserver": "Домаћи сервер", + "The homeserver the user you’re verifying is connected to": "Домаћи сервер корисника којег верификујете", + "Your homeserver": "Ваш домаћи сервер", + "Your homeserver does not support session management.": "Ваш домаћи сервер не подржава управљање сесијама.", + "Your homeserver does not support cross-signing.": "Ваш домаћи сервер не подржава међу-потписивање.", + "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Прототипови заједница вер.2 захтевају компатибилан сервер. Експериментална опција — користите са опрезом.", + "Please contact your homeserver administrator.": "Контактирајте администратора вашег сервера.", + "Sorry, your homeserver is too old to participate in this room.": "Нажалост, ваш домаћи сервер је престар да бисте учествовали у овој соби.", + "Your homeserver has exceeded one of its resource limits.": "Ваш домаћи сервер је прекорачио ограничење неког ресурса.", + "Your homeserver has exceeded its user limit.": "Ваш домаћи сервер је прекорачио ограничење корисника.", + "The user's homeserver does not support the version of the room.": "Корисников домаћи сервер не подржава верзију собе.", + "Unable to connect to Homeserver. Retrying...": "Не могу да се повежем са сервером. Покушавам поново…", + "This homeserver has exceeded one of its resource limits.": "Овај сервер је достигао ограничење неког свог ресурса.", + "Unexpected error resolving homeserver configuration": "Неочекивана грешка при откривању подешавања сервера", + "No homeserver URL provided": "Није наведен УРЛ сервера", + "Cannot reach homeserver": "Сервер ми је недоступан" } From 6985e8f41fac7394fb62f42297a1e7d19c713834 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Tue, 19 Jan 2021 10:00:45 -0700 Subject: [PATCH 094/275] Update documentation words --- docs/widget-layouts.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/widget-layouts.md b/docs/widget-layouts.md index 215b026b0f..e7f72e2001 100644 --- a/docs/widget-layouts.md +++ b/docs/widget-layouts.md @@ -32,13 +32,13 @@ therefore fewer messages can be shown). The `index` for a widget determines which order the widgets show up in from left to right. Widgets without an `index` will show up as the rightmost widgets. Tiebreaks (same `index` or multiple defined without an `index`) are resolved by comparing widget IDs. A maximum of 3 widgets can be in the top -container - any which exceed this will be ignored. Smaller numbers represent leftmost widgets. +container - any which exceed this will be ignored (placed into the `right` container). Smaller numbers +represent leftmost widgets. The `width` is relative width within the container in percentage points. This will be clamped to a -range of 0-100 (inclusive). The rightmost widget will have its percentage adjusted to fill the -container appropriately, shrinking and growing if required. For example, if three widgets are in the -top container at 40% width each then the 3rd widget will be shrunk to 20% because 120% > 100%. -Similarly, if all three widgets were set to 10% width each then the 3rd widget would grow to be 80%. +range of 0-100 (inclusive). The widgets will attempt to scale to relative proportions when more than +100% space is allocated. For example, if 3 widgets are defined at 40% width each then the client will +attempt to show them at 33% width each. Note that the client may impose minimum widths on the widgets, such as a 10% minimum to avoid pinning hidden widgets. In general, widgets defined in the 30-70% range each will be free of these restrictions. From 016140670b78439708ca93829bfb27756b12a558 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 19 Jan 2021 17:58:17 +0000 Subject: [PATCH 095/275] Fix let binding in reskindex.js --- scripts/reskindex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/reskindex.js b/scripts/reskindex.js index 1770073aad..12310b77c1 100755 --- a/scripts/reskindex.js +++ b/scripts/reskindex.js @@ -69,7 +69,7 @@ function filesHaveChanged(files, prevFiles) { return true; } // Check for name changes - for (const i = 0; i < files.length; i++) { + for (let i = 0; i < files.length; i++) { if (prevFiles[i] !== files[i]) { return true; } From 3115c4f3f3ed0b2f1d82c5882dcce007b188c206 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 19 Jan 2021 17:59:30 +0000 Subject: [PATCH 096/275] Show only preview buttons in directory for guest users This aligns the room directory with the rest of Element Web so that it does not allow guest users to join rooms. Instead, we show preview buttons (even when the preview might not actually happen). Fixes https://github.com/vector-im/element-web/issues/16213 --- src/components/structures/RoomDirectory.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index e3323b05fa..9ddacaf829 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -487,7 +487,11 @@ export default class RoomDirectory extends React.Component { let previewButton; let joinOrViewButton; - if (room.world_readable && !hasJoinedRoom) { + // Element Web currently does not allow guests to join rooms, so we + // instead show them preview buttons for all rooms. If the room is not + // world readable, a modal will appear asking you to register first. If + // it is readable, the preview appears as normal. + if (!hasJoinedRoom && (room.world_readable || isGuest)) { previewButton = ( this.onPreviewClick(ev, room)}>{_t("Preview")} ); @@ -496,7 +500,7 @@ export default class RoomDirectory extends React.Component { joinOrViewButton = ( this.onViewClick(ev, room)}>{_t("View")} ); - } else if (!isGuest || room.guest_can_join) { + } else if (!isGuest) { joinOrViewButton = ( this.onJoinClick(ev, room)}>{_t("Join")} ); From 8ff935f68cd02285246cde7a37fd4db1fdfe9789 Mon Sep 17 00:00:00 2001 From: waclaw66 Date: Tue, 19 Jan 2021 18:43:26 +0000 Subject: [PATCH 097/275] Translated using Weblate (Czech) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index ffe3d84881..2069e7f755 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -2906,5 +2906,6 @@ "There was an error looking up the phone number": "Při vyhledávání telefonního čísla došlo k chybě", "Unable to look up phone number": "Nelze nalézt telefonní číslo", "Channel: ": "Kanál: ", - "Change which room, message, or user you're viewing": "Změňte, kterou místnost, zprávu nebo uživatele si prohlížíte" + "Change which room, message, or user you're viewing": "Změňte, kterou místnost, zprávu nebo uživatele si prohlížíte", + "Workspace: ": "Pracovní oblast: " } From f8fe454c595d8e8e10b0fbabbdfa2cee08b03080 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 20 Jan 2021 14:42:24 -0700 Subject: [PATCH 098/275] Replace looping resizer with actual math --- src/stores/widgets/WidgetLayoutStore.ts | 43 +++++++++++++++++-------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index 9742712fcf..d54cb36a6c 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -270,20 +270,37 @@ export class WidgetLayoutStore extends ReadyWatchingStore { for (let i = 0; i < widths.length; i++) { widths[i] = 100 / widths.length; } - } + } else { + // If we're not autobalancing then it means that we're trying to make + // sure that widgets make up exactly 100% of space (not over, not under) + const difference = sum(...widths) - 100; // positive = over, negative = under + if (difference < 0) { + // For a deficit we just fill everything in equally + for (let i = 0; i < widths.length; i++) { + widths[i] += Math.abs(difference) / widths.length; + } + } else if (difference > 0) { + // When we're over, we try to scale all the widgets within range first. + // We clamp values to try and keep ourselves sane and within range. + for (let i = 0; i < widths.length; i++) { + widths[i] = clamp(widths[i] - (difference / widths.length), MIN_WIDGET_WIDTH_PCT, 100); + } - // TODO: There is probably a more efficient way to do this. - // All we're doing is making sure that our widths sum up to 100 and take - // any excess width off all widgets equally to keep the proportions. - let toReclaim = sum(...widths) - 100; - while (toReclaim > 0 && topWidgets.length > 0) { - for (let i = 0; i < widths.length; i++) { - if (toReclaim <= 0) break; - const w = widths[i]; - const adjusted = clamp(w - 1, MIN_WIDGET_WIDTH_PCT, 100); - if (adjusted !== w) { - toReclaim -= 1; - widths[i] = adjusted; + // If we're still over, find the widgets which have more width than the minimum + // and balance them out until we're at 100%. This should keep us as close as possible + // to the intended distributions. + // + // Note: if we ever decide to set a minimum which is larger than 100%/MAX_WIDGETS then + // we probably have other issues - this code assumes we don't do that. + const toReclaim = sum(...widths) - 100; + if (toReclaim > 0) { + const largeIndices = widths + .map((v, i) => ([i, v])) + .filter(p => p[1] > MIN_WIDGET_WIDTH_PCT) + .map(p => p[0]); + for (const idx of largeIndices) { + widths[idx] -= toReclaim / largeIndices.length; + } } } } From 29780d902cc62a863083ccc8eef6f1d162796721 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 20 Jan 2021 14:44:30 -0700 Subject: [PATCH 099/275] Try to reduce WidgetStore causing downstream problems --- src/stores/WidgetStore.ts | 6 +++--- src/stores/widgets/WidgetLayoutStore.ts | 13 +++++++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/stores/WidgetStore.ts b/src/stores/WidgetStore.ts index 2f06dfcb80..c53c85dfd5 100644 --- a/src/stores/WidgetStore.ts +++ b/src/stores/WidgetStore.ts @@ -76,7 +76,7 @@ export default class WidgetStore extends AsyncStoreWithClient { this.matrixClient.getRooms().forEach((room: Room) => { this.loadRoomWidgets(room); }); - this.emit(UPDATE_EVENT); + this.emit(UPDATE_EVENT, null); // emit for all rooms } protected async onNotReady(): Promise { @@ -94,7 +94,7 @@ export default class WidgetStore extends AsyncStoreWithClient { private onWidgetEchoStoreUpdate = (roomId: string, widgetId: string) => { this.initRoom(roomId); this.loadRoomWidgets(this.matrixClient.getRoom(roomId)); - this.emit(UPDATE_EVENT); + this.emit(UPDATE_EVENT, roomId); }; private generateApps(room: Room): IApp[] { @@ -143,7 +143,7 @@ export default class WidgetStore extends AsyncStoreWithClient { const roomId = ev.getRoomId(); this.initRoom(roomId); this.loadRoomWidgets(this.matrixClient.getRoom(roomId)); - this.emit(UPDATE_EVENT); + this.emit(UPDATE_EVENT, roomId); }; public getRoom = (roomId: string) => { diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index d54cb36a6c..bce684241d 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -131,7 +131,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { this.matrixClient.on("RoomState.events", this.updateRoomFromState); this.pinnedRef = SettingsStore.watchSetting("Widgets.pinned", null, this.updateFromSettings); this.layoutRef = SettingsStore.watchSetting("Widgets.layout", null, this.updateFromSettings); - WidgetStore.instance.on(UPDATE_EVENT, this.updateAllRooms); + WidgetStore.instance.on(UPDATE_EVENT, this.updateFromWidgetStore); } protected async onNotReady(): Promise { @@ -139,7 +139,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { SettingsStore.unwatchSetting(this.pinnedRef); SettingsStore.unwatchSetting(this.layoutRef); - WidgetStore.instance.off(UPDATE_EVENT, this.updateAllRooms); + WidgetStore.instance.off(UPDATE_EVENT, this.updateFromWidgetStore); } private updateAllRooms = () => { @@ -149,6 +149,15 @@ export class WidgetLayoutStore extends ReadyWatchingStore { } }; + private updateFromWidgetStore = (roomId?:string) => { + if (roomId) { + const room = this.matrixClient.getRoom(roomId); + if (room) this.recalculateRoom(room); + } else { + this.updateAllRooms(); + } + }; + private updateRoomFromState = (ev: MatrixEvent) => { if (ev.getType() !== WIDGET_LAYOUT_EVENT_TYPE) return; const room = this.matrixClient.getRoom(ev.getRoomId()); From c7c055dd98787a18bf87924fd920e23a44194f70 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 20 Jan 2021 15:05:18 -0700 Subject: [PATCH 100/275] Give a bigger target area to AppsDrawer vertical resizer The existing target was too hard to hit, which annoyed users. This change makes it the same sort of surface area as the horizontal resizers, as requested by design to fix the problem in the short term. --- res/css/views/rooms/_AppsDrawer.scss | 39 ++++++++++++++++++------ src/components/views/rooms/AppsDrawer.js | 1 + 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/res/css/views/rooms/_AppsDrawer.scss b/res/css/views/rooms/_AppsDrawer.scss index 8731d22660..492ed95973 100644 --- a/res/css/views/rooms/_AppsDrawer.scss +++ b/res/css/views/rooms/_AppsDrawer.scss @@ -24,26 +24,45 @@ $MiniAppTileHeight: 200px; flex-direction: column; overflow: hidden; + .mx_AppsContainer_resizerHandleContainer { + width: 100%; + height: 10px; + margin-top: -3px; // move it up so the interactions are slightly more comfortable + display: block; + position: relative; + } + .mx_AppsContainer_resizerHandle { cursor: ns-resize; - border-radius: 3px; - // Override styles from library - width: unset !important; - height: 4px !important; + // Override styles from library, making the whole area the target area + width: 100% !important; + height: 100% !important; // This is positioned directly below frame position: absolute; - bottom: -8px !important; // override from library + bottom: 0 !important; // override from library - // Together, these make the bar 64px wide - // These are also overridden from the library - left: calc(50% - 32px) !important; - right: calc(50% - 32px) !important; + // We then render the pill handle in an ::after to keep it in the handle's + // area without being a massive line across the screen + &::after { + content: ''; + position: absolute; + border-radius: 3px; + + // The combination of these two should make the pill 4px high + top: 6px; + bottom: 0; + + // Together, these make the bar 64px wide + // These are also overridden from the library + left: calc(50% - 32px); + right: calc(50% - 32px); + } } &:hover { - .mx_AppsContainer_resizerHandle { + .mx_AppsContainer_resizerHandle::after { opacity: 0.8; background: $primary-fg-color; } diff --git a/src/components/views/rooms/AppsDrawer.js b/src/components/views/rooms/AppsDrawer.js index 3208844bc5..24a7d1417a 100644 --- a/src/components/views/rooms/AppsDrawer.js +++ b/src/components/views/rooms/AppsDrawer.js @@ -252,6 +252,7 @@ export default class AppsDrawer extends React.Component { minHeight={100} maxHeight={this.props.maxHeight ? this.props.maxHeight - 50 : undefined} handleClass="mx_AppsContainer_resizerHandle" + handleWrapperClass="mx_AppsContainer_resizerHandleContainer" className="mx_AppsContainer_resizer" resizeNotifier={this.props.resizeNotifier} > From 928ddeb718eabf39dafe4c77485380e9367141fd Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 21 Jan 2021 13:33:25 +0000 Subject: [PATCH 101/275] Improve styling of SSO Buttons for multiple IdPs --- res/css/views/elements/_SSOButtons.scss | 11 ++++++- src/components/views/elements/SSOButtons.tsx | 32 +++++++++++++------- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index f762468c7f..c61247655c 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -16,8 +16,15 @@ limitations under the License. .mx_SSOButtons { display: flex; + flex-wrap: wrap; justify-content: center; + .mx_SSOButtons_row { + & + .mx_SSOButtons_row { + margin-top: 16px; + } + } + .mx_SSOButton { position: relative; width: 100%; @@ -36,6 +43,8 @@ limitations under the License. box-sizing: border-box; width: 50px; // 48px + 1px border on all sides height: 50px; // 48px + 1px border on all sides + min-width: 50px; // prevent crushing by the flexbox + padding: 12px; > img { left: 12px; @@ -43,7 +52,7 @@ limitations under the License. } & + .mx_SSOButton_mini { - margin-left: 24px; + margin-left: 16px; } } } diff --git a/src/components/views/elements/SSOButtons.tsx b/src/components/views/elements/SSOButtons.tsx index 2416e76119..5c3098d807 100644 --- a/src/components/views/elements/SSOButtons.tsx +++ b/src/components/views/elements/SSOButtons.tsx @@ -15,13 +15,14 @@ limitations under the License. */ import React from "react"; +import { chunk } from "lodash"; +import classNames from "classnames"; import {MatrixClient} from "matrix-js-sdk/src/client"; import PlatformPeg from "../../../PlatformPeg"; import AccessibleButton from "./AccessibleButton"; import {_t} from "../../../languageHandler"; import {IIdentityProvider, ISSOFlow} from "../../../Login"; -import classNames from "classnames"; interface ISSOButtonProps extends Omit { idp: IIdentityProvider; @@ -83,6 +84,8 @@ interface IProps { primary?: boolean; } +const MAX_PER_ROW = 6; + const SSOButtons: React.FC = ({matrixClient, flow, loginType, fragmentAfterLogin, primary}) => { const providers = flow["org.matrix.msc2858.identity_providers"] || []; if (providers.length < 2) { @@ -97,17 +100,24 @@ const SSOButtons: React.FC = ({matrixClient, flow, loginType, fragmentAf
    ; } + const rows = Math.ceil(providers.length / MAX_PER_ROW); + const size = Math.ceil(providers.length / rows); + return
    - { providers.map(idp => ( - + { chunk(providers, size).map(chunk => ( +
    + { chunk.map(idp => ( + + )) } +
    )) }
    ; }; From 662996ba98042fc349e213653f0112ba777b12bf Mon Sep 17 00:00:00 2001 From: Miquel Lionel Date: Thu, 21 Jan 2021 10:53:18 +0000 Subject: [PATCH 102/275] Translated using Weblate (French) Currently translated at 95.5% (2607 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 13ff009e9f..7fa1cd7134 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2821,7 +2821,7 @@ "Brazil": "Brésil", "Bouvet Island": "Île Bouvet", "Botswana": "", - "Bosnia": "", + "Bosnia": "Bosnie-Herzegovine", "Bolivia": "", "Bhutan": "", "Bermuda": "", @@ -2848,5 +2848,11 @@ "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Ajoute \"(╯°□°)╯︵ ┻━┻\" en préfixe du message", "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Ajoute \"┬──┬ ノ( ゜-゜ノ)\" en préfixe du message", "Effects": "Effets", - "Zimbabwe": "Zimbabwe" + "Zimbabwe": "Zimbabwe", + "Send images as you in your active room": "Envoie des images sous votre nom dans le salon actuel", + "Send images as you in this room": "Envoie des images sous votre nom dans ce salon", + "See emotes posted to your active room": "Voir les émoticônes envoyées dans le salon actuel", + "See emotes posted to this room": "Voir les émoticônes envoyées dans ce salon", + "Send emotes as you in your active room": "Envoyer des émoticônes sous votre nom dans le salon actuel", + "Send emotes as you in this room": "Envoyer des émoticônes sous votre nom dans ce salon" } From 0f6351a6b7c0baae1cd55f983d421cb605a38409 Mon Sep 17 00:00:00 2001 From: Miquel Lionel Date: Thu, 21 Jan 2021 16:20:21 +0000 Subject: [PATCH 103/275] Translated using Weblate (French) Currently translated at 96.1% (2624 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 7fa1cd7134..81482b43fd 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2854,5 +2854,22 @@ "See emotes posted to your active room": "Voir les émoticônes envoyées dans le salon actuel", "See emotes posted to this room": "Voir les émoticônes envoyées dans ce salon", "Send emotes as you in your active room": "Envoyer des émoticônes sous votre nom dans le salon actuel", - "Send emotes as you in this room": "Envoyer des émoticônes sous votre nom dans ce salon" + "Send emotes as you in this room": "Envoyer des émoticônes sous votre nom dans ce salon", + "See videos posted to your active room": "Voir les vidéos publiées dans votre salon actuel", + "See videos posted to this room": "Voir les vidéos publiées dans ce salon", + "Send videos as you in your active room": "Envoie des vidéos en tant que vous dans votre salon actuel", + "Send videos as you in this room": "Envoie des vidéos en tant que vous dans ce salon", + "See images posted to this room": "Voir les images publiées dans ce salon", + "See images posted to your active room": "Voir les images publiées dans votre salon actuel", + "See messages posted to your active room": "Voir les messages publiés dans votre salon actuel", + "See messages posted to this room": "Voir les messages publiés dans ce salon", + "Send messages as you in your active room": "Envoie des messages en tant que vous dans votre salon actuel", + "Send messages as you in this room": "Envoie des messages en tant que vous dans ce salon", + "The %(capability)s capability": "La capacité %(capability)s", + "See %(eventType)s events posted to your active room": "Voir les événements %(eventType)s publiés dans votre salon actuel", + "Send %(eventType)s events as you in your active room": "Envoie des événements %(eventType)s en tant que vous dans votre salon actuel", + "See %(eventType)s events posted to this room": "Voir les événements %(eventType)s publiés dans ce salon", + "Send %(eventType)s events as you in this room": "Envoie des événements %(eventType)s en tant que vous dans ce salon", + "Send stickers to your active room as you": "Envoie des stickers en tant que vous dans le salon actuel", + "Continue with %(ssoButtons)s": "Continuer avec %(ssoButtons)s" } From da7f6c7eca30bc8eb53086572fcd4a53988246ae Mon Sep 17 00:00:00 2001 From: blattersturm Date: Mon, 21 Dec 2020 16:58:51 +0100 Subject: [PATCH 104/275] Don't use name width in reply thread for IRC layout Signed-off-by: Robert Dash --- res/css/views/rooms/_IRCLayout.scss | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/res/css/views/rooms/_IRCLayout.scss b/res/css/views/rooms/_IRCLayout.scss index ece547d02b..792c2f1f58 100644 --- a/res/css/views/rooms/_IRCLayout.scss +++ b/res/css/views/rooms/_IRCLayout.scss @@ -207,6 +207,17 @@ $irc-line-height: $font-18px; width: unset; max-width: var(--name-width); } + + .mx_SenderProfile_hover { + background: transparent; + + > span { + > .mx_SenderProfile_name, + > .mx_SenderProfile_aux { + min-width: inherit; + } + } + } } .mx_ProfileResizer { From 0a90c982c715e987f77afcb91e2b1e9debc9b352 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 21 Jan 2021 19:20:35 +0000 Subject: [PATCH 105/275] Add VoIP user mapper The accompanying element-web PR with the config documentation should explain what this is & why. Internally, this breaks the assumption that call.roomId is the room that the call appears in for the user. call.roomId may now be a 'virtual' room while the react SDK actually displays it in a different room. React SDK always stores the calls under the user-facing rooms, and provides a function to get the user-facing room for a given call. --- src/CallHandler.tsx | 43 ++++++++--- src/VoipUserMapper.ts | 77 +++++++++++++++++++ src/components/views/rooms/MessageComposer.js | 9 ++- src/components/views/voip/CallView.tsx | 21 +++-- src/components/views/voip/IncomingCallBox.tsx | 6 +- src/settings/Settings.ts | 4 + .../room-list/filters/VisibilityProvider.ts | 14 ++-- test/VoipUserMapper-test.ts | 31 ++++++++ 8 files changed, 173 insertions(+), 32 deletions(-) create mode 100644 src/VoipUserMapper.ts create mode 100644 test/VoipUserMapper-test.ts diff --git a/src/CallHandler.tsx b/src/CallHandler.tsx index bcb2042f84..bc57f25813 100644 --- a/src/CallHandler.tsx +++ b/src/CallHandler.tsx @@ -83,6 +83,7 @@ import {UIFeature} from "./settings/UIFeature"; import { CallError } from "matrix-js-sdk/src/webrtc/call"; import { logger } from 'matrix-js-sdk/src/logger'; import { Action } from './dispatcher/actions'; +import { roomForVirtualRoom, getOrCreateVirtualRoomForRoom } from './VoipUserMapper'; const CHECK_PSTN_SUPPORT_ATTEMPTS = 3; @@ -133,6 +134,15 @@ export default class CallHandler { return window.mxCallHandler; } + /* + * Gets the user-facing room associated with a call (call.roomId may be the call "virtual room" + * if a voip_mxid_translate_pattern is set in the config) + */ + public static roomIdForCall(call: MatrixCall) { + if (!call) return null; + return roomForVirtualRoom(call.roomId) || call.roomId; + } + start() { this.dispatcherRef = dis.register(this.onAction); // add empty handlers for media actions, otherwise the media keys @@ -284,11 +294,15 @@ export default class CallHandler { // We don't allow placing more than one call per room, but that doesn't mean there // can't be more than one, eg. in a glare situation. This checks that the given call // is the call we consider 'the' call for its room. - const callForThisRoom = this.getCallForRoom(call.roomId); + const mappedRoomId = CallHandler.roomIdForCall(call); + + const callForThisRoom = this.getCallForRoom(mappedRoomId); return callForThisRoom && call.callId === callForThisRoom.callId; } private setCallListeners(call: MatrixCall) { + const mappedRoomId = CallHandler.roomIdForCall(call); + call.on(CallEvent.Error, (err: CallError) => { if (!this.matchesCallForThisRoom(call)) return; @@ -318,7 +332,7 @@ export default class CallHandler { Analytics.trackEvent('voip', 'callHangup'); - this.removeCallForRoom(call.roomId); + this.removeCallForRoom(mappedRoomId); }); call.on(CallEvent.State, (newState: CallState, oldState: CallState) => { if (!this.matchesCallForThisRoom(call)) return; @@ -343,7 +357,7 @@ export default class CallHandler { break; case CallState.Ended: Analytics.trackEvent('voip', 'callEnded', 'hangupReason', call.hangupReason); - this.removeCallForRoom(call.roomId); + this.removeCallForRoom(mappedRoomId); if (oldState === CallState.InviteSent && ( call.hangupParty === CallParty.Remote || (call.hangupParty === CallParty.Local && call.hangupReason === CallErrorCode.InviteTimeout) @@ -392,7 +406,7 @@ export default class CallHandler { this.pause(AudioID.Ringback); } - this.calls.set(newCall.roomId, newCall); + this.calls.set(mappedRoomId, newCall); this.setCallListeners(newCall); this.setCallState(newCall, newCall.state); }); @@ -404,13 +418,15 @@ export default class CallHandler { } private setCallState(call: MatrixCall, status: CallState) { + const mappedRoomId = CallHandler.roomIdForCall(call); + console.log( - `Call state in ${call.roomId} changed to ${status}`, + `Call state in ${mappedRoomId} changed to ${status}`, ); dis.dispatch({ action: 'call_state', - room_id: call.roomId, + room_id: mappedRoomId, state: status, }); } @@ -477,14 +493,20 @@ export default class CallHandler { }, null, true); } - private placeCall( + private async placeCall( roomId: string, type: PlaceCallType, localElement: HTMLVideoElement, remoteElement: HTMLVideoElement, ) { Analytics.trackEvent('voip', 'placeCall', 'type', type); CountlyAnalytics.instance.trackStartCall(roomId, type === PlaceCallType.Video, false); - const call = createNewMatrixCall(MatrixClientPeg.get(), roomId); + + const mappedRoomId = (await getOrCreateVirtualRoomForRoom(roomId)) || roomId; + logger.debug("Mapped real room " + roomId + " to room ID " + mappedRoomId); + + const call = createNewMatrixCall(MatrixClientPeg.get(), mappedRoomId); + this.calls.set(roomId, call); + this.setCallListeners(call); this.setCallAudioElement(call); @@ -586,13 +608,14 @@ export default class CallHandler { const call = payload.call as MatrixCall; - if (this.getCallForRoom(call.roomId)) { + const mappedRoomId = CallHandler.roomIdForCall(call); + if (this.getCallForRoom(mappedRoomId)) { // ignore multiple incoming calls to the same room return; } Analytics.trackEvent('voip', 'receiveCall', 'type', call.type); - this.calls.set(call.roomId, call) + this.calls.set(mappedRoomId, call) this.setCallListeners(call); } break; diff --git a/src/VoipUserMapper.ts b/src/VoipUserMapper.ts new file mode 100644 index 0000000000..c5de686ab8 --- /dev/null +++ b/src/VoipUserMapper.ts @@ -0,0 +1,77 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { ensureDMExists, findDMForUser } from './createRoom'; +import { MatrixClientPeg } from "./MatrixClientPeg"; +import DMRoomMap from "./utils/DMRoomMap"; +import SdkConfig from "./SdkConfig"; + +// Functions for mapping users & rooms for the voip_mxid_translate_pattern +// config option + +export function voipUserMapperEnabled(): boolean { + return SdkConfig.get()['voip_mxid_translate_pattern'] !== undefined; +} + +function userToVirtualUser(userId: string, templateString?: string): string { + if (templateString === undefined) templateString = SdkConfig.get()['voip_mxid_translate_pattern']; + if (!templateString) return null; + return templateString.replace('${mxid}', encodeURIComponent(userId).replace(/%/g, '=').toLowerCase()); +} + +function virtualUserToUser(userId: string, templateString?: string): string { + if (templateString === undefined) templateString = SdkConfig.get()['voip_mxid_translate_pattern']; + if (!templateString) return null; + + const regexString = templateString.replace('${mxid}', '(.+)'); + + const match = userId.match('^' + regexString + '$'); + if (!match) return null; + + return decodeURIComponent(match[1].replace(/=/g, '%')); +} + +async function getOrCreateVirtualRoomForUser(userId: string):Promise { + const virtualUser = userToVirtualUser(userId); + if (!virtualUser) return null; + + return await ensureDMExists(MatrixClientPeg.get(), virtualUser); +} + +export async function getOrCreateVirtualRoomForRoom(roomId: string):Promise { + const user = DMRoomMap.shared().getUserIdForRoomId(roomId); + if (!user) return null; + return getOrCreateVirtualRoomForUser(user); +} + +export function roomForVirtualRoom(roomId: string):string { + const virtualUser = DMRoomMap.shared().getUserIdForRoomId(roomId); + if (!virtualUser) return null; + const realUser = virtualUserToUser(virtualUser); + const room = findDMForUser(MatrixClientPeg.get(), realUser); + if (room) { + return room.roomId; + } else { + return null; + } +} + +export function isVirtualRoom(roomId: string):boolean { + const virtualUser = DMRoomMap.shared().getUserIdForRoomId(roomId); + if (!virtualUser) return null; + const realUser = virtualUserToUser(virtualUser); + return Boolean(realUser); +} diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 4ddff8f4b0..da430e622a 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -109,9 +109,12 @@ function HangupButton(props) { dis.dispatch({ action, - // hangup the call for this room, which may not be the room in props - // (e.g. conferences which will hangup the 1:1 room instead) - room_id: call.roomId, + // hangup the call for this room. NB. We use the room in props as the room ID + // as call.roomId may be the 'virtual room', and the dispatch actions always + // use the user-facing room (there was a time when we deliberately used + // call.roomId and *not* props.roomId, but that was for the old + // style Freeswitch conference calls and those times are gone.) + room_id: props.roomId, }); }; diff --git a/src/components/views/voip/CallView.tsx b/src/components/views/voip/CallView.tsx index 6fbc396bee..fac87bf02a 100644 --- a/src/components/views/voip/CallView.tsx +++ b/src/components/views/voip/CallView.tsx @@ -212,9 +212,10 @@ export default class CallView extends React.Component { }; private onExpandClick = () => { + const userFacingRoomId = CallHandler.roomIdForCall(this.props.call); dis.dispatch({ action: 'view_room', - room_id: this.props.call.roomId, + room_id: userFacingRoomId, }); }; @@ -340,27 +341,33 @@ export default class CallView extends React.Component { }; private onRoomAvatarClick = () => { + const userFacingRoomId = CallHandler.roomIdForCall(this.props.call); dis.dispatch({ action: 'view_room', - room_id: this.props.call.roomId, + room_id: userFacingRoomId, }); } private onSecondaryRoomAvatarClick = () => { + const userFacingRoomId = CallHandler.roomIdForCall(this.props.secondaryCall); + dis.dispatch({ action: 'view_room', - room_id: this.props.secondaryCall.roomId, + room_id: userFacingRoomId, }); } private onCallResumeClick = () => { - CallHandler.sharedInstance().setActiveCallRoomId(this.props.call.roomId); + const userFacingRoomId = CallHandler.roomIdForCall(this.props.call); + CallHandler.sharedInstance().setActiveCallRoomId(userFacingRoomId); } public render() { const client = MatrixClientPeg.get(); - const callRoom = client.getRoom(this.props.call.roomId); - const secCallRoom = this.props.secondaryCall ? client.getRoom(this.props.secondaryCall.roomId) : null; + const callRoomId = CallHandler.roomIdForCall(this.props.call); + const secondaryCallRoomId = CallHandler.roomIdForCall(this.props.secondaryCall); + const callRoom = client.getRoom(callRoomId); + const secCallRoom = this.props.secondaryCall ? client.getRoom(secondaryCallRoomId) : null; let dialPad; let contextMenu; @@ -456,7 +463,7 @@ export default class CallView extends React.Component { onClick={() => { dis.dispatch({ action: 'hangup', - room_id: this.props.call.roomId, + room_id: callRoomId, }); }} /> diff --git a/src/components/views/voip/IncomingCallBox.tsx b/src/components/views/voip/IncomingCallBox.tsx index 8e1d23e38e..a495093d85 100644 --- a/src/components/views/voip/IncomingCallBox.tsx +++ b/src/components/views/voip/IncomingCallBox.tsx @@ -70,7 +70,7 @@ export default class IncomingCallBox extends React.Component { e.stopPropagation(); dis.dispatch({ action: 'answer', - room_id: this.state.incomingCall.roomId, + room_id: CallHandler.roomIdForCall(this.state.incomingCall), }); }; @@ -78,7 +78,7 @@ export default class IncomingCallBox extends React.Component { e.stopPropagation(); dis.dispatch({ action: 'reject', - room_id: this.state.incomingCall.roomId, + room_id: CallHandler.roomIdForCall(this.state.incomingCall), }); }; @@ -89,7 +89,7 @@ export default class IncomingCallBox extends React.Component { let room = null; if (this.state.incomingCall) { - room = MatrixClientPeg.get().getRoom(this.state.incomingCall.roomId); + room = MatrixClientPeg.get().getRoom(CallHandler.roomIdForCall(this.state.incomingCall)); } const caller = room ? room.name : _t("Unknown caller"); diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index b239b809fe..4a1e4e630d 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -398,6 +398,10 @@ export const SETTINGS: {[setting: string]: ISetting} = { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: null, }, + "voip_mxid_translate_pattern": { + supportedLevels: LEVELS_UI_FEATURE, // not a UI feature, but same level (config only, maybe .well-known in future) + default: null, + }, "language": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: "en", diff --git a/src/stores/room-list/filters/VisibilityProvider.ts b/src/stores/room-list/filters/VisibilityProvider.ts index 553dd33ce0..6bc790bb1e 100644 --- a/src/stores/room-list/filters/VisibilityProvider.ts +++ b/src/stores/room-list/filters/VisibilityProvider.ts @@ -16,6 +16,7 @@ import {Room} from "matrix-js-sdk/src/models/room"; import { RoomListCustomisations } from "../../../customisations/RoomList"; +import { isVirtualRoom, voipUserMapperEnabled } from "../../../VoipUserMapper"; export class VisibilityProvider { private static internalInstance: VisibilityProvider; @@ -31,18 +32,13 @@ export class VisibilityProvider { } public isRoomVisible(room: Room): boolean { - /* eslint-disable prefer-const */ let isVisible = true; // Returned at the end of this function let forced = false; // When true, this function won't bother calling the customisation points - /* eslint-enable prefer-const */ - // ------ - // TODO: The `if` statements to control visibility of custom room types - // would go here. The remainder of this function assumes that the statements - // will be here. - // - // When removing this comment block, please remove the lint disable lines in the area. - // ------ + if (voipUserMapperEnabled() && isVirtualRoom(room.roomId)) { + isVisible = false; + forced = true; + } const isVisibleFn = RoomListCustomisations.isRoomVisible; if (!forced && isVisibleFn) { diff --git a/test/VoipUserMapper-test.ts b/test/VoipUserMapper-test.ts new file mode 100644 index 0000000000..a736efd6be --- /dev/null +++ b/test/VoipUserMapper-test.ts @@ -0,0 +1,31 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { userToVirtualUser, virtualUserToUser } from '../src/VoipUserMapper'; + +const templateString = '@_greatappservice_${mxid}:frooble.example'; +const realUser = '@alice:boop.example'; +const virtualUser = "@_greatappservice_%40alice%3Aboop.example:frooble.example"; + +describe('VoipUserMapper', function() { + it('translates users to virtual users', function() { + expect(userToVirtualUser(realUser, templateString)).toEqual(virtualUser); + }); + + it('translates users to virtual users', function() { + expect(virtualUserToUser(virtualUser, templateString)).toEqual(realUser); + }); +}); From f023fc50e28e1c581e5770198df7b21c5f17f519 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 21 Jan 2021 13:22:44 -0700 Subject: [PATCH 106/275] Update src/stores/widgets/WidgetLayoutStore.ts Co-authored-by: J. Ryan Stinnett --- src/stores/widgets/WidgetLayoutStore.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index bce684241d..b6320defb9 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -149,7 +149,7 @@ export class WidgetLayoutStore extends ReadyWatchingStore { } }; - private updateFromWidgetStore = (roomId?:string) => { + private updateFromWidgetStore = (roomId?: string) => { if (roomId) { const room = this.matrixClient.getRoom(roomId); if (room) this.recalculateRoom(room); From f1c63437c37d3bea331d8aaa2a68cb3838fb1923 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Thu, 21 Jan 2021 19:44:50 +0000 Subject: [PATCH 107/275] Translated using Weblate (German) Currently translated at 99.2% (2709 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 14fba36d90..1fb295fd51 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2979,5 +2979,29 @@ "Sends the given message with snowfall": "Sendet die gewählte Nachricht mit Schneeflocken", "Transfer": "Übertragen", "Failed to transfer call": "Anruf-Übertragung fehlgeschlagen", - "A call can only be transferred to a single user.": "Ein Anruf kann nur auf einen einzelnen Nutzer übertragen werden." + "A call can only be transferred to a single user.": "Ein Anruf kann nur auf einen einzelnen Nutzer übertragen werden.", + "Set up with a Security Key": "Mit einem Sicherheitsschlüssel einrichten", + "Use Security Key": "Sicherheitsschlüssel benutzen", + "Use Security Key or Phrase": "Sicherheitsschlüssel oder -phrase benutzen", + "Not a valid Security Key": "Kein gültiger Sicherheisschlüssel", + "This looks like a valid Security Key!": "Dies sieht aus wie ein gültiger Sicherheitsschlüssel!", + "Enter Security Key": "Sicherheitsschlüssel eingeben", + "Enter Security Phrase": "Sicherheitsphrase eingeben", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Das Backup konnte mit dieser Sicherheitsphrase nicht entschlüsselt werden: Bitte überprüfe, ob du die richtige Sicherheitsphrase eingegeben hast.", + "Incorrect Security Phrase": "Falsche Sicherheitsphrase", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Das Backup konnte mit diesem Sicherheitsschlüssel nicht entschlüsselt werden: Bitte überprüfe, ob du den richtigen Sicherheitsschlüssel eingegeben hast.", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Zugriff auf geheimen Speicher nicht möglich. Bitte überprüfe, ob du die richtige Sicherheitsphrase eingegeben hast.", + "Invalid Security Key": "Ungültiger Sicherheitsschlüssel", + "Wrong Security Key": "Falscher Sicherheitsschlüssel", + "We recommend you change your password and Security Key in Settings immediately": "Wir empfehlen dir, dein Passwort und deinen Sicherheitsschlüssel sofort in den Einstellungen zu ändern", + "There was an error finding this widget.": "Fehler beim Finden dieses Widgets.", + "Active Widgets": "Aktive Widgets", + "Open dial pad": "Wähltastatur öffnen", + "Start a Conversation": "Beginne eine Konversation", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Sichere deine Verschlüsselungsschlüssel mit deinen Kontodaten, falls du den Zugriff auf deine Sitzungen verlierst. Deine Schlüssel werden mit einem eindeutigen Sicherheitsschlüssel gesichert.", + "Channel: ": "Kanal: ", + "Workspace: ": "Arbeitsraum: ", + "Dial pad": "Wähltastatur", + "There was an error looking up the phone number": "Beim Suchen der Telefonnummer ist ein Fehler aufgetreten", + "Change which room, message, or user you're viewing": "Ändere welchen Raum, Nachricht oder Nutzer du siehst" } From 133eafa77497fbd31b24447e00c375cc91ab0187 Mon Sep 17 00:00:00 2001 From: Miquel Lionel Date: Thu, 21 Jan 2021 19:02:22 +0000 Subject: [PATCH 108/275] Translated using Weblate (French) Currently translated at 97.2% (2655 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 66 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 81482b43fd..2e5f7851c3 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2871,5 +2871,69 @@ "See %(eventType)s events posted to this room": "Voir les événements %(eventType)s publiés dans ce salon", "Send %(eventType)s events as you in this room": "Envoie des événements %(eventType)s en tant que vous dans ce salon", "Send stickers to your active room as you": "Envoie des stickers en tant que vous dans le salon actuel", - "Continue with %(ssoButtons)s": "Continuer avec %(ssoButtons)s" + "Continue with %(ssoButtons)s": "Continuer avec %(ssoButtons)s", + "About homeservers": "À propos des serveurs d'accueils", + "Learn more": "En savoir plus", + "Use your preferred Matrix homeserver if you have one, or host your own.": "Utilisez votre serveur d'accueil Matrix préféré si vous en avez un, ou hébergez le vôtre.", + "Other homeserver": "Autre serveur d'accueil", + "We call the places where you can host your account ‘homeservers’.": "Nous appelons ‘serveur d'accueils’ les lieux où vous pouvez héberger votre compte.", + "Sign into your homeserver": "Connectez-vous sur votre serveur d'accueil", + "Matrix.org is the biggest public homeserver in the world, so it’s a good place for many.": "Matrix.org est le plus grand serveur d'accueil dans le monde, donc c'est un bon lieu pour beaucoup.", + "Specify a homeserver": "Spécifiez un serveur d'accueil", + "Invalid URL": "URL invalide", + "Unable to validate homeserver": "Impossible de valider le serveur d'accueil", + "Just a heads up, if you don't add an email and forget your password, you could permanently lose access to your account.": "Juste une remarque, si vous n'ajoutez pas un email et que vous oubliez votre mot de passe, vous pourriez perdre définitivement l'accés à votre compte.", + "Continuing without email": "Continuer sans email", + "Transfer": "Transférer", + "Failed to transfer call": "N'a pas réussi à transférer l'appel", + "A call can only be transferred to a single user.": "Un appel peut seulement être transféré à un seul utilisateur.", + "Invite by email": "Inviter par email", + "Active Widgets": "Gadgets actifs", + "Reason (optional)": "Raison (optionnelle)", + "Continue with %(provider)s": "Continuer avec %(provider)s", + "Homeserver": "Serveur d'accueil", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Element with an existing Matrix account on a different homeserver.": "Vous pouvez utiliser les options de serveur personnalisés pour vous connecter à d'autres serveurs Matrix en spécifiant une URL de serveur d'accueil différente. Celà vous permet d'utiliser Element avec un compte Matrix existant sur un serveur d'accueil différent.", + "Server Options": "Options serveur", + "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their avatar.": "Les messages ici sont chiffrés de bout en bout. Quand les gens joignent, vous pouvez les vérifiez dans leur profil, tappez juste sur leur avatar.", + "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "Les messages ici sont chiffrés de bout en bout. Vérifiez %(displayName)s dans leur profil - tapez sur leur avatar.", + "Role": "Rôle", + "Use the + to make a new room or explore existing ones below": "Utilisez le + pour créer un nouveau salon ou explorer les existantes ci-dessous", + "This is the start of .": "C'est le début de .", + "Add a photo, so people can easily spot your room.": "Ajoutez une photo afin que les gens repèrent facilement votre salon.", + "%(displayName)s created this room.": "%(displayName)s a créé ce salon.", + "You created this room.": "Vous avez créé ce salon.", + "Add a topic to help people know what it is about.": "Ajoutez un sujet pour aider les gens à savoir de quoi il est question.", + "Topic: %(topic)s ": "Sujet : %(topic)s ", + "Topic: %(topic)s (edit)": "Sujet : %(topic)s (éditer)", + "This is the beginning of your direct message history with .": "C'est le début de votre historique de messages direct avec .", + "Only the two of you are in this conversation, unless either of you invites anyone to join.": "Seulement vous deux êtes dans cette conversation, à moins que l'un de vous invite quelqu'un à joindre.", + "%(name)s on hold": "%(name)s est en attente", + "Return to call": "Revenir à l'appel", + "Fill Screen": "Remplir l'écran", + "Voice Call": "Appel vocal", + "Video Call": "Appel vidéo", + "%(peerName)s held the call": "%(peerName)s a mis l'appel en pause", + "You held the call Resume": "Vous avez mis l'appel en attente Reprendre", + "You held the call Switch": "Vous avez mis l'appel en attente Basculer", + "sends snowfall": "envoie une chute de neige", + "Sends the given message with snowfall": "Envoie le message donné avec une chute de neige", + "sends fireworks": "envoie des feux d'artifices", + "Sends the given message with fireworks": "Envoie le message donné avec des feux d'artifices", + "sends confetti": "envoie des confettis", + "Sends the given message with confetti": "Envoie le message avec des confettis", + "Show chat effects": "Montrer les effets cosmétiques du chat", + "Use Command + Enter to send a message": "Utilisez Ctrl + Entrée pour envoyer un message", + "Render LaTeX maths in messages": "Formate et affiche les maths format LaTeX dans les messages", + "New version of %(brand)s is available": "Nouvelle version de %(brand)s disponible", + "Update %(brand)s": "Mettre à jour %(brand)s", + "Enable desktop notifications": "Activer les notifications sur le bureau", + "Don't miss a reply": "Ne ratez pas une réponse", + "See %(msgtype)s messages posted to your active room": "Voir les messages de type %(msgtype)s publiés dans le salon actuel", + "See %(msgtype)s messages posted to this room": "Voir les messages de type %(msgtype)s publiés dans ce salon", + "Send %(msgtype)s messages as you in this room": "Envoie des messages de type%(msgtype)s en tant que vous dans ce salon", + "Send %(msgtype)s messages as you in your active room": "Envoie des messages de type %(msgtype)s en tant que vous dans votre salon actuel", + "See general files posted to your active room": "Voir les fichiers postés dans votre salon actuel", + "See general files posted to this room": "Voir les fichiers postés dans ce salon", + "Send general files as you in your active room": "Envoie des fichiers en tant que vous dans votre salon actuel", + "Send general files as you in this room": "Envoie des fichiers en tant que vous dans ce salon" } From 7d53a1fc23367456043687893f5a9ba96b704a15 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Thu, 21 Jan 2021 19:30:24 +0000 Subject: [PATCH 109/275] Translated using Weblate (Hungarian) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 7fd2aa0daf..14d30e4aa0 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -2988,5 +2988,38 @@ "Unable to look up phone number": "A telefonszámot nem sikerült megtalálni", "Workspace: ": "Munkaterület: ", "Change which room, message, or user you're viewing": "Azon szoba, üzenet vagy felhasználó megváltoztatása amit éppen néz", - "Channel: ": "Csatorna: " + "Channel: ": "Csatorna: ", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "A munkamenet észrevette, hogy a Biztonságos üzenetek Biztonsági Jelmondata és Kulcsa törölve lett.", + "A new Security Phrase and key for Secure Messages have been detected.": "A Biztonságos üzenetekhez új Biztonsági Jelmondatot és kulcsot észleltünk.", + "Make a copy of your Security Key": "Készítsen másolatot a Biztonsági Kulcsról", + "Confirm your Security Phrase": "Biztonsági Jelmondat megerősítése", + "Secure your backup with a Security Phrase": "Védje a mentését a Biztonsági Jelmondattal", + "Your Security Key is in your Downloads folder.": "A Biztonsági Kulcsa a Letöltések mappában van.", + "Your Security Key has been copied to your clipboard, paste it to:": "A Biztonsági Kulcsa a vágólapra lett másolva, illessze be ide:", + "Your Security Key": "Biztonsági Kulcsa", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "A Biztonsági Kulcs egy biztonsági háló - arra az esetre ha elfelejti a Biztonsági Jelmondatot - a titkosított üzenetekhez való hozzáférés visszaállításához.", + "Repeat your Security Phrase...": "Ismételje meg a Biztonsági Jelmondatát…", + "Please enter your Security Phrase a second time to confirm.": "A megerősítéshez kérjük adja meg a Biztonsági Jelmondatot még egyszer.", + "Set up with a Security Key": "Beállítás Biztonsági Kulccsal", + "Great! This Security Phrase looks strong enough.": "Nagyszerű! Ez a Biztonsági Jelmondat elég erősnek tűnik.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "A kulcsait titkosított formában tároljuk a szerverünkön. Helyezze biztonságba a mentését a Biztonsági Jelmondattal.", + "Use Security Key": "Használjon Biztonsági Kulcsot", + "Use Security Key or Phrase": "Használjon Biztonsági Kulcsot vagy Jelmondatot", + "If you've forgotten your Security Key you can ": "Ha elfelejtette a Biztonsági Kulcsot ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "A Biztonsági Kulcs megadásával hozzáférhet a régi biztonságos üzeneteihez és beállíthatja a biztonságos üzenetküldést.", + "Not a valid Security Key": "Érvénytelen Biztonsági Kulcs", + "This looks like a valid Security Key!": "Ez érvényes Biztonsági Kulcsnak tűnik!", + "Enter Security Key": "Biztonsági Kulcs megadása", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Ha elfelejtette a Biztonsági Jelmondatot, használhatja a Biztonsági Kulcsot vagy új Biztonsági paramétereket állíthat be", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "A Biztonsági Jelmondattal hozzáférhet a régi titkosított üzeneteihez és beállíthatja a biztonságos üzenetküldést.", + "Enter Security Phrase": "Biztonsági Jelmondat megadása", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "A mentést nem lehet visszafejteni ezzel a Biztonsági Jelmondattal: kérjük ellenőrizze, hogy a megfelelő Biztonsági Jelmondatot adta-e meg.", + "Incorrect Security Phrase": "Helytelen Biztonsági Jelmondat", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Ezzel a Biztonsági Kulccsal a mentést nem lehet visszafejteni: kérjük ellenőrizze, hogy a Biztonsági Kulcsot jól adta-e meg.", + "Security Key mismatch": "A Biztonsági Kulcsok nem egyeznek", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "A biztonsági tárolóhoz nem lehet hozzáférni. Kérjük ellenőrizze, hogy jó Biztonsági jelmondatot adott-e meg.", + "Invalid Security Key": "Érvénytelen Biztonsági Kulcs", + "Wrong Security Key": "Hibás Biztonsági Kulcs", + "We recommend you change your password and Security Key in Settings immediately": "Javasoljuk, hogy a jelszavát és a Biztonsági kulcsát mihamarabb változtassa meg a Beállításokban", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Mentse el a titkosítási kulcsokat a fiókadatokkal arra az esetre ha elvesztené a hozzáférést a munkameneteihez. A kulcsok egy egyedi Biztonsági Kulccsal lesznek védve." } From 84fef662c5980ed6b1eae6033c79b34071ff3c6c Mon Sep 17 00:00:00 2001 From: waclaw66 Date: Thu, 21 Jan 2021 20:20:59 +0000 Subject: [PATCH 110/275] Translated using Weblate (Czech) Currently translated at 100.0% (2729 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 2069e7f755..7c9ba3540d 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -2907,5 +2907,38 @@ "Unable to look up phone number": "Nelze nalézt telefonní číslo", "Channel: ": "Kanál: ", "Change which room, message, or user you're viewing": "Změňte, kterou místnost, zprávu nebo uživatele si prohlížíte", - "Workspace: ": "Pracovní oblast: " + "Workspace: ": "Pracovní oblast: ", + "If you've forgotten your Security Key you can ": "Pokud jste zapomněli bezpečnostní klíč, můžete ", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Pokud jste zapomněli bezpečnostní frázi, můžete použít bezpečnostní klíč nebo nastavit nové možnosti obnovení", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Zálohu nebylo možné dešifrovat pomocí této bezpečnostní fráze: ověřte, zda jste zadali správnou bezpečnostní frázi.", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Zálohu nebylo možné dešifrovat pomocí tohoto bezpečnostního klíče: ověřte, zda jste zadali správný bezpečnostní klíč.", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Zálohujte šifrovací klíče s daty účtu pro případ, že ztratíte přístup k relacím. Vaše klíče budou zabezpečeny jedinečným bezpečnostním klíčem.", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Váš bezpečnostní klíč je bezpečnostní síť - můžete ji použít k obnovení přístupu k šifrovaným zprávám, pokud zapomenete bezpečnostní frázi.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Na náš server uložíme zašifrovanou kopii vašich klíčů. Zabezpečte zálohu pomocí bezpečnostní fráze.", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Vstupte do historie zabezpečených zpráv a nastavte zabezpečené zprávy zadáním bezpečnostního klíče.", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Vstupte do historie zabezpečených zpráv a nastavte zabezpečené zprávy zadáním bezpečnostní fráze.", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Nelze získat přístup k zabezpečenému úložišti. Ověřte, zda jste zadali správnou bezpečnostní frázi.", + "We recommend you change your password and Security Key in Settings immediately": "Doporučujeme vám okamžitě změnit heslo a bezpečnostní klíč v Nastavení", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Tato relace zjistila, že byla odstraněna vaše bezpečnostní fráze a klíč pro zabezpečené zprávy.", + "A new Security Phrase and key for Secure Messages have been detected.": "Byla zjištěna nová bezpečnostní fráze a klíč pro zabezpečené zprávy.", + "Make a copy of your Security Key": "Vytvořte kopii bezpečnostního klíče", + "Confirm your Security Phrase": "Potvrďte svou bezpečnostní frázi", + "Secure your backup with a Security Phrase": "Zabezpečte zálohu pomocí bezpečnostní fráze", + "Repeat your Security Phrase...": "Zopakujte vaši bezpečnostní frázi...", + "Set up with a Security Key": "Nastavit pomocí bezpečnostního klíče", + "Use Security Key": "Použít bezpečnostní klíč", + "This looks like a valid Security Key!": "Vypadá to jako platný bezpečnostní klíč!", + "Invalid Security Key": "Neplatný bezpečnostní klíč", + "Your Security Key has been copied to your clipboard, paste it to:": "Váš bezpečnostní klíč byl zkopírován do schránky, vložte jej do:", + "Your Security Key is in your Downloads folder.": "Váš bezpečnostní klíč je ve složce Stažené soubory.", + "Your Security Key": "Váš bezpečnostní klíč", + "Please enter your Security Phrase a second time to confirm.": "Potvrďte prosím svou bezpečnostní frázi.", + "Great! This Security Phrase looks strong enough.": "Skvělé! Tato bezpečnostní fráze vypadá dostatečně silně.", + "Use Security Key or Phrase": "Použijte bezpečnostní klíč nebo frázi", + "Not a valid Security Key": "Neplatný bezpečnostní klíč", + "Enter Security Key": "Zadejte bezpečnostní klíč", + "Enter Security Phrase": "Zadejte bezpečnostní frázi", + "Incorrect Security Phrase": "Nesprávná bezpečnostní fráze", + "Security Key mismatch": "Neshoda bezpečnostního klíče", + "Wrong Security Key": "Špatný bezpečnostní klíč" } From 1c19ee0b0689e95d59e0f4be159575cc604fac2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slobodan=20Simi=C4=87?= Date: Thu, 21 Jan 2021 19:42:19 +0000 Subject: [PATCH 111/275] Translated using Weblate (Serbian) Currently translated at 47.1% (1287 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 301af81119..50f84fa94e 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -1358,5 +1358,39 @@ "This homeserver has exceeded one of its resource limits.": "Овај сервер је достигао ограничење неког свог ресурса.", "Unexpected error resolving homeserver configuration": "Неочекивана грешка при откривању подешавања сервера", "No homeserver URL provided": "Није наведен УРЛ сервера", - "Cannot reach homeserver": "Сервер ми је недоступан" + "Cannot reach homeserver": "Сервер ми је недоступан", + "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s додаде алтернативну адресу %(addresses)s за ову собу.", + "%(senderName)s removed the main address for this room.": "%(senderName)s уклони главну адресу за ову собу.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s постави главну адресу собе на %(address)s.", + "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Свим серверима је забрањено да учествују! Ова соба се више не може користити.", + "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s измени гостински приступ на %(rule)s", + "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s спречи госте да се придруже у соби.", + "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s дозволи гостима да се придруже у собу.", + "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s измени правило придруживања на %(rule)s", + "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s учини собу доступном само позивницом.", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s учини собу јавном за све који знају везу.", + "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s измени назив собе из %(oldRoomName)s у %(newRoomName)s.", + "%(senderName)s made no change.": "%(senderName)s не направи измене.", + "Takes the call in the current room off hold": "Узима позив са чекања у тренутној соби", + "Places the call in the current room on hold": "Ставља позив на чекање у тренутној соби", + "Sends a message to the given user": "Шаље поруку наведеном кориснику", + "Opens chat with the given user": "Отвара ћаскање са наведеним корисником", + "Displays information about a user": "Приказује податке о кориснику", + "Displays list of commands with usages and descriptions": "Приказује списак команди са употребом и описом", + "Sends the given message coloured as a rainbow": "Шаље наведену поруку у дугиним бојама", + "WARNING: Session already verified, but keys do NOT MATCH!": "УПОЗОРЕЊЕ: Сесија је већ верификована али се кључеви НЕ ПОКЛАПАЈУ!", + "Session already verified!": "Сесија је већ верификована!", + "Unknown (user, session) pair:": "Непознат пар (корисник, сесија):", + "You cannot modify widgets in this room.": "Не можете мењати виџете у овој соби.", + "Please supply a https:// or http:// widget URL": "Наведите https:// или http:// УРЛ виџета", + "Please supply a widget URL or embed code": "Наведите УРЛ виџета или убаците код", + "Adds a custom widget by URL to the room": "У собу додаје посебан виџет помоћу УРЛ-а", + "Could not find user in room": "Не налазим корисника у соби", + "Command failed": "Команда неуспешна", + "Unbans user with given ID": "Скида забрану са корисника са датим ИД", + "Unrecognised room address:": "Непозната адреса собе:", + "Joins room with given address": "Придружује се соби са датом адресом", + "Use an identity server to invite by email. Manage in Settings.": "Користите сервер идентитета за позивнице е-поштом. Управљајте у поставкама.", + "Use an identity server": "Користи сервер идентитета", + "Failed to set topic": "Нисам успео да поставим тему" } From 4c88c754c590c503c78e585ddeee34a6e67b74a1 Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Thu, 21 Jan 2021 18:42:09 +0000 Subject: [PATCH 112/275] Translated using Weblate (Albanian) Currently translated at 99.6% (2720 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sq/ --- src/i18n/strings/sq.json | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 4069a32968..92004af177 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2981,5 +2981,41 @@ "Start a Conversation": "Filloni një Bisedë", "Dial pad": "Butona numrash", "There was an error looking up the phone number": "Pati një gabim gjatë kërkimit të numrit të telefonit", - "Unable to look up phone number": "S’arrihet të kërkohet numër telefoni" + "Unable to look up phone number": "S’arrihet të kërkohet numër telefoni", + "Your Security Key": "Kyçi juaj i Sigurisë", + "Your Security Key is in your Downloads folder.": "Kyçi juaj i Sigurisë gjendet te dosja juaj Shkarkime.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Do të ruajmë një kopje të fshehtëzuar të kyçeve tuaj në shërbyesin tonë. Siguroni kopjeruajtjen tuaj me një Frazë Sigurie.", + "Use Security Key": "Përdorni Kyç Sigurie", + "A new Security Phrase and key for Secure Messages have been detected.": "Janë pikasur një Frazë e re Sigurie dhe kyç i ri për Mesazhe të Sigurt.", + "If you've forgotten your Security Key you can ": "Nëse keni harruar Kyçin tuaj të Sigurisë, mund të .", + "Your Security Key has been copied to your clipboard, paste it to:": "Kyçi juaj i Sigurisë është kopjuar te e papastra juaj, ngjiteni te:", + "Confirm your Security Phrase": "Ripohoni Frazën tuaj të Sigurisë", + "Secure your backup with a Security Phrase": "Sigurojeni kopjeruajtjen tuaj me një Frazë Sigurie.", + "Repeat your Security Phrase...": "Përsëritni Frazën tuaj të Sigurisë…", + "Please enter your Security Phrase a second time to confirm.": "Ju lutemi, që të ripohohet, rijepeni Frazën tuaj të Sigurisë.", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Ky sesion ka pikasur se Fraza e Sigurisë dhe kyçi juaj për Mesazhe të Sigurt janë hequr.", + "Use Security Key or Phrase": "Përdorni Kyç ose Frazë Sigurie", + "Great! This Security Phrase looks strong enough.": "Bukur! Kjo Frazë Sigurie duket goxha e fuqishme.", + "Set up with a Security Key": "Ujdiseni me një Kyç Sigurie", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Hyni te historiku i mesazheve tuaj të siguruar dhe rregulloni shkëmbim mesazhesh të sigurt duke dhënë Kyçin tuaj të Sigurisë.", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Kyçi juaj i Sigurisë është një rrjetë sigurie - mund ta përdorni të të rifituar hyrje te mesazhet tuaj të fshehtëzuar, nëse harroni Frazën tuaj të Sigurisë.", + "Make a copy of your Security Key": "Bëni një kopje të Kyçit tuaj të Sigurisë", + "Not a valid Security Key": "Kyç Sigurie jo i vlefshëm", + "This looks like a valid Security Key!": "Ky duket si Kyç i vlefshëm Sigurie!", + "Enter Security Key": "Jepni Kyç Sigurie", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Nëse keni harruar Frazën tuaj të Sigurisë, mund të përdorni Kyçin tuaj të Sigurisë ose të ujdisni mundësi të reja rikthimi", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Hyni te historiku i mesazheve tuaj të siguruara dhe ujdisni shkëmbim të sigurt mesazhesh duke dhënë Frazën tuaj të Sigurisë.", + "Enter Security Phrase": "Jepni Frazën e Sigurisë", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Kopjeruajtja s’u shfshehtëzua dot me këtë Frazë Sigurie: ju lutemi, verifikoni se keni dhënë Frazën e saktë të Sigurisë.", + "Incorrect Security Phrase": "Frazë e Pasaktë Sigurie", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Kopjeruajtja s’mund të shfshehtëzohej me Kyçin e Sigurisë: ju lutemi, verifikoni se keni dhënë Kyçin e saktë të Sigurisë.", + "Security Key mismatch": "Mospërputhje Kyçesh Sigurie", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "S’arrihet të hyhet në depozitë të fshehtë. Ju lutemi, verifikoni se keni dhënë Frazën e saktë të Sigurisë.", + "Invalid Security Key": "Kyç Sigurie i Pavlefshëm", + "Wrong Security Key": "Kyç Sigurie i Gabuar", + "We recommend you change your password and Security Key in Settings immediately": "Rekomandojmë të ndryshoni menjëherë fjalëkalimin dhe Kyçin e Sigurisë, te Rregullimet", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Kopjeruani kyçet tuaj të fshehtëzimit me të dhënat e llogarisë tuaj, për ditën kur mund të humbni hyrje në sesionet tuaja. Kyçet tuaj do të jenë të siguruar me një Kyç unik Sigurie.", + "Channel: ": "Kanal: ", + "Workspace: ": "Hapësirë pune: ", + "Change which room, message, or user you're viewing": "Ndryshoni cilën dhomë, mesazh ose përdorues po shihni" } From 6d48b46a3ac9ca8d0e3c78a506b5c9dff08e9c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 21 Jan 2021 19:33:02 +0000 Subject: [PATCH 113/275] Translated using Weblate (Estonian) Currently translated at 99.4% (2715 of 2729 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 9ff8b2c974..68317cf31a 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -2994,5 +2994,24 @@ "Unable to look up phone number": "Telefoninumbrit ei õnnestu leida", "Channel: ": "Kanal: ", "Workspace: ": "Tööruum: ", - "Change which room, message, or user you're viewing": "Muuda jututuba, sõnumit või kasutajat, mida hetkel vaatad" + "Change which room, message, or user you're viewing": "Muuda jututuba, sõnumit või kasutajat, mida hetkel vaatad", + "Use Security Key": "Kasuta turvavõtit", + "Use Security Key or Phrase": "Kasuta turvavõtit või turvafraasi", + "If you've forgotten your Security Key you can ": "Kui sa oled unustanud oma turvavõtme, siis sa võid ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Sisestades turvavõtme pääsed ligi oma turvatud sõnumitele ning sätid tööle krüptitud sõnumivahetuse.", + "Not a valid Security Key": "Vigane turvavõti", + "This looks like a valid Security Key!": "See tundub olema õige turvavõti!", + "Enter Security Key": "Sisesta turvavõti", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Kui sa oled unustanud turvafraasi, siis sa saad kasutada oma turvavõtit või seadistada uued taastamise võimalused", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Sisestades turvafraasi, saad ligipääsu oma turvatud sõnumitele ning sätid toimima krüptitud sõnumivahetuse.", + "Enter Security Phrase": "Sisesta turvafraas", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Selle turvafraasiga ei õnnestunud varundust dekrüptida: palun kontrolli, kas sa kasutad õiget turvafraasi.", + "Incorrect Security Phrase": "Vigane turvafraas", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Selle turvavõtmega ei õnnestunud varundust dekrüptida: palun kontrolli, kas sa kasutad õiget turvavõtit.", + "Security Key mismatch": "Turvavõtmed ei klapi", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Ei õnnestu saada ligipääsu turvahoidlale. Palun kontrolli, et sa oleksid sisestanud õige turvafraasi.", + "Invalid Security Key": "Vigane turvavõti", + "Wrong Security Key": "Vale turvavõti", + "We recommend you change your password and Security Key in Settings immediately": "Me soovitame, et vaheta Seadistuste lehelt koheselt oma salasõna ja turvavõti", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Selleks puhuks, kui sa kaotad ligipääsu kõikidele oma sessioonidele, tee varukoopia oma krüptovõtmetest ja kasutajakonto seadistustest. Unikaalse turvavõtmega tagad selle, et sinu varukoopia on kaitstud." } From 591b50b1fb819f468855e90b10841fe7c9dda8c8 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 21 Jan 2021 21:51:22 +0000 Subject: [PATCH 114/275] fix issue 16226 to allow switching back to default HS. Signed-off-by: Dan Gwynne dangwynne1@gmail.com --- src/components/views/dialogs/ServerPickerDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ServerPickerDialog.tsx b/src/components/views/dialogs/ServerPickerDialog.tsx index bdc3a71826..7ca115760e 100644 --- a/src/components/views/dialogs/ServerPickerDialog.tsx +++ b/src/components/views/dialogs/ServerPickerDialog.tsx @@ -157,7 +157,7 @@ export default class ServerPickerDialog extends React.PureComponent Date: Thu, 21 Jan 2021 22:42:12 +0000 Subject: [PATCH 115/275] Oops, the tests won't work if we don't export the functions --- src/VoipUserMapper.ts | 6 ++++-- test/VoipUserMapper-test.ts | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/VoipUserMapper.ts b/src/VoipUserMapper.ts index c5de686ab8..a4f5822065 100644 --- a/src/VoipUserMapper.ts +++ b/src/VoipUserMapper.ts @@ -26,13 +26,15 @@ export function voipUserMapperEnabled(): boolean { return SdkConfig.get()['voip_mxid_translate_pattern'] !== undefined; } -function userToVirtualUser(userId: string, templateString?: string): string { +// only exported for tests +export function userToVirtualUser(userId: string, templateString?: string): string { if (templateString === undefined) templateString = SdkConfig.get()['voip_mxid_translate_pattern']; if (!templateString) return null; return templateString.replace('${mxid}', encodeURIComponent(userId).replace(/%/g, '=').toLowerCase()); } -function virtualUserToUser(userId: string, templateString?: string): string { +// only exported for tests +export function virtualUserToUser(userId: string, templateString?: string): string { if (templateString === undefined) templateString = SdkConfig.get()['voip_mxid_translate_pattern']; if (!templateString) return null; diff --git a/test/VoipUserMapper-test.ts b/test/VoipUserMapper-test.ts index a736efd6be..ee45379e4c 100644 --- a/test/VoipUserMapper-test.ts +++ b/test/VoipUserMapper-test.ts @@ -18,7 +18,7 @@ import { userToVirtualUser, virtualUserToUser } from '../src/VoipUserMapper'; const templateString = '@_greatappservice_${mxid}:frooble.example'; const realUser = '@alice:boop.example'; -const virtualUser = "@_greatappservice_%40alice%3Aboop.example:frooble.example"; +const virtualUser = "@_greatappservice_=40alice=3aboop.example:frooble.example"; describe('VoipUserMapper', function() { it('translates users to virtual users', function() { From 42b64aae8be0b6f269295f386ea562a4e4a34ba9 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Thu, 21 Jan 2021 21:17:36 +0000 Subject: [PATCH 116/275] Translated using Weblate (Hungarian) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 14d30e4aa0..92585c281a 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -3021,5 +3021,7 @@ "Invalid Security Key": "Érvénytelen Biztonsági Kulcs", "Wrong Security Key": "Hibás Biztonsági Kulcs", "We recommend you change your password and Security Key in Settings immediately": "Javasoljuk, hogy a jelszavát és a Biztonsági kulcsát mihamarabb változtassa meg a Beállításokban", - "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Mentse el a titkosítási kulcsokat a fiókadatokkal arra az esetre ha elvesztené a hozzáférést a munkameneteihez. A kulcsok egy egyedi Biztonsági Kulccsal lesznek védve." + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Mentse el a titkosítási kulcsokat a fiókadatokkal arra az esetre ha elvesztené a hozzáférést a munkameneteihez. A kulcsok egy egyedi Biztonsági Kulccsal lesznek védve.", + "Set my room layout for everyone": "A szoba megjelenésének beállítása mindenki számára", + "%(senderName)s has updated the widget layout": "%(senderName)s megváltoztatta a kisalkalmazás megjelenését" } From eaff8f1628e30020139823f2c163b0ee58c35d13 Mon Sep 17 00:00:00 2001 From: waclaw66 Date: Thu, 21 Jan 2021 21:21:06 +0000 Subject: [PATCH 117/275] Translated using Weblate (Czech) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index 7c9ba3540d..f8965a26a9 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -2940,5 +2940,7 @@ "Enter Security Phrase": "Zadejte bezpečnostní frázi", "Incorrect Security Phrase": "Nesprávná bezpečnostní fráze", "Security Key mismatch": "Neshoda bezpečnostního klíče", - "Wrong Security Key": "Špatný bezpečnostní klíč" + "Wrong Security Key": "Špatný bezpečnostní klíč", + "Set my room layout for everyone": "Nastavit všem rozložení mé místnosti", + "%(senderName)s has updated the widget layout": "%(senderName)s aktualizoval rozložení widgetu" } From 553a9f46e6c8c2e67e62e83f5671516587682d33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Thu, 21 Jan 2021 22:21:29 +0000 Subject: [PATCH 118/275] Translated using Weblate (Estonian) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/et/ --- src/i18n/strings/et.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 68317cf31a..baaa5d10f9 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -3013,5 +3013,21 @@ "Invalid Security Key": "Vigane turvavõti", "Wrong Security Key": "Vale turvavõti", "We recommend you change your password and Security Key in Settings immediately": "Me soovitame, et vaheta Seadistuste lehelt koheselt oma salasõna ja turvavõti", - "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Selleks puhuks, kui sa kaotad ligipääsu kõikidele oma sessioonidele, tee varukoopia oma krüptovõtmetest ja kasutajakonto seadistustest. Unikaalse turvavõtmega tagad selle, et sinu varukoopia on kaitstud." + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Selleks puhuks, kui sa kaotad ligipääsu kõikidele oma sessioonidele, tee varukoopia oma krüptovõtmetest ja kasutajakonto seadistustest. Unikaalse turvavõtmega tagad selle, et sinu varukoopia on kaitstud.", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Oleme tuvastanud, et selles sessioonis ei leidu turvafraasi ega krüptitud sõnumite turvavõtit.", + "A new Security Phrase and key for Secure Messages have been detected.": "Tuvastasin krüptitud sõnumite uue turvafraasi ja turvavõtme.", + "Make a copy of your Security Key": "Tee oma turvavõtmest koopia", + "Confirm your Security Phrase": "Kinnita oma turvafraasi", + "Secure your backup with a Security Phrase": "Krüpti oma varukoopia turvafraasiga", + "Your Security Key is in your Downloads folder.": "Sinu turvavõti asub sinu kaustas Allalaadimised.", + "Your Security Key has been copied to your clipboard, paste it to:": "Sinu turvavõti on kopeeritud lõikelauale, aseta ta:", + "Your Security Key": "Sinu turvavõti", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Sinu turvavõti toimib julgestusena - juhul, kui sa unustad turvafraasi, siis sa saad seda kasutada taastamaks ligipääsu krüptitud sõnumitele.", + "Repeat your Security Phrase...": "Korda oma turvafraasi...", + "Please enter your Security Phrase a second time to confirm.": "Kinnitamiseks palun sisesta turvafraas teist korda.", + "Set up with a Security Key": "Võta kasutusele turvavõti", + "Great! This Security Phrase looks strong enough.": "Suurepärane! Turvafraas on piisavalt kange.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Me salvestame krüptitud koopia sinu krüptovõtmetest oma serveris. Selle koopia krüptimisel kasutame sinu turvafraasi.", + "Set my room layout for everyone": "Kasuta minu jututoa paigutust kõigi jaoks", + "%(senderName)s has updated the widget layout": "%(senderName)s on uuendanud vidinate paigutust" } From 87f752dfa1f4395429e6bab20891d0af68c360ab Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Fri, 22 Jan 2021 22:22:33 +1300 Subject: [PATCH 119/275] Add reference to TypeScript in the comment on flow annotations Signed-off-by: Clemens Zeidler --- code_style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_style.md b/code_style.md index c90ad359b3..6333e8cd94 100644 --- a/code_style.md +++ b/code_style.md @@ -156,7 +156,7 @@ ECMAScript - Be careful mixing arrow functions and regular functions, eg. if one function in a promise chain is an arrow function, they probably all should be. - Apart from that, newer ES features should be used whenever the author deems them to be appropriate. -- Flow annotations are welcome and encouraged. +- While flow annotations are welcome and encouraged consider to migrate the JS file to TypeScript (see next section). TypeScript ---------- From 533aa0f6c5e5cbd85ca7ee36bec28c04eba86079 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Fri, 22 Jan 2021 01:46:05 +0000 Subject: [PATCH 120/275] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 37 ++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 393f644c3e..c35f15e57e 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -2996,5 +2996,40 @@ "Unable to look up phone number": "無法查詢電話號碼", "Channel: ": "頻道:", "Workspace: ": "工作空間:", - "Change which room, message, or user you're viewing": "變更您正在檢視的聊天室、訊息或使用者" + "Change which room, message, or user you're viewing": "變更您正在檢視的聊天室、訊息或使用者", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "此工作階段已偵測到您的安全密語以及安全訊息金鑰被移除。", + "A new Security Phrase and key for Secure Messages have been detected.": "偵測到新的安全密語以及安全訊息金鑰。", + "Make a copy of your Security Key": "複製您的安全金鑰", + "Confirm your Security Phrase": "確認您的安全密語", + "Secure your backup with a Security Phrase": "使用安全密語保護您的備份", + "Your Security Key is in your Downloads folder.": "您的安全金鑰在您的下載資料夾中。", + "Your Security Key has been copied to your clipboard, paste it to:": "您的安全金鑰已複製到您的剪貼簿,將其貼上至:", + "Your Security Key": "您的安全金鑰", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "您的安全金鑰是安全網,如果您忘了您的安全密語的話,您可以用它來恢復對您已加密訊息的存取權。", + "Repeat your Security Phrase...": "重複您的安全密語……", + "Please enter your Security Phrase a second time to confirm.": "請再次輸入您的安全密語以進行確認。", + "Set up with a Security Key": "使用安全金鑰設定", + "Great! This Security Phrase looks strong enough.": "很好!此安全密語看起夠強。", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "我們會將您金鑰的加密副本存在我們的伺服氣上。使用安全密語保護您的備份。", + "Use Security Key": "使用安全金鑰", + "Use Security Key or Phrase": "使用安全金鑰或密語", + "If you've forgotten your Security Key you can ": "如果您忘了您的安全金鑰,您可以", + "Access your secure message history and set up secure messaging by entering your Security Key.": "透過輸入您的安全金鑰來存取您的安全訊息歷史並設定安全訊息。", + "Not a valid Security Key": "不是有效的安全金鑰", + "This looks like a valid Security Key!": "這看起來是有效的安全金鑰!", + "Enter Security Key": "輸入安全金鑰", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "如果您忘了您的安全密語,您可以使用您的安全金鑰設定新的復原選項", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "透過輸入您的安全密語存取您的安全訊息歷史紀錄並設定安全訊息。", + "Enter Security Phrase": "輸入安全密語", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "無法使用此安全密語解密備份:請確認您是否輸入了正確的安全密語。", + "Incorrect Security Phrase": "不正確的安全密語", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "無法使用此安全金鑰解密備份:請確認您是否輸入了正確的安全金鑰。", + "Security Key mismatch": "安全金鑰不相符", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "無法存取祕密儲存空間。請確認您輸入了正確的安全密語。", + "Invalid Security Key": "無效的安全金鑰", + "Wrong Security Key": "錯誤的安全金鑰", + "We recommend you change your password and Security Key in Settings immediately": "我們建議您立刻在設定中變更您的密碼與安全金鑰", + "Set my room layout for everyone": "為所有人設定我的聊天室佈局", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "請使用您的帳號資料備份您的加密金鑰,避免您無法存取您的工作階段。您的金鑰將會以獨一無二的安全金鑰保護。", + "%(senderName)s has updated the widget layout": "%(senderName)s 已更新小工具佈局" } From 67c3df054c06850d1c88f9cc7e97c0ac90061ce6 Mon Sep 17 00:00:00 2001 From: random Date: Fri, 22 Jan 2021 10:05:36 +0000 Subject: [PATCH 121/275] Translated using Weblate (Italian) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/it/ --- src/i18n/strings/it.json | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index cd4b82cdae..52ccd70d75 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -2990,5 +2990,43 @@ "Start a Conversation": "Inizia una conversazione", "Dial pad": "Tastierino", "There was an error looking up the phone number": "Si è verificato un errore nella ricerca del numero di telefono", - "Unable to look up phone number": "Impossibile cercare il numero di telefono" + "Unable to look up phone number": "Impossibile cercare il numero di telefono", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Questa sessione ha rilevato che la tua password di sicurezza e la chiave per i messaggi sicuri sono state rimosse.", + "A new Security Phrase and key for Secure Messages have been detected.": "Sono state rilevate una nuova password di sicurezza e una chiave per i messaggi sicuri.", + "Make a copy of your Security Key": "Fai una copia della chiave di sicurezza", + "Confirm your Security Phrase": "Conferma password di sicurezza", + "Secure your backup with a Security Phrase": "Proteggi il tuo backup con una password di sicurezza", + "Your Security Key is in your Downloads folder.": "La chiave di sicurezza è nella tua cartella Scaricati.", + "Your Security Key has been copied to your clipboard, paste it to:": "La tua chiave di sicurezza è stata copiata negli appunti, incollala in:", + "Your Security Key": "La tua chiave di sicurezza", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "La chiave di sicurezza è come una rete di salvataggio - puoi usarla per recuperare l'accesso ai messaggi cifrati se dimentichi la password di sicurezza.", + "Repeat your Security Phrase...": "Ripeti la password di sicurezza...", + "Please enter your Security Phrase a second time to confirm.": "Inserisci di nuovo la password di sicurezza per confermarla.", + "Set up with a Security Key": "Imposta con una chiave di sicurezza", + "Great! This Security Phrase looks strong enough.": "Ottimo! Questa password di sicurezza sembra abbastanza robusta.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Salveremo una copia cifrata delle tue chiavi sul nostro server. Proteggi il tuo backup con una password di sicurezza.", + "Use Security Key": "Usa chiave di sicurezza", + "Use Security Key or Phrase": "Usa una chiave o password di sicurezza", + "If you've forgotten your Security Key you can ": "Se hai dimenticato la tua chiave di sicurezza puoi ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Accedi alla cronologia sicura dei messaggi e imposta la messaggistica sicura inserendo la tua chiave di sicurezza.", + "Not a valid Security Key": "Chiave di sicurezza non valida", + "This looks like a valid Security Key!": "Sembra essere una chiave di sicurezza valida!", + "Enter Security Key": "Inserisci chaive di sicurezza", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Se hai dimenticato la password di sicurezza puoi usare la tua chiave di sicurezza o impostare nuove opzioni di recupero", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Accedi alla cronologia sicura dei messaggi e imposta la messaggistica sicura inserendo la tua password di sicurezza.", + "Enter Security Phrase": "Inserisci password di sicurezza", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Impossibile decifrare il backup con questa password di sicurezza: verifica di avere inserito la password di sicurezza corretta.", + "Incorrect Security Phrase": "Password di sicurezza sbagliata", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Impossibile decifrare il backup con questa chiave di sicurezza: verifica di avere inserito la chiave di sicurezza corretta.", + "Security Key mismatch": "La chiave di sicurezza non corrisponde", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Impossibile accedere all'archivio segreto. Verifica di avere inserito la password di sicurezza giusta.", + "Invalid Security Key": "Chiave di sicurezza non valida", + "Wrong Security Key": "Chiave di sicurezza sbagliata", + "We recommend you change your password and Security Key in Settings immediately": "Ti consigliamo di cambiare immediatamente la password e la chiave di sicurezza nelle impostazioni", + "Set my room layout for everyone": "Imposta la disposizione della stanza per tutti", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Fai il backup delle tue chiavi di crittografia con i dati del tuo account in caso perdessi l'accesso alle sessioni. Le tue chiavi saranno protette con una chiave di recupero univoca.", + "Channel: ": "Canale: ", + "Workspace: ": "Spazio di lavoro: ", + "Change which room, message, or user you're viewing": "Cambia quale stanza, messaggio o utente stai vedendo", + "%(senderName)s has updated the widget layout": "%(senderName)s ha aggiornato la disposizione del widget" } From 8143f32b97b4384b69af9355599e1d432801f3cd Mon Sep 17 00:00:00 2001 From: XoseM Date: Fri, 22 Jan 2021 07:21:26 +0000 Subject: [PATCH 122/275] Translated using Weblate (Galician) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/gl/ --- src/i18n/strings/gl.json | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index aebf672fa9..8a4f472531 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2975,7 +2975,7 @@ "sends fireworks": "envía fogos de artificio", "Sends the given message with fireworks": "Envia a mensaxe dada con fogos de artificio", "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Antecede con ┬──┬ ノ( ゜-゜ノ) a unha mensaxe de texto plano", - "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Antecede con (╯°□°)╯︵ ┻━┻ a unha mensaxe de texto plano", + "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Antecede con (╯°□°)╯︵ ┻━┻ a unha mensaxe de texto plano", "%(name)s on hold": "%(name)s agardando", "You held the call Switch": "Pausaches a chamada Cambiar", "sends snowfall": "envía neve", @@ -2993,5 +2993,40 @@ "Unable to look up phone number": "Non atopamos o número de teléfono", "Channel: ": "Canle: ", "Workspace: ": "Espazo de traballo: ", - "Change which room, message, or user you're viewing": "Cambia a sala, mensaxe ou usuaria que estás vendo" + "Change which room, message, or user you're viewing": "Cambia a sala, mensaxe ou usuaria que estás vendo", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Esta sesión detectou que se eliminaron a túa Frase de Seguridade e chave para Mensaxes Seguras.", + "A new Security Phrase and key for Secure Messages have been detected.": "Detectouse unha nova Frase de Seguridade e chave para as Mensaxes Seguras.", + "Make a copy of your Security Key": "Fai unha copia da túa Chave de Seguridade", + "Confirm your Security Phrase": "Confirma a Frase de Seguridade", + "Secure your backup with a Security Phrase": "Asegura a copia cunha Frase de Seguridade", + "Your Security Key is in your Downloads folder.": "A Chave de Seguridade está no cartafol Descargas.", + "Your Security Key has been copied to your clipboard, paste it to:": "A Chave de Seguridade foi copiada ao portapapeis, pégaa en:", + "Your Security Key": "A túa Chave de Seguridade", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "A túa Chave de Seguridade é unha rede de seguridade - podes utilizala para restablecer o acceso ás mensaxes cifradas se esqueceches a Frase de Seguridade.", + "Repeat your Security Phrase...": "Repite a Frase de Seguridade...", + "Please enter your Security Phrase a second time to confirm.": "Escribe outra vez a Frase de Seguridade para confirmala.", + "Set up with a Security Key": "Configurar cunha Chave de Seguridade", + "Great! This Security Phrase looks strong enough.": "Ben! Esta Frase de Seguridade semella ser forte abondo.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Gardaremos unha copia cifrada das túas chaves no noso servidor. Asegura a túa copia cunha Frase de Seguridade.", + "Use Security Key": "Usar Chave de Seguridade", + "Use Security Key or Phrase": "Usar Chave ou Frase de Seguridade", + "If you've forgotten your Security Key you can ": "Se esqueceches a túa Chave de Seguridade podes ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Accede ao teu historial de mensaxes seguras e asegura a comunicación escribindo a Chave de Seguridade.", + "Not a valid Security Key": "Chave de Seguridade non válida", + "This looks like a valid Security Key!": "Semella unha Chave de Seguridade válida!", + "Enter Security Key": "Escribe a Chave de Seguridade", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Se esqueceches a túa Frase de Seguridade podes usar a túa Chave de Seguridade ou establecer novas opcións de recuperación", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Accede ao teu historial de mensaxes seguras e configura a comunicación segura escribindo a túa Frase de Seguridade.", + "Enter Security Phrase": "Escribe a Frase de Seguridade", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Non se puido descifrar a Copia con esta Frase de Seguridade: comproba que escribiches a Frase de Seguridade correcta.", + "Incorrect Security Phrase": "Frase de Seguridade incorrecta", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Non se puido descifrar a Copia con esta Chave de Seguridade: comproba que aplicaches a Chave de Seguridade correcta.", + "Security Key mismatch": "Non concorda a Chave de Seguridade", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Non se puido acceder ao almacenaxe segredo. Comproba que escribiches correctamente a Frase de Seguridade.", + "Invalid Security Key": "Chave de Seguridade non válida", + "Wrong Security Key": "Chave de Seguridade incorrecta", + "We recommend you change your password and Security Key in Settings immediately": "Recomendámosche cambiar o teu contrasinal e Chave de Seguridade inmediatamente nos Axustes", + "Set my room layout for everyone": "Establecer a miña disposición da sala para todas", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Fai unha copia de apoio das chaves de cifrado da túa conta en caso de perder o acceso ás túas sesións. As chaves estarán seguras cunha única Chave de Seguridade.", + "%(senderName)s has updated the widget layout": "%(senderName)s actualizou a disposición dos widgets" } From 3803a5ece1c8e411afe1b279e2d5c94768b04fd7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 22 Jan 2021 11:00:12 +0000 Subject: [PATCH 123/275] This isn't a setting any more, just a regular ol' config option --- src/settings/Settings.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/settings/Settings.ts b/src/settings/Settings.ts index 4a1e4e630d..b239b809fe 100644 --- a/src/settings/Settings.ts +++ b/src/settings/Settings.ts @@ -398,10 +398,6 @@ export const SETTINGS: {[setting: string]: ISetting} = { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, default: null, }, - "voip_mxid_translate_pattern": { - supportedLevels: LEVELS_UI_FEATURE, // not a UI feature, but same level (config only, maybe .well-known in future) - default: null, - }, "language": { supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG, default: "en", From 7413cea6eaeee68beadc8b46021a30ac159ec277 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 22 Jan 2021 16:58:47 -0700 Subject: [PATCH 124/275] Format imports because the IDE said so --- src/components/structures/RoomView.tsx | 36 +++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index 027c6b3cc3..3edfef7f18 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -21,15 +21,15 @@ limitations under the License. // - Search results component // - Drag and drop -import React, {createRef} from 'react'; +import React, { createRef } from 'react'; import classNames from 'classnames'; -import {Room} from "matrix-js-sdk/src/models/room"; -import {MatrixEvent} from "matrix-js-sdk/src/models/event"; -import {EventSubscription} from "fbemitter"; +import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { EventSubscription } from "fbemitter"; import shouldHideEvent from '../../shouldHideEvent'; -import {_t} from '../../languageHandler'; -import {RoomPermalinkCreator} from '../../utils/permalinks/Permalinks'; +import { _t } from '../../languageHandler'; +import { RoomPermalinkCreator } from '../../utils/permalinks/Permalinks'; import ResizeNotifier from '../../utils/ResizeNotifier'; import ContentMessages from '../../ContentMessages'; import Modal from '../../Modal'; @@ -40,8 +40,8 @@ import Tinter from '../../Tinter'; import rateLimitedFunc from '../../ratelimitedfunc'; import * as ObjectUtils from '../../ObjectUtils'; import * as Rooms from '../../Rooms'; -import eventSearch, {searchPagination} from '../../Searching'; -import {isOnlyCtrlOrCmdIgnoreShiftKeyEvent, Key} from '../../Keyboard'; +import eventSearch, { searchPagination } from '../../Searching'; +import { isOnlyCtrlOrCmdIgnoreShiftKeyEvent, Key } from '../../Keyboard'; import MainSplit from './MainSplit'; import RightPanel from './RightPanel'; import RoomViewStore from '../../stores/RoomViewStore'; @@ -50,13 +50,13 @@ import WidgetEchoStore from '../../stores/WidgetEchoStore'; import SettingsStore from "../../settings/SettingsStore"; import AccessibleButton from "../views/elements/AccessibleButton"; import RightPanelStore from "../../stores/RightPanelStore"; -import {haveTileForEvent} from "../views/rooms/EventTile"; +import { haveTileForEvent } from "../views/rooms/EventTile"; import RoomContext from "../../contexts/RoomContext"; import MatrixClientContext from "../../contexts/MatrixClientContext"; -import {E2EStatus, shieldStatusForRoom} from '../../utils/ShieldUtils'; -import {Action} from "../../dispatcher/actions"; -import {SettingLevel} from "../../settings/SettingLevel"; -import {IMatrixClientCreds} from "../../MatrixClientPeg"; +import { E2EStatus, shieldStatusForRoom } from '../../utils/ShieldUtils'; +import { Action } from "../../dispatcher/actions"; +import { SettingLevel } from "../../settings/SettingLevel"; +import { IMatrixClientCreds } from "../../MatrixClientPeg"; import ScrollPanel from "./ScrollPanel"; import TimelinePanel from "./TimelinePanel"; import ErrorBoundary from "../views/elements/ErrorBoundary"; @@ -67,16 +67,16 @@ import RoomUpgradeWarningBar from "../views/rooms/RoomUpgradeWarningBar"; import PinnedEventsPanel from "../views/rooms/PinnedEventsPanel"; import AuxPanel from "../views/rooms/AuxPanel"; import RoomHeader from "../views/rooms/RoomHeader"; -import {XOR} from "../../@types/common"; +import { XOR } from "../../@types/common"; import { IThreepidInvite } from "../../stores/ThreepidInviteStore"; import EffectsOverlay from "../views/elements/EffectsOverlay"; -import {containsEmoji} from '../../effects/utils'; -import {CHAT_EFFECTS} from '../../effects'; +import { containsEmoji } from '../../effects/utils'; +import { CHAT_EFFECTS } from '../../effects'; import { CallState, MatrixCall } from "matrix-js-sdk/src/webrtc/call"; import WidgetStore from "../../stores/WidgetStore"; -import {UPDATE_EVENT} from "../../stores/AsyncStore"; +import { UPDATE_EVENT } from "../../stores/AsyncStore"; import Notifier from "../../Notifier"; -import {showToast as showNotificationsToast} from "../../toasts/DesktopNotificationsToast"; +import { showToast as showNotificationsToast } from "../../toasts/DesktopNotificationsToast"; import { RoomNotificationStateStore } from "../../stores/notifications/RoomNotificationStateStore"; import { Container, WidgetLayoutStore } from "../../stores/widgets/WidgetLayoutStore"; From 6ac8803191bf4e31df430285c824efe4e82bda78 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 22 Jan 2021 17:00:30 -0700 Subject: [PATCH 125/275] Update AuxPanel and related buttons when widgets change or on reload If we have widgets we're meant to be showing due to layout or because we reloaded the page (slightly different code paths) then we need to show those. This change fixes a bug in that where the layout wasn't being applied at the right moment in time so was never showing the widgets. Seems to only be an issue if the layout state event was sent by someone other than you. --- src/components/structures/RoomView.tsx | 29 ++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index 3edfef7f18..c2236ddd14 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -282,6 +282,7 @@ export default class RoomView extends React.Component { private checkWidgets = (room) => { this.setState({ hasPinnedWidgets: WidgetLayoutStore.instance.getContainerWidgets(room, Container.Top).length > 0, + showApps: this.shouldShowApps(room), }); }; @@ -419,11 +420,17 @@ export default class RoomView extends React.Component { } private onWidgetEchoStoreUpdate = () => { + if (!this.state.room) return; this.setState({ + hasPinnedWidgets: WidgetLayoutStore.instance.getContainerWidgets(this.state.room, Container.Top).length > 0, showApps: this.shouldShowApps(this.state.room), }); }; + private onWidgetLayoutChange = () => { + this.onWidgetEchoStoreUpdate(); // we cheat here by calling the thing that matters + }; + private setupRoom(room: Room, roomId: string, joining: boolean, shouldPeek: boolean) { // if this is an unknown room then we're in one of three states: // - This is a room we can peek into (search engine) (we can /peek) @@ -489,7 +496,7 @@ export default class RoomView extends React.Component { } private shouldShowApps(room: Room) { - if (!BROWSER_SUPPORTS_SANDBOX) return false; + if (!BROWSER_SUPPORTS_SANDBOX || !room) return false; // Check if user has previously chosen to hide the app drawer for this // room. If so, do not show apps @@ -498,7 +505,11 @@ export default class RoomView extends React.Component { // This is confusing, but it means to say that we default to the tray being // hidden unless the user clicked to open it. - return hideWidgetDrawer === "false"; + const isManuallyShown = hideWidgetDrawer === "false"; + + const widgets = WidgetLayoutStore.instance.getContainerWidgets(room, Container.Top); + console.log('@@', {widgets, isManuallyShown}); + return widgets.length > 0 || isManuallyShown; } componentDidMount() { @@ -609,6 +620,10 @@ export default class RoomView extends React.Component { WidgetEchoStore.removeListener(UPDATE_EVENT, this.onWidgetEchoStoreUpdate); WidgetStore.instance.removeListener(UPDATE_EVENT, this.onWidgetStoreUpdate); + if (this.state.room) { + WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(this.state.room), this.onWidgetLayoutChange); + } + if (this.showReadReceiptsWatchRef) { SettingsStore.unwatchSetting(this.showReadReceiptsWatchRef); } @@ -836,6 +851,10 @@ export default class RoomView extends React.Component { // called when state.room is first initialised (either at initial load, // after a successful peek, or after we join the room). private onRoomLoaded = (room: Room) => { + // Attach a widget store listener only when we get a room + WidgetLayoutStore.instance.on(WidgetLayoutStore.emissionForRoom(room), this.onWidgetLayoutChange); + this.onWidgetLayoutChange(); // provoke an update + this.calculatePeekRules(room); this.updatePreviewUrlVisibility(room); this.loadMembersIfJoined(room); @@ -898,6 +917,12 @@ export default class RoomView extends React.Component { if (!room || room.roomId !== this.state.roomId) { return; } + + // Detach the listener if the room is changing for some reason + if (this.state.room) { + WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(this.state.room), this.onWidgetLayoutChange); + } + this.setState({ room: room, }, () => { From 807a8c41e300a60e58621af6abaac3274843c38a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 22 Jan 2021 17:02:00 -0700 Subject: [PATCH 126/275] Remove debug --- src/components/structures/RoomView.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index c2236ddd14..faa10f5dcf 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -508,7 +508,6 @@ export default class RoomView extends React.Component { const isManuallyShown = hideWidgetDrawer === "false"; const widgets = WidgetLayoutStore.instance.getContainerWidgets(room, Container.Top); - console.log('@@', {widgets, isManuallyShown}); return widgets.length > 0 || isManuallyShown; } From 27dc4cb57493ca9ef194a59423edc1c0875dc1e3 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 22 Jan 2021 17:03:36 -0700 Subject: [PATCH 127/275] Appease the linter --- src/components/structures/RoomView.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index faa10f5dcf..4bfe34bd8f 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -620,7 +620,10 @@ export default class RoomView extends React.Component { WidgetStore.instance.removeListener(UPDATE_EVENT, this.onWidgetStoreUpdate); if (this.state.room) { - WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(this.state.room), this.onWidgetLayoutChange); + WidgetLayoutStore.instance.off( + WidgetLayoutStore.emissionForRoom(this.state.room), + this.onWidgetLayoutChange, + ); } if (this.showReadReceiptsWatchRef) { @@ -919,7 +922,10 @@ export default class RoomView extends React.Component { // Detach the listener if the room is changing for some reason if (this.state.room) { - WidgetLayoutStore.instance.off(WidgetLayoutStore.emissionForRoom(this.state.room), this.onWidgetLayoutChange); + WidgetLayoutStore.instance.off( + WidgetLayoutStore.emissionForRoom(this.state.room), + this.onWidgetLayoutChange, + ); } this.setState({ From c20382e8d106869f71ed3d5ff94242e1cdfbbf4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slobodan=20Simi=C4=87?= Date: Fri, 22 Jan 2021 18:17:56 +0000 Subject: [PATCH 128/275] Translated using Weblate (Serbian) Currently translated at 47.1% (1287 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 50f84fa94e..59c76e01a7 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -138,8 +138,8 @@ "Enable automatic language detection for syntax highlighting": "Омогући самостално препознавање језика за истицање синтаксе", "Automatically replace plain text Emoji": "Самостално замени емоџије писане обичним текстом", "Mirror local video feed": "Копирај довод локалног видеа", - "Enable inline URL previews by default": "Подразумевано омогући претпрегледе адреса унутар линије", - "Enable URL previews for this room (only affects you)": "Омогући претпрегледе адреса у овој соби (утиче само на вас)", + "Enable inline URL previews by default": "Подразумевано укључи УРЛ прегледе", + "Enable URL previews for this room (only affects you)": "Укључи УРЛ прегледе у овој соби (утиче само на вас)", "Enable URL previews by default for participants in this room": "Подразумевано омогући прегледе адреса за чланове ове собе", "Room Colour": "Боја собе", "Active call (%(roomName)s)": "Активни позив (%(roomName)s)", @@ -269,7 +269,7 @@ "Privileged Users": "Овлашћени корисници", "No users have specific privileges in this room": "Нема корисника са посебним овлашћењима у овој соби", "Banned users": "Корисници са забраном приступа", - "This room is not accessible by remote Matrix servers": "Овој соби не могу приступити удаљени Матрикс сервери", + "This room is not accessible by remote Matrix servers": "Ова соба није доступна са удаљених Матрикс сервера", "Leave room": "Напусти собу", "Favourite": "Омиљено", "Guests cannot join this room even if explicitly invited.": "Гости не могу приступити овој соби чак и ако су експлицитно позвани.", @@ -298,11 +298,11 @@ "Showing flair for these communities:": "Приказујем беџ за ове заједнице:", "This room is not showing flair for any communities": "Ова соба не приказује беџеве било које заједнице", "New community ID (e.g. +foo:%(localDomain)s)": "Нови ИД заједнице (нпр.: +zajednica:%(localDomain)s)", - "You have enabled URL previews by default.": "Омогућили сте подразумеване претпрегледе адреса.", - "You have disabled URL previews by default.": "Онемогућили сте подразумеване претпрегледе адреса.", - "URL previews are enabled by default for participants in this room.": "Претпрегледи адреса су подразумевано омогућени за све чланове ове собе.", - "URL previews are disabled by default for participants in this room.": "Претпрегледи адреса су подразумевано онемогућени за све чланове ове собе.", - "URL Previews": "Претпрегледи адреса", + "You have enabled URL previews by default.": "Укључили сте да се УРЛ прегледи подразумевају.", + "You have disabled URL previews by default.": "Искључили сте да се УРЛ прегледи подразумевају.", + "URL previews are enabled by default for participants in this room.": "УРЛ прегледи су подразумевано укључени за чланове ове собе.", + "URL previews are disabled by default for participants in this room.": "УРЛ прегледи су подразумевано искључени за чланове ове собе.", + "URL Previews": "УРЛ прегледи", "Error decrypting audio": "Грешка при дешифровању звука", "Error decrypting attachment": "Грешка при дешифровању прилога", "Decrypt %(text)s": "Дешифруј %(text)s", @@ -971,7 +971,7 @@ "Notification settings": "Подешавања обавештења", "Please install Chrome, Firefox, or Safari for the best experience.": "Инсталирајте Хром, Фајерфокс, или Сафари за најбољи доживљај.", "%(creator)s created and configured the room.": "Корисник %(creator)s је направио и подесио собу.", - "Preview": "Претпреглед", + "Preview": "Преглед", "Switch to light mode": "Пребаци на светлу тему", "Switch to dark mode": "Пребаци на тамну тему", "Security & privacy": "Безбедност и приватност", @@ -1022,7 +1022,7 @@ "No recently visited rooms": "Нема недавно посећених соба", "Appearance": "Изглед", "Show rooms with unread messages first": "Прво прикажи собе са непрочитаним порукама", - "Show previews of messages": "Прикажи претпрегледе порука", + "Show previews of messages": "Прикажи прегледе порука", "Sort by": "Поређај по", "Activity": "Активности", "A-Z": "А-Ш", From d3281db2bf160e0b8f4a2ba88ec90f9f927faf12 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 22 Jan 2021 17:49:18 -0700 Subject: [PATCH 129/275] Update widgets in the room upon join --- src/stores/WidgetStore.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/stores/WidgetStore.ts b/src/stores/WidgetStore.ts index c53c85dfd5..4ff39aaaee 100644 --- a/src/stores/WidgetStore.ts +++ b/src/stores/WidgetStore.ts @@ -72,6 +72,7 @@ export default class WidgetStore extends AsyncStoreWithClient { } protected async onReady(): Promise { + this.matrixClient.on("Room", this.onRoom); this.matrixClient.on("RoomState.events", this.onRoomStateEvents); this.matrixClient.getRooms().forEach((room: Room) => { this.loadRoomWidgets(room); @@ -80,6 +81,7 @@ export default class WidgetStore extends AsyncStoreWithClient { } protected async onNotReady(): Promise { + this.matrixClient.off("Room", this.onRoom); this.matrixClient.off("RoomState.events", this.onRoomStateEvents); this.widgetMap = new Map(); this.roomMap = new Map(); @@ -138,6 +140,12 @@ export default class WidgetStore extends AsyncStoreWithClient { this.emit(room.roomId); } + private onRoom = (room: Room) => { + this.initRoom(room.roomId); + this.loadRoomWidgets(room); + this.emit(UPDATE_EVENT, room.roomId); + }; + private onRoomStateEvents = (ev: MatrixEvent) => { if (ev.getType() !== "im.vector.modular.widgets") return; // TODO: Support m.widget too const roomId = ev.getRoomId(); From c7ff0f302a674e1d5671c0ac6d190b95e6c5fc58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sat, 23 Jan 2021 09:35:05 +0100 Subject: [PATCH 130/275] Scroll to bottom on message_sent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/structures/MessagePanel.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js index 375545f819..b8dae41ef8 100644 --- a/src/components/structures/MessagePanel.js +++ b/src/components/structures/MessagePanel.js @@ -23,6 +23,7 @@ import classNames from 'classnames'; import shouldHideEvent from '../../shouldHideEvent'; import {wantsDateSeparator} from '../../DateUtils'; import * as sdk from '../../index'; +import dis from "../../dispatcher/dispatcher"; import {MatrixClientPeg} from '../../MatrixClientPeg'; import SettingsStore from '../../settings/SettingsStore'; @@ -207,11 +208,13 @@ export default class MessagePanel extends React.Component { componentDidMount() { this._isMounted = true; + this.dispatcherRef = dis.register(this.onAction); } componentWillUnmount() { this._isMounted = false; SettingsStore.unwatchSetting(this._showTypingNotificationsWatcherRef); + dis.unregister(this.dispatcherRef); } componentDidUpdate(prevProps, prevState) { @@ -224,6 +227,14 @@ export default class MessagePanel extends React.Component { } } + onAction = (payload) => { + switch (payload.action) { + case "message_sent": + this.scrollToBottom(); + break; + } + } + onShowTypingNotificationsChange = () => { this.setState({ showTypingNotifications: SettingsStore.getValue("showTypingNotifications"), From 593171bb795c015cbd344fb8a6e1312e9b96042d Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Sat, 23 Jan 2021 15:31:59 +0530 Subject: [PATCH 131/275] Continuing without email' dialog bug fixes --- .../views/dialogs/RegistrationEmailPromptDialog.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/views/dialogs/RegistrationEmailPromptDialog.tsx b/src/components/views/dialogs/RegistrationEmailPromptDialog.tsx index b7cc81c113..3f3ad215a5 100644 --- a/src/components/views/dialogs/RegistrationEmailPromptDialog.tsx +++ b/src/components/views/dialogs/RegistrationEmailPromptDialog.tsx @@ -44,7 +44,8 @@ const RegistrationEmailPromptDialog: React.FC = ({onFinished}) => { const [email, setEmail] = useState(""); const fieldRef = useRef(); - const onSubmit = async () => { + const onSubmit = async (e) => { + e.preventDefault(); if (email) { const valid = await fieldRef.current.validate({ allowEmpty: false }); @@ -73,6 +74,7 @@ const RegistrationEmailPromptDialog: React.FC = ({onFinished}) => {
    Date: Sat, 23 Jan 2021 12:42:32 +0000 Subject: [PATCH 132/275] Translated using Weblate (German) Currently translated at 99.9% (2730 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1fb295fd51..9fcb1058e8 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1580,7 +1580,7 @@ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s erstellte eine Ausschluss-Regel für Nutzer, die wegen %(reason)s %(glob)s entspricht", "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s erstellt eine Ausschluss-Regel für Räume, die %(glob)s aufgrund von %(reason)s entspricht", "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s erstellte eine Ausschluss-Regel für Server, die aufgrund von %(reason)s %(glob)s entsprechen", - "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s erstellt eine Ausschluss-Regel, die aufgrund von %(reason)s %(glob)s entsprechen", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s erstellte eine Ausschluss-Regel, die aufgrund von %(reason)s %(glob)s entspricht", "Do you want to chat with %(user)s?": "Möchtest du mit %(user)s chatten?", " wants to chat": " möchte mit dir chatten", "Start chatting": "Chat starten", @@ -1652,7 +1652,7 @@ "Manually Verify by Text": "Verifiziere manuell mit einem Text", "Interactively verify by Emoji": "Verifiziere interaktiv mit Emojis", "Support adding custom themes": "Unterstütze das Hinzufügen von benutzerdefinierten Designs", - "Ask this user to verify their session, or manually verify it below.": "Bitte diesen Nutzer, seine Sitzung zu verifizieren, oder verifiziere diesen unten manuell.", + "Ask this user to verify their session, or manually verify it below.": "Bitte diesen Nutzer, seine Sitzung zu verifizieren, oder verifiziere diese unten manuell.", "a few seconds from now": "in ein paar Sekunden", "Manually verify all remote sessions": "Verifiziere alle Remotesitzungen", "Confirm the emoji below are displayed on both sessions, in the same order:": "Bestätige, dass die unten angezeigten Emojis auf beiden Sitzungen in der selben Reihenfolge angezeigt werden:", From 2e3b4ecb116c841988aa0072aa9a240bc54861fb Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 12:40:19 +0000 Subject: [PATCH 133/275] Translated using Weblate (German) Currently translated at 99.9% (2730 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 9fcb1058e8..d03922765e 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1451,7 +1451,7 @@ "Filter": "Filtern", "Filter rooms…": "Räume filtern…", "You have %(count)s unread notifications in a prior version of this room.|one": "Du hast %(count)s ungelesene Benachrichtigungen in einer früheren Version dieses Raumes.", - "Go Back": "Gehe zurück", + "Go Back": "Zurückgehen", "Notification Autocomplete": "Benachrichtigung Autovervollständigen", "If disabled, messages from encrypted rooms won't appear in search results.": "Wenn deaktiviert, werden Nachrichten von verschlüsselten Räumen nicht in den Ergebnissen auftauchen.", "This user has not verified all of their sessions.": "Dieser Benutzer hat nicht alle seine Sitzungen verifiziert.", @@ -1573,7 +1573,7 @@ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Räume, die %(glob)s entsprechen", "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel für Server, die %(glob)s entsprechen", "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s entfernte die Ausschluss-Regel, die %(glob)s entspricht", - "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Nutzer, die aufgrund von %(reason)s %(glob)s entsprechen", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Nutzer:innen, die aufgrund von %(reason)s %(glob)s entsprechen", "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Räume, die aufgrund von %(reason)s %(glob)s entsprechen", "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte die Ausschluss-Regel für Server, die aufgrund von %(reason)s %(glob)s entsprechen", "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s aktualisierte eine Ausschluss-Regel, die wegen %(reason)s %(glob)s entspricht", @@ -2987,7 +2987,7 @@ "This looks like a valid Security Key!": "Dies sieht aus wie ein gültiger Sicherheitsschlüssel!", "Enter Security Key": "Sicherheitsschlüssel eingeben", "Enter Security Phrase": "Sicherheitsphrase eingeben", - "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Das Backup konnte mit dieser Sicherheitsphrase nicht entschlüsselt werden: Bitte überprüfe, ob du die richtige Sicherheitsphrase eingegeben hast.", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "Das Backup konnte mit dieser Sicherheitsphrase nicht entschlüsselt werden: Bitte überprüfe, ob du die richtige eingegeben hast.", "Incorrect Security Phrase": "Falsche Sicherheitsphrase", "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Das Backup konnte mit diesem Sicherheitsschlüssel nicht entschlüsselt werden: Bitte überprüfe, ob du den richtigen Sicherheitsschlüssel eingegeben hast.", "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Zugriff auf geheimen Speicher nicht möglich. Bitte überprüfe, ob du die richtige Sicherheitsphrase eingegeben hast.", @@ -3003,5 +3003,26 @@ "Workspace: ": "Arbeitsraum: ", "Dial pad": "Wähltastatur", "There was an error looking up the phone number": "Beim Suchen der Telefonnummer ist ein Fehler aufgetreten", - "Change which room, message, or user you're viewing": "Ändere welchen Raum, Nachricht oder Nutzer du siehst" + "Change which room, message, or user you're viewing": "Ändere welchen Raum, Nachricht oder Nutzer du siehst", + "Unable to look up phone number": "Telefonnummer kann nicht gesucht werden", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "In dieser Sitzung wurde festgestellt, dass deine Sicherheitsphrase und dein Schlüssel für sichere Nachrichten entfernt wurden.", + "A new Security Phrase and key for Secure Messages have been detected.": "Eine neue Sicherheitsphrase und ein neuer Schlüssel für sichere Nachrichten wurden erkannt.", + "Make a copy of your Security Key": "Mache eine Kopie von deinem Sicherheitsschlüssel", + "Confirm your Security Phrase": "Deine Sicherheitsphrase bestätigen", + "Secure your backup with a Security Phrase": "Sichere dein Backup mit einer Sicherheitsphrase", + "Your Security Key is in your Downloads folder.": "Dein Sicherheitsschlüssel ist in deinem Download-Ordner.", + "Your Security Key has been copied to your clipboard, paste it to:": "Dein Sicherheitsschlüssel wurde in die Zwischenablage kopiert, füge ihn ein in:", + "Your Security Key": "Dein Sicherheitsschlüssel", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "Dein Sicherheitsschlüssel ist ein Sicherheitsnetz. Du kannst ihn nutzen, um den Zugriff auf deine verschlüsselten Nachrichten wiederherzustellen, falls du deine Sicherheitsphrase vergessen hast.", + "Repeat your Security Phrase...": "Wiederhole deine Sicherheitsphrase...", + "Please enter your Security Phrase a second time to confirm.": "Gib deine Sicherheitsphrase zur Bestätigung ein zweites Mal ein.", + "Great! This Security Phrase looks strong enough.": "Großartig! Diese Sicherheitsphrase sieht stark genug aus.", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Greife auf deinen sicheren Chatverlauf zu und richte die sichere Nachrichtenübermittlung ein, indem du deine Sicherheitsphrase (z.B. einem langen Satz, den niemand errät) eingibst.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Wir werden eine verschlüsselte Kopie deiner Schlüssel auf unserem Server speichern. Sichere dein Backup mit einer Sicherheitsphrase (z.B. einem langen Satz, den niemand errät).", + "If you've forgotten your Security Key you can ": "Wenn du deinen Sicherheitsschlüssel vergessen hast, kannst du ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Greife auf deinen sicheren Chatverlauf zu und richte die sichere Nachrichtenübermittlung ein, indem du deinen Sicherheitsschlüssel eingibst.", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Wenn du deine Sicherheitsphrase vergessen hast, kannst du deinen Sicherheitsschlüssel nutzen oder neue Wiederherstellungsoptionen einrichten", + "Security Key mismatch": "Nicht übereinstimmende Sicherheitsschlüssel", + "Set my room layout for everyone": "Setze mein Raum-Layout für alle", + "%(senderName)s has updated the widget layout": "%(senderName)s hat das Widget-Layout aktualisiert" } From ae38744490a1b300d2a56438abc817a3913fd38b Mon Sep 17 00:00:00 2001 From: Bamstam Date: Sat, 23 Jan 2021 12:44:57 +0000 Subject: [PATCH 134/275] Translated using Weblate (German) Currently translated at 99.9% (2730 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index d03922765e..fe19c01151 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -451,7 +451,7 @@ "Pinned Messages": "Angeheftete Nachrichten", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s hat die angehefteten Nachrichten für diesen Raum geändert.", "Jump to read receipt": "Zur Lesebestätigung springen", - "Message Pinning": "Anheften von Nachrichten", + "Message Pinning": "Nachrichten-Anheftung", "Long Description (HTML)": "Lange Beschreibung (HTML)", "Jump to message": "Zur Nachricht springen", "No pinned messages.": "Keine angehefteten Nachrichten vorhanden.", From 5456d390390f098cd0a6719c5a676a0df197f805 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 12:42:55 +0000 Subject: [PATCH 135/275] Translated using Weblate (German) Currently translated at 99.9% (2730 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index fe19c01151..3a8bc3dba2 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1652,7 +1652,7 @@ "Manually Verify by Text": "Verifiziere manuell mit einem Text", "Interactively verify by Emoji": "Verifiziere interaktiv mit Emojis", "Support adding custom themes": "Unterstütze das Hinzufügen von benutzerdefinierten Designs", - "Ask this user to verify their session, or manually verify it below.": "Bitte diesen Nutzer, seine Sitzung zu verifizieren, oder verifiziere diese unten manuell.", + "Ask this user to verify their session, or manually verify it below.": "Bitte diese/n Nutzer:in, seine/ihre Sitzung zu verifizieren, oder verifiziere diese unten manuell.", "a few seconds from now": "in ein paar Sekunden", "Manually verify all remote sessions": "Verifiziere alle Remotesitzungen", "Confirm the emoji below are displayed on both sessions, in the same order:": "Bestätige, dass die unten angezeigten Emojis auf beiden Sitzungen in der selben Reihenfolge angezeigt werden:", From 58cb4b66df14341f0067ddea860cf6e5547920e4 Mon Sep 17 00:00:00 2001 From: felix adernog Date: Sat, 23 Jan 2021 12:46:38 +0000 Subject: [PATCH 136/275] Translated using Weblate (German) Currently translated at 99.9% (2730 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 3a8bc3dba2..f82158bf0d 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -979,7 +979,7 @@ "Render simple counters in room header": "Einfache Zähler in Raum-Kopfzeile anzeigen", "Enable Emoji suggestions while typing": "Emoji-Vorschläge während der Eingabe aktivieren", "Show a placeholder for removed messages": "Zeigt einen Platzhalter für gelöschte Nachrichten an", - "Show join/leave messages (invites/kicks/bans unaffected)": "Zeige Betreten-/Verlassen-Nachrichten (Einladungen/Kicks/Bans sind dadurch nicht betroffen)", + "Show join/leave messages (invites/kicks/bans unaffected)": "Zeige Betreten-/Verlassen-Nachrichten (betrifft nicht Einladungen/Kicks/Bans)", "Show avatar changes": "Avatar-Änderungen anzeigen", "Show display name changes": "Anzeigenamen-Änderungen anzeigen", "Send typing notifications": "Tipp-Benachrichtigungen senden", From 61a83532e61e5e2d732b9ad1cf07abde9806bf59 Mon Sep 17 00:00:00 2001 From: jadiof Date: Sat, 23 Jan 2021 21:33:20 +0000 Subject: [PATCH 137/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index f82158bf0d..3de21bd6f4 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1395,7 +1395,7 @@ "Disconnect anyway": "Verbindung trotzdem trennen", "You are still sharing your personal data on the identity server .": "Du teilst deine persönlichen Daten immer noch auf dem Identitätsserver .", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Wir empfehlen, dass du deine Email Adressen und Telefonnummern vom Identitätsserver löschst, bevor du die Verbindung trennst.", - "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Du nutzt momentan keinen Identitätsserver. Um von bestehenden Kontakten die du kennst gefunden zu werden und diese zu finden, füge unten einen hinzu.", + "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Zur Zeit benutzt du keinen Identitätsserver. Trage unten einen Server ein, um Kontakte finden und von anderen gefunden werden zu können.", "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Nutze einen Integrationsmanager (%(serverName)s) um Bots, Widgets und Sticker Packs zu verwalten.", "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Verwende einen Integrationsmanager um Bots, Widgets und Sticker Packs zu verwalten.", "Manage integrations": "Integrationen verwalten", @@ -1765,7 +1765,7 @@ "Backup has an invalid signature from verified session ": "Die Sicherung hat eine ungültige Signatur von einer verifizierten Sitzung ", "Backup has an invalid signature from unverified session ": "Die Sicherung hat eine ungültige Signatur von einer nicht verifizierten Sitzung ", "Your keys are not being backed up from this session.": "Deine Schlüssel werden nicht von dieser Sitzung gesichert.", - "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "Du verwendest aktuell um andere Benutzer zu finden und gefunden zu werden. Du kannst deinen Identitätsserver unten ändern.", + "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "Zur Zeit verwendest du , um Kontakte zu finden und von anderen gefunden zu werden. Du kannst deinen Identitätsserver weiter unten ändern.", "Invalid theme schema.": "Ungültiges Design Schema.", "Error downloading theme information.": "Fehler beim herunterladen des Themas.", "Theme added!": "Design hinzugefügt!", From 2cbcfeba061ee2937f61cbc89578e897057f7e61 Mon Sep 17 00:00:00 2001 From: thilobuchholz Date: Sat, 23 Jan 2021 21:31:37 +0000 Subject: [PATCH 138/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 3de21bd6f4..862521fe0e 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1387,8 +1387,8 @@ "Backup has a signature from unknown user with ID %(deviceId)s": "Die Sicherung hat eine Signatur von unbekanntem/r Nutzer!n mit ID %(deviceId)s", "Backup key stored: ": "Backup Schlüssel gespeichert: ", "Clear notifications": "Benachrichtigungen löschen", - "Disconnect from the identity server and connect to instead?": "Verbindung vom Identitätsserver trennen und stattdessen zu verbinden?", - "The identity server you have chosen does not have any terms of service.": "Der Identitätsserver, den du gewählt hast, hat keine Nutzungsbedingungen.", + "Disconnect from the identity server and connect to instead?": "Vom Identitätsserver trennen, und stattdessen eine Verbindung zu aufbauen?", + "The identity server you have chosen does not have any terms of service.": "Der von dir gewählte Identitätsserver hat keine Nutzungsbedingungen.", "Disconnect identity server": "Verbindung zum Identitätsserver trennen", "contact the administrators of identity server ": "Administrator des Identitätsservers kontaktieren", "wait and try again later": "warte und versuche es später erneut", From 2530c4b3f30136b6765960ee09a56083c752215e Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 21:30:29 +0000 Subject: [PATCH 139/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 862521fe0e..c9e1408f4c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -979,7 +979,7 @@ "Render simple counters in room header": "Einfache Zähler in Raum-Kopfzeile anzeigen", "Enable Emoji suggestions while typing": "Emoji-Vorschläge während der Eingabe aktivieren", "Show a placeholder for removed messages": "Zeigt einen Platzhalter für gelöschte Nachrichten an", - "Show join/leave messages (invites/kicks/bans unaffected)": "Zeige Betreten-/Verlassen-Nachrichten (betrifft nicht Einladungen/Kicks/Bans)", + "Show join/leave messages (invites/kicks/bans unaffected)": "Betreten-/Verlassen-Nachrichten zeigen (betrifft nicht Einladungen/Kicks/Bans)", "Show avatar changes": "Avatar-Änderungen anzeigen", "Show display name changes": "Anzeigenamen-Änderungen anzeigen", "Send typing notifications": "Tipp-Benachrichtigungen senden", @@ -1121,7 +1121,7 @@ "Join": "Beitreten", "Waiting for partner to confirm...": "Warte auf Bestätigung des Gesprächspartners...", "Incoming Verification Request": "Eingehende Verifikationsanfrage", - "Allow Peer-to-Peer for 1:1 calls": "Erlaube Peer-to-Peer für 1:1-Anrufe", + "Allow Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindungen für 1:1-Anrufe erlauben", "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Bist du sicher? Du wirst deine verschlüsselten Nachrichten verlieren, wenn deine Schlüssel nicht gesichert sind.", "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Verschlüsselte Nachrichten sind mit Ende-zu-Ende-Verschlüsselung gesichert. Nur du und der/die Empfänger haben die Schlüssel um diese Nachrichten zu lesen.", "Restore from Backup": "Von Sicherung wiederherstellen", @@ -1589,7 +1589,7 @@ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Räume von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (deine IP-Adresse wird während eines Anrufs geteilt)", "Show more": "Mehr zeigen", - "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Diese Sitzung speichert deine Schlüssel nicht, du kannst sie aber an die Schlüsselsicherung anschließen.", + "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Diese Sitzung sichert nicht deine Schlüssel, aber du hast eine vorhandene Sicherung, die du wiederherstellen und in Zukunft hinzufügen kannst.", "Connect this session to key backup before signing out to avoid losing any keys that may only be on this session.": "Verbinde diese Sitzung mit deiner Schlüsselsicherung bevor du dich abmeldest, um den Verlust von Schlüsseln zu vermeiden.", "This backup is trusted because it has been restored on this session": "Dieser Sicherung wird vertraut, da sie während dieser Sitzung wiederhergestellt wurde", "Enable desktop notifications for this session": "Desktop-Benachrichtigungen für diese Sitzung aktivieren", @@ -1759,7 +1759,7 @@ " to store messages from ": " um Nachrichten von ", "%(brand)s is missing some components required for securely caching encrypted messages locally. If you'd like to experiment with this feature, build a custom %(brand)s Desktop with search components added.": "%(brand)s benötigt weitere Komponenten um verschlüsselte Nachrichten lokal zu durchsuchen. Wenn du diese Funktion testen möchtest kannst du dir deine eigene Version von %(brand)s Desktop mit der integrierten Suchfunktion bauen.", "Backup has a valid signature from this user": "Die Sicherung hat eine gültige Signatur dieses Benutzers", - "Backup has a invalid signature from this user": "Die Sicherung hat eine ungültige Signatur dieses Benutzers", + "Backup has a invalid signature from this user": "Die Sicherung hat eine ungültige Signatur von diesem/r Benutzer!n", "Backup has a valid signature from verified session ": "Die Sicherung hat eine gültige Signatur von einer verifizierten Sitzung ", "Backup has a valid signature from unverified session ": "Die Sicherung hat eine gültige Signatur von einer nicht verifizierten Sitzung ", "Backup has an invalid signature from verified session ": "Die Sicherung hat eine ungültige Signatur von einer verifizierten Sitzung ", From c6bccfe1ab0c3d6de14d13139f70e32772963ad1 Mon Sep 17 00:00:00 2001 From: Tentarial Date: Sat, 23 Jan 2021 21:27:25 +0000 Subject: [PATCH 140/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index c9e1408f4c..7bacd62e50 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1122,7 +1122,7 @@ "Waiting for partner to confirm...": "Warte auf Bestätigung des Gesprächspartners...", "Incoming Verification Request": "Eingehende Verifikationsanfrage", "Allow Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindungen für 1:1-Anrufe erlauben", - "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Bist du sicher? Du wirst deine verschlüsselten Nachrichten verlieren, wenn deine Schlüssel nicht gesichert sind.", + "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Bist du sicher? Du wirst deine verschlüsselten Nachrichten verlieren, wenn deine Schlüssel nicht gut gesichert sind.", "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Verschlüsselte Nachrichten sind mit Ende-zu-Ende-Verschlüsselung gesichert. Nur du und der/die Empfänger haben die Schlüssel um diese Nachrichten zu lesen.", "Restore from Backup": "Von Sicherung wiederherstellen", "Back up your keys before signing out to avoid losing them.": "Sichere deine Schlüssel bevor du dich abmeldest, damit du sie nicht verlierst.", From c58b41312b9f35b44ab50dbe8bb3dbde1cc64794 Mon Sep 17 00:00:00 2001 From: baschi29 Date: Sat, 23 Jan 2021 21:26:24 +0000 Subject: [PATCH 141/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 7bacd62e50..640aa92803 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2345,7 +2345,7 @@ "%(brand)s iOS": "%(brand)s iOS", "%(brand)s X for Android": "%(brand)s X für Android", "We’re excited to announce Riot is now Element": "Wir freuen uns zu verkünden, dass Riot jetzt Element ist", - "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher zwischenspeichern während es in einem Browser läuft. Verwende %(brand)s Desktop damit verschlüsselte Nachrichten durchsuchbar werden.", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher während der Ausführung im Browser durchsuchen. Benutze %(brand)s Desktop, um verschlüsselte Nachrichten in den Suchergebnissen angezeigt zu bekommen. ", "Show rooms with unread messages first": "Zeige Räume mit ungelesenen Nachrichten zuerst", "Show previews of messages": "Zeige Vorschau von Nachrichten", "Use default": "Verwende den Standard", From 5e8362227b14f8c5c561e406ef67d8d14fef0b5a Mon Sep 17 00:00:00 2001 From: aWeinzierl Date: Sat, 23 Jan 2021 21:25:08 +0000 Subject: [PATCH 142/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 640aa92803..f3b8682383 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1374,7 +1374,7 @@ "Later": "Später", "Review": "Überprüfen", "Verify": "Verifizieren", - "Decline (%(counter)s)": "Zurückweisen (%(counter)s)", + "Decline (%(counter)s)": "Ablehnen (%(counter)s)", "not found": "nicht gefunden", "rooms.": "Räumen zu speichern.", "Manage": "Verwalten", @@ -1659,7 +1659,7 @@ "Verify this session by confirming the following number appears on its screen.": "Verfiziere diese Sitzung, indem du bestätigst, dass die folgende Nummer auf ihrem Bildschirm erscheint.", "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Warte auf deine andere Sitzung,%(deviceName)s /%(deviceId)s), um zu verfizieren…", "How fast should messages be downloaded.": "Wie schnell Nachrichten heruntergeladen werden sollen.", - "Compare a unique set of emoji if you don't have a camera on either device": "Vergleiche eine einmalige Reihe von Emoji, sofern du an keinem Gerät eine Kamera hast", + "Compare a unique set of emoji if you don't have a camera on either device": "Vergleiche eine einmalige Reihe von Emojis, sofern du an keinem Gerät eine Kamera hast", "Waiting for %(displayName)s to verify…": "Warte darauf, dass %(displayName)s bestätigt…", "Cancelling…": "Abbrechen…", "They match": "Sie passen zueinander", From df6f46025b41bab1cbc28f604fd424200cf7ba3b Mon Sep 17 00:00:00 2001 From: Bamstam Date: Sat, 23 Jan 2021 21:40:48 +0000 Subject: [PATCH 143/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index f3b8682383..581de102c2 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -59,7 +59,7 @@ "Moderator": "Moderator", "Notifications": "Benachrichtigungen", "": "", - "No users have specific privileges in this room": "Kein Benutzer hat in diesem Raum besondere Berechtigungen", + "No users have specific privileges in this room": "Kein Benutzer hat in diesem Raum privilegierte Berechtigungen", "Only people who have been invited": "Nur Personen, die eingeladen wurden", "Password": "Passwort", "Permissions": "Berechtigungen", @@ -422,7 +422,7 @@ "Add a User": "Benutzer hinzufügen", "You have entered an invalid address.": "Du hast eine ungültige Adresse eingegeben.", "Matrix ID": "Matrix-ID", - "Unignore": "Ignorieren aufheben", + "Unignore": "Nicht mehr ignorieren", "Unignored user": "Benutzer nicht mehr ignoriert", "Ignored user": "Benutzer ignoriert", "Stops ignoring a user, showing their messages going forward": "Beendet das Ignorieren eines Benutzers, nachfolgende Nachrichten werden wieder angezeigt", From ecac5001087dfdcc99a3478f506ff18769a90c2f Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 21:40:24 +0000 Subject: [PATCH 144/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 581de102c2..a6454b0beb 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1395,7 +1395,7 @@ "Disconnect anyway": "Verbindung trotzdem trennen", "You are still sharing your personal data on the identity server .": "Du teilst deine persönlichen Daten immer noch auf dem Identitätsserver .", "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Wir empfehlen, dass du deine Email Adressen und Telefonnummern vom Identitätsserver löschst, bevor du die Verbindung trennst.", - "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Zur Zeit benutzt du keinen Identitätsserver. Trage unten einen Server ein, um Kontakte finden und von anderen gefunden werden zu können.", + "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Zur Zeit benutzt du keinen Identitätsserver. Trage unten einen Server ein, um Kontakte finden und von anderen gefunden zu werden.", "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Nutze einen Integrationsmanager (%(serverName)s) um Bots, Widgets und Sticker Packs zu verwalten.", "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Verwende einen Integrationsmanager um Bots, Widgets und Sticker Packs zu verwalten.", "Manage integrations": "Integrationen verwalten", @@ -1601,7 +1601,7 @@ "A session's public name is visible to people you communicate with": "Der öffentliche Sitzungsname ist sichtbar für Personen, mit denen du kommunizierst", "Sounds": "Töne", "Upgrade the room": "Raum hochstufen", - "Enable room encryption": "Verschlüsselung aktivieren", + "Enable room encryption": "Raumverschlüsselung aktivieren", "This message cannot be decrypted": "Diese Nachricht konnte nicht entschlüsselt werden", "Encrypted by an unverified session": "Verschlüsselt von einer unbekannten Sitzung", "Unencrypted": "Unverschlüsselt", @@ -2056,9 +2056,9 @@ "Your new session is now verified. Other users will see it as trusted.": "Deine neue Sitzung ist nun verifiziert. Andere Benutzer sehen sie als vertrauenswürdig an.", "well formed": "wohlgeformt", "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Wenn du nicht verwenden willst, um Kontakte zu finden und von anderen gefunden zu werden, trage unten einen anderen Identitätsserver ein.", - "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Wenn du einen sicherheitsrelevanten Fehler melden möchtest, lies bitte die Matrix.org Security Disclosure Policy.", - "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Beim Ändern der Anforderungen für Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher dass du die nötigen Berechtigungen besitzt und versuche es erneut.", - "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Beim Ändern der Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher dass du die nötigen Berechtigungen besitzt und versuche es erneut.", + "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Um ein Matrix-bezogenes Sicherheitsproblem zu melden, lies bitte die Matrix.org Sicherheitsrichtlinien.", + "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Beim Ändern der Anforderungen für Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher, dass du die nötigen Berechtigungen besitzt und versuche es erneut.", + "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Beim Ändern der Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher, dass du die nötigen Berechtigungen besitzt und versuche es erneut.", "Unable to share email address": "E-Mail Adresse konnte nicht geteilt werden", "Please enter verification code sent via text.": "Gib den Verifikationscode ein, den du empfangen hast.", "Almost there! Is your other session showing the same shield?": "Fast geschafft! Zeigt deine andere Sitzung das gleiche Schild?", From 54097402e9b2e43432a0e8ed70e022e528d337ec Mon Sep 17 00:00:00 2001 From: Joshua Dietz Date: Sat, 23 Jan 2021 21:34:50 +0000 Subject: [PATCH 145/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a6454b0beb..8c1a53eb22 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1594,7 +1594,7 @@ "This backup is trusted because it has been restored on this session": "Dieser Sicherung wird vertraut, da sie während dieser Sitzung wiederhergestellt wurde", "Enable desktop notifications for this session": "Desktop-Benachrichtigungen für diese Sitzung aktivieren", "Enable audible notifications for this session": "Aktiviere die akustischen Benachrichtigungen für diese Sitzung", - "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integrationsserver können für dich Widgets einstellen, Raum-Einladungen verschicken oder deine Berechtigungen setzen.", + "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integrationsmanaager erhalten Konfigurationsdaten und können Widgets modifizieren, Raumeinladungen verschicken und in deinem Namen Einflusslevel setzen.", "Read Marker lifetime (ms)": "Gültigkeitsdauer der Gelesen-Markierung (ms)", "Read Marker off-screen lifetime (ms)": "Gültigkeitsdauer der Gelesen-Markierung außerhalb des Bildschirms (ms)", "Session key:": "Sitzungsschlüssel:", From 6d0487e5d0ef75baaa249b48e3f46f6c8d331ad6 Mon Sep 17 00:00:00 2001 From: BenjaminVettori Date: Sat, 23 Jan 2021 21:54:37 +0000 Subject: [PATCH 146/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8c1a53eb22..1a96190d75 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1264,7 +1264,7 @@ "Show hidden events in timeline": "Zeige versteckte Ereignisse in der Chronik", "Low bandwidth mode": "Modus für niedrige Bandbreite", "Reset": "Zurücksetzen", - "Joining room …": "Raum beitreten…", + "Joining room …": "Trete Raum bei ...", "Rejecting invite …": "Einladung ablehnen…", "Sign Up": "Registrieren", "Sign In": "Anmelden", From f90e281991564cd9462d28fc0b59ba4de85b56ee Mon Sep 17 00:00:00 2001 From: aWeinzierl Date: Sat, 23 Jan 2021 21:54:15 +0000 Subject: [PATCH 147/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1a96190d75..64e0fd30b1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2659,7 +2659,7 @@ "Enter email address": "E-Mail-Adresse eingeben", "Open the link in the email to continue registration.": "Öffnen Sie den Link in der E-Mail, um mit der Registrierung fortzufahren.", "A confirmation email has been sent to %(emailAddress)s": "Eine Bestätigungs-E-Mail wurde an %(emailAddress)s gesendet", - "Use the + to make a new room or explore existing ones below": "Verwenden Sie das +, um einen neuen Raum zu erstellen oder unten einen bestehenden zu erkunden", + "Use the + to make a new room or explore existing ones below": "Benutze das + um einen neuen Raum zu erstellen oder darunter um existierende Räume zu suchen", "Return to call": "Zurück zum Anruf", "Fill Screen": "Bildschirm ausfüllen", "Voice Call": "Sprachanruf", From 2bc0317e107176bae8973caea4f5878aae4932c7 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 21:51:02 +0000 Subject: [PATCH 148/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 64e0fd30b1..6840b9be6d 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -59,13 +59,13 @@ "Moderator": "Moderator", "Notifications": "Benachrichtigungen", "": "", - "No users have specific privileges in this room": "Kein Benutzer hat in diesem Raum privilegierte Berechtigungen", + "No users have specific privileges in this room": "Keine Nutzer:innen haben in diesem Raum privilegierte Berechtigungen", "Only people who have been invited": "Nur Personen, die eingeladen wurden", "Password": "Passwort", "Permissions": "Berechtigungen", "Phone": "Telefon", "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.", - "Privileged Users": "Privilegierte Benutzer", + "Privileged Users": "Privilegierte Nutzer:innen", "Profile": "Profil", "Reject invitation": "Einladung ablehnen", "Remove": "Entfernen", @@ -1602,8 +1602,8 @@ "Sounds": "Töne", "Upgrade the room": "Raum hochstufen", "Enable room encryption": "Raumverschlüsselung aktivieren", - "This message cannot be decrypted": "Diese Nachricht konnte nicht entschlüsselt werden", - "Encrypted by an unverified session": "Verschlüsselt von einer unbekannten Sitzung", + "This message cannot be decrypted": "Diese Nachricht kann nicht entschlüsselt werden", + "Encrypted by an unverified session": "Verschlüsselt von einer nicht verifizierten Sitzung", "Unencrypted": "Unverschlüsselt", "Encrypted by a deleted session": "Verschlüsselt von einer gelöschten Sitzung", "The encryption used by this room isn't supported.": "Die Verschlüsselung, die dieser Raum verwendet, wird nicht unterstützt.", @@ -1776,13 +1776,13 @@ "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Benenne deine Sitzungen, melde dich aus den Sitzungen ab oder verifiziere sie in deinen Benutzereinstellungen.", "Error changing power level requirement": "Fehler beim Ändern der Anforderungen für Benutzerrechte", "Error changing power level": "Fehler beim Ändern der Benutzerrechte", - "Your email address hasn't been verified yet": "Deine E-Mail Adresse wurde noch nicht verifiziert", - "Verify the link in your inbox": "Verifiziere den Link in deinem Nachrichteneingang", - "Complete": "Fertig", - "Revoke": "Zurückziehen", + "Your email address hasn't been verified yet": "Deine E-Mail-Adresse wurde noch nicht überprüft", + "Verify the link in your inbox": "Verifiziere den Link in deinem Posteingang", + "Complete": "Abschließen", + "Revoke": "Widerrufen", "Share": "Teilen", - "You have not verified this user.": "Du hast diesen Benutzer nicht verifiziert.", - "Everyone in this room is verified": "Jeder in diesem Raum ist verifiziert", + "You have not verified this user.": "Du hast diese:n Nutzer!n nicht verifiziert.", + "Everyone in this room is verified": "Jede/r in diesem Raum ist verifiziert", "Mod": "Mod", "Invite only": "Nur auf Einladung", "Scroll to most recent messages": "Springe zur neusten Nachricht", @@ -1798,7 +1798,7 @@ "Bold": "Fett", "Italics": "Kursiv", "Strikethrough": "Durchgestrichen", - "Code block": "Quelltext", + "Code block": "Code-Block", "Recent rooms": "Letzte Räume", "Loading …": "Lade …", "Join the conversation with an account": "Tritt der Unterhaltung mit einem Konto bei", @@ -2059,7 +2059,7 @@ "To report a Matrix-related security issue, please read the Matrix.org Security Disclosure Policy.": "Um ein Matrix-bezogenes Sicherheitsproblem zu melden, lies bitte die Matrix.org Sicherheitsrichtlinien.", "An error occurred changing the room's power level requirements. Ensure you have sufficient permissions and try again.": "Beim Ändern der Anforderungen für Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher, dass du die nötigen Berechtigungen besitzt und versuche es erneut.", "An error occurred changing the user's power level. Ensure you have sufficient permissions and try again.": "Beim Ändern der Benutzerrechte ist ein Fehler aufgetreten. Stelle sicher, dass du die nötigen Berechtigungen besitzt und versuche es erneut.", - "Unable to share email address": "E-Mail Adresse konnte nicht geteilt werden", + "Unable to share email address": "E-Mail-Adresse kann nicht geteilt werden", "Please enter verification code sent via text.": "Gib den Verifikationscode ein, den du empfangen hast.", "Almost there! Is your other session showing the same shield?": "Fast geschafft! Zeigt deine andere Sitzung das gleiche Schild?", "Almost there! Is %(displayName)s showing the same shield?": "Fast geschafft! Wird bei %(displayName)s das gleiche Schild angezeigt?", From 57cd2f7c8fb9a2f28924ab37ddc460833324e744 Mon Sep 17 00:00:00 2001 From: natowi Date: Sat, 23 Jan 2021 22:21:34 +0000 Subject: [PATCH 149/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 6840b9be6d..7f31e3499b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1832,7 +1832,7 @@ "Hint: Begin your message with // to start it with a slash.": "Hinweis: Beginne deine Nachricht mit // um sie mit einem Querstrich zu beginnen.", "Send as message": "Als Nachricht senden", "Failed to connect to integration manager": "Fehler beim Verbinden mit dem Integrationsserver", - "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Konnte die Einladung nicht zurückziehen. Der Server hat ein vorübergehendes Problem oder du besitzt nicht die nötigen Rechte um die Einladung zurückzuziehen.", + "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Die Einladung konnte nicht zurückgezogen werden. Der Server hat möglicherweise ein vorübergehendes Problem oder Du hast nicht ausreichende Berechtigungen, um die Einladung zurückzuziehen.", "Mark all as read": "Alle als gelesen markieren", "Local address": "Lokale Adresse", "Published Addresses": "Öffentliche Adresse", From d88cce8d465e183463345b77ffb5402cb27599c8 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 22:19:44 +0000 Subject: [PATCH 150/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 7f31e3499b..8a3633643c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1264,7 +1264,7 @@ "Show hidden events in timeline": "Zeige versteckte Ereignisse in der Chronik", "Low bandwidth mode": "Modus für niedrige Bandbreite", "Reset": "Zurücksetzen", - "Joining room …": "Trete Raum bei ...", + "Joining room …": "Trete Raum bei …", "Rejecting invite …": "Einladung ablehnen…", "Sign Up": "Registrieren", "Sign In": "Anmelden", @@ -1584,7 +1584,7 @@ "Do you want to chat with %(user)s?": "Möchtest du mit %(user)s chatten?", " wants to chat": " möchte mit dir chatten", "Start chatting": "Chat starten", - "Reject & Ignore user": "Ablehnen & Nutzer ignorieren", + "Reject & Ignore user": "Ablehnen & Nutzer:in ignorieren", "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ändert eine Ausschluss-Regel für Räume von %(oldGlob)s nach %(newGlob)s, wegen %(reason)s", "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Auf den Server turn.matrix.org zurückgreifen, falls deine Heimserver keine Anruf-Assistenz anbietet (deine IP-Adresse wird während eines Anrufs geteilt)", @@ -1806,30 +1806,30 @@ "Re-join": "Wieder beitreten", "You were banned from %(roomName)s by %(memberName)s": "Du wurdest von %(memberName)s aus %(roomName)s verbannt", "Something went wrong with your invite to %(roomName)s": "Bei deiner Einladung zu %(roomName)s ist ein Fehler aufgetreten", - "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Während der Verifizierung deiner Einladung ist ein Fehler (%(errcode)s) aufgetreten. Du kannst diese Information einem Raum-Administrator weitergeben.", + "An error (%(errcode)s) was returned while trying to validate your invite. You could try to pass this information on to a room admin.": "Während der Verifizierung deiner Einladung ist ein Fehler (%(errcode)s) aufgetreten. Du kannst diese Information einem/r Raum-Administrator:in weitergeben.", "You can only join it with a working invite.": "Du kannst nur mit einer gültigen Einladung beitreten.", - "Try to join anyway": "Versuche trotzdem beizutreten", - "You can still join it because this is a public room.": "Du kannst trotzdem beitreten da dies ein öffentlicher Raum ist.", + "Try to join anyway": "Dennoch versuchen beizutreten", + "You can still join it because this is a public room.": "Du kannst dennoch beitreten, da es ein öffentlicher Raum ist.", "This invite to %(roomName)s was sent to %(email)s which is not associated with your account": "Diese Einladung zu %(roomName)s wurde an die Adresse %(email)s gesendet, die nicht zu deinem Konto gehört", "Link this email with your account in Settings to receive invites directly in %(brand)s.": "Verbinde diese E-Mail-Adresse in den Einstellungen mit deinem Konto um die Einladungen direkt in %(brand)s zu erhalten.", "This invite to %(roomName)s was sent to %(email)s": "Diese Einladung zu %(roomName)s wurde an %(email)s gesendet", "Use an identity server in Settings to receive invites directly in %(brand)s.": "Verknüpfe einen Identitätsserver in den Einstellungen um die Einladungen direkt in %(brand)s zu erhalten.", "Share this email in Settings to receive invites directly in %(brand)s.": "Teile diese E-Mail-Adresse in den Einstellungen um Einladungen direkt in %(brand)s zu erhalten.", "%(roomName)s can't be previewed. Do you want to join it?": "Für %(roomName)s kann keine Vorschau erzeugt werden. Möchtest du den Raum betreten?", - "This room doesn't exist. Are you sure you're at the right place?": "Dieser Raum existiert nicht. Bist du sicher dass du hier richtig bist?", - "Try again later, or ask a room admin to check if you have access.": "Versuche es später erneut oder bitte einen Raum-Administrator deine Zutrittsrechte zu überprüfen.", - "%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "Beim Betreten des Raums ist ein Fehler aufgetreten %(errcode)s. Wenn du denkst dass diese Meldung nicht korrekt ist sende bitte einen Fehlerbericht.", - "%(count)s unread messages including mentions.|other": "%(count)s ungelesene Nachrichten, inklusive Erwähnungen.", + "This room doesn't exist. Are you sure you're at the right place?": "Dieser Raum existiert nicht. Bist du sicher, dass du hier richtig bist?", + "Try again later, or ask a room admin to check if you have access.": "Versuche es später erneut oder bitte eine/n Raum-Administrator:in zu prüfen, ob du berechtigt bist.", + "%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "%(errcode)s wurde, beim Versuch den Raum zu betreten, zurückgegeben. Wenn du denkst dass diese Meldung nicht korrekt ist, erstelle bitte einen Fehlerbericht.", + "%(count)s unread messages including mentions.|other": "%(count)s ungelesene Nachrichten einschließlich Erwähnungen.", "%(count)s unread messages including mentions.|one": "1 ungelesene Erwähnung.", "%(count)s unread messages.|other": "%(count)s ungelesene Nachrichten.", "%(count)s unread messages.|one": "1 ungelesene Nachricht.", "Unread mentions.": "Ungelesene Erwähnungen.", "Unread messages.": "Ungelesene Nachrichten.", - "This room has already been upgraded.": "Dieser Raum wurde bereits hochgestuft.", - "This room is running room version , which this homeserver has marked as unstable.": "Dieser Raum läuft mit der Raumversion , welcher dieser Heimserver als instabil markiert hat.", + "This room has already been upgraded.": "Diese Raum wurde bereits aktualisiert.", + "This room is running room version , which this homeserver has marked as unstable.": "Dieser Raum läuft mit der Raumversion , welche dieser Heimserver als instabil markiert hat.", "Unknown Command": "Unbekannter Befehl", "Unrecognised command: %(commandText)s": "Unbekannter Befehl: %(commandText)s", - "Hint: Begin your message with // to start it with a slash.": "Hinweis: Beginne deine Nachricht mit // um sie mit einem Querstrich zu beginnen.", + "Hint: Begin your message with // to start it with a slash.": "Hinweis: Beginne deine Nachricht mit //, um sie mit einem Schrägstrich zu beginnen.", "Send as message": "Als Nachricht senden", "Failed to connect to integration manager": "Fehler beim Verbinden mit dem Integrationsserver", "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Die Einladung konnte nicht zurückgezogen werden. Der Server hat möglicherweise ein vorübergehendes Problem oder Du hast nicht ausreichende Berechtigungen, um die Einladung zurückzuziehen.", From 8f34218df9ff627539a2ba816552db69080c4bc7 Mon Sep 17 00:00:00 2001 From: baschi29 Date: Sat, 23 Jan 2021 22:14:57 +0000 Subject: [PATCH 151/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8a3633643c..3f271194a3 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2346,12 +2346,12 @@ "%(brand)s X for Android": "%(brand)s X für Android", "We’re excited to announce Riot is now Element": "Wir freuen uns zu verkünden, dass Riot jetzt Element ist", "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher während der Ausführung im Browser durchsuchen. Benutze %(brand)s Desktop, um verschlüsselte Nachrichten in den Suchergebnissen angezeigt zu bekommen. ", - "Show rooms with unread messages first": "Zeige Räume mit ungelesenen Nachrichten zuerst", - "Show previews of messages": "Zeige Vorschau von Nachrichten", - "Use default": "Verwende den Standard", + "Show rooms with unread messages first": "Räume mit ungelesenen Nachrichten zuerst zeigen", + "Show previews of messages": "Nachrichtenvorschau anzeigen", + "Use default": "Standardeinstellungen benutzen", "Mentions & Keywords": "Erwähnungen & Schlüsselwörter", "Notification options": "Benachrichtigungsoptionen", - "Forget Room": "Vergesse Raum", + "Forget Room": "Raum vergessen", "Favourited": "Favorisiert", "This room is public": "Dieser Raum ist öffentlich", "Away": "Abwesend", From cb992204ce1884ffc7dd77ecd0143c8f8b4d4c8d Mon Sep 17 00:00:00 2001 From: csett86 Date: Sat, 23 Jan 2021 22:05:26 +0000 Subject: [PATCH 152/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 3f271194a3..ac27ffc55f 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1815,7 +1815,7 @@ "This invite to %(roomName)s was sent to %(email)s": "Diese Einladung zu %(roomName)s wurde an %(email)s gesendet", "Use an identity server in Settings to receive invites directly in %(brand)s.": "Verknüpfe einen Identitätsserver in den Einstellungen um die Einladungen direkt in %(brand)s zu erhalten.", "Share this email in Settings to receive invites directly in %(brand)s.": "Teile diese E-Mail-Adresse in den Einstellungen um Einladungen direkt in %(brand)s zu erhalten.", - "%(roomName)s can't be previewed. Do you want to join it?": "Für %(roomName)s kann keine Vorschau erzeugt werden. Möchtest du den Raum betreten?", + "%(roomName)s can't be previewed. Do you want to join it?": "Vorschau von %(roomName)s kann nicht angezeigt werden. Möchtest du den Raum betreten?", "This room doesn't exist. Are you sure you're at the right place?": "Dieser Raum existiert nicht. Bist du sicher, dass du hier richtig bist?", "Try again later, or ask a room admin to check if you have access.": "Versuche es später erneut oder bitte eine/n Raum-Administrator:in zu prüfen, ob du berechtigt bist.", "%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "%(errcode)s wurde, beim Versuch den Raum zu betreten, zurückgegeben. Wenn du denkst dass diese Meldung nicht korrekt ist, erstelle bitte einen Fehlerbericht.", From f642bcae97cd2c47b7ada05d1867f288cee066e1 Mon Sep 17 00:00:00 2001 From: schwukas Date: Sat, 23 Jan 2021 22:00:49 +0000 Subject: [PATCH 153/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index ac27ffc55f..1ebf675cd0 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1545,7 +1545,7 @@ "Discovery options will appear once you have added a phone number above.": "Entdeckungsoptionen werden angezeigt, sobald eine Telefonnummer hinzugefügt wurde.", "Close preview": "Vorschau schließen", "Loading room preview": "Lade Raumvorschau", - "Join the discussion": "Trete der Diskussion bei", + "Join the discussion": "Tritt der Diskussion bei", "Remove for everyone": "Für alle entfernen", "Remove for me": "Für mich entfernen", "Create your Matrix account on ": "Erstelle dein Matrix-Konto auf ", From e75b5d84720a26e5b9bad63520af239b483555ed Mon Sep 17 00:00:00 2001 From: Tentarial Date: Sat, 23 Jan 2021 22:36:10 +0000 Subject: [PATCH 154/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1ebf675cd0..4fd8080dd7 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1555,7 +1555,7 @@ "Remove %(phone)s?": "%(phone)s entfernen?", "Remove recent messages by %(user)s": "Letzte Nachrichten von %(user)s entfernen", "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|other": "Du bist dabei %(count)s Nachrichten von %(user)s zu löschen, was nicht rückgängig gemacht werden kann. Fortfahren?", - "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Du bist dabei eine Nachrichten von %(user)s zu löschen, was nicht rückgängig gemacht werden kann. Fortfahren?", + "You are about to remove %(count)s messages by %(user)s. This cannot be undone. Do you wish to continue?|one": "Du bist dabei, eine Nachricht von %(user)s zu löschen. Das kann nicht rückgängig gemacht werden. Fortfahren?", "Remove %(count)s messages|other": "%(count)s Nachrichten entfernen", "Remove %(count)s messages|one": "Eine Nachricht entfernen", "Remove recent messages": "Letzte Nachrichten entfernen", From d102cecda5e94e04d6051a28832662949dbc97b9 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 22:35:41 +0000 Subject: [PATCH 155/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 4fd8080dd7..69476b9a1a 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1221,7 +1221,7 @@ "Once enabled, encryption for a room cannot be disabled. Messages sent in an encrypted room cannot be seen by the server, only by the participants of the room. Enabling encryption may prevent many bots and bridges from working correctly. Learn more about encryption.": "Sobald aktiviert, kann die Verschlüsselung für einen Raum nicht mehr deaktiviert werden. Nachrichten in einem verschlüsselten Raum können nur noch von Teilnehmern aber nicht mehr vom Server gelesen werden. Einige Bots und Brücken werden vielleicht nicht mehr funktionieren. Erfahre mehr über Verschlüsselung.", "Error updating main address": "Fehler beim Aktualisieren der Hauptadresse", "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Es gab ein Problem beim Aktualisieren der Raum-Hauptadresse. Es kann sein, dass es vom Server verboten ist oder ein temporäres Problem auftrat.", - "Error updating flair": "Konnte Abzeichen nicht aktualisieren", + "Error updating flair": "Abzeichen-Aktualisierung fehlgeschlagen", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Es gab ein Problem beim Aktualisieren des Abzeichens für diesen Raum. Es kann sein, dass der Server es nicht erlaubt oder ein temporäres Problem auftrat.", "Power level": "Berechtigungslevel", "Room Settings - %(roomName)s": "Raumeinstellungen - %(roomName)s", @@ -1787,7 +1787,7 @@ "Invite only": "Nur auf Einladung", "Scroll to most recent messages": "Springe zur neusten Nachricht", "No recent messages by %(user)s found": "Keine neuen Nachrichten von %(user)s gefunden", - "Try scrolling up in the timeline to see if there are any earlier ones.": "Versuche nach oben zu scrollen um zu sehen ob sich dort frühere Nachrichten befinden.", + "Try scrolling up in the timeline to see if there are any earlier ones.": "Versuche nach oben zu scrollen, um zu sehen ob sich dort frühere Nachrichten befinden.", "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Dies kann bei vielen Nachrichten einige Zeit dauern. Bitte lade die Anwendung in dieser Zeit nicht neu.", "Deactivate user?": "Benutzer deaktivieren?", "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Beim Deaktivieren wird der Benutzer abgemeldet und ein erneutes Anmelden verhindert. Zusätzlich wird er aus allen Räumen entfernt. Diese Aktion kann nicht rückgängig gemacht werden. Bist du sicher dass du diesen Benutzer deaktivieren willst?", @@ -1832,7 +1832,7 @@ "Hint: Begin your message with // to start it with a slash.": "Hinweis: Beginne deine Nachricht mit //, um sie mit einem Schrägstrich zu beginnen.", "Send as message": "Als Nachricht senden", "Failed to connect to integration manager": "Fehler beim Verbinden mit dem Integrationsserver", - "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Die Einladung konnte nicht zurückgezogen werden. Der Server hat möglicherweise ein vorübergehendes Problem oder Du hast nicht ausreichende Berechtigungen, um die Einladung zurückzuziehen.", + "Could not revoke the invite. The server may be experiencing a temporary problem or you do not have sufficient permissions to revoke the invite.": "Die Einladung konnte nicht zurückgezogen werden. Der Server hat möglicherweise ein vorübergehendes Problem oder du hast nicht ausreichende Berechtigungen, um die Einladung zurückzuziehen.", "Mark all as read": "Alle als gelesen markieren", "Local address": "Lokale Adresse", "Published Addresses": "Öffentliche Adresse", @@ -1847,16 +1847,16 @@ "Accepting…": "Annehmen…", "Start Verification": "Starte Verifikation", "Messages in this room are end-to-end encrypted.": "Nachrichten in diesem Raum sind Ende-zu-Ende verschlüsselt.", - "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Diese Nachrichten sind verschlüsselt und nur du und der Empfänger habt die Schlüssel um sie zu entschlüsseln.", + "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Diese Nachrichten sind verschlüsselt und nur du und der/die Empfänger:in haben die Schlüssel, um sie zu entschlüsseln.", "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "In verschlüsselten Räumen sind deine Nachrichten verschlüsselt und nur du und der Empfänger habt die Schlüssel um sie zu entschlüsseln.", - "Verify User": "Benutzer verifizieren", - "For extra security, verify this user by checking a one-time code on both of your devices.": "Verifiziere den Benutzer, durch Vergleichen eines Einmal-Codes auf euren beiden Geräten, um die Sicherheit zu erhöhen.", + "Verify User": "Nutzer!n verifizieren", + "For extra security, verify this user by checking a one-time code on both of your devices.": "Für zusätzliche Sicherheit, verifiziere diese/n Nutzer!n, durch Vergleichen eines Einmal-Codes auf euren beiden Geräten.", "Your messages are not secure": "Deine Nachrichten sind nicht sicher", "One of the following may be compromised:": "Eines der folgenden könnte kompromittiert sein:", "Your homeserver": "Dein Heimserver", - "The homeserver the user you’re verifying is connected to": "Der Heimserver an dem der zu verifizierende Benutzer angemeldet ist", - "Yours, or the other users’ internet connection": "Deine Internetverbindung oder die des anderen Benutzers", - "Yours, or the other users’ session": "Deine Sitzung oder die des anderen Benutzers", + "The homeserver the user you’re verifying is connected to": "Der Heimserver, an dem der/die zu verifizierende Nutzer:in angemeldet ist", + "Yours, or the other users’ internet connection": "Deine oder die Internetverbindung des Gegenüber", + "Yours, or the other users’ session": "Deine Sitzung oder die des Gegenüber", "%(role)s in %(roomName)s": "%(role)s in %(roomName)s", "This client does not support end-to-end encryption.": "Diese Anwendung unterstützt keine Ende-zu-Ende-Verschlüsselung.", "Verify by scanning": "Mit Scannen eines QR Codes verifizieren", From ffb94bf00ddb8c6a00cd7104fb0316db451078df Mon Sep 17 00:00:00 2001 From: Tentarial Date: Sat, 23 Jan 2021 22:46:17 +0000 Subject: [PATCH 156/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 69476b9a1a..0851fa989e 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1859,7 +1859,7 @@ "Yours, or the other users’ session": "Deine Sitzung oder die des Gegenüber", "%(role)s in %(roomName)s": "%(role)s in %(roomName)s", "This client does not support end-to-end encryption.": "Diese Anwendung unterstützt keine Ende-zu-Ende-Verschlüsselung.", - "Verify by scanning": "Mit Scannen eines QR Codes verifizieren", + "Verify by scanning": "Verifizierung durch Scannen", "If you can't scan the code above, verify by comparing unique emoji.": "Wenn du den obenstehenden Code nicht scannen kannst versuche es mit der Emoji Verifikation.", "Verify all users in a room to ensure it's secure.": "Verifiziere alle Benutzer in einem Raum um die vollständige Sicherheit zu gewährleisten.", "In encrypted rooms, verify all users to ensure it’s secure.": "Verifiziere alle Benutzer in verschlüsselten Räumen um die vollständige Sicherheit zu gewährleisten.", From ecfb9facc5d6a7cb8bb56719f4349f8801cc0607 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sat, 23 Jan 2021 22:45:56 +0000 Subject: [PATCH 157/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 0851fa989e..0edd864c7c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -202,7 +202,7 @@ "Disinvite": "Einladung zurückziehen", "Download %(text)s": "%(text)s herunterladen", "Failed to ban user": "Verbannen des Benutzers fehlgeschlagen", - "Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen", + "Failed to change power level": "Ändern der Berechtigungsstufe fehlgeschlagen", "Failed to join room": "Betreten des Raumes ist fehlgeschlagen", "Failed to kick": "Kicken fehlgeschlagen", "Failed to mute user": "Stummschalten des Nutzers fehlgeschlagen", @@ -228,7 +228,7 @@ "Tried to load a specific point in this room's timeline, but was unable to find it.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden, der Punkt konnte jedoch nicht gefunden werden.", "You seem to be in a call, are you sure you want to quit?": "Du scheinst in einem Gespräch zu sein, bist du sicher, dass du aufhören willst?", "You seem to be uploading files, are you sure you want to quit?": "Du scheinst Dateien hochzuladen. Bist du sicher schließen zu wollen?", - "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du wirst diese Änderung nicht rückgängig machen können, da der Benutzer dasselbe Berechtigungslevel wie du selbst erhalten wird.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du wirst diese Änderung nicht rückgängig machen können, da der/die Nutzer!n dasselbe Berechtigungsstufe wie du selbst erhalten wird.", "Room": "Raum", "Cancel": "Abbrechen", "Click to unmute video": "Klicken, um die Video-Stummschaltung zu deaktivieren", @@ -1789,10 +1789,10 @@ "No recent messages by %(user)s found": "Keine neuen Nachrichten von %(user)s gefunden", "Try scrolling up in the timeline to see if there are any earlier ones.": "Versuche nach oben zu scrollen, um zu sehen ob sich dort frühere Nachrichten befinden.", "For a large amount of messages, this might take some time. Please don't refresh your client in the meantime.": "Dies kann bei vielen Nachrichten einige Zeit dauern. Bitte lade die Anwendung in dieser Zeit nicht neu.", - "Deactivate user?": "Benutzer deaktivieren?", - "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Beim Deaktivieren wird der Benutzer abgemeldet und ein erneutes Anmelden verhindert. Zusätzlich wird er aus allen Räumen entfernt. Diese Aktion kann nicht rückgängig gemacht werden. Bist du sicher dass du diesen Benutzer deaktivieren willst?", - "Deactivate user": "Benutzer deaktivieren", - "Failed to deactivate user": "Deaktivieren des Benutzers fehlgeschlagen", + "Deactivate user?": "Nutzer!n deaktivieren?", + "Deactivating this user will log them out and prevent them from logging back in. Additionally, they will leave all the rooms they are in. This action cannot be reversed. Are you sure you want to deactivate this user?": "Beim Deaktivieren wird dieser/s Nutzer!n/s abgemeldet und ein erneutes Anmelden verhindert. Zusätzlich wird sie/er aus allen Räumen entfernt. Diese Aktion kann nicht rückgängig gemacht werden. Bist du sicher, dass du diese/n Nutzer!n deaktivieren willst?", + "Deactivate user": "Nutzer!n deaktivieren", + "Failed to deactivate user": "Deaktivieren des/der Nutzer!n fehlgeschlagen", "Send a reply…": "Sende eine Antwort…", "Send a message…": "Sende eine Nachricht…", "Bold": "Fett", @@ -2355,7 +2355,7 @@ "Favourited": "Favorisiert", "This room is public": "Dieser Raum ist öffentlich", "Away": "Abwesend", - "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "Die Sitzung, die du verifizieren möchtest, unterstützt weder das scannen eines QR Codes noch eine Emoji Verifikation, welche von %(brand)s unterstützt werden. Versuche es mit einem anderen Client.", + "The session you are trying to verify doesn't support scanning a QR code or emoji verification, which is what %(brand)s supports. Try with a different client.": "Die Sitzung, die du verifizieren möchtest, unterstützt weder das scannen eines QR-Codes noch eine Emoji-Verifikation, welche von %(brand)s unterstützt werden. Versuche es mit einer anderen Anwendung.", "Edited at %(date)s": "Geändert am %(date)s", "Click to view edits": "Klicke um Änderungen anzuzeigen", "%(brand)s encountered an error during upload of:": "%(brand)s hat einen Fehler festgestellt beim hochladen von:", From e0d9518ec0b7be3e08bbdaa77709f737d199a835 Mon Sep 17 00:00:00 2001 From: Bamstam Date: Sun, 24 Jan 2021 00:19:41 +0000 Subject: [PATCH 158/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 0edd864c7c..7ab6a3a030 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -490,7 +490,7 @@ "Leave Community": "Community verlassen", "Add rooms to this community": "Räume zu dieser Community hinzufügen", "%(inviter)s has invited you to join this community": "%(inviter)s hat dich in diese Community eingeladen", - "You are a member of this community": "Du bist ein Mitglied dieser Community", + "You are a member of this community": "Du bist Mitglied in dieser Community", "You are an administrator of this community": "Du bist ein Administrator dieser Community", "Community %(groupId)s not found": "Community '%(groupId)s' nicht gefunden", "Failed to load %(groupId)s": "'%(groupId)s' konnte nicht geladen werden", From a8d600a62c5ba8e2d4b1aa6b315755873ccc7b64 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sun, 24 Jan 2021 00:18:52 +0000 Subject: [PATCH 159/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 86 ++++++++++++++++++------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 7ab6a3a030..1108282c32 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -504,7 +504,7 @@ "Delete Widget": "Widget löschen", "Mention": "Erwähnen", "Invite": "Einladen", - "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Das Löschen eines Widgets entfernt es für alle Nutzer in diesem Raum. Möchtest du dieses Widget wirklich löschen?", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Das Löschen eines Widgets entfernt es für alle Nutzer:innen in diesem Raum. Möchtest du dieses Widget wirklich löschen?", "Mirror local video feed": "Lokalen Video-Feed spiegeln", "Failed to withdraw invitation": "Die Einladung konnte nicht zurückgezogen werden", "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community-IDs dürfen nur die folgenden Zeichen enthalten: a-z, 0-9, or '=_-./'", @@ -1223,7 +1223,7 @@ "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "Es gab ein Problem beim Aktualisieren der Raum-Hauptadresse. Es kann sein, dass es vom Server verboten ist oder ein temporäres Problem auftrat.", "Error updating flair": "Abzeichen-Aktualisierung fehlgeschlagen", "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Es gab ein Problem beim Aktualisieren des Abzeichens für diesen Raum. Es kann sein, dass der Server es nicht erlaubt oder ein temporäres Problem auftrat.", - "Power level": "Berechtigungslevel", + "Power level": "Berechtigungsstufe", "Room Settings - %(roomName)s": "Raumeinstellungen - %(roomName)s", "A username can only contain lower case letters, numbers and '=_-./'": "Ein Benutzername kann nur Kleinbuchstaben, Nummern und '=_-./' enthalten", "Share Permalink": "Teile permanenten Link", @@ -1606,22 +1606,22 @@ "Encrypted by an unverified session": "Verschlüsselt von einer nicht verifizierten Sitzung", "Unencrypted": "Unverschlüsselt", "Encrypted by a deleted session": "Verschlüsselt von einer gelöschten Sitzung", - "The encryption used by this room isn't supported.": "Die Verschlüsselung, die dieser Raum verwendet, wird nicht unterstützt.", - "React": "Reaktion hinzufügen", + "The encryption used by this room isn't supported.": "Die von diesem Raum verwendete Verschlüsselung wird nicht unterstützt.", + "React": "Reagieren", "e.g. my-room": "z.B. mein-raum", - "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Verwende einen Identitätsserver um mit einer E-Mail-Adresse einzuladen. Benutzer den Standard-Identitätsserver (%(defaultIdentityServerName)s) oder konfiguriere einen in den Einstellungen.", - "Use an identity server to invite by email. Manage in Settings.": "Verwende einen Identitätsserver um mit einer E-Mail-Adresse einzuladen. Diese können in den Einstellungen konfiguriert werden.", - "Create a public room": "Erstelle einen öffentlichen Raum", + "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Verwende einen Identitätsserver, um per E-Mail einzuladen. Nutze den Standard-Identitätsserver (%(defaultIdentityServerName)s) oder konfiguriere einen in den Einstellungen.", + "Use an identity server to invite by email. Manage in Settings.": "Verwende einen Identitätsserver, um mit einer E-Mail-Adresse einzuladen. Diese können in den Einstellungen konfiguriert werden.", + "Create a public room": "Öffentlichen Raum erstellen", "Show advanced": "Weitere Einstellungen anzeigen", "Verify session": "Sitzung verifizieren", "Session key": "Sitzungsschlüssel", "Recent Conversations": "Letzte Unterhaltungen", - "Report Content to Your Homeserver Administrator": "Inhalte an den Administrator deines Heimservers melden", - "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Wenn du diese Nachricht meldest wird dessen einzigartige 'event ID' an den Administrator deines Heimservers übermittelt. Wenn die Nachrichten in diesem Raum verschlüsselt sind wird dein Administrator nicht in der Lage sein den Text zu lesen oder Medien einzusehen.", + "Report Content to Your Homeserver Administrator": "Inhalte an die Administration deines Heimservers melden", + "Reporting this message will send its unique 'event ID' to the administrator of your homeserver. If messages in this room are encrypted, your homeserver administrator will not be able to read the message text or view any files or images.": "Wenn du diese Nachricht meldest, wird die eindeutige Event-ID an die Administration deines Heimservers übermittelt. Wenn die Nachrichten in diesem Raum verschlüsselt sind, wird deine Heimserver-Administration nicht in der Lage sein, Nachrichten zu lesen oder Medien einzusehen.", "Send report": "Bericht senden", "Enter recovery passphrase": "Gib die Wiederherstellungspassphrase ein", "Enter recovery key": "Wiederherstellungspassphrase eingeben", - "Report Content": "Inhalte melden", + "Report Content": "Inhalt melden", "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Gib eine E-Mail-Adresse an um dein Konto wiederherstellen zu können. Die E-Mail-Adresse kann auch genutzt werden um deinen Kontakt zu finden.", "Enter your custom homeserver URL What does this mean?": "Gib eine andere Heimserver-Adresse an Was bedeutet das?", "%(creator)s created and configured the room.": "%(creator)s hat den Raum erstellt und konfiguriert.", @@ -1671,7 +1671,7 @@ "Workspace: %(networkName)s": "Arbeitsbereich: %(networkName)s", "Channel: %(channelName)s": "Kanal: %(channelName)s", "Show less": "Weniger zeigen", - "Warning: You should only set up key backup from a trusted computer.": "Achtung: Du solltest die Schlüsselsicherung nur auf einem vertrauenswürdigen Gerät einrichten.", + "Warning: You should only set up key backup from a trusted computer.": "Achtung: Du solltest die Schlüsselsicherung nur von einem vertrauenswürdigen Computer aus einrichten.", "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Melde dich an um die ausschließlich in dieser Sitzung gespeicherten Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten in jeder Sitzung zu lesen.", "Forgotten your password?": "Passwort vergessen?", "You're signed out": "Du wurdest abgemeldet", @@ -1682,10 +1682,10 @@ "Click the button below to confirm deleting these sessions.|other": "Klicke den Button um das Löschen dieser Sitzungen zu bestätigen.", "Click the button below to confirm deleting these sessions.|one": "Klicke den Button um das Löschen dieser Sitzung zu bestätigen.", "Clear all data in this session?": "Alle Daten dieser Sitzung löschen?", - "Clear all data": "Daten löschen", + "Clear all data": "Alle Daten löschen", "Confirm your account deactivation by using Single Sign On to prove your identity.": "Bestätige das Löschen deines Kontos indem du dich mittels Single Sign-On anmeldest um deine Identität nachzuweisen.", "Confirm account deactivation": "Konto löschen bestätigen", - "Confirm your identity by entering your account password below.": "Bestätige deine Identität indem du dein Passwort unten eingibst.", + "Confirm your identity by entering your account password below.": "Bestätige deine Identität, indem du unten dein Kontopasswort eingibst.", "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Bestätige deine Identität indem du diesen Login von einer deiner anderen Sitzungen verifizierst um Zugriff auf deine verschlüsselten Nachrichten zu erhalten.", "Enter your account password to confirm the upgrade:": "Gib dein Passwort ein um die Aktualisierung zu bestätigen:", "You'll need to authenticate with the server to confirm the upgrade.": "Du musst dich am Server authentifizieren um die Aktualisierung zu bestätigen.", @@ -1859,8 +1859,8 @@ "Yours, or the other users’ session": "Deine Sitzung oder die des Gegenüber", "%(role)s in %(roomName)s": "%(role)s in %(roomName)s", "This client does not support end-to-end encryption.": "Diese Anwendung unterstützt keine Ende-zu-Ende-Verschlüsselung.", - "Verify by scanning": "Verifizierung durch Scannen", - "If you can't scan the code above, verify by comparing unique emoji.": "Wenn du den obenstehenden Code nicht scannen kannst versuche es mit der Emoji Verifikation.", + "Verify by scanning": "Verifizierung durch QR-Code-Scannen", + "If you can't scan the code above, verify by comparing unique emoji.": "Wenn du den obigen Code nicht scannen kannst, verifiziere stattdessen durch den Emoji-Vergleich.", "Verify all users in a room to ensure it's secure.": "Verifiziere alle Benutzer in einem Raum um die vollständige Sicherheit zu gewährleisten.", "In encrypted rooms, verify all users to ensure it’s secure.": "Verifiziere alle Benutzer in verschlüsselten Räumen um die vollständige Sicherheit zu gewährleisten.", "You've successfully verified %(deviceName)s (%(deviceId)s)!": "Du hast %(deviceName)s (%(deviceId)s) erfolgreich verifiziert!", @@ -1873,15 +1873,15 @@ "You cancelled verification.": "Du hast die Verifikation abgebrochen.", "Verification cancelled": "Verifikation abgebrochen", "Compare emoji": "Vergleiche Emojis", - "Message Actions": "Nachrichten Aktionen", - "Show image": "Zeige Bild", - "You have ignored this user, so their message is hidden. Show anyways.": "Du ignorierst diesen Benutzer, deshalb werden seine Nachrichten nicht angezeigt. Trotzdem anzeigen.", + "Message Actions": "Nachrichtenaktionen", + "Show image": "Bild anzeigen", + "You have ignored this user, so their message is hidden. Show anyways.": "Du hast diese/n Nutzer!n ignoriert, sodass seine/ihre Nachricht ausgeblendet ist. Dennoch anzeigen.", "You accepted": "Du hast angenommen", "You declined": "Du hast abgelehnt", "You cancelled": "Du hast abgebrochen", "Accepting …": "Annehmen …", "Declining …": "Ablehnen …", - "You sent a verification request": "Du hast eine Verifikationsanfrage gesendet", + "You sent a verification request": "Du hast eine Verifizierungsanfrage gesendet", "Show all": "Alle zeigen", "Reactions": "Reaktionen", " reacted with %(content)s": " hat mit %(content)s reagiert", @@ -1903,15 +1903,15 @@ "Quick Reactions": "Praktische Reaktionen", "Cancel search": "Suche abbrechen", "Any of the following data may be shared:": "Die folgenden Daten können geteilt werden:", - "Your avatar URL": "Deine Avatar URL", - "Your user ID": "Deine Benutzer ID", + "Your avatar URL": "Deine Avatar-URL", + "Your user ID": "Deine Nutzer-ID", "Your theme": "Dein Design", "%(brand)s URL": "%(brand)s URL", - "Room ID": "Raum ID", + "Room ID": "Raum-ID", "Widget ID": "Widget ID", - "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Wenn du dieses Widget verwendest können Daten zu %(widgetDomain)s und deinem Integrationsserver übertragen werden.", - "Using this widget may share data with %(widgetDomain)s.": "Wenn du dieses Widget verwendest können Daten zu %(widgetDomain)s übertragen werden.", - "Widgets do not use message encryption.": "Widgets verschlüsseln deine Nachrichten nicht.", + "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Wenn du dieses Widget verwendest, können Daten zu %(widgetDomain)s und deinem Integrationsserver übertragen werden.", + "Using this widget may share data with %(widgetDomain)s.": "Wenn du dieses Widget verwendest, können Daten zu %(widgetDomain)s übertragen werden.", + "Widgets do not use message encryption.": "Widgets verwenden keine Nachrichtenverschlüsselung.", "Please create a new issue on GitHub so that we can investigate this bug.": "Bitte erstelle ein neues Issue auf GitHub damit wir diesen Fehler untersuchen können.", "Rotate Left": "Nach links drehen", "Rotate counter-clockwise": "Gegen den Uhrzeigersinn drehen", @@ -1921,7 +1921,7 @@ "%(severalUsers)smade no changes %(count)s times|one": "%(severalUsers)shaben keine Änderung vorgenommen", "%(oneUser)smade no changes %(count)s times|other": "%(oneUser)shat %(count)s mal keine Änderung vorgenommen", "%(oneUser)smade no changes %(count)s times|one": "%(oneUser)shat keine Änderung vorgenommen", - "Some characters not allowed": "Manche Zeichen sind nicht erlaubt", + "Some characters not allowed": "Einige Zeichen sind nicht erlaubt", "Enter a server name": "Gibt einen Servernamen ein", "Looks good": "Das sieht gut aus", "Can't find this server or its room list": "Kann diesen Server oder seine Raumliste nicht finden", @@ -1937,13 +1937,13 @@ "%(networkName)s rooms": "%(networkName)s Räume", "Matrix rooms": "Matrix Räume", "Close dialog": "Dialog schließen", - "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Bitte teile uns mit was schiefgelaufen ist oder erstelle ein Github Issue und beschreibe das Problem.", + "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Bitte teile uns mit, was schief lief, oder besser, erstelle ein GitHub-Issue, das das Problem beschreibt.", "Reminder: Your browser is unsupported, so your experience may be unpredictable.": "Warnung: Dein Browser wird nicht unterstützt. Die Anwendung kann instabil sein.", "Notes": "Notizen", - "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "Wenn du mehr Informationen hast die uns bei Untersuchung des Problems helfen (z.B. was du gerade getan hast, Raum IDs, Benutzer IDs, etc.) gib sie bitte hier an.", + "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "Wenn du mehr Informationen hast, die uns bei Untersuchung des Problems helfen (z.B. was du gerade getan hast, Raum-IDs, Benutzer-IDs, etc.), gib sie bitte hier an.", "Removing…": "Löschen…", - "Destroy cross-signing keys?": "Cross-signing Schlüssel löschen?", - "Clear cross-signing keys": "Entferne Cross-signing Schlüssel", + "Destroy cross-signing keys?": "Cross-Signing-Schlüssel zerstören?", + "Clear cross-signing keys": "Cross-Signing-Schlüssel löschen", "Enable end-to-end encryption": "Ende-zu-Ende Verschlüsselung aktivieren", "You can’t disable this later. Bridges & most bots won’t work yet.": "Du kannst dies später nicht mehr ändern. Bridges und die meisten Bots werden nicht funktionieren.", "Server did not require any authentication": "Der Server benötigt keine Authentifizierung", @@ -1951,15 +1951,15 @@ "Are you sure you want to deactivate your account? This is irreversible.": "Bist du sicher dass du dein Konto deaktivieren möchtest? Dies kann nicht rückgängig gemacht werden.", "There was a problem communicating with the server. Please try again.": "Bei der Kommunikation mit dem Server ist ein Fehler aufgetreten. Bitte versuche es erneut.", "View Servers in Room": "Zeige Server im Raum", - "Verification Requests": "Verifikationsanfragen", + "Verification Requests": "Verifizierungsanfrage", "Integrations are disabled": "Integrationen sind deaktiviert", "Integrations not allowed": "Integrationen sind nicht erlaubt", - "Failed to invite the following users to chat: %(csvUsers)s": "Fehler beim Einladen der folgenden Benutzer: %(csvUsers)s", - "Something went wrong trying to invite the users.": "Beim Einladen der Benutzer ist ein Fehler aufgetreten.", - "Failed to find the following users": "Kann die folgenden Benutzer nicht finden", - "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Die folgenden Benutzer konnten nicht eingeladen werden, da sie nicht existieren oder ungültig sind: %(csvNames)s", + "Failed to invite the following users to chat: %(csvUsers)s": "Einladen der folgenden Nutzer:innen fehlgeschlagen: %(csvUsers)s", + "Something went wrong trying to invite the users.": "Beim Einladen der Nutzer:innen lief etwas schief.", + "Failed to find the following users": "Folgenden Nutzer:innen konnten nicht gefunden werden", + "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Folgende Nutzer:innen konnten nicht eingeladen werden, da sie nicht existieren oder ungültig sind: %(csvNames)s", "a new master key signature": "Eine neue Hauptschlüssel Signatur", - "a new cross-signing key signature": "Eine neue cross-signing Schlüssel Signatur", + "a new cross-signing key signature": "Eine neue Cross-Signing-Schlüsselsignatur", "a device cross-signing signature": "Eine Geräte Schlüssel Signatur", "a key signature": "Eine Schlüssel Signatur", "Your password": "Dein Passwort", @@ -1986,9 +1986,9 @@ "If you didn’t sign in to this session, your account may be compromised.": "Wenn du dich nicht bei dieser Sitzung angemeldet hast, ist dein Konto möglicherweise gefährdet.", "This wasn't me": "Das war ich nicht", "Please fill why you're reporting.": "Bitte gib an, weshalb du einen Fehler meldest.", - "Automatically invite users": "Benutzer automatisch einladen", - "Upgrade private room": "Privaten Raum hochstufen", - "Upgrade public room": "Öffentlichen Raum hochstufen", + "Automatically invite users": "Nutzer:innen automatisch einladen", + "Upgrade private room": "Privaten Raum aktualisieren", + "Upgrade public room": "Öffentlichen Raum aktualisieren", "This usually only affects how the room is processed on the server. If you're having problems with your %(brand)s, please report a bug.": "Dies wirkt sich normalerweise nur darauf aus, wie der Raum auf dem Server verarbeitet wird. Wenn du Probleme mit deinem %(brand)s hast, melde bitte einen Bug.", "You'll upgrade this room from to .": "Du wirst diesen Raum von zu aktualisieren.", "Missing session data": "Fehlende Sitzungsdaten", @@ -2001,7 +2001,7 @@ "These files are too large to upload. The file size limit is %(limit)s.": "Die Datei ist zu groß, um hochgeladen zu werden. Die maximale Dateigröße ist %(limit)s.", "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Einige Dateien sind zu groß, um hochgeladen zu werden. Die maximale Dateigröße ist %(limit)s.", "Verify other session": "Andere Sitzung verifizieren", - "Verification Request": "Verifikationsanfrage", + "Verification Request": "Verifizierungsanfrage", "Upload %(count)s other files|other": "%(count)s andere Dateien hochladen", "Upload %(count)s other files|one": "%(count)s andere Datei hochladen", "A widget would like to verify your identity": "Ein Widget möchte deine Identität verifizieren", @@ -2013,7 +2013,7 @@ "Successfully restored %(sessionCount)s keys": "%(sessionCount)s Schlüssel erfolgreich wiederhergestellt", "Reload": "Neu laden", "Take picture": "Foto machen", - "User Status": "Benutzerstatus", + "User Status": "Nutzerstatus", "Country Dropdown": "Landauswahl", "Recovery key mismatch": "Nicht übereinstimmende Wiederherstellungsschlüssel", "Incorrect recovery passphrase": "Falsche Wiederherstellungspassphrase", @@ -2069,7 +2069,7 @@ "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)s haben %(count)s mal nichts geändert", "Deleting cross-signing keys is permanent. Anyone you have verified with will see security alerts. You almost certainly don't want to do this, unless you've lost every device you can cross-sign from.": "Das Löschen von Cross-Signing-Schlüsseln ist dauerhaft. Jeder, mit dem du dich verifiziert hast, bekommt Sicherheitswarnungen angezeigt. Du möchtest dies mit ziemlicher Sicherheit nicht tun, es sei denn, du hast jedes Gerät verloren, von dem aus du ein Cross-Signing durchführen kannst.", "Clearing all data from this session is permanent. Encrypted messages will be lost unless their keys have been backed up.": "Das Löschen aller Daten aus dieser Sitzung ist dauerhaft. Verschlüsselte Nachrichten gehen verloren, sofern deine Schlüssel nicht gesichert wurden.", - "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Wenn du diesen Benutzer verifizierst werden seine Sitzungen für dich und deine Sitzungen für ihn als vertrauenswürdig markiert.", + "Verifying this user will mark their session as trusted, and also mark your session as trusted to them.": "Wenn du diese/e Nutzer!n verifizierst werden seine/ihre Sitzungen für dich und deine Sitzungen für ihn/sie als vertrauenswürdig markiert.", "Verify this device to mark it as trusted. Trusting this device gives you and other users extra peace of mind when using end-to-end encrypted messages.": "Verifiziere dieses Gerät, um es als vertrauenswürdig zu markieren. Das Vertrauen in dieses Gerät gibt dir und anderen Benutzern zusätzliche Sicherheit, wenn ihr Ende-zu-Ende verschlüsselte Nachrichten verwendet.", "Verifying this device will mark it as trusted, and users who have verified with you will trust this device.": "Verifiziere dieses Gerät und es wird es als vertrauenswürdig markiert. Benutzer, die sich bei dir verifiziert haben, werden diesem Gerät auch vertrauen.", "Your %(brand)s doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Dein %(brand)s erlaubt dir nicht, eine Integrationsverwaltung zu verwenden, um dies zu tun. Bitte kontaktiere einen Administrator.", @@ -2178,7 +2178,7 @@ "Waiting for your other session to verify…": "Warte auf die Verifikation deiner anderen Sitzungen…", "You've successfully verified your device!": "Du hast dein Gerät erfolgreich verifiziert!", "QR Code": "QR-Code", - "To continue, use Single Sign On to prove your identity.": "Zum Fortfahren, nutze Single Sign On um deine Identität zu bestätigen.", + "To continue, use Single Sign On to prove your identity.": "Zum Fortfahren, nutze Single Sign-On um deine Identität zu bestätigen.", "Confirm to continue": "Bestätige um fortzufahren", "Click the button below to confirm your identity.": "Klicke den Button unten um deine Identität zu bestätigen.", "Confirm encryption setup": "Bestätige die Einrichtung der Verschlüsselung", From 9ff08ce6aa01bca58494889aac38f722ded4e6b4 Mon Sep 17 00:00:00 2001 From: Tentarial Date: Sat, 23 Jan 2021 23:05:19 +0000 Subject: [PATCH 160/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1108282c32..abef5b248d 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1908,7 +1908,7 @@ "Your theme": "Dein Design", "%(brand)s URL": "%(brand)s URL", "Room ID": "Raum-ID", - "Widget ID": "Widget ID", + "Widget ID": "Widget-ID", "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Wenn du dieses Widget verwendest, können Daten zu %(widgetDomain)s und deinem Integrationsserver übertragen werden.", "Using this widget may share data with %(widgetDomain)s.": "Wenn du dieses Widget verwendest, können Daten zu %(widgetDomain)s übertragen werden.", "Widgets do not use message encryption.": "Widgets verwenden keine Nachrichtenverschlüsselung.", From 6fd2a1565806442915d48d06fb28b513216a0040 Mon Sep 17 00:00:00 2001 From: toastbroot Date: Sun, 24 Jan 2021 00:32:25 +0000 Subject: [PATCH 161/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index abef5b248d..688b142329 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -2131,7 +2131,7 @@ "Room List": "Raumliste", "Autocomplete": "Auto-Vervollständigung", "Alt": "Alt", - "Toggle microphone mute": "Schalte Mikrophon stumm", + "Toggle microphone mute": "Schalte Mikrofon stumm", "Toggle video on/off": "Schalte Video an/aus", "Jump to room search": "Springe zur Raumsuche", "Close dialog or context menu": "Schließe Dialog oder Kontextmenü", From a2a88129dac182f55385dae4bb61d2c03bcf96cf Mon Sep 17 00:00:00 2001 From: Bamstam Date: Sun, 24 Jan 2021 00:31:20 +0000 Subject: [PATCH 162/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 688b142329..b54ea10b34 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -20,7 +20,7 @@ "Change Password": "Passwort ändern", "Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse", "Commands": "Kommandos", - "Emoji": "Emoji", + "Emoji": "Emojis", "Sign in": "Anmelden", "Warning!": "Warnung!", "Error": "Fehler", @@ -314,7 +314,7 @@ "Default Device": "Standard-Gerät", "Microphone": "Mikrofon", "Camera": "Kamera", - "Export": "Export", + "Export": "Exportieren", "Import": "Importieren", "Incorrect username and/or password.": "Inkorrekter Nutzername und/oder Passwort.", "Results from DuckDuckGo": "Ergebnisse von DuckDuckGo", @@ -588,7 +588,7 @@ "Enable inline URL previews by default": "URL-Vorschau standardmäßig aktivieren", "Enable URL previews for this room (only affects you)": "URL-Vorschau für diesen Raum aktivieren (betrifft nur dich)", "Enable URL previews by default for participants in this room": "URL-Vorschau standardmäßig für Mitglieder dieses Raumes aktivieren", - "Please note you are logging into the %(hs)s server, not matrix.org.": "Hinweis: Du meldest dich auf dem %(hs)s-Server an, nicht auf matrix.org.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Hinweis: Du bist im Begriff, dich auf dem %(hs)s-Server anzumelden, nicht auf matrix.org.", "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Sonst ist hier aktuell niemand. Möchtest du Benutzer einladen oder die Warnmeldung bezüglich des leeren Raums deaktivieren?", "URL previews are disabled by default for participants in this room.": "URL-Vorschau ist für Mitglieder dieses Raumes standardmäßig deaktiviert.", "URL previews are enabled by default for participants in this room.": "URL-Vorschau ist für Mitglieder dieses Raumes standardmäßig aktiviert.", From 92d06022330f2186c23b2594869175bdf303155d Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sun, 24 Jan 2021 00:31:12 +0000 Subject: [PATCH 163/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index b54ea10b34..8d786444d5 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -490,7 +490,7 @@ "Leave Community": "Community verlassen", "Add rooms to this community": "Räume zu dieser Community hinzufügen", "%(inviter)s has invited you to join this community": "%(inviter)s hat dich in diese Community eingeladen", - "You are a member of this community": "Du bist Mitglied in dieser Community", + "You are a member of this community": "Du bist Mitglied dieser Community", "You are an administrator of this community": "Du bist ein Administrator dieser Community", "Community %(groupId)s not found": "Community '%(groupId)s' nicht gefunden", "Failed to load %(groupId)s": "'%(groupId)s' konnte nicht geladen werden", @@ -1626,7 +1626,7 @@ "Enter your custom homeserver URL What does this mean?": "Gib eine andere Heimserver-Adresse an Was bedeutet das?", "%(creator)s created and configured the room.": "%(creator)s hat den Raum erstellt und konfiguriert.", "Set up with a recovery key": "Mit einem Wiederherstellungsschlüssel einrichten", - "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Bewahre ihn sicher auf, wie in einem Passwort-Manager oder einem Safe.", + "Keep a copy of it somewhere secure, like a password manager or even a safe.": "Bewahre eine Kopie an einem sicheren Ort, wie einem Passwort-Manager oder in einem Safe auf.", "Your recovery key": "Dein Wiederherstellungsschlüssel", "Copy": "In Zwischenablage kopieren", "Make a copy of your recovery key": "Speichere deinen Wiederherstellungsschlüssel", @@ -1672,10 +1672,10 @@ "Channel: %(channelName)s": "Kanal: %(channelName)s", "Show less": "Weniger zeigen", "Warning: You should only set up key backup from a trusted computer.": "Achtung: Du solltest die Schlüsselsicherung nur von einem vertrauenswürdigen Computer aus einrichten.", - "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Melde dich an um die ausschließlich in dieser Sitzung gespeicherten Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten in jeder Sitzung zu lesen.", + "Regain access to your account and recover encryption keys stored in this session. Without them, you won’t be able to read all of your secure messages in any session.": "Melde dich an, um die ausschließlich in dieser Sitzung gespeicherten Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten in jeder Sitzung zu lesen.", "Forgotten your password?": "Passwort vergessen?", "You're signed out": "Du wurdest abgemeldet", - "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Achtung: Deine persönlichen Daten (inclusive der Verschlüsselungsschlüssel) sind noch in dieser Sitzung gespeichert. Lösche diese Daten wenn du die Sitzung nicht mehr benötigst oder dich mit einem anderen Konto anmelden möchtest.", + "Warning: Your personal data (including encryption keys) is still stored in this session. Clear it if you're finished using this session, or want to sign in to another account.": "Achtung: Deine persönlichen Daten (einschließlich Verschlüsselungsschlüssel) sind noch in dieser Sitzung gespeichert. Lösche diese Daten, wenn du diese Sitzung nicht mehr benötigst, oder dich mit einem anderen Konto anmelden möchtest.", "Confirm deleting these sessions by using Single Sign On to prove your identity.|other": "Bestätige das Löschen dieser Sitzung indem du dich mittels Single Sign-On anmeldest um deine Identität nachzuweisen.", "Confirm deleting these sessions by using Single Sign On to prove your identity.|one": "Bestätige das Löschen dieser Sitzung indem du dich mittels Single Sign-On anmeldest um deine Identität nachzuweisen.", "Confirm deleting these sessions": "Bestätige das Löschen dieser Sitzungen", @@ -1687,8 +1687,8 @@ "Confirm account deactivation": "Konto löschen bestätigen", "Confirm your identity by entering your account password below.": "Bestätige deine Identität, indem du unten dein Kontopasswort eingibst.", "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Bestätige deine Identität indem du diesen Login von einer deiner anderen Sitzungen verifizierst um Zugriff auf deine verschlüsselten Nachrichten zu erhalten.", - "Enter your account password to confirm the upgrade:": "Gib dein Passwort ein um die Aktualisierung zu bestätigen:", - "You'll need to authenticate with the server to confirm the upgrade.": "Du musst dich am Server authentifizieren um die Aktualisierung zu bestätigen.", + "Enter your account password to confirm the upgrade:": "Gib dein Kontopasswort ein, um die Aktualisierung zu bestätigen:", + "You'll need to authenticate with the server to confirm the upgrade.": "Du musst dich am Server authentifizieren, um die Aktualisierung zu bestätigen.", "Enter your recovery passphrase a second time to confirm it.": "Gib deine Wiederherstellungspassphrase zur Bestätigung erneut ein.", "Confirm your recovery passphrase": "Bestätige deine Wiederherstellungspassphrase", "Please enter your recovery passphrase a second time to confirm.": "Bitte gib deine Wiederherstellungspassphrase ein zweites Mal ein um sie zu bestätigen.", From 8a1da2945f3d8b62e90db0fed7be229ef826de84 Mon Sep 17 00:00:00 2001 From: mcnesium Date: Sun, 24 Jan 2021 00:21:55 +0000 Subject: [PATCH 164/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 8d786444d5..58b6747459 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -641,7 +641,7 @@ "Failed to remove tag %(tagName)s from room": "Entfernen der Raum-Kennzeichnung %(tagName)s fehlgeschlagen", "Failed to add tag %(tagName)s to room": "Fehler beim Hinzufügen des \"%(tagName)s\"-Tags an dem Raum", "Did you know: you can use communities to filter your %(brand)s experience!": "Wusstest du: Du kannst Communities nutzen um deine %(brand)s-Erfahrung zu filtern!", - "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Um einen Filter zu setzen, ziehe ein Community-Bild auf das Filter-Panel ganz links. Du kannst jederzeit auf einen Avatar im Filter-Panel klicken um nur die Räume und Personen aus der Community zu sehen.", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Um einen Filter zu setzen, ziehe ein Community-Bild auf das Filter-Panel ganz links. Du kannst jederzeit auf einen Avatar im Filter-Panel klicken, um nur die Räume und Personen aus der Community zu sehen.", "Clear filter": "Filter zurücksetzen", "Key request sent.": "Schlüssel-Anfragen gesendet.", "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Wenn du einen Fehler via GitHub gemeldet hast, können Fehlerberichte uns helfen um das Problem zu finden. Sie enthalten Anwendungsdaten wie deinen Nutzernamen, Raum- und Gruppen-ID's und Aliase die du besucht hast und Nutzernamen anderer Nutzer. Sie enthalten keine Nachrichten.", From 02b552f9580b7331ef81d764e56832ca3df845f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sun, 24 Jan 2021 12:56:44 +0100 Subject: [PATCH 165/275] Fixed 15221 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/elements/PersistedElement.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/views/elements/PersistedElement.js b/src/components/views/elements/PersistedElement.js index 488af5c6a9..506266d2b6 100644 --- a/src/components/views/elements/PersistedElement.js +++ b/src/components/views/elements/PersistedElement.js @@ -165,6 +165,7 @@ export default class PersistedElement extends React.Component { const parentRect = parent.getBoundingClientRect(); Object.assign(child.style, { + zIndex: 10, position: 'absolute', top: parentRect.top + 'px', left: parentRect.left + 'px', From bb9005a5696345b9b5728562bfb0d5a77ba8787e Mon Sep 17 00:00:00 2001 From: jadiof Date: Sun, 24 Jan 2021 16:29:31 +0000 Subject: [PATCH 166/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 58b6747459..a721ec8201 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1330,7 +1330,7 @@ "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Wenn du den gesuchten Raum nicht finden kannst, frage nach einer Einladung für den Raum oder Erstelle einen neuen Raum.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativ kannst du versuchen, den öffentlichen Server unter turn.matrix.org zu verwenden. Allerdings wird dieser nicht so zuverlässig sein, und deine IP-Adresse mit diesem Server teilen. Du kannst dies auch in den Einstellungen konfigurieren.", "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Diese Handlung erfordert es, auf den Standard-Identitätsserver zuzugreifen, um eine E-Mail Adresse oder Telefonnummer zu validieren, aber der Server hat keine Nutzungsbedingungen.", - "Only continue if you trust the owner of the server.": "Fahre nur fort, wenn du dem/r Besitzer*in des Servers vertraust.", + "Only continue if you trust the owner of the server.": "Fahre nur fort, wenn du dem Besitzer des Servers vertraust.", "Trust": "Vertrauen", "Custom (%(level)s)": "Benutzerdefinierte (%(level)s)", "Sends a message as plain text, without interpreting it as markdown": "Verschickt eine Nachricht in Rohtext, ohne sie als Markdown darzustellen", From 5288d804e22b73e42a6b34269b35e28fd17046a5 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sun, 24 Jan 2021 16:29:12 +0000 Subject: [PATCH 167/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a721ec8201..b21232d6ca 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1328,7 +1328,7 @@ "Find a room…": "Einen Raum suchen…", "Find a room… (e.g. %(exampleRoom)s)": "Einen Raum suchen… (z.B. %(exampleRoom)s)", "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Wenn du den gesuchten Raum nicht finden kannst, frage nach einer Einladung für den Raum oder Erstelle einen neuen Raum.", - "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativ kannst du versuchen, den öffentlichen Server unter turn.matrix.org zu verwenden. Allerdings wird dieser nicht so zuverlässig sein, und deine IP-Adresse mit diesem Server teilen. Du kannst dies auch in den Einstellungen konfigurieren.", + "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativ kannst du versuchen, den öffentlichen Server unter turn.matrix.org zu verwenden. Allerdings wird dieser nicht so zuverlässig sein, und du teilst deine IP-Adresse mit diesem Server. Du kannst dies auch in den Einstellungen konfigurieren.", "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Diese Handlung erfordert es, auf den Standard-Identitätsserver zuzugreifen, um eine E-Mail Adresse oder Telefonnummer zu validieren, aber der Server hat keine Nutzungsbedingungen.", "Only continue if you trust the owner of the server.": "Fahre nur fort, wenn du dem Besitzer des Servers vertraust.", "Trust": "Vertrauen", @@ -1937,7 +1937,7 @@ "%(networkName)s rooms": "%(networkName)s Räume", "Matrix rooms": "Matrix Räume", "Close dialog": "Dialog schließen", - "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Bitte teile uns mit, was schief lief, oder besser, erstelle ein GitHub-Issue, das das Problem beschreibt.", + "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Bitte teile uns mit, was schief lief - oder besser, erstelle ein GitHub-Issue, das das Problem beschreibt.", "Reminder: Your browser is unsupported, so your experience may be unpredictable.": "Warnung: Dein Browser wird nicht unterstützt. Die Anwendung kann instabil sein.", "Notes": "Notizen", "If there is additional context that would help in analysing the issue, such as what you were doing at the time, room IDs, user IDs, etc., please include those things here.": "Wenn du mehr Informationen hast, die uns bei Untersuchung des Problems helfen (z.B. was du gerade getan hast, Raum-IDs, Benutzer-IDs, etc.), gib sie bitte hier an.", @@ -2131,7 +2131,7 @@ "Room List": "Raumliste", "Autocomplete": "Auto-Vervollständigung", "Alt": "Alt", - "Toggle microphone mute": "Schalte Mikrofon stumm", + "Toggle microphone mute": "Schalte Mikrofon stumm/an", "Toggle video on/off": "Schalte Video an/aus", "Jump to room search": "Springe zur Raumsuche", "Close dialog or context menu": "Schließe Dialog oder Kontextmenü", @@ -2345,7 +2345,7 @@ "%(brand)s iOS": "%(brand)s iOS", "%(brand)s X for Android": "%(brand)s X für Android", "We’re excited to announce Riot is now Element": "Wir freuen uns zu verkünden, dass Riot jetzt Element ist", - "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher während der Ausführung im Browser durchsuchen. Benutze %(brand)s Desktop, um verschlüsselte Nachrichten in den Suchergebnissen angezeigt zu bekommen. ", + "%(brand)s can't securely cache encrypted messages locally while running in a web browser. Use %(brand)s Desktop for encrypted messages to appear in search results.": "%(brand)s kann verschlüsselte Nachrichten nicht sicher während der Ausführung im Browser durchsuchen. Benutze %(brand)s Desktop, um verschlüsselte Nachrichten in den Suchergebnissen angezeigt zu bekommen.", "Show rooms with unread messages first": "Räume mit ungelesenen Nachrichten zuerst zeigen", "Show previews of messages": "Nachrichtenvorschau anzeigen", "Use default": "Standardeinstellungen benutzen", From 4e438be433d400041df27cad3764dd44255f5c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Sun, 24 Jan 2021 17:40:19 +0100 Subject: [PATCH 168/275] Fixed Czech capital letters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- res/css/views/rooms/_GroupLayout.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/css/views/rooms/_GroupLayout.scss b/res/css/views/rooms/_GroupLayout.scss index 2b447be44a..50ef50110f 100644 --- a/res/css/views/rooms/_GroupLayout.scss +++ b/res/css/views/rooms/_GroupLayout.scss @@ -20,7 +20,7 @@ $left-gutter: 64px; .mx_GroupLayout { .mx_EventTile { > .mx_SenderProfile { - line-height: $font-17px; + line-height: $font-20px; padding-left: $left-gutter; } @@ -38,7 +38,7 @@ $left-gutter: 64px; } .mx_EventTile_line, .mx_EventTile_reply { - padding-top: 3px; + padding-top: 1px; padding-bottom: 3px; line-height: $font-22px; } From 5b2f915ee9c9b1a82376179f464ea2790b003c55 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 25 Jan 2021 12:29:01 +0000 Subject: [PATCH 169/275] Move to newer base image for end-to-end tests This updates to Node 14 (current LTS) as well as moving from Debian Stretch to Buster for the base OS. The Debian upgrade brings along a newer Python 3.8, which is actively supported. Fixes https://github.com/vector-im/element-web/issues/16272 --- scripts/ci/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/ci/Dockerfile b/scripts/ci/Dockerfile index 5351291f29..3fdd0d7bf6 100644 --- a/scripts/ci/Dockerfile +++ b/scripts/ci/Dockerfile @@ -1,8 +1,7 @@ # Update on docker hub with the following commands in the directory of this file: # docker build -t vectorim/element-web-ci-e2etests-env:latest . -# docker log # docker push vectorim/element-web-ci-e2etests-env:latest -FROM node:10 +FROM node:14-buster RUN apt-get update RUN apt-get -y install build-essential python3-dev libffi-dev python-pip python-setuptools sqlite3 libssl-dev python-virtualenv libjpeg-dev libxslt1-dev uuid-runtime # dependencies for chrome (installed by puppeteer) From 638321c65daeb1fe16f0218399960f8d6ef90ec4 Mon Sep 17 00:00:00 2001 From: "@a2sc:matrix.org" Date: Sun, 24 Jan 2021 17:55:05 +0000 Subject: [PATCH 170/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index b21232d6ca..37d7b0a666 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1025,7 +1025,7 @@ "FAQ": "Häufige Fragen", "Versions": "Versionen", "Room Addresses": "Raum-Adressen", - "Deactivating your account is a permanent action - be careful!": "Das Deaktivieren deines Kontos ist nicht widerruflich - sei vorsichtig!", + "Deactivating your account is a permanent action - be careful!": "Die Deaktivierung deines Kontos ist nicht widerruflich - sei vorsichtig!", "Preferences": "Einstellungen", "Room list": "Raumliste", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Die Datei '%(fileName)s' überschreitet die maximale Größe für Uploads auf diesem Heimserver", @@ -1330,7 +1330,7 @@ "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Wenn du den gesuchten Raum nicht finden kannst, frage nach einer Einladung für den Raum oder Erstelle einen neuen Raum.", "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativ kannst du versuchen, den öffentlichen Server unter turn.matrix.org zu verwenden. Allerdings wird dieser nicht so zuverlässig sein, und du teilst deine IP-Adresse mit diesem Server. Du kannst dies auch in den Einstellungen konfigurieren.", "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Diese Handlung erfordert es, auf den Standard-Identitätsserver zuzugreifen, um eine E-Mail Adresse oder Telefonnummer zu validieren, aber der Server hat keine Nutzungsbedingungen.", - "Only continue if you trust the owner of the server.": "Fahre nur fort, wenn du dem Besitzer des Servers vertraust.", + "Only continue if you trust the owner of the server.": "Fahre nur fort, wenn du dem/r Besitzer:in des Servers vertraust.", "Trust": "Vertrauen", "Custom (%(level)s)": "Benutzerdefinierte (%(level)s)", "Sends a message as plain text, without interpreting it as markdown": "Verschickt eine Nachricht in Rohtext, ohne sie als Markdown darzustellen", From 09a3808a2810d1378995794d0bc251a8193b17a4 Mon Sep 17 00:00:00 2001 From: Joshua Dietz Date: Sun, 24 Jan 2021 17:49:15 +0000 Subject: [PATCH 171/275] Translated using Weblate (German) Currently translated at 99.9% (2729 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 37d7b0a666..a084aec03c 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1742,7 +1742,7 @@ "Cross-signing public keys:": "Öffentliche Cross-Signing-Schlüssel:", "in memory": "im Speicher", "Cross-signing private keys:": "Private Cross-Signing-Schlüssel:", - "in secret storage": "im sicheren Speicher", + "in secret storage": "im Schlüsselspeicher", "Self signing private key:": "Selbst signierter privater Schlüssel:", "cached locally": "lokal zwischengespeichert", "not found locally": "lokal nicht gefunden", From 02094f38a929540a1339b91999b658813127a4bd Mon Sep 17 00:00:00 2001 From: Marcelo Filho Date: Sun, 24 Jan 2021 01:44:37 +0000 Subject: [PATCH 172/275] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/pt_BR/ --- src/i18n/strings/pt_BR.json | 50 ++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 486652a449..f69c1d5d9a 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -2912,5 +2912,53 @@ "Sends the given message with fireworks": "Envia a mensagem com fogos de artifício", "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Adiciona ┬──┬ ノ( ゜-゜ノ) a uma mensagem de texto simples", "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Adiciona (╯°□°)╯︵ ┻━┻ a uma mensagem de texto", - "You have no visible notifications.": "Não há notificações." + "You have no visible notifications.": "Não há notificações.", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Esta sessão detectou que a sua Frase de Segurança e a chave para mensagens seguras foram removidas.", + "A new Security Phrase and key for Secure Messages have been detected.": "Uma nova Frase de Segurança e uma nova chave para mensagens seguras foram detectadas.", + "Make a copy of your Security Key": "Faça uma cópia da sua Chave de Segurança", + "Confirm your Security Phrase": "Confirmar com a sua Frase de Segurança", + "Secure your backup with a Security Phrase": "Proteja o seu backup com uma Frase de Segurança", + "Your Security Key is in your Downloads folder.": "Sua Chave de Segurança está na pasta Downloads.", + "Your Security Key has been copied to your clipboard, paste it to:": "A sua Chave de Segurança foi copiada para a sua área de transferência, cole-a em:", + "Your Security Key": "Sua Chave de Segurança", + "Your Security Key is a safety net - you can use it to restore access to your encrypted messages if you forget your Security Phrase.": "A sua Chave de Segurança é uma prevenção - você pode usá-la para restaurar o acesso às suas mensagens criptografadas, se esquecer a sua Frase de Segurança.", + "Repeat your Security Phrase...": "Repita a sua Frase de Segurança...", + "Please enter your Security Phrase a second time to confirm.": "Digite a sua Frase de Segurança uma segunda vez para confirmá-la.", + "Set up with a Security Key": "Configurar uma Chave de Segurança", + "Great! This Security Phrase looks strong enough.": "Ótimo! Essa frase de segurança parece ser segura o suficiente.", + "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "Armazenaremos uma cópia criptografada de suas chaves em nosso servidor. Proteja o seu backup com uma Frase de Segurança.", + "Use Security Key": "Use a Chave de Segurança", + "Use Security Key or Phrase": "Use uma Chave de Segurança ou uma Frase de Segurança", + "If you've forgotten your Security Key you can ": "Se você esqueceu a sua Chave de Segurança, você pode ", + "Access your secure message history and set up secure messaging by entering your Security Key.": "Acesse o seu histórico de mensagens seguras e configure as mensagens seguras, ao inserir a sua Chave de Segurança.", + "Not a valid Security Key": "Chave de Segurança inválida", + "This looks like a valid Security Key!": "Essa Chave de Segurança é válida!", + "Enter Security Key": "Digite a Chave de Segurança", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Se você esqueceu a sua Frase de Segurança, você pode usar a sua Chave de Segurança ou definir novas opções de recuperação", + "Access your secure message history and set up secure messaging by entering your Security Phrase.": "Acesse o seu histórico de mensagens seguras e configure mensagens seguras digitando a sua Frase de Segurança.", + "Enter Security Phrase": "Digite a Frase de Segurança", + "Backup could not be decrypted with this Security Phrase: please verify that you entered the correct Security Phrase.": "O backup não pôde ser descriptografado com esta Frase de Segurança: verifique se você digitou a Frase de Segurança correta.", + "Incorrect Security Phrase": "Frase de Segurança incorreta", + "Backup could not be decrypted with this Security Key: please verify that you entered the correct Security Key.": "Não foi possível descriptografar o backup com esta chave de segurança: verifique se você digitou a chave de segurança correta.", + "Security Key mismatch": "Incompatibilidade da Chave de Segurança", + "Unable to access secret storage. Please verify that you entered the correct Security Phrase.": "Não foi possível acessar o armazenamento secreto. Verifique se você digitou a Frase de Segurança correta.", + "Invalid Security Key": "Chave de Segurança inválida", + "Wrong Security Key": "Chave de Segurança errada", + "We recommend you change your password and Security Key in Settings immediately": "Recomendamos que você altere imediatamente a sua senha e Chave de Segurança nas Configurações", + "Transfer": "Transferir", + "Failed to transfer call": "Houve uma falha ao transferir a chamada", + "A call can only be transferred to a single user.": "Uma chamada só pode ser transferida para um único usuário.", + "There was an error finding this widget.": "Ocorreu um erro ao encontrar este widget.", + "Active Widgets": "Widgets ativados", + "Set my room layout for everyone": "Definir a minha aparência da sala para todos", + "Open dial pad": "Abrir o teclado de discagem", + "Start a Conversation": "Começar uma conversa", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "Faça backup de suas chaves de criptografia com os dados da sua conta, para se prevenir a perder o acesso às suas sessões. Suas chaves serão protegidas por uma Chave de Segurança exclusiva.", + "Channel: ": "Canal: ", + "Workspace: ": "Espaço de trabalho: ", + "Dial pad": "Teclado de discagem", + "There was an error looking up the phone number": "Ocorreu um erro ao procurar o número de telefone", + "Unable to look up phone number": "Não foi possível procurar o número de telefone", + "Change which room, message, or user you're viewing": "Alterar a sala, mensagem ou usuário que você está visualizando", + "%(senderName)s has updated the widget layout": "%(senderName)s atualizou a aparência do widget" } From 4ba091a21dd8c2c8b435f9c15add958600189314 Mon Sep 17 00:00:00 2001 From: Andrejs Date: Mon, 25 Jan 2021 06:01:34 +0000 Subject: [PATCH 173/275] Translated using Weblate (Latvian) Currently translated at 34.1% (932 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/lv/ --- src/i18n/strings/lv.json | 436 +++++++++++++++++++++++++++++---------- 1 file changed, 327 insertions(+), 109 deletions(-) diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 6369ffed82..24d80e6a11 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -12,11 +12,11 @@ "No Microphones detected": "Nav mikrofonu", "No Webcams detected": "Nav webkameru", "No media permissions": "Nav datu nesēju, kuriem atļauta piekļuve", - "You may need to manually permit %(brand)s to access your microphone/webcam": "Tev varētu būt nepieciešams manuāli atļaut %(brand)s pieslēgties tavam mikrofonam/webkamerai", + "You may need to manually permit %(brand)s to access your microphone/webcam": "Jums varētu būt nepieciešams manuāli atļaut %(brand)s piekļuvi mikrofonam vai tīmekļa kamerai", "Default Device": "Noklusējuma ierīce", "Microphone": "Mikrofons", "Camera": "Kamera", - "Advanced": "Papildus", + "Advanced": "Papildu", "Always show message timestamps": "Vienmēr rādīt ziņojumu laika zīmogu", "Authentication": "Autentifikācija", "%(items)s and %(lastItem)s": "%(items)s un %(lastItem)s", @@ -32,12 +32,12 @@ "Attachment": "Pielikums", "Autoplay GIFs and videos": "Automātiski rādīt GIF animācijas un video", "%(senderName)s banned %(targetName)s.": "%(senderName)s liedza pieeju %(targetName)s.", - "Ban": "Nobanot/liegt pieeju", - "Banned users": "Banotie/bloķētie lietotāji (kuriem liegta pieeja)", - "Bans user with given id": "Bloķē (liedz pieeju) lietotāju pēc uzdotā ID (nobano)", + "Ban": "Liegt pieeju", + "Banned users": "Lietotāji, kuriem liegta pieeju", + "Bans user with given id": "Liedz pieeju lietotājam ar norādīto id", "Call Timeout": "Savienojuma gaidīšanas noilgums", "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Neizdodas savienoties ar bāzes serveri. Pārbaudi tīkla savienojumu un pārliecinies, ka bāzes servera SSL sertifikāts ir uzticams, kā arī pārlūkā instalētie paplašinājumi nebloķē pieprasījumus.", - "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Neizdodas savienoties ar bāzes serveri izmantojot HTTP protokolu, kad Tava pārlūka adreses laukā norādīts HTTPS protokols. Tā vietā izmanto HTTPS vai iespējo nedrošos skriptus.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Neizdodas savienoties ar bāzes serveri izmantojot HTTP protokolu, kad pārlūka adreses laukā norādīts HTTPS protokols. Tā vietā izmanto HTTPS vai iespējo nedrošos skriptus.", "Change Password": "Paroles maiņa", "%(senderName)s changed their profile picture.": "%(senderName)s nomainīja profila attēlu.", "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s nomainīja statusa līmeni %(powerLevelDiffText)s.", @@ -54,7 +54,7 @@ "Close": "Aizvērt", "Command error": "Komandas kļūda", "Commands": "Komandas", - "Confirm password": "Apstiprini paroli", + "Confirm password": "Apstipriniet paroli", "Continue": "Turpināt", "Create Room": "Izveidot istabu", "Cryptography": "Kriptogrāfija", @@ -69,13 +69,13 @@ "Default": "Noklusējuma", "Disinvite": "Atsaukt", "Displays action": "Parāda darbību", - "Download %(text)s": "Lejupielādēt tekstu: %(text)s", + "Download %(text)s": "Lejupielādēt: %(text)s", "Drop File Here": "Ievelc failu šeit", "Email": "Epasts", "Email address": "Epasta adrese", "Emoji": "Emocīši (emoji)", "%(senderName)s ended the call.": "%(senderName)s beidza zvanu.", - "Enter passphrase": "Ievadi paroles frāzi", + "Enter passphrase": "Ievadiet frāzveida paroli", "Error": "Kļūda", "Error decrypting attachment": "Kļūda atšifrējot pielikumu", "Error: Problem communicating with the given homeserver.": "Kļūda: Saziņas problēma ar norādīto bāzes serveri.", @@ -90,7 +90,7 @@ "Failed to fetch avatar URL": "Neizdevās noteikt avatara URL adresi", "Failed to forget room %(errCode)s": "Neizdevās \"aizmirst\" istabu %(errCode)s", "Failed to join room": "Neizdevās pievienoties istabai", - "Failed to kick": "Neizdevās izspert/padzīt (kick)", + "Failed to kick": "Neizdevās padzīt", "Failed to leave room": "Neizdevās pamest istabu", "Failed to load timeline position": "Neizdevās ielādēt laikpaziņojumu pozīciju", "Failed to mute user": "Neizdevās apklusināt lietotāju", @@ -100,15 +100,15 @@ "Failed to send request.": "Neizdevās nosūtīt pieprasījumu.", "Failed to set display name": "Neizdevās iestatīt redzamo vārdu", "Failed to unban": "Neizdevās atbanot/atbloķēt (atcelt pieejas liegumu)", - "Failed to upload profile picture!": "Neizdevās augšuplādēt profila attēlu!", + "Failed to upload profile picture!": "Neizdevās augšupielādēt profila attēlu!", "Failed to verify email address: make sure you clicked the link in the email": "Neizdevās apstiprināt epasta adresi. Pārbaudi, vai Tu esi noklikšķinājis/usi saiti epasta ziņā", "Failure to create room": "Neizdevās izveidot istabu", - "Favourite": "Favorīti (izlase)", - "Favourites": "Favorīti", + "Favourite": "Izlase", + "Favourites": "Izlase", "Fill screen": "Aizpildīt ekrānu", "Filter room members": "Filtrēt istabas biedrus", "Forget room": "\"Aizmirst\" istabu", - "For security, this session has been signed out. Please sign in again.": "Drošības nolūkos, šī sesija ir beigusies. Lūdzu, pieraksties par jaunu.", + "For security, this session has been signed out. Please sign in again.": "Drošības nolūkos šī sesija ir pārtraukta. Lūdzu, pieraksties par jaunu.", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s no %(fromPowerLevel)s uz %(toPowerLevel)s", "Guests cannot join this room even if explicitly invited.": "Viesi nevar pievienoties šai istabai, pat ja ir uzaicināti.", "Hangup": "Beigt zvanu", @@ -135,15 +135,15 @@ "Join Room": "Pievienoties istabai", "%(targetName)s joined the room.": "%(targetName)s pievienojās istabai.", "Jump to first unread message.": "Pāriet uz pirmo neizlasīto ziņu.", - "%(senderName)s kicked %(targetName)s.": "%(senderName)s iespēra (kick) %(targetName)s.", - "Kick": "Izspert/padzīt no istabas (kick)", - "Kicks user with given id": "Padzen (kick) lietotāju ar norādīto Id", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s padzina %(targetName)s.", + "Kick": "Padzīt", + "Kicks user with given id": "Padzen lietotāju ar norādīto id", "Labs": "Izmēģinājumu lauciņš", "Last seen": "Pēdējo reizi redzēts/a", - "Leave room": "Doties prom no istabas", + "Leave room": "Pamest istabu", "%(targetName)s left the room.": "%(targetName)s devās prom no istabas.", "Logout": "Izrakstīties", - "Low priority": "Zemas prioritātes", + "Low priority": "Zema prioritāte", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas biedriem no brīža, kad tie tika uzaicināti.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas biedriem ar brīdi, kad tie pievienojās.", "%(senderName)s made future room history visible to all room members.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas biedriem.", @@ -153,7 +153,7 @@ "Missing room_id in request": "Iztrūkstošs room_id pieprasījumā", "Missing user_id in request": "Iztrūkstošs user_id pieprasījumā", "Moderator": "Moderators", - "Mute": "Noklusināt (izslēgt skaņu)", + "Mute": "Apklusināt", "Name": "Vārds", "New passwords don't match": "Jaunās paroles nesakrīt", "New passwords must match each other.": "Jaunajām parolēm ir jāsakrīt vienai ar otru.", @@ -162,18 +162,18 @@ "(not supported by this browser)": "(netiek atbalstīts šajā pārlūkā)", "": "", "No display name": "Nav publiski redzamā vārda", - "No more results": "Nav tālāko rezultātu", + "No more results": "Vairāk nekādu rezultātu nav", "No results": "Nav rezultātu", "No users have specific privileges in this room": "Šajā istabā nav lietotāju ar īpašām privilēģijām", "OK": "Lai notiek", "olm version:": "Olm versija:", - "Only people who have been invited": "Vienīgi cilvēki, kuri uzaicināti", + "Only people who have been invited": "Vienīgi uzaicināti cilvēki", "Operation failed": "Darbība neizdevās", "Password": "Parole", "Passwords can't be empty": "Paroles nevar būt tukšas", "Permissions": "Atļaujas", "Phone": "Telefons", - "Please check your email and click on the link it contains. Once this is done, click continue.": "Lūdzu pārbaudi savu epastu un noklikšķini tajā esošo saiti. Tiklīdz tas ir izdarīts, klikšķini \"turpināt\".", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Lūdzu, pārbaudi savu epastu un noklikšķini tajā esošo saiti. Tiklīdz tas ir izdarīts, klikšķini \"turpināt\".", "Private Chat": "Privātais čats", "Privileged Users": "Priviliģētie lietotāji", "Profile": "Profils", @@ -188,7 +188,7 @@ "%(senderName)s requested a VoIP conference.": "%(senderName)s vēlas VoIP konferenci.", "Results from DuckDuckGo": "Rezultāti no DuckDuckGo", "Return to login screen": "Atgriezties uz pierakstīšanās lapu", - "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s nav atļauts nosūtīt Tev paziņojumus. Lūdzu pārbaudi sava pārlūka iestatījumus", + "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s nav atļauts nosūtīt jums paziņojumus. Lūdzu pārbaudi sava pārlūka iestatījumus", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s nav piešķirta atļauja nosūtīt paziņojumus. Lūdzu mēģini vēlreiz", "%(brand)s version:": "%(brand)s versija:", "Unable to enable Notifications": "Nav iespējams iespējot paziņojumus", @@ -197,16 +197,16 @@ "Room %(roomId)s not visible": "Istaba %(roomId)s nav redzama", "%(roomName)s does not exist.": "%(roomName)s neeksistē.", "%(roomName)s is not accessible at this time.": "%(roomName)s šobrīd nav pieejama.", - "Seen by %(userName)s at %(dateTime)s": "Redzējis %(userName)s %(dateTime)s", + "Seen by %(userName)s at %(dateTime)s": "Skatījis %(userName)s %(dateTime)s", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s nosūtīja attēlu.", "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s nosūtīja uzaicinājumu %(targetDisplayName)s pievienoties istabai.", "%(senderName)s set a profile picture.": "%(senderName)s uzstādīja profila attēlu.", "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s nomainīja attēlojamo/redzamo vārdu uz: %(displayName)s.", - "%(senderName)s unbanned %(targetName)s.": "%(senderName)s atcēla pieejas ierobežojumu (atbanoja) %(targetName)s.", - "Uploading %(filename)s and %(count)s others|zero": "Tiek augšuplādēts %(filename)s", - "Uploading %(filename)s and %(count)s others|one": "Tiek augšuplādēts %(filename)s un %(count)s citi", - "Uploading %(filename)s and %(count)s others|other": "Tiek augšuplādēts %(filename)s un %(count)s citi", - "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s atcēla pieejas liegumu %(targetName)s.", + "Uploading %(filename)s and %(count)s others|zero": "Tiek augšupielādēts %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Tiek augšupielādēts %(filename)s un %(count)s citi", + "Uploading %(filename)s and %(count)s others|other": "Tiek augšupielādēts %(filename)s un %(count)s citi", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (tiesību līmenis %(powerLevelNumber)s)", "Username invalid: %(errMessage)s": "Neatbilstošs lietotājvārds: %(errMessage)s", "(unknown failure: %(reason)s)": "(nezināma kļūda: %(reason)s)", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s atsauca %(targetName)s uzaicinājumu.", @@ -221,7 +221,7 @@ "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Notiek Tevis novirzīšana uz ārēju trešās puses vietni. Tu vari atļaut savam kontam piekļuvi ar %(integrationsUrl)s. Vai vēlies turpināt?", "Ongoing conference call%(supportedText)s.": "Notiekošs konferences zvans %(supportedText)s.", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s dzēsa istabas avataru.", - "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s nomainīja istabas avataru %(roomName)s", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s nomainīja %(roomName)s istabas avataru", "Room Colour": "Istabas krāsa", "Rooms": "Istabas", "Save": "Saglabāt", @@ -231,12 +231,12 @@ "Send Reset Email": "Nosūtīt atiestatīšanas epastu", "Server error": "Servera kļūda", "Server may be unavailable, overloaded, or search timed out :(": "Serveris izskatās nesasniedzams, ir pārslogots, vai arī meklēšana beigusies ar savienojuma noildzi :(", - "Server may be unavailable, overloaded, or you hit a bug.": "Serveris ir nesasniedzams, pārslogots, vai arī esi uzdūries kļūdai programmā.", + "Server may be unavailable, overloaded, or you hit a bug.": "Serveris ir nesasniedzams, pārslogots, vai arī esat saskārties ar kļūdu programmā.", "Server unavailable, overloaded, or something else went wrong.": "Serveris ir nesasniedzams, pārslogots, vai arī esi uzdūries kļūdai.", "Session ID": "Sesijas Id", "Settings": "Iestatījumi", "Show timestamps in 12 hour format (e.g. 2:30pm)": "Rādīt laiku 12 stundu formātā (piemēram 2:30pm)", - "Signed Out": "Izrakstījās", + "Signed Out": "Izrakstīšanās", "Sign in": "Pierakstīties", "Sign out": "Izrakstīties", "%(count)s of your messages have not been sent.|other": "Dažas no tavām ziņām netika nosūtītas.", @@ -247,13 +247,13 @@ "The phone number entered looks invalid": "Ievadītais telefona numurs izskatās nepareizs", "This email address is already in use": "Šī epasta adrese jau tiek izmantota", "This email address was not found": "Šāda epasta adrese nav atrasta", - "The email address linked to your account must be entered.": "Ir jāievada Tavam kontam piesaistītā epasta adrese.", + "The email address linked to your account must be entered.": "Ir jāievada jūsu kontam piesaistītā epasta adrese.", "The remote side failed to pick up": "Zvana adresāts neatbild", "This room has no local addresses": "Šai istabai nav lokālo adrešu", "This room is not recognised.": "Šī istaba netika atpazīta.", "This doesn't appear to be a valid email address": "Šī neizskatās pēc derīgas epasta adreses", "This phone number is already in use": "Šis telefona numurs jau tiek izmantots", - "This room": "šajā istabā", + "This room": "Šajā istabā", "This room is not accessible by remote Matrix servers": "Šī istaba nav pieejama no attālinātajiem Matrix serveriem", "To use it, just wait for autocomplete results to load and tab through them.": "Lai to izmantotu, vienkārši gaidi, kamēr ielādējas automātiski ieteiktie rezultāti, un pārvietojies caur tiem.", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Notika mēģinājums ielādēt šīs istabas specifisku laikpaziņojumu sadaļu, bet Tev nav atļaujas skatīt šo ziņu.", @@ -261,27 +261,27 @@ "Unable to add email address": "Nav iespējams pievienot epasta adresi", "Unable to remove contact information": "Nav iespējams dzēst kontaktinformāciju", "Unable to verify email address.": "Nav iespējams apstiprināt epasta adresi.", - "Unban": "Atbanot/atcelt pieejas liegumu", + "Unban": "Atcelt pieejas liegumu", "Unable to capture screen": "Neizdevās uzņemt ekrānattēlu", "unknown caller": "nezināms zvanītājs", "unknown error code": "nezināms kļūdas kods", - "Unmute": "Ieslēgt skaņu", + "Unmute": "Pārtraukt apklusināšanu", "Unnamed Room": "Istaba bez nosaukuma", "Cancel": "Atcelt", "Create new room": "Izveidot jaunu istabu", "Custom Server Options": "Iestatāmās servera opcijas", - "Dismiss": "Atteikt", + "Dismiss": "Aizvērt", "You have enabled URL previews by default.": "URL priekšskats pēc noklusējuma Tev iriespējots .", - "Upload avatar": "Augšuplādēt avataru (profila attēlu)", + "Upload avatar": "Augšupielādēt avataru (profila attēlu)", "Upload Failed": "Augšupielāde (nosūtīšana) neizdevās", - "Upload file": "Augšuplādēt failu", - "Upload new:": "Augšuplādēt jaunu:", + "Upload file": "Augšupielādēt failu", + "Upload new:": "Augšupielādēt jaunu:", "Usage": "Lietojums", "Users": "Lietotāji", "Verification Pending": "Gaida verifikāciju", "Verified key": "Verificēta atslēga", - "Video call": "VIDEO zvans", - "Voice call": "AUDIO zvans", + "Video call": "Video zvans", + "Voice call": "Balss zvans", "VoIP conference finished.": "VoIP konference beidzās.", "VoIP conference started.": "VoIP konference sākās.", "VoIP is unsupported": "VoIP netiek atbalstīts", @@ -298,7 +298,7 @@ "You must register to use this functionality": "Lai izmantotu šo funkcionalitāti, Tev ir jāreģistrējas", "You need to be able to invite users to do that.": "Lai to darītu, Tev ir jāspēj uzaicināt lietotājus.", "You need to be logged in.": "Tev ir jāpierakstās.", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Tava epasta adrese nav piesaistīta pie Matrix Id šajā Bāzes serverī.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Jūsu epasta adrese nav piesaistīta nevienam Matrix ID šajā bāzes serverī.", "You seem to be in a call, are you sure you want to quit?": "Izskatās, ka atrodies zvana režīmā. Vai tiešām vēlies iziet?", "You seem to be uploading files, are you sure you want to quit?": "Izskatās, ka šobrīd augšuplādē failus. Vai tiešām vēlies iziet?", "Sun": "Sv.", @@ -327,7 +327,7 @@ "There are no visible files in this room": "Nav redzamu failu šajā istabā", "Room": "Istaba", "Connectivity to the server has been lost.": "Savienojums ar serveri pārtrūka.", - "Sent messages will be stored until your connection has returned.": "Nosūtītās ziņas tiks saglabātas tiklīdz savienojums tiks atjaunots.", + "Sent messages will be stored until your connection has returned.": "Sūtītās ziņas tiks saglabātas līdz savienojums tiks atjaunots.", "Active call": "Aktīvs zvans", "Please select the destination room for this message": "Lūdzu izvēlies šīs ziņas mērķa istabu", "Room directory": "Istabu katalogs", @@ -335,32 +335,32 @@ "New Password": "Jaunā parole", "Start automatically after system login": "Startēt pie ierīces ielādes", "Analytics": "Analītika", - "Options": "Opcijas/iestatījumi", + "Options": "Opcijas", "%(brand)s collects anonymous analytics to allow us to improve the application.": "%(brand)s ievāc anonīmus analītikas datus, lai varētu uzlabot aplikācijas darbību.", - "Passphrases must match": "Paroles frāzēm ir jāsakrīt", - "Passphrase must not be empty": "Paroles frāze nevar būt tukša", + "Passphrases must match": "Frāzveida parolēm ir jāsakrīt", + "Passphrase must not be empty": "Frāzveida parole nevar būt tukša", "Export room keys": "Eksportēt istabas atslēgas", - "Confirm passphrase": "Apstiprināt paroles frāzi", + "Confirm passphrase": "Apstipriniet frāzveida paroli", "Import room keys": "Importēt istabas atslēgas", "File to import": "Importējamais fails", "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Šī darbība ļauj Tev uz lokālo failu eksportēt atslēgas priekš tām ziņām, kuras Tu saņēmi šifrētās istabās. Tu varēsi importēt šo failu citā Matrix klientā, lai tajā būtu iespējams lasīt šīs ziņas atšifrētas.", - "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Eksportētais fails ļaus ikvienam, kurš to spēj lasīt, atšifrēt jebkuras Tavas šifrētās ziņas, tāpēc ievēro piesardzību, un glabā šo failu drošā vietā. Lai palīdzētu to nodrošināt, Tev jāievada paroles frāze, kura tiks izmantota eksportēto datu šifrēšanai. Datu importēšana būs iespējama tikai izmantojot šo pašu paroles frāzi.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Eksportētā datne ļaus ikvienam, kurš to spēj to nolasīt, atšifrēt jebkuras jūsu šifrētās ziņas. Tādēļ ievērojiet piesardzību un glabājiet šo datni drošā vietā. Lai palīdzētu to nodrošināt, zemāk ievadiet frāzveida paroli eksportējamo datu šifrēšanai. Datu importēšana būs iespējama tikai izmantojot šo pašu frāzveida paroli.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Šis process ļaus Tev importēt šifrēšanas atslēgas, kuras Tu iepriekš eksportēji no cita Matrix klienta. Tas ļaus Tev atšifrēt čata vēsturi.", - "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksporta fails būs aizsargāts ar paroles frāzi. Tā ir jāievada šeit, lai atšifrētu failu.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksporta fails būs aizsargāts ar frāzveida paroli. Tā ir jāievada šeit, lai atšifrētu failu.", "You must join the room to see its files": "Tev ir jāpievienojas istabai, lai redzētu tās failus", "Failed to invite": "Neizdevās uzaicināt", - "Confirm Removal": "Apstiprini dzēšanu", + "Confirm Removal": "Apstipriniet dzēšanu", "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Vai tiešām vēlies dzēst šo notikumu? Ņem vērā, ka istabas nosaukuma vai tēmas nosaukuma maiņa var ietekmēt (atsaukt) izmaiņas.", "Unknown error": "Nezināma kļūda", "Incorrect password": "Nepareiza parole", "Unable to restore session": "Nav iespējams atjaunot sesiju", - "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ja Tu iepriekš izmantoji jaunāku %(brand)s versiju, tava sesija var nebūt saderīga ar šo versiju. Aizver šo logu un atgriezies jaunākajā versijā.", + "If you have previously used a more recent version of %(brand)s, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ja iepriekš izmantojāt jaunāku %(brand)s versiju, jūsu sesija var nebūt saderīga ar šo versiju. Aizveriet šo logu un atgriezieties jaunākajā versijā.", "Unknown Address": "Nezināma adrese", "ex. @bob:example.com": "piemēram, @valters:smaidu.lv", "Add User": "Pievienot lietotāju", "Please check your email to continue registration.": "Lūdzu pārbaudi savu epastu lai turpinātu reģistrāciju.", "Token incorrect": "Nepareizs autentifikācijas tokens", - "Please enter the code it contains:": "Lūdzu ievadi tajā ietverto kodu:", + "Please enter the code it contains:": "Lūdzu, ievadiet tajā ietverto kodu:", "powered by Matrix": "Tiek darbināta ar Matrix", "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ja Tu nenorādīsi epasta adresi, tev nebūs iespējams izmantot paroles atiestatīšanu. Vai to vēlies?", "Error decrypting audio": "Kļūda atšifrējot audio", @@ -368,18 +368,18 @@ "Error decrypting video": "Kļūda atšifrējot video", "Add an Integration": "Pievienot integrāciju", "URL Previews": "URL priekšskats", - "Drop file here to upload": "Ievelc failu šeit lai augšuplādētu", + "Drop file here to upload": "Ievelc šeit failu augšupielādei", " (unsupported)": " (netiek atbalstīts)", - "Online": "Onlainā", + "Online": "Tiešsaistē", "Idle": "Dīkstāvē", - "Offline": "Atsaistē (ārpus tīkla)", + "Offline": "Bezsaistē", "Check for update": "Pārbaudīt, vai ir aktualizācijas", "Username available": "Lietotājvārds ir pieejams", "Username not available": "Lietotājvārds nav pieejams", "Something went wrong!": "Kaut kas nogāja greizi!", "This will be your account name on the homeserver, or you can pick a different server.": "Šis būs Tavs konta vārds Bāzes serverī, vai arī vari izvēlēties citu serveri.", "If you already have a Matrix account you can log in instead.": "Vai arī, ja Tev jau ir Matrix konts, tu vari pierakstīties tajā.", - "Your browser does not support the required cryptography extensions": "Tavs pārlūks neatbalsta vajadzīgos kriptogrāfijas paplašinājumus", + "Your browser does not support the required cryptography extensions": "Jūsu pārlūks neatbalsta vajadzīgos kriptogrāfijas paplašinājumus", "Not a valid %(brand)s keyfile": "Nederīgs %(brand)s atslēgfails", "Authentication check failed: incorrect password?": "Autentifikācijas pārbaude neizdevās. Nepareiza parole?", "Do you want to set an email address?": "Vai vēlies norādīt epasta adresi?", @@ -409,7 +409,7 @@ "Failed to upload image": "Neizdevās augšupielādēt attēlu", "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu", "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s", - "Unpin Message": "Atkabināt ziņu", + "Unpin Message": "Atspraust ziņu", "Add rooms to this community": "Pievienot istabas šai kopienai", "Failed to set direct chat tag": "Neizdevās tiešajam čatam uzstādīt birku", "Warning": "Brīdinājums", @@ -424,7 +424,7 @@ "Whether or not you're using the Richtext mode of the Rich Text Editor": "Neatkarīgi no tā, vai izmantojat Richtext režīmu redaktorā Rich Text Editor", "Your homeserver's URL": "Bāzes servera URL adrese", "The information being sent to us to help make %(brand)s better includes:": "Informācija, kura mums tiek nosūtīta, lai ļautu padarīt %(brand)s labāku, ietver:", - "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ja šī lapa ietver identificējamu informāciju, tādu kā istaba, lietotājs, grupas Id, šie dati tiek noņemti pirms nosūtīšanas uz serveri.", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ja šī lapa ietver identificējamu informāciju, tādu kā istaba, lietotājs, grupas Id, tad šie dati tiek noņemti pirms nosūtīšanas uz serveri.", "Call Failed": "Zvans neizdevās", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", "Who would you like to add to this community?": "Kurus cilvēkus Tu vēlētos pievienot šai kopienai?", @@ -447,37 +447,37 @@ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s nomainīja savu attēlojamo/redzamo vārdu uz %(displayName)s.", "%(senderName)s changed the pinned messages for the room.": "%(senderName)s šai istabai nomainīja piestiprinātās ziņas.", "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s vidžets, kuru mainīja %(senderName)s", - "Message Pinning": "Ziņu piekabināšana", + "Message Pinning": "Ziņu piespraušana", "Mirror local video feed": "Spoguļot vietējā video barotni", "Enable inline URL previews by default": "URL priekšskats pēc noklusējuma", "Enable URL previews for this room (only affects you)": "URL priekšskati šai istabai (ietekmē tikai Tevi pašu)", "Enable URL previews by default for participants in this room": "URL priekšskati pēc noklusējuma visiem šīs istabas dalībniekiem", - "%(senderName)s sent an image": "%(senderName)s nosūtīja bildi", + "%(senderName)s sent an image": "%(senderName)s nosūtīja attēlu", "%(senderName)s sent a video": "%(senderName)s nosūtīja video", "%(senderName)s uploaded a file": "%(senderName)s augšupielādēja failu", "Disinvite this user?": "Atsaukt ielūgumu šim lietotājam?", - "Kick this user?": "Izspert/padzīt (kick) šo lietotāju?", + "Kick this user?": "Padzīt šo lietotāju?", "Unban this user?": "Atbanot/atbloķēt šo lietotāju (atcelt liegumu šim lietotājam)?", "Ban this user?": "Nobanot/bloķēt šo lietotāju (uzlikt liegumu šim lietotājam)?", "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Jūs nevarēsiet atcelt šīs izmaiņas pēc sava statusa pazemināšanas. Gadījumā, ja esat pēdējais priviliģētais lietotājs istabā, būs neiespējami atgūt šīs privilēģijas.", "Unignore": "Atcelt ignorēšanu", "Ignore": "Ignorēt", - "Jump to read receipt": "Pāriet uz izlasīšanas apstiprinājumu", - "Mention": "Pieminējums/atsauce", + "Jump to read receipt": "Pāriet uz pēdējo skatīto ziņu", + "Mention": "Pieminēt", "Invite": "Uzaicināt", - "Send an encrypted reply…": "sūtīt šifrētu atbildi…", - "Send an encrypted message…": "rakstīt ziņu (šifrētu)…", + "Send an encrypted reply…": "Sūtīt šifrētu atbildi…", + "Send an encrypted message…": "Sūtīt šifrētu ziņu…", "Jump to message": "Pāriet uz ziņu", - "No pinned messages.": "Nav piekabinātu ziņu.", + "No pinned messages.": "Nav piespraustu ziņu.", "Loading...": "Ielāde...", - "Pinned Messages": "Piekabinātās ziņas", + "Pinned Messages": "Piespraustās ziņas", "%(duration)ss": "%(duration)s sek", "%(duration)sm": "%(duration)smin", "%(duration)sh": "%(duration)sstundas", - "%(duration)sd": "%(duration)sdienas", - "Online for %(duration)s": "Pieslēgumā %(duration)s", + "%(duration)sd": "%(duration)s dienas", + "Online for %(duration)s": "Tiešsaistē %(duration)s", "Idle for %(duration)s": "Dīkstāvē (neaktīvs) %(duration)s", - "Offline for %(duration)s": "Atslēgumā %(duration)s", + "Offline for %(duration)s": "Bezsaistē %(duration)s", "Unknown for %(duration)s": "Neskaidrā statusā %(duration)s", "Unknown": "Neskaidrs statuss", "Replying": "Atbildot uz", @@ -492,9 +492,9 @@ "Members only (since they joined)": "Tikai biedri (kopš pievienošanās)", "Invalid community ID": "Nederīgs kopienas Id", "'%(groupId)s' is not a valid community ID": "'%(groupId)s' nav derīgs kopienas Id", - "Flair": "Gaidas (nojauta)", - "Showing flair for these communities:": "Parādīt Tavas gaidas šajās kopienās:", - "This room is not showing flair for any communities": "Šajā istabā neparādās gaidas, kas uzstādītas kopienās", + "Flair": "Noskaņa", + "Showing flair for these communities:": "Parādīt jūsu noskaņas šajās kopienās:", + "This room is not showing flair for any communities": "Šajā istabā neparādās noskaņas, kas uzstādītas kopienās", "New community ID (e.g. +foo:%(localDomain)s)": "Jaunās kopienas Id (piem. +foo:%(localDomain)s)", "URL previews are enabled by default for participants in this room.": "URL priekšskats šīs istabas dalībniekiem pēc noklusējuma ir iespējots.", "URL previews are disabled by default for participants in this room.": "ULR priešskats šīs istabas dalībniekiem pēc noklusējuma ir atspējots.", @@ -517,9 +517,9 @@ "Visible to everyone": "Redzama visiem", "Only visible to community members": "Tikai kopienas dalībniekiem", "Filter community rooms": "Kopienas istabu filtrs", - "Something went wrong when trying to get your communities.": "Kaut kas nogāja greizi, kad tika mēģināts attēlot Tavas kopienas.", - "Display your community flair in rooms configured to show it.": "Parādīt Tavas gaidas istabās, kurās to parādīšana iespējota.", - "You're not currently a member of any communities.": "Pašreiz Tu neesi neesi nevienas kopienas piederīgais.", + "Something went wrong when trying to get your communities.": "Kaut kas nogāja greizi ielasot jūsu kopienu sarakstu.", + "Display your community flair in rooms configured to show it.": "Parādīt jūsu kopienas noskaņas istabās, kurās to parādīšana iespējota.", + "You're not currently a member of any communities.": "Pašlaik jūs neesat nevienā kopienā.", "Delete Widget": "Dzēst vidžetu", "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Vidžeta dzēšana to dzēš visiem šīs istabas lietotājiem. Vai tiešām vēlies dzēst šo vidžetu?", "Minimize apps": "Minimizēt programmas", @@ -567,12 +567,12 @@ "were invited %(count)s times|one": "tika uzaicināti", "was invited %(count)s times|other": "tika uzaicināta %(count)s reizes", "was invited %(count)s times|one": "tika uzaicināts(a)", - "were unbanned %(count)s times|one": "tika atbloķēti (atcelts pieejas liegums)", + "were unbanned %(count)s times|one": "tika atcelts pieejas liegums", "was unbanned %(count)s times|other": "tika atbloķēts %(count)s reizes", - "was banned %(count)s times|one": "tika bloķēts", - "were banned %(count)s times|one": "tika bloķēti", - "was unbanned %(count)s times|one": "tika atbloķēts", - "were kicked %(count)s times|one": "tika padzīti (izsperti)", + "was banned %(count)s times|one": "tika liegta pieeja", + "were banned %(count)s times|one": "tika liegta pieeja", + "was unbanned %(count)s times|one": "tika atcelts pieejas liegums", + "were kicked %(count)s times|one": "tika padzīti", "was kicked %(count)s times|other": "tika padzīts %(count)s reizes", "was kicked %(count)s times|one": "tika padzīts", "%(severalUsers)schanged their name %(count)s times|other": "%(severalUsers)s izmainīja savu lietotājvārdu %(count)s reizes", @@ -595,8 +595,8 @@ "Old cryptography data detected": "Tika uzieti novecojuši šifrēšanas dati", "Data from an older version of %(brand)s has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Uzieti dati no vecākas %(brand)s versijas. Tas novedīs pie \"end-to-end\" šifrēšanas problēmām vecākajā versijā. Šajā versijā nevar tikt atšifrēti ziņojumi, kuri radīti izmantojot vecākajā versijā \"end-to-end\" šifrētas ziņas. Tas var arī novest pie ziņapmaiņas, kas veikta ar šo versiju, neizdošanās. Ja rodas ķibeles, izraksties un par jaunu pieraksties sistēmā. Lai saglabātu ziņu vēsturi, eksportē un tad importē savas šifrēšanas atslēgas.", "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Radi kopienu, lai apvienotu lietotājus un istabas. Izveido mājaslapu, lai iezīmētu Matrix visumā savu klātbūtni, vietu un telpu.", - "Error whilst fetching joined communities": "Ielādējot kopienas radās kļūda", - "%(count)s of your messages have not been sent.|one": "Tava ziņa netika nosūtīta.", + "Error whilst fetching joined communities": "Ielādējot kopienas, radās kļūda", + "%(count)s of your messages have not been sent.|one": "Jūsu ziņa netika nosūtīta.", "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Atkārtoti sūtīt ziņu vai atcelt sūtīšanu.", "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Šeit neviena nav. Ja vēlies kādu uzaicināt vai atslēgt paziņojumu par tukšu istabu?", "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privātumu augstu respektējam, tādēļ analītikas mērķiem nevācam nekādus personas un identificējamus datus.", @@ -638,7 +638,7 @@ "You are a member of this community": "Tu esi šīs kopienas biedrs", "Long Description (HTML)": "Garais apraksts (HTML)", "Community %(groupId)s not found": "Kopiena %(groupId)s nav atrasta", - "Your Communities": "Tavas kopienas", + "Your Communities": "Jūsu kopienas", "Did you know: you can use communities to filter your %(brand)s experience!": "Vai zināji: Tu vari izmantot kopienas, lai filtrētu (atlasītu) savu %(brand)s pieredzi!", "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Lai uzstādītu filtru, uzvelc kopienas avataru uz filtru paneļa ekrāna kreisajā malā. Lai redzētu tikai istabas un cilvēkus, kas saistīti ar šo kopienu, Tu vari klikšķināt uz avatara filtru panelī jebkurā brīdī.", "Create a new community": "Izveidot jaunu kopienu", @@ -652,29 +652,29 @@ "Send Account Data": "Sūtīt konta datus", "All notifications are currently disabled for all targets.": "Visiem saņēmējiem visi paziņojumi ir atspējoti.", "Uploading report": "Augšuplādē atskaiti", - "Sunday": "svētdiena", + "Sunday": "Svētdiena", "Notification targets": "Paziņojuma mērķi", "Today": "šodien", "You are not receiving desktop notifications": "Darbvirsmas paziņojumi netiek saņemti", - "Friday": "piektdiena", + "Friday": "Piektdiena", "Update": "Aktualizēt", "What's New": "Kas jauns", "On": "ieslēgts", "Changelog": "Izmaiņu saraksts (vēsture)", - "Waiting for response from server": "Gaidām atbildi no servera", + "Waiting for response from server": "Tiek gaidīta atbilde no servera", "Send Custom Event": "Sūtīt individuālu notikumu", - "Advanced notification settings": "Paziņojumu papildus iestatījumi", + "Advanced notification settings": "Paziņojumu papildu iestatījumi", "Failed to send logs: ": "Neizdevās nosūtīt logfailus: ", "Forget": "Aizmirst", "You cannot delete this image. (%(code)s)": "Šo attēlu nevar izdzēst (%(code)s)", "Cancel Sending": "Atcelt sūtīšanu", - "This Room": "šajā istabā", + "This Room": "Šajā istabā", "Noisy": "ar skaņu", "Error saving email notification preferences": "Kļūda saglabājot epasta notifikāciju paziņojumu uzstādījumus", "Messages containing my display name": "Ziņas, kuras satur manu redzamo vārdu", "Messages in one-to-one chats": "Ziņas viens-pret-vienu čatos", "Unavailable": "Nesasniedzams", - "View Decrypted Source": "Skatīt atšifrētu avotu", + "View Decrypted Source": "Skatīt atšifrētu pirmkodu", "Failed to update keywords": "Neizdevās aktualizēt atslēgvārdus", "remove %(name)s from the directory.": "dzēst %(name)s no kataloga.", "Notifications on the following keywords follow rules which can’t be displayed here:": "Paziņojumi par šādiem atslēgvārdiem atbilst noteikumiem, kurus šeit nevar parādīt:", @@ -695,9 +695,9 @@ "Invite to this community": "Uzaicināt šajā kopienā", "Messages containing keywords": "Ziņas, kuras satur atslēgvārdus", "Room not found": "Istaba netika atrasta", - "Tuesday": "otrdiena", - "Enter keywords separated by a comma:": "Ievadi atslēgvārdus, atdalītus ar komatu:", - "Search…": "Meklēju…", + "Tuesday": "Otrdiena", + "Enter keywords separated by a comma:": "Ievadiet ar komatu atdalītus atslēgvārdus:", + "Search…": "Meklēt…", "You have successfully set a password and an email address!": "Esi veiksmīgi iestatījis(usi) paroli un epasta adresi!", "Remove %(name)s from the directory?": "Dzēst %(name)s no kataloga?", "%(brand)s uses many advanced browser features, some of which are not available or experimental in your current browser.": "%(brand)s izmanto daudzas advancētas tīmekļa pārlūka iespējas, no kurām dažas var nebūt pieejamas vai ir eksperimentālas Tavā pašreizējajā pārlūkā.", @@ -705,13 +705,13 @@ "Preparing to send logs": "Gatavojos nosūtīt atutošanas logfailus", "Explore Account Data": "Aplūkot konta datus", "All messages (noisy)": "Visas ziņas (ar skaņu)", - "Saturday": "sestdiena", + "Saturday": "Sestdiena", "Remember, you can always set an email address in user settings if you change your mind.": "Atceries, ka vienmēr vari iestatīt epasta adresi lietotāja uzstādījumos, ja pārdomā.", "Direct Chat": "Tiešais čats", "The server may be unavailable or overloaded": "Serveris nav pieejams vai ir pārslogots", "Reject": "Noraidīt", "Failed to set Direct Message status of room": "Neizdevās iestatīt istabas tiešās ziņas statusu", - "Monday": "pirmdiena", + "Monday": "Pirmdiena", "Remove from Directory": "Dzēst no kataloga", "Enable them now": "Iespējot tos tagad", "Forward Message": "Pārsūtīt ziņu", @@ -719,10 +719,10 @@ "Collecting logs": "Tiek iegūti logfaili", "You must specify an event type!": "Jānorāda notikuma tips!", "(HTTP status %(httpStatus)s)": "(HTTP statuss %(httpStatus)s)", - "All Rooms": "visās istabās", - "Wednesday": "trešdiena", + "All Rooms": "Visās istabās", + "Wednesday": "Trešdiena", "You cannot delete this message. (%(code)s)": "Tu nevari dzēst šo ziņu. (%(code)s)", - "Quote": "Citāts", + "Quote": "Citēt", "Send logs": "Nosūtīt logfailus", "All messages": "Visas ziņas", "Call invitation": "Uzaicinājuma zvans", @@ -732,12 +732,12 @@ "What's new?": "Kas jauns?", "Notify me for anything else": "Paziņot man par jebko citu", "When I'm invited to a room": "Kad esmu uzaicināts/a istabā", - "Can't update user notification settings": "Neizdodas atjaunot lietotāja paziņojumu iestatījumus", + "Can't update user notification settings": "Neizdodas atjaunināt lietotāja paziņojumu iestatījumus", "Notify for all other messages/rooms": "Paziņot par visām citām ziņām/istabām", "Unable to look up room ID from server": "Nav iespējams no servera iegūt istabas Id", "Couldn't find a matching Matrix room": "Atbilstoša Matrix istaba netika atrasta", "Invite to this room": "Uzaicināt uz šo istabu", - "Thursday": "ceturtdiena", + "Thursday": "Ceturtdiena", "I understand the risks and wish to continue": "Apzinos riskus un vēlos turpināt", "Logs sent": "Logfaili nosūtīti", "Back": "Atpakaļ", @@ -749,9 +749,9 @@ "Sorry, your browser is not able to run %(brand)s.": "Atvaino, diemžēl tavs tīmekļa pārlūks nespēj darbināt %(brand)s.", "Uploaded on %(date)s by %(user)s": "Augšuplādēja %(user)s %(date)s", "Messages in group chats": "Ziņas grupas čatos", - "Yesterday": "vakar", + "Yesterday": "Vakardien", "Error encountered (%(errorDetail)s).": "Gadījās kļūda (%(errorDetail)s).", - "Low Priority": "Zemas prioritātes", + "Low Priority": "Zema prioritāte", "Unable to fetch notification target list": "Neizdevās iegūt paziņojumu mērķu sarakstu", "Set Password": "Iestatīt paroli", "Off": "izslēgts", @@ -761,18 +761,18 @@ "Enable email notifications": "Iespējot paziņojumus pa epastu", "Event Type": "Notikuma tips", "Download this file": "Lejupielādēt šo failu", - "Pin Message": "Piekabināt ziņu", + "Pin Message": "Piespraust ziņu", "Failed to change settings": "Neizdevās nomainīt iestatījumus", "View Community": "Skatīt kopienu", - "Developer Tools": "Attīstītāja instrumenti", - "View Source": "Skatīt avotu", + "Developer Tools": "Izstrādātāja rīki", + "View Source": "Skatīt pirmkodu", "Event Content": "Notikuma saturs", "Thank you!": "Tencinam!", "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Tavā pašreizējā pārlūkā aplikācijas izskats un uzvedība var būt pilnīgi neatbilstoša, kā arī dažas no visām funkcijām var nedarboties. Ja vēlies turpināt izmantot šo pārlūku, Tu vari arī turpināt, apzinoties, ka šajā gadījumā esi viens/a ar iespējamo problēmu!", "Checking for an update...": "Lūkojos pēc aktualizācijas...", "e.g. %(exampleValue)s": "piemēram %(exampleValue)s", "e.g. ": "piemēram ", - "Your device resolution": "Tavas iekārtas izšķirtspēja", + "Your device resolution": "Jūsu iekārtas izšķirtspēja", "Sign In": "Ienākt", "Whether or not you're logged in (we don't record your username)": "Esat vai neesat pieteicies (mēs nesaglabājam jūsu lietotājvārdu)", "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Neatkarīgi no tā, vai izmantojat funkciju \"breadcrumbs\" (avatari virs istabu saraksta)", @@ -787,5 +787,223 @@ "Your %(brand)s is misconfigured": "Jūsu %(brand)s ir nepareizi konfigurēts", "Add Email Address": "Pievienot e-pasta adresi", "Add Phone Number": "Pievienot tālruņa numuru", - "Call failed due to misconfigured server": "Zvans neizdevās nekorekti nokonfigurēta servera dēļ" + "Call failed due to misconfigured server": "Zvans neizdevās nekorekti nokonfigurēta servera dēļ", + "Verify this login": "Verificējiet šo sesiju", + "You sent a verification request": "Jūs nosūtījāt verifikācijas pieprasījumu", + "Start Verification": "Uzsākt verifikāciju", + "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Jaunā sesija ir verificēta un ir dota piekļuve jūsu šifrētajām ziņām, kā arī citi lietotāji redzēs, ka šī sesija ir uzticama.", + "Confirm your identity by verifying this login from one of your other sessions, granting it access to encrypted messages.": "Apstipriniet savu identitāti, verificējot šo pierakstīšanos no kādas citas savas sesijas, tādējādi ļaujot piekļūt šifrētajām ziņām.", + "Hide verified sessions": "Slēpt verificētas sesijas", + "%(count)s verified sessions|one": "1 verificēta sesija", + "%(count)s verified sessions|other": "%(count)s verificētas sesijas", + "Encrypted by an unverified session": "Šifrēts ar neverificētu sesiju", + "Waiting for your other session to verify…": "Teik gaidīts uz verificēšanu no citas jūsu sesijas…", + "Waiting for your other session, %(deviceName)s (%(deviceId)s), to verify…": "Tiek gaidīts uz citu jūsu sesiju, %(deviceName)s (%(deviceId)s), lai verificētu…", + "Verify your other session using one of the options below.": "Verificējiet citas jūsu sesijas, izmantojot kādu no iespējām zemāk.", + "%(names)s and %(count)s others are typing …|other": "%(names)s un %(count)s citi raksta…", + "%(names)s and %(lastPerson)s are typing …": "%(names)s un %(lastPerson)s raksta…", + "Enable Emoji suggestions while typing": "Iespējot emocijikonu ieteikumus rakstīšanas laikā", + "Show typing notifications": "Rādīt paziņojumus par rakstīšanu", + "Send typing notifications": "Sūtīt paziņojumus par rakstīšanu", + "Philippines": "Filipīnas", + "Unpin": "Atspraust", + "Pin": "Piespraust", + "%(names)s and %(count)s others are typing …|one": "%(names)s un vēl viens raksta…", + "%(displayName)s is typing …": "%(displayName)s raksta…", + "Got it": "Sapratu", + "Got It": "Sapratu", + "Verification cancelled": "Verificēšana atcelta", + "Waiting for partner to confirm...": "Gaida partnera apstiprinājumu...", + "Waiting for %(displayName)s to accept…": "Gaida, kamēr %(displayName)s akceptēs…", + "Waiting for answer": "Tiek gaidīta atbilde", + "To be secure, do this in person or use a trusted way to communicate.": "Lai tas būtu droši, dariet to klātienē vai lietojiet kādu uzticamu saziņas veidu.", + "For extra security, verify this user by checking a one-time code on both of your devices.": "Papildu drošībai verificējiet šo lietotāju, pārbaudot vienreizēju kodu abās ierīcēs.", + "Not Trusted": "Neuzticama", + "Not trusted": "Neuzticama", + "Trusted": "Uzticama", + "Verify User": "Verificēt lietotāju", + "In encrypted rooms, your messages are secured and only you and the recipient have the unique keys to unlock them.": "Šifrētās istabās jūsu ziņas ir drošībā - tikai jums un saņēmējam ir unikālas atslēgas, lai ziņas atšifrētu.", + "Your messages are secured and only you and the recipient have the unique keys to unlock them.": "Jūsu ziņas ir drošībā - tikai jums un saņēmējam ir unikālas atslēgas, lai ziņas atšifrētu.", + "Direct message": "Uzsākt dialogu", + "Direct Messages": "Dialogi", + "Delete sessions|one": "Dzēst sesiju", + "Delete sessions|other": "Dzēst sesijas", + "Hide sessions": "Slēpt sesijas", + "%(count)s sessions|one": "%(count)s sesija", + "%(count)s sessions|other": "%(count)s sesijas", + "Messages here are end-to-end encrypted. Verify %(displayName)s in their profile - tap on their avatar.": "Ziņas šeit ir nodrošinātas ar pilnīgu šifrēšanu. Verificē %(displayName)s profilā, klikšķinot uz avatara.", + "Once enabled, encryption cannot be disabled.": "Šifrēšana nevar tikt atspējota, ja reiz tikusi iespējota.", + "Encryption not enabled": "Šifrēšana nav iespējota", + "Encryption enabled": "Šifrēšana iespējota", + "Only the two of you are in this conversation, unless either of you invites anyone to join.": "Tikai jūs abi esat šajā sarakstē, ja vien kāds no jums neuzaicina citus pievienoties.", + "This is the beginning of your direct message history with .": "Šis ir sākums jūsu tiešās sarakstes vēsturei ar .", + "Use the Desktop app to search encrypted messages": "Izmantojiet lietotni, lai veiktu šifrētu ziņu meklēšanu", + "%(creator)s created this DM.": "%(creator)s uzsāka šo tiešo saraksti.", + "None": "Neviena", + "Mentions & Keywords": "Pieminēšana un atslēgvārdi", + "Use default": "Lietot noklusējumu", + "Notification options": "Paziņojumu opcijas", + "Room options": "Istabas opcijas", + "Show previews of messages": "Rādīt ziņu priekšskatījumu", + "Show rooms with unread messages first": "Rādīt istabas ar nelasītām ziņām augšpusē", + "Appearance Settings only affect this %(brand)s session.": "Izskata iestatījumi attiecas vienīgi uz %(brand)s sesiju.", + "Customise your appearance": "Pielāgot izskatu", + "Appearance": "Izskats", + "Activity": "Aktivitātes", + "Sort by": "Kārtot pēc", + "List options": "Saraksta opcijas", + "Go Back": "Atgriezties", + "Go back": "Atgriezties", + "Send feedback": "Nosūtīt atsauksmi", + "Feedback sent": "Atsauksme nosūtīta", + "Feedback": "Atsauksmes", + "All settings": "Visi iestatījumi", + "Security & privacy": "Drošība un konfidencialitāte", + "Security & Privacy": "Drošība un konfidencialitāte", + "Change notification settings": "Mainīt paziņojumu iestatījumus", + "Notification settings": "Paziņojumu iestatījumi", + "Switch to dark mode": "Pārslēgt tumšo režīmu", + "Switch to light mode": "Pārslēgt gaišo režīmu", + "Leave Room": "Pamest istabu", + "Favourited": "Izlasē", + "Message deleted on %(date)s": "Ziņa dzēsta %(date)s", + "Message deleted by %(name)s": "%(name)s izdzēsa ziņu", + "Message deleted": "Ziņa ir dzēsta", + "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Saziņa ar šo lietotāju ir nodrošināta ar pilnīgu šifrēšanu un nav nolasāma trešajām pusēm.", + "Encrypted by a deleted session": "Šifrēts ar dzēstu sesiju", + "reacted with %(shortName)s": "reaģēja ar %(shortName)s", + "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", + "Reactions": "Reaģēšana", + "Quick Reactions": "Ātra reaģēšana", + "React": "Reaģēt", + "Changing password will currently reset any end-to-end encryption keys on all sessions, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Paroles nomaiņa pašlaik atiestata visas pilnīgās šifrēšanas atslēgas visām sesijām, padarot šifrēto čata vēsturi nelasāmu, ja vien pirms tam netiek eksportētas istabas atslēgas un vēlāk atkal importētas. Nākotnē šis tiks uzlabots.", + "Messages in this room are end-to-end encrypted. When people join, you can verify them in their profile, just tap on their avatar.": "Ziņas šajā istabā ir nodrošinātas ar pilnīgu šifrēšanu. Kad cilvēki pievienojas, jūs varat verificēt viņus profilā, klikšķinot uz avatara.", + "Messages in this room are not end-to-end encrypted.": "Ziņām šajā istabā netiek piemērota pilnīga šifrēšana.", + "This room is end-to-end encrypted": "Šajā istabā tiek veikta pilnīga šifrēšana", + "Emoji picker": "Emocijzīmes", + "Show Stickers": "Rādīt uzlīmes", + "Room Info": "Istabas info", + "Room information": "Informācija par istabu", + "Security": "Drošība", + "The server is offline.": "Serveris bezsaistē.", + "If you've forgotten your Security Phrase you can use your Security Key or set up new recovery options": "Ja ir aizmirsta slepenā frāze, jūs varat izmantot drošības atslēgu vaiiestatīt jaunus atkopšanas veidus", + "If you've forgotten your Security Key you can ": "Ja ir aizmirsta drošības atslēga, jūs varat ", + "Messages in this room are end-to-end encrypted.": "Ziņas šajā istabā ir nodrošinātas ar pilnīgu šifrēšanu.", + "Share Permalink": "Dalīties ar pastāvīgo saiti", + "Share Link to User": "Dalīties ar saiti uz lietotāju", + "Remove recent messages by %(user)s": "Dzēst nesenās ziņas no %(user)s", + "Remove recent messages": "Dzēst nesenās ziņas", + "Banana": "Banāns", + "You were banned from %(roomName)s by %(memberName)s": "%(memberName)s liedza jums pieeju %(roomName)s", + "Ban users": "Pieejas liegumi lietotājiem", + "The user must be unbanned before they can be invited.": "Lietotājam jābūt atceltam pieejas liegumam pirms uzaicināšanas.", + "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s izveidoja noteikumu pieejas liegšanai, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s izveidoja noteikumu pieejas liegšanai serveriem, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s izveidoja noteikumu pieejas liegšanai istabām, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s izveidoja noteikumu pieejas liegšanai lietotājiem, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s izmainīja noteikumu pieejas liegšanai, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s updated an invalid ban rule": "%(senderName)s izmainīja kļūdainu pieejas liegšanas noteikumu", + "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s izmainīja noteikumu pieejas liegšanai serveriem, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s izmainīja noteikumu pieejas liegšanai istabām, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s izmainīja noteikumu pieejas liegšanai lietotājiem, kas atbilst %(glob)s dēļ %(reason)s", + "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s dzēsa noteikumu pieejas liegšanai atbilstoši %(glob)s", + "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s dzēsa noteikumu pieejas liegšanai serveriem, kas atbilst %(glob)s", + "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s dzēsa noteikumu pieejas liegšanai istabām, kas atbilst %(glob)s", + "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s dzēsa noteikumu pieejas liegšanai lietotājiem, kas atbilst %(glob)s", + "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 Visiem serveriem ir liegta pieeja dalībai! Šī istaba vairs nevar tikt izmantota.", + "Unbans user with given ID": "Atceļ pieejas liegumu lietotājam ar norādīto id", + "Lebanon": "Libāna", + "Bangladesh": "Bangladeša", + "Albania": "Albānija", + "You were kicked from %(roomName)s by %(memberName)s": "%(memberName)s padzina jūs no %(roomName)s", + "Kick users": "Padzīt lietotājus", + "Show join/leave messages (invites/kicks/bans unaffected)": "Rādīt pievienošanās un pamešanas ziņojumus (neatttiecas uz uzaicinājumiem, padzīšanu un aizliegumiem)", + "Toggle microphone mute": "Ieslēgt/izslēgt mikrofonu", + "Muted Users": "Apklusinātie lietotāji", + "Re-request encryption keys from your other sessions.": "Atkārtoti pieprasīt šifrēšanas atslēgas no citām jūsu sesijām.", + "Confirm to continue": "Apstipriniet, lai turpinātu", + "Confirm account deactivation": "Apstipriniet konta deaktivāciju", + "Enter username": "Ievadiet lietotājvārdu", + "Confirm your recovery passphrase": "Apstipriniet atkopšanas frāzveida paroli", + "Enter your recovery passphrase a second time to confirm it.": "Ievadiet savu atkopšanas frāzveida paroli otreiz, lai to apstiprinātu.", + "Use a different passphrase?": "Izmantot citu frāzveida paroli?", + "Are you sure you want to cancel entering passphrase?": "Vai tiešām vēlaties atcelt frāzveida paroles ievadi?", + "Cancel entering passphrase?": "Atcelt frāzveida paroles ievadi?", + "Click the button below to confirm adding this phone number.": "Nospiediet pogu zemāk, lai apstiprinātu šī tālruņa numura pievienošanu.", + "Confirm adding phone number": "Apstipriniet tālruņa numura pievienošanu", + "Confirm adding email": "Apstipriniet epasta adreses pievienošanu", + "Confirm adding this email address by using Single Sign On to prove your identity.": "Apstipriniet šīs epasta adreses pievienošanu, lietojot vienoto pierakstīšanos savas identitātes pierādīšanai.", + "Confirm adding this phone number by using Single Sign On to prove your identity.": "Apstipriniet šī tālruņa numura pievienošanu, lietojot vienoto pierakstīšanos savas identitātes pierādīšanai.", + "Click the button below to confirm adding this email address.": "Nospiediet pogu zemāk, lai apstiprinātu šīs epasta adreses pievienošanu.", + "Single Sign On": "Vienotā pierakstīšanās", + "Use Single Sign On to continue": "Lietot vienoto pierakstīšanos, lai turpinātu", + "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s nomainīja servera ACL piekļuves šai istabai.", + "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s iestatīja servera ACL piekļuves šai istabai.", + "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s nomainīja viesu piekļuvi uz %(rule)s", + "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s aizliedza viesiem pievienoties istabai.", + "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s atļāva viesiem pievienoties istabai.", + "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s nomainīja pievienošanās noteikumu uz %(rule)s", + "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s padarīja istabu pieejamu tikai ar ielūgumiem.", + "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s padarīja istabu publiski pieejamu visiem, kas zina saiti.", + "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s nomainīja istabas nosaukumu no %(oldRoomName)s uz %(newRoomName)s.", + "If you can't find the room you're looking for, ask for an invite or Create a new room.": "Ja nevarat atrast meklēto istabu, jautājiet ielūgumu vai Izveidojiet jaunu istabu.", + "Explore all public rooms": "Pārlūkot visas publiskās istabas", + "Start a new chat": "Sākt jaunu čatu", + "Use the + to make a new room or explore existing ones below": "Lietojiet +, lai izveidotu jaunu istabu vai pārskatiet esošās zemāk", + "Welcome %(name)s": "Laipni lūdzam %(name)s", + "Welcome to %(appName)s": "Laipni lūdzam %(appName)s", + "Liberate your communication": "Padari savu saziņu brīvu", + "%(doneRooms)s out of %(totalRooms)s": "%(doneRooms)s no %(totalRooms)s", + "Done": "Gatavs", + "Please enter your Security Phrase a second time to confirm.": "Lūdzu, ievadiet savu slepeno frāzi otreiz, lai apstiprinātu.", + "Secure your backup with a Security Phrase": "Nodrošiniet savu rezerves kopiju ar slepeno frāzi", + "Great! This Security Phrase looks strong enough.": "Lieliski! Šī slepenā frāze šķiet pietiekami sarežgīta.", + "Use Security Key or Phrase": "Izmantojiet drošības atslēgu vai slepeno frāzi", + "Confirm your Security Phrase": "Apstipriniet savu slepeno frāzi", + "Repeat your Security Phrase...": "Atkārtojiet savu slepeno frāzi...", + "Set a Security Phrase": "Iestatiet slepeno frāzi", + "Enter a Security Phrase": "Ievadiet slepeno frāzi", + "Incorrect Security Phrase": "Nepareiza slepenā frāze", + "Enter your Security Phrase or to continue.": "Ievadiet savu slepeno frāzi vai , lai turpinātu.", + "Security Phrase": "Slepenā frāze", + "or another cross-signing capable Matrix client": "vai kāda cita Matrix lietotne ar cross-signing atbalstu", + "This requires the latest %(brand)s on your other devices:": "Tam nepieciešams jaunākais %(brand)s citās tavās ierīcēs:", + "Confirm": "Apstiprināt", + "Set a new password": "Iestati jaunu paroli", + "Set a new account password...": "Iestati jaunu paroli kontam...", + "Sign in instead": "Pierakstīties", + "A verification email will be sent to your inbox to confirm setting your new password.": "Apstiprinājuma vēstule tiks nosūtīta uz tavu epasta adresi, lai apstiprinātu paroles nomaiņu.", + "Forgot password?": "Aizmirsi paroli?", + "No homeserver URL provided": "Nav iestatīts bāzes servera URL", + "Cannot reach homeserver": "Neizdodas savienoties ar bāzes serveri", + "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Datne '%(fileName)s pārsniedz augšupielādējamas datnes izmēra limitu šajā bāzes serverī", + "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Lūdzu, jautājiet sava bāzes servera administratoram (%(homeserverDomain)s) sakonfigurēt TURN serveri, lai zvani strādātu stabili.", + "Join millions for free on the largest public server": "Pievienojieties bez maksas miljoniem lietotāju lielākajā publiskajā serverī", + "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Element with an existing Matrix account on a different homeserver.": "Jūs varat pielāgot servera parametrus, lai pierakstītos citos Matrix bāzes serveros, norādot atbilstošu bāzes servera URL. Tas ļauj jums izmantot Element ar eksistējošu Matrix kontu uz cita bāzes servera.", + "Server Options": "Servera parametri", + "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s vai %(usernamePassword)s", + "That username already exists, please try another.": "Šis lietotājvārds jau eksistē, mēģiniet citu.", + "Username": "Lietotājvārds", + " invited you": " uzaicināja jūs", + " wants to chat": " vēlas sarakstīties", + "There was an error updating the flair for this room. The server may not allow it or a temporary error occurred.": "Radās kļūda, atjauninot noskaņu šai istabai. Serveris var neatļaut to vai arī notikusi pagaidu kļūda.", + "Error updating flair": "Radās kļūda, atjauninot noskaņu", + "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "%(senderDisplayName)s iespējoja noskaņu priekš %(newGroups)s un atspējoja noskaņu priekš %(oldGroups)s šajā istabā.", + "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "%(senderDisplayName)s atspējoja noskaņu priekš %(groups)s šajā grupā.", + "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s iespējoja noskaņu priekš %(groups)s šajā istabā.", + "An image will help people identify your community.": "Attēls palīdzēs cilvēkiem atpazīt jūsu kopienu.", + "Invite people to join %(communityName)s": "Aiciniet cilvēkus pievienoties %(communityName)s", + "People you know on %(brand)s": "Cilvēki %(brand)s, kurus jūs pazīstat", + "Smileys & People": "Smaidiņi & cilvēki", + "%(count)s people|one": "%(count)s cilvēki", + "%(count)s people|other": "%(count)s cilvēki", + "People": "Cilvēki", + "Add a photo, so people can easily spot your room.": "Pievienojiet foto, lai padarītu istabu vieglāk pamanāmu citiem cilvēkiem.", + "Add a topic to help people know what it is about.": "Pievienot tematu, lai dotu cilvēkiem priekšstatu.", + "A session's public name is visible to people you communicate with": "Sesijas publiskais nosaukums ir redzams cilvēkiem, ar kuriem jūs komunicējat", + "Try out new ways to ignore people (experimental)": "Izmēģiniet jauno veidus, kā ignorēt cilvēkus (eksperimentāls)", + "You do not have permission to invite people to this room.": "Jums nav atļaujas ielūgt cilvēkus šajā istabā.", + "Clear room list filter field": "Attīrīt istabu saraksta filtru", + "Filter rooms and people": "Filtrēt istabas un cilvēkus", + "Filter": "Filtrēt" } From a34da37312958815b8bbba5b4f28dbb18b4835dc Mon Sep 17 00:00:00 2001 From: waclaw66 Date: Sun, 24 Jan 2021 19:26:28 +0000 Subject: [PATCH 174/275] Translated using Weblate (Czech) Currently translated at 100.0% (2731 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/cs/ --- src/i18n/strings/cs.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index f8965a26a9..0c6aa18518 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -2064,7 +2064,7 @@ "%(networkName)s rooms": "místnosti v %(networkName)s", "Matrix rooms": "místnosti na Matrixu", "Enable end-to-end encryption": "Povolit E2E šifrování", - "You can’t disable this later. Bridges & most bots won’t work yet.": "Už to v budoucnu nepůjde vypnout. Většina botů a propojení zatím nefunguje.", + "You can’t disable this later. Bridges & most bots won’t work yet.": "Toto nelze později vypnout. Většina botů a propojení zatím nefunguje.", "Server did not require any authentication": "Server nevyžadoval žádné ověření", "Server did not return valid authentication information.": "Server neposkytl platné informace o ověření.", "Confirm your account deactivation by using Single Sign On to prove your identity.": "Potvrďte deaktivaci účtu použtím Jednotného přihlášení.", @@ -2306,7 +2306,7 @@ "Backup version:": "Verze zálohy:", "Algorithm:": "Algoritmus:", "You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.": "Tuto možnost můžete povolit, pokud bude místnost použita pouze pro spolupráci s interními týmy na vašem domovském serveru. Toto nelze později změnit.", - "Block anyone not part of %(serverName)s from ever joining this room.": "Blokovat komukoli, kdo není součástí serveru %(serverName)s, aby se nikdy nepřipojil do této místnosti.", + "Block anyone not part of %(serverName)s from ever joining this room.": "Blokovat komukoli, kdo není součástí serveru %(serverName)s, aby se připojil do této místnosti.", "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Recovery Key.": "Zálohujte šifrovací klíče s daty vašeho účtu pro případ, že ztratíte přístup k relacím. Vaše klíče budou zabezpečeny jedinečným klíčem pro obnovení.", "Manage the names of and sign out of your sessions below or verify them in your User Profile.": "Níže můžete spravovat názvy a odhlásit se ze svých relací nebo je ověřit v uživatelském profilu.", "or another cross-signing capable Matrix client": "nebo jiný Matrix klient schopný cross-signing", From 37ffa08bc013be37fc2b3487a04a4983ff178796 Mon Sep 17 00:00:00 2001 From: Samu Voutilainen Date: Sun, 24 Jan 2021 06:14:57 +0000 Subject: [PATCH 175/275] Translated using Weblate (Finnish) Currently translated at 94.7% (2587 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fi/ --- src/i18n/strings/fi.json | 94 ++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 77f59690dd..982f7530a6 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -103,7 +103,7 @@ "Failed to send request.": "Pyynnön lähettäminen epäonnistui.", "Failed to set display name": "Näyttönimen asettaminen epäonnistui", "Failed to unban": "Porttikiellon poistaminen epäonnistui", - "Failed to upload profile picture!": "Profiilikuvan lataaminen epäonnistui!", + "Failed to upload profile picture!": "Profiilikuvan lähetys epäonnistui!", "Failed to verify email address: make sure you clicked the link in the email": "Sähköpostin vahvistus epäonnistui: varmista, että klikkasit sähköpostissa olevaa linkkiä", "Failure to create room": "Huoneen luominen epäonnistui", "Favourites": "Suosikit", @@ -186,8 +186,8 @@ "unknown caller": "tuntematon soittaja", "Unmute": "Poista mykistys", "Unnamed Room": "Nimeämätön huone", - "Uploading %(filename)s and %(count)s others|zero": "Ladataan %(filename)s", - "Uploading %(filename)s and %(count)s others|one": "Ladataan %(filename)s ja %(count)s muuta", + "Uploading %(filename)s and %(count)s others|zero": "Lähetetään %(filename)s", + "Uploading %(filename)s and %(count)s others|one": "Lähetetään %(filename)s ja %(count)s muuta", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s vaihtoi huoneen nimeksi %(roomName)s.", "Enable automatic language detection for syntax highlighting": "Ota automaattinen kielentunnistus käyttöön syntaksikorostusta varten", "%(senderName)s ended the call.": "%(senderName)s lopetti puhelun.", @@ -302,10 +302,10 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s poisti porttikiellon käyttäjältä %(targetName)s.", "Unable to capture screen": "Ruudun kaappaus epäonnistui", "Unable to enable Notifications": "Ilmoitusten käyttöönotto epäonnistui", - "Uploading %(filename)s and %(count)s others|other": "Ladataan %(filename)s ja %(count)s muuta", - "Upload Failed": "Lataus epäonnistui", - "Upload file": "Lataa tiedostoja", - "Upload new:": "Lataa uusi:", + "Uploading %(filename)s and %(count)s others|other": "Lähetetään %(filename)s ja %(count)s muuta", + "Upload Failed": "Lähetys epäonnistui", + "Upload file": "Lähetä tiedostoja", + "Upload new:": "Lähetä uusi:", "Usage": "Käyttö", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s vaihtoi aiheeksi \"%(topic)s\".", "Define the power level of a user": "Määritä käyttäjän oikeustaso", @@ -325,7 +325,7 @@ "(could not connect media)": "(mediaa ei voitu yhdistää)", "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s veti takaisin käyttäjän %(targetName)s kutsun.", "You seem to be in a call, are you sure you want to quit?": "Sinulla näyttää olevan puhelu kesken. Haluatko varmasti lopettaa?", - "You seem to be uploading files, are you sure you want to quit?": "Näytät lataavan tiedostoja. Oletko varma että haluat lopettaa?", + "You seem to be uploading files, are you sure you want to quit?": "Näytät lähettävän tiedostoja. Oletko varma että haluat lopettaa?", "Jan": "tammi", "Feb": "helmi", "Mar": "maalis", @@ -348,7 +348,7 @@ "Error decrypting video": "Virhe purettaessa videon salausta", "Add an Integration": "Lisää integraatio", "URL Previews": "URL-esikatselut", - "Drop file here to upload": "Pudota tiedosto tähän ladataksesi sen palvelimelle", + "Drop file here to upload": "Pudota tiedosto tähän lähettääksesi sen palvelimelle", " (unsupported)": " (ei tuettu)", "Check for update": "Tarkista päivitykset", "Username available": "Käyttäjätunnus saatavilla", @@ -364,7 +364,7 @@ "Skip": "Ohita", "Example": "Esimerkki", "Create": "Luo", - "Failed to upload image": "Kuvan lataaminen epäonnistui", + "Failed to upload image": "Kuvan lähetys epäonnistui", "Add a widget": "Lisää sovelma", "Cannot add any more widgets": "Enempää sovelmia ei voida lisätä", "Delete widget": "Poista sovelma", @@ -375,7 +375,7 @@ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Viedyn tiedoston avulla kuka tahansa pystyy purkamaan kaikki salatut viestit jotka voit nähdä, joten sinun täytyy säilyttää sitä huolellisesti. Helpottaaksesi tätä, syötä alle salasana jonka avulla viedyt tiedot salataan. Voit myöhemmin tuoda tiedot ainoastaan samalla salasanalla.", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tämä prosessi mahdollistaa aiemmin tallennettujen salausavainten tuominen toiseen Matrix-asiakasohjelmaan. Tämän jälkeen voit purkaa kaikki salatut viestit jotka toinen asiakasohjelma pystyisi purkamaan.", "Who would you like to add to this community?": "Kenet haluaisit lisätä tähän yhteisöön?", - "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varoitus: henkilöt, jotka lisäät yhteisöön, näkyvät kaikille jotka tietävät yhteisön tunnisteen", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varoitus: kaikki yhteisöön lisätyt henkilöt näkyvät kaikille, jotka tietävät yhteisön tunnuksen", "Invite new community members": "Kutsu uusia jäseniä yhteisöön", "Invite to Community": "Kutsu yhteisöön", "Which rooms would you like to add to this community?": "Mitkä huoneet haluaisit lisätä tähän yhteisöön?", @@ -405,7 +405,7 @@ "Enable URL previews by default for participants in this room": "Ota linkkien esikatselu käyttöön kaikille huoneen jäsenille", "%(senderName)s sent an image": "%(senderName)s lähetti kuvan", "%(senderName)s sent a video": "%(senderName)s lähetti videon", - "%(senderName)s uploaded a file": "%(senderName)s latasi tiedoston", + "%(senderName)s uploaded a file": "%(senderName)s lähetti tiedoston", "Disinvite this user?": "Peru tämän käyttäjän kutsu?", "Kick this user?": "Poista tämä käyttäjä?", "Unban this user?": "Poista tämän käyttäjän porttikielto?", @@ -425,16 +425,16 @@ "World readable": "Täysin julkinen", "Guests can join": "Vierailijat voivat liittyä", "No rooms to show": "Ei näytettäviä huoneita", - "Upload avatar": "Lataa profiilikuva", + "Upload avatar": "Lähetä profiilikuva", "Community Invites": "Yhteisökutsut", "Banned by %(displayName)s": "%(displayName)s antoi porttikiellon", "Privileged Users": "Etuoikeutetut käyttäjät", "Members only (since the point in time of selecting this option)": "Vain jäsenet (tämän valinnan tekemisestä lähtien)", "Members only (since they were invited)": "Vain jäsenet (kutsumisestaan lähtien)", "Members only (since they joined)": "Vain jäsenet (liittymisestään lähtien)", - "Invalid community ID": "Virheellinen yhteisötunniste", - "'%(groupId)s' is not a valid community ID": "'%(groupId)s' on virheellinen yhteisötunniste", - "New community ID (e.g. +foo:%(localDomain)s)": "Uusi yhteisötunniste (esim. +foo:%(localDomain)s)", + "Invalid community ID": "Virheellinen yhteisön tunnus", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' on virheellinen yhteisön tunnus", + "New community ID (e.g. +foo:%(localDomain)s)": "Uusi yhteisön tunnus (esim. +foo:%(localDomain)s)", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s vaihtoi huoneen %(roomName)s kuvan", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s poisti huoneen kuvan.", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s vaihtoi huoneen kuvaksi ", @@ -467,11 +467,11 @@ "Try using one of the following valid address types: %(validTypesList)s.": "Kokeile käyttää yhtä näistä kelvollisista osoitetyypeistä: %(validTypesList)s.", "You have entered an invalid address.": "Olet syöttänyt virheellisen sähköpostiosoitteen.", "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Oletko varma että haluat poistaa tämän tapahtuman? Huomaa että jos poistat huoneen nimen tai aiheen muutoksen, saattaa muutos kumoutua.", - "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Yhteisötunnisteet voivat sisältää vain merkkejä a-z, 0-9 tai '=_-/'", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Yhteisön tunnukset voivat sisältää vain merkkejä a-z, 0-9 tai '=_-/'", "Something went wrong whilst creating your community": "Jokin meni pieleen yhteisön luomisessa", "Create Community": "Luo yhteisö", "Community Name": "Yhteisön nimi", - "Community ID": "Yhteisötunniste", + "Community ID": "Yhteisön tunnus", "example": "esimerkki", "Add rooms to the community summary": "Lisää huoneita yhteisön yhteenvetoon", "Which rooms would you like to add to this summary?": "Mitkä huoneet haluaisit lisätä tähän yhteenvetoon?", @@ -701,7 +701,7 @@ "Unhide Preview": "Näytä esikatselu", "Unable to join network": "Verkkoon liittyminen epäonnistui", "Sorry, your browser is not able to run %(brand)s.": "Valitettavasti %(brand)s ei toimi selaimessasi.", - "Uploaded on %(date)s by %(user)s": "Ladattu %(date)s käyttäjän %(user)s toimesta", + "Uploaded on %(date)s by %(user)s": "Lähetetty %(date)s käyttäjän %(user)s toimesta", "Messages in group chats": "Viestit ryhmissä", "Yesterday": "Eilen", "Error encountered (%(errorDetail)s).": "Virhe: %(errorDetail)s.", @@ -1130,7 +1130,7 @@ "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug-lokit sisältävät sovelluksen käyttödataa, kuten käyttäjätunnuksesi, vierailemiesi huoneiden ja ryhmien tunnukset tai aliakset, sekä muiden käyttäjien käyttäjätunnukset. Ne eivät sisällä viestejä.", "Before submitting logs, you must create a GitHub issue to describe your problem.": "Ennen lokien lähettämistä sinun täytyy luoda Githubiin issue (kysymys/ongelma), joka sisältää kuvauksen ongelmastasi.", "Unable to load commit detail: %(msg)s": "Commitin tietojen hakeminen epäonnistui: %(msg)s", - "Community IDs cannot be empty.": "Yhteisön ID:t eivät voi olla tyhjänä.", + "Community IDs cannot be empty.": "Yhteisön tunnukset eivät voi olla tyhjänä.", "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of %(brand)s to do this": "Jotta et menetä keskusteluhistoriaasi, sinun täytyy tallentaa huoneen avaimet ennen kuin kirjaudut ulos. Joudut käyttämään uudempaa %(brand)sin versiota tätä varten", "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Tämä tekee tilistäsi lopullisesti käyttökelvottoman. Et voi kirjautua sisään, eikä kukaan voi rekisteröidä samaa käyttäjätunnusta. Tilisi poistuu kaikista huoneista, joihin se on liittynyt, ja tilisi tiedot poistetaan identiteettipalvelimeltasi. Tämä toimenpidettä ei voi kumota.", "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Tilisi poistaminen käytöstä ei oletuksena saa meitä unohtamaan lähettämiäsi viestejä. Jos haluaisit meidän unohtavan viestisi, rastita alla oleva ruutu.", @@ -1257,8 +1257,8 @@ "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Jos et poistanut palautustapaa, hyökkääjä saattaa yrittää käyttää tiliäsi. Vaihda tilisi salasana ja aseta uusi palautustapa asetuksissa välittömästi.", "Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)": "Käytätkö 'leivänmuruja' (kuvia huoneluettelon yläpuolella) vai et", "Replying With Files": "Tiedostoilla vastaaminen", - "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Tiedostolla vastaaminen ei onnistu tällä erää. Haluatko ladata tiedoston vastaamatta?", - "The file '%(fileName)s' failed to upload.": "Tiedoston '%(fileName)s' lataaminen ei onnistunut.", + "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Tiedostolla vastaaminen ei ole mahdollista tällä kertaa. Haluatko lähettää tiedoston vastaamatta?", + "The file '%(fileName)s' failed to upload.": "Tiedoston '%(fileName)s' lähettäminen ei onnistunut.", "The server does not support the room version specified.": "Palvelin ei tue määritettyä huoneversiota.", "Changes your avatar in this current room only": "Vaihtaa kuvasi vain nykyisessä huoneessa", "Sends the given message coloured as a rainbow": "Lähettää viestin sateenkaaren väreissä", @@ -1296,14 +1296,14 @@ "Missing session data": "Istunnon dataa puuttuu", "Some session data, including encrypted message keys, is missing. Sign out and sign in to fix this, restoring keys from backup.": "Istunnon dataa, mukaan lukien salausavaimia, puuttuu. Kirjaudu ulos ja sisään, jolloin avaimet palautetaan varmuuskopiosta.", "Your browser likely removed this data when running low on disk space.": "Selaimesi luultavasti poisti tämän datan, kun levytila oli vähissä.", - "Upload files (%(current)s of %(total)s)": "Lataa tiedostot (%(current)s / %(total)s)", - "Upload files": "Lataa tiedostot", - "These files are too large to upload. The file size limit is %(limit)s.": "Tiedostot ovat liian isoja ladattaviksi. Tiedoston kokoraja on %(limit)s.", - "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Osa tiedostoista on liian isoja ladattaviksi. Tiedoston kokoraja on %(limit)s.", - "Upload %(count)s other files|other": "Lataa %(count)s muuta tiedostoa", - "Upload %(count)s other files|one": "Lataa %(count)s muu tiedosto", + "Upload files (%(current)s of %(total)s)": "Lähettää tiedostoa (%(current)s / %(total)s)", + "Upload files": "Lähetä tiedostot", + "These files are too large to upload. The file size limit is %(limit)s.": "Tiedostot ovat liian isoja lähetettäväksi. Tiedoston kokoraja on %(limit)s.", + "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Osa tiedostoista on liian isoja lähetettäväksi. Tiedoston kokoraja on %(limit)s.", + "Upload %(count)s other files|other": "Lähetä %(count)s muuta tiedostoa", + "Upload %(count)s other files|one": "Lähetä %(count)s muu tiedosto", "Cancel All": "Peruuta kaikki", - "Upload Error": "Latausvirhe", + "Upload Error": "Lähetysvirhe", "Use an email address to recover your account": "Voit palauttaa tilisi sähköpostiosoitteen avulla", "Enter email address (required on this homeserver)": "Syötä sähköpostiosoite (vaaditaan tällä kotipalvelimella)", "Doesn't look like a valid email address": "Ei näytä kelvolliselta sähköpostiosoitteelta", @@ -1324,7 +1324,7 @@ "edited": "muokattu", "To help us prevent this in future, please send us logs.": "Voit auttaa meitä estämään tämän toistumisen lähettämällä meille lokeja.", "Name or Matrix ID": "Nimi tai Matrix-tunnus", - "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Tiedosto on liian iso ladattavaksi. Tiedostojen kokoraja on %(limit)s mutta tämä tiedosto on %(sizeOfThisFile)s.", + "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Tiedosto on liian iso lähetettäväksi. Tiedostojen kokoraja on %(limit)s mutta tämä tiedosto on %(sizeOfThisFile)s.", "Unbans user with given ID": "Poistaa porttikiellon tunnuksen mukaiselta käyttäjältä", "No homeserver URL provided": "Kotipalvelimen osoite puuttuu", "Unexpected error resolving homeserver configuration": "Odottamaton virhe selvitettäessä kotipalvelimen asetuksia", @@ -1349,7 +1349,7 @@ "You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.": "Voit kirjautua, mutta osa toiminnoista on pois käytöstä kunnes identiteettipalvelin on jälleen toiminnassa. Jos tämä varoitus toistuu, tarkista asetuksesi tai ota yhteyttä palvelimen ylläpitäjään.", "Unexpected error resolving identity server configuration": "Odottamaton virhe selvitettäessä identiteettipalvelimen asetuksia", "Low bandwidth mode": "Matalan kaistanleveyden tila", - "Uploaded sound": "Ladattu ääni", + "Uploaded sound": "Asetettu ääni", "Sounds": "Äänet", "Notification sound": "Ilmoitusääni", "Reset": "Palauta alkutilaan", @@ -1367,7 +1367,7 @@ "Edited at %(date)s. Click to view edits.": "Muokattu %(date)s. Klikkaa nähdäksesi muokkaukset.", "Message edits": "Viestin muokkaukset", "Upgrading this room requires closing down the current instance of the room and creating a new room in its place. To give room members the best possible experience, we will:": "Tämän huoneen päivittäminen edellyttää huoneen nykyisen instanssin sulkemista ja uuden huoneen luomista sen tilalle. Jotta tämä kävisi huoneen jäsenten kannalta mahdollisimman sujuvasti, teemme seuraavaa:", - "Upload all": "Lataa kaikki palvelimelle", + "Upload all": "Lähetä kaikki palvelimelle", "Upload": "Lähetä", "Changes your avatar in all rooms": "Vaihtaa kuvasi kaikissa huoneissa", "%(senderName)s made no change.": "%(senderName)s ei tehnyt muutoksia.", @@ -1436,7 +1436,7 @@ "Remove %(phone)s?": "Poista %(phone)s?", "Command Help": "Komento-ohje", "This account has been deactivated.": "Tämä tili on poistettu.", - "Sends a message as plain text, without interpreting it as markdown": "Lähettää viestin pelkkänä tekstinä, tulkitsematta sitä markdownina", + "Sends a message as plain text, without interpreting it as markdown": "Lähettää viestin sellaisenaan, tulkitsematta sitä markdownina", "You do not have the required permissions to use this command.": "Sinulla ei ole vaadittavia oikeuksia tämän komennon käyttämiseksi.", "Use an identity server": "Käytä identiteettipalvelinta", "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Ellet halua käyttää palvelinta löytääksesi tuntemiasi ihmisiä ja tullaksesi löydetyksi, syötä toinen identiteettipalvelin alle.", @@ -1981,7 +1981,7 @@ "Review where you’re logged in": "Tarkasta missä olet sisäänkirjautuneena", "New login. Was this you?": "Uusi sisäänkirjautuminen. Olitko se sinä?", "%(name)s is requesting verification": "%(name)s pyytää varmennusta", - "Sends a message as html, without interpreting it as markdown": "Lähettää viestin HTML-muodossa, tulkitsematta sitä Markdowniksi", + "Sends a message as html, without interpreting it as markdown": "Lähettää viestin HTML-muodossa, tulkitsematta sitä markdownina", "Please supply a widget URL or embed code": "Anna sovelman osoite tai upotettava koodinpätkä", "You signed in to a new session without verifying it:": "Olet kirjautunut uuteen istuntoon varmentamatta sitä:", "Verify your other session using one of the options below.": "Varmenna toinen istuntosi käyttämällä yhtä seuraavista tavoista.", @@ -2682,7 +2682,7 @@ "Self-verification request": "Itsevarmennuspyyntö", "Add a photo so people know it's you.": "Lisää kuva, jotta ihmiset tietävät, että se olet sinä.", "Great, that'll help people know it's you": "Hienoa, tämä auttaa ihmisiä tietämään, että se olet sinä", - "Attach files from chat or just drag and drop them anywhere in a room.": "Liitä tiedostot keskustelusta tai vedä ja pudota ne mihin tahansa huoneeseen.", + "Attach files from chat or just drag and drop them anywhere in a room.": "Liitä tiedostoja alalaidan klemmarilla, tai raahaa ja pudota ne mihin tahansa huoneen kohtaan.", "Use email or phone to optionally be discoverable by existing contacts.": "Käytä sähköpostiosoitetta tai puhelinnumeroa, jos haluat olla löydettävissä nykyisille yhteystiedoille.", "Use email to optionally be discoverable by existing contacts.": "Käytä sähköpostiosoitetta, jos haluat olla löydettävissä nykyisille yhteystiedoille.", "Add an email to be able to reset your password.": "Lisää sähköpostiosoite, jotta voit nollata salasanasi.", @@ -2705,8 +2705,8 @@ "You can only pin up to %(count)s widgets|other": "Voit kiinnittää enintään %(count)s sovelmaa", "Favourited": "Suositut", "Use the + to make a new room or explore existing ones below": "Luo uusi huone tai tutustu alla oleviin + -painikeella", - "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s asetti palvelimen pääsyhallintaluetteloon tämän huoneen.", - "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s muutti palvelimen pääsyhallintaluetteloa tälle huoneelle.", + "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s loi tämän huoneen palvelinten pääsynvalvontalistan.", + "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s muutti tämän huoneen palvelinten pääsynvalvontalistaa.", "Expand room list section": "Laajenna huoneluettelon osa", "Collapse room list section": "Supista huoneluettelon osa", "Use a different passphrase?": "Käytä eri salalausetta?", @@ -2745,8 +2745,8 @@ "Enable advanced debugging for the room list": "Ota huoneluettelon edistynyt virheenkorjaus käyttöön", "A connection error occurred while trying to contact the server.": "Yhteysvirhe yritettäessä ottaa yhteyttä palvelimeen.", "The %(capability)s capability": "%(capability)s-ominaisuus", - "See when the avatar changes in this room": "Katso, milloin nimi vaihtuu tässä huoneessa", - "See when the name changes in your active room": "Katso, milloin nimi muuttuu aktiivisessa huoneessa", + "See when the avatar changes in this room": "Näe, milloin kuva vaihtuu tässä huoneessa", + "See when the name changes in your active room": "Näe milloin nimi muuttuu aktiivisessa huoneessasi", "If disabled, messages from encrypted rooms won't appear in search results.": "Jos ei ole käytössä, salattujen huoneiden viestejä ei näytetä hakutuloksissa.", "Jump to start/end of the composer": "Siirry kirjoittimen alkuun/loppuun", "Dismiss read marker and jump to bottom": "Hylkää lukumerkki ja hyppää pohjaan", @@ -2787,26 +2787,26 @@ "Remain on your screen while running": "Pysy ruudulla käynnissä olon ajan", "Move autocomplete selection up/down": "Siirrä automaattisen täydennyksen valintaa ylös/alas", "sends snowfall": "lähetä lumisadetta", - "Sends the given message with snowfall": "Lähetä viesti lumisateen kera", + "Sends the given message with snowfall": "Lähettää viestin lumisateen kera", "Sends the given message with fireworks": "Lähettää viestin ilotulitteiden kera", - "sends confetti": "lähetä konfettia", + "sends confetti": "lähettää konfettia", "Sends the given message with confetti": "Lähettää viestin konfettien kera", "sends fireworks": "lähetä ilotulitus", "You held the call Switch": "Puhelu pidossa Vaihda", "You held the call Resume": "Puhelu pidossa Jatka", "%(name)s on hold": "%(name)s on pidossa", "Please verify the room ID or address and try again.": "Tarkista huonetunnus ja yritä uudelleen.", - "Use this when referencing your community to others. The community ID cannot be changed.": "Käytä tätä, kun kutsut muita yhteisöösi. Yhteisötunnusta ei voi muuttaa.", - "Community ID: +:%(domain)s": "Yhteisötunnus: +:%(domain)s", + "Use this when referencing your community to others. The community ID cannot be changed.": "Käytä tätä, kun kutsut muita yhteisöösi. Yhteisön tunnusta ei voi muuttaa.", + "Community ID: +:%(domain)s": "Yhteisön tunnus: +:%(domain)s", "Are you sure you want to deactivate your account? This is irreversible.": "Haluatko varmasti poistaa tilisi pysyvästi?", - "Data on this screen is shared with %(widgetDomain)s": "Tällä näytöllä olevia tietoja jaetaan %(widgetDomain)s:n kanssa", + "Data on this screen is shared with %(widgetDomain)s": "Tällä näytöllä olevia tietoja jaetaan palvelun %(widgetDomain)s kanssa", "A browser extension is preventing the request.": "Selainlaajennus estää pyynnön.", "Approve widget permissions": "Hyväksy sovelman käyttöoikeudet", "You have been logged out of all sessions and will no longer receive push notifications. To re-enable notifications, sign in again on each device.": "Olet kirjautunut ulos kaikista istunnoista, etkä enää saa push-ilmoituksia. Ota ilmoitukset uudelleen käyttöön kirjautumalla uudelleen kullekin laitteelle.", "That username already exists, please try another.": "Antamasi käyttäjänimi on varattu, kokeile toista.", "Continue with %(ssoButtons)s": "Jatka %(ssoButtons)slla", "%(ssoButtons)s Or %(usernamePassword)s": "%(ssoButtons)s Tai %(usernamePassword)s", - "Host account on": "Isännöi tiliä osoitteessa", + "Host account on": "Ylläpidä tiliä osoitteessa", "Decide where your account is hosted": "Päätä, missä tiliäsi isännöidään", "Your new session is now verified. Other users will see it as trusted.": "Uusi istuntosi on vahvistettu. Muut käyttäjät näkevät sen luotettavana.", "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Uusi istuntosi on vahvistettu. Sillä on nyt pääsy salattuihin viesteihisi, ja muut käyttäjät näkevät sen luotettavana.", @@ -2816,7 +2816,7 @@ "Repeat your recovery passphrase...": "Toista palautuksen salasana...", "Enter a security phrase only you know, as it’s used to safeguard your data. To be secure, you shouldn’t re-use your account password.": "Syötä salasana, jonka tiedät vain sinä, koska sitä käytetään tietojesi suojaamiseen. Turvallisuuden takaamiseksi älä käytä samaa salasanaa muualla.", "Enter your recovery passphrase a second time to confirm it.": "Vahvista antamalla palautuksen salasana uudelleen.", - "Message downloading sleep time(ms)": "Viestin lataamisen odotusaika(ms)", + "Message downloading sleep time(ms)": "Viestin lataamisen odotusaika (ms)", "Prepends ┬──┬ ノ( ゜-゜ノ) to a plain-text message": "Lisää ┬──┬ ノ( ゜-゜ノ) viestin alkuun", "Prepends (╯°□°)╯︵ ┻━┻ to a plain-text message": "Lisää (╯°□°)╯︵ ┻━┻ viestin alkuun", "Unable to access secret storage. Please verify that you entered the correct recovery passphrase.": "Salaisen tallenustilan avaaminen epäonnistui. Varmista, että syötit oikean palautuksen salasanan.", @@ -2828,7 +2828,7 @@ "Save your Security Key": "Tallenna turva-avain", "This session is encrypting history using the new recovery method.": "Tämä istunto salaa historiansa käyttäen uutta palautustapaa.", "This session has detected that your recovery passphrase and key for Secure Messages have been removed.": "Tämä istunto on havainnut, että palauttamisen salauslause ja salattujen viestien avain on poistettu.", - "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Jos teit tämän vahingossa, voit ottaa käyttöön turvalliset viestit tälle istunnolle, se salaa tämän istunnon viestihistorian uudella palautustavalla.", + "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "", "Close dialog or context menu": "Sulje valintaikkuna tai pikavalikko", "%(brand)s is securely caching encrypted messages locally for them to appear in search results:": "%(brand)s tallentaa turvallisesti salattuja viestejä välimuistiin, jotta ne näkyvät hakutuloksissa:", "Navigate recent messages to edit": "Voit muokata viimeisimpiä viestejä", From 5331c1e6682ccce87aab00aae1a6f1dcfab17436 Mon Sep 17 00:00:00 2001 From: Mitja Sorsa Date: Sat, 23 Jan 2021 19:22:35 +0000 Subject: [PATCH 176/275] Translated using Weblate (Finnish) Currently translated at 94.7% (2587 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fi/ --- src/i18n/strings/fi.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 982f7530a6..799d14633d 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -136,7 +136,7 @@ "Logout": "Kirjaudu ulos", "Low priority": "Matala prioriteetti", "Manage Integrations": "Hallinnoi integraatioita", - "Moderator": "Moderaattori", + "Moderator": "Valvoja", "Name": "Nimi", "New passwords don't match": "Uudet salasanat eivät täsmää", "New passwords must match each other.": "Uusien salasanojen on vastattava toisiaan.", @@ -2237,7 +2237,7 @@ "Message deleted on %(date)s": "Viesti poistettu %(date)s", "Show %(count)s more|one": "Näytä %(count)s lisää", "Show %(count)s more|other": "Näytä %(count)s lisää", - "Mod": "Moderaattori", + "Mod": "Valvoja", "Read Marker off-screen lifetime (ms)": "Viestin luetuksi merkkaamisen kesto, kun Element ei ole näkyvissä (ms)", "Maximize widget": "Suurenna sovelma", "Minimize widget": "Pienennä sovelma", From db8c04f402e8f1ab86d4facca19b726a759a45c0 Mon Sep 17 00:00:00 2001 From: "Auri B. P" Date: Sat, 23 Jan 2021 22:25:16 +0000 Subject: [PATCH 177/275] Translated using Weblate (Catalan) Currently translated at 30.4% (831 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/ca/ --- src/i18n/strings/ca.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json index 4661e61c1d..7db987b8af 100644 --- a/src/i18n/strings/ca.json +++ b/src/i18n/strings/ca.json @@ -948,5 +948,7 @@ "Confirm adding phone number": "Confirma l'addició del número de telèfon", "Add Email Address": "Afegeix una adreça de correu electrònic", "Confirm": "Confirma", - "Click the button below to confirm adding this email address.": "Fes clic al botó de sota per confirmar l'addició d'aquesta adreça de correu electrònic." + "Click the button below to confirm adding this email address.": "Fes clic al botó de sota per confirmar l'addició d'aquesta adreça de correu electrònic.", + "Unable to access webcam / microphone": "No s'ha pogut accedir a la càmera web / micròfon", + "Unable to access microphone": "No s'ha pogut accedir al micròfon" } From 8c2d94d91abd93d9b98b54f50d4607da3aa1ecdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slobodan=20Simi=C4=87?= Date: Mon, 25 Jan 2021 10:28:28 +0000 Subject: [PATCH 178/275] Translated using Weblate (Serbian) Currently translated at 47.5% (1298 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 59c76e01a7..c994d6bde9 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -1392,5 +1392,16 @@ "Joins room with given address": "Придружује се соби са датом адресом", "Use an identity server to invite by email. Manage in Settings.": "Користите сервер идентитета за позивнице е-поштом. Управљајте у поставкама.", "Use an identity server": "Користи сервер идентитета", - "Failed to set topic": "Нисам успео да поставим тему" + "Failed to set topic": "Нисам успео да поставим тему", + "Removing…": "Уклањам…", + "Clear all data in this session?": "Да очистим све податке у овој сесији?", + "Reason (optional)": "Разлог (опционо)", + "An image will help people identify your community.": "Слика помаже да људи препознају вашу заједницу.", + "Add image (optional)": "Додај слику (опционо)", + "Disable": "Искључи", + "If disabled, messages from encrypted rooms won't appear in search results.": "Ако је искључено, поруке из шифрованих соба неће се приказивати у резултатима.", + "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Ако нисте ви уклонили начин опоравка, нападач можда покушава да приступи вашем налогу. Промените своју лозинку и поставите нови начин опоравка у поставкама, одмах.", + "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ако сте то случајно учинили, безбедне поруке можете подесити у овој сесији, која ће поново шифровати историју порука сесије помоћу новог начина опоравка.", + "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Сесија је открила да су ваша безбедносна фраза и кључ за безбедне поруке уклоњени.", + "Cancel autocomplete": "Откажи ауто-довршавање" } From 8783765ce3a9cb331eb753815fc871eef140164f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 25 Jan 2021 16:18:14 +0000 Subject: [PATCH 179/275] Don't play the hangup sound when the call is answered from elsewhere --- src/CallHandler.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CallHandler.tsx b/src/CallHandler.tsx index bcb2042f84..5e22b28b6f 100644 --- a/src/CallHandler.tsx +++ b/src/CallHandler.tsx @@ -375,7 +375,7 @@ export default class CallHandler { title: _t("Answered Elsewhere"), description: _t("The call was answered on another device."), }); - } else if (oldState !== CallState.Fledgling) { + } else if (oldState !== CallState.Fledgling && oldState !== CallState.Ringing) { // don't play the end-call sound for calls that never got off the ground this.play(AudioID.CallEnd); } From 662d89659f27578c9db62dd32257c489987fe900 Mon Sep 17 00:00:00 2001 From: czeidler Date: Tue, 26 Jan 2021 21:23:11 +1300 Subject: [PATCH 180/275] Update code_style.md Co-authored-by: J. Ryan Stinnett --- code_style.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code_style.md b/code_style.md index 6333e8cd94..b982395516 100644 --- a/code_style.md +++ b/code_style.md @@ -161,7 +161,7 @@ ECMAScript TypeScript ---------- - TypeScript is preferred over the use of JavaScript -- Its desirable to convert existing JavaScript files to TypeScript. TypeScript conversions should be done in small +- It's desirable to convert existing JavaScript files to TypeScript. TypeScript conversions should be done in small chunks without functional changes to ease the review process. - Use full type definitions for function parameters and return values. - Avoid `any` types and `any` casts From e8e0d808d42d0e905b2c82dca6cf3ac5fd0061f0 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Tue, 26 Jan 2021 21:24:54 +1300 Subject: [PATCH 181/275] Remove out-dated comment about flow annotation --- code_style.md | 1 - 1 file changed, 1 deletion(-) diff --git a/code_style.md b/code_style.md index b982395516..5747540a76 100644 --- a/code_style.md +++ b/code_style.md @@ -156,7 +156,6 @@ ECMAScript - Be careful mixing arrow functions and regular functions, eg. if one function in a promise chain is an arrow function, they probably all should be. - Apart from that, newer ES features should be used whenever the author deems them to be appropriate. -- While flow annotations are welcome and encouraged consider to migrate the JS file to TypeScript (see next section). TypeScript ---------- From ec0266d82bc91ac122fb736c07c1ca6bd5633c86 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 26 Jan 2021 09:41:57 +0000 Subject: [PATCH 182/275] Log candidates for calls First attempt at this was sending everything from RTCPeerConnection.getStats() as a separate item in the rageshake, but the rageshake server doesn't handle that in a particularly sensible way and it's probably better to pick & choose what data we want explicitly from a privacy PoV. This summarises the candidates used for the calls into the log that will be included in rageshakes so we can diagnose connectivity issues from rageshakes. Requires https://github.com/matrix-org/matrix-js-sdk/pull/1584 --- src/CallHandler.tsx | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/CallHandler.tsx b/src/CallHandler.tsx index f09133d020..659795afc6 100644 --- a/src/CallHandler.tsx +++ b/src/CallHandler.tsx @@ -356,6 +356,7 @@ export default class CallHandler { this.play(AudioID.Ringback); break; case CallState.Ended: + { Analytics.trackEvent('voip', 'callEnded', 'hangupReason', call.hangupReason); this.removeCallForRoom(mappedRoomId); if (oldState === CallState.InviteSent && ( @@ -393,6 +394,9 @@ export default class CallHandler { // don't play the end-call sound for calls that never got off the ground this.play(AudioID.CallEnd); } + + this.logCallStats(call, mappedRoomId); + } } }); call.on(CallEvent.Replaced, (newCall: MatrixCall) => { @@ -412,6 +416,40 @@ export default class CallHandler { }); } + private async logCallStats(call: MatrixCall, mappedRoomId: string) { + const stats = await call.getCurrentCallStats(); + logger.debug( + `Call completed. Call ID: ${call.callId}, virtual room ID: ${call.roomId}, ` + + `user-facing room ID: ${mappedRoomId}, direction: ${call.direction}, ` + + `our Party ID: ${call.ourPartyId}, hangup party: ${call.hangupParty}, ` + + `hangup reason: ${call.hangupReason}`, + ); + logger.debug("Local candidates:"); + for (const cand of stats.filter(item => item.type === 'local-candidate')) { + logger.debug( + `${cand.id} - type: ${cand.candidateType}, ip: ${cand.ip}, port: ${cand.port}, ` + + `protocol: ${cand.protocol}, relay protocol: ${cand.relayProtocol}, network type: ${cand.networkType}`, + ); + } + logger.debug("Remote candidates:"); + for (const cand of stats.filter(item => item.type === 'remote-candidate')) { + logger.debug( + `${cand.id} - type: ${cand.candidateType}, ip: ${cand.ip}, port: ${cand.port}, ` + + `protocol: ${cand.protocol}`, + ); + } + logger.debug("Candidate pairs:"); + for (const pair of stats.filter(item => item.type === 'candidate-pair')) { + logger.debug( + `${pair.localCandidateId} / ${pair.remoteCandidateId} - state: ${pair.state}, ` + + `nominated: ${pair.nominated}, ` + + `requests sent ${pair.requestsSent}, requests received ${pair.requestsReceived}, ` + + `responses received: ${pair.responsesReceived}, responses sent: ${pair.responsesSent}, ` + + `bytes received: ${pair.bytesReceived}, bytes sent: ${pair.bytesSent}, `, + ); + } + } + private setCallAudioElement(call: MatrixCall) { const audioElement = getRemoteAudioElement(); if (audioElement) call.setRemoteAudioElement(audioElement); From e43adef438e128f0f068c01dc81d2d3fd8384e18 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 26 Jan 2021 10:52:35 +0000 Subject: [PATCH 183/275] firefox uses 'address' instead of 'ip' --- src/CallHandler.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/CallHandler.tsx b/src/CallHandler.tsx index 659795afc6..e0f744630b 100644 --- a/src/CallHandler.tsx +++ b/src/CallHandler.tsx @@ -426,15 +426,17 @@ export default class CallHandler { ); logger.debug("Local candidates:"); for (const cand of stats.filter(item => item.type === 'local-candidate')) { + const address = cand.address || cand.ip; // firefox uses 'address', chrome uses 'ip' logger.debug( - `${cand.id} - type: ${cand.candidateType}, ip: ${cand.ip}, port: ${cand.port}, ` + + `${cand.id} - type: ${cand.candidateType}, address: ${address}, port: ${cand.port}, ` + `protocol: ${cand.protocol}, relay protocol: ${cand.relayProtocol}, network type: ${cand.networkType}`, ); } logger.debug("Remote candidates:"); for (const cand of stats.filter(item => item.type === 'remote-candidate')) { + const address = cand.address || cand.ip; // firefox uses 'address', chrome uses 'ip' logger.debug( - `${cand.id} - type: ${cand.candidateType}, ip: ${cand.ip}, port: ${cand.port}, ` + + `${cand.id} - type: ${cand.candidateType}, address: ${address}, port: ${cand.port}, ` + `protocol: ${cand.protocol}`, ); } From 52bc36fc79ac1772bf636d5fff6322d960ac352d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 26 Jan 2021 11:00:56 +0000 Subject: [PATCH 184/275] Require registration for verification actions Fixes https://github.com/vector-im/element-web/issues/16277 --- src/verification.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/verification.js b/src/verification.js index 819370f239..74e3897d3a 100644 --- a/src/verification.js +++ b/src/verification.js @@ -74,6 +74,10 @@ function UntrustedDeviceDialog(props) { export async function verifyDevice(user, device) { const cli = MatrixClientPeg.get(); + if (cli.isGuest()) { + dis.dispatch({action: 'require_registration'}); + return; + } // if cross-signing is not explicitly disabled, check if it should be enabled first. if (cli.getCryptoTrustCrossSignedDevices()) { if (!await enable4SIfNeeded()) { @@ -113,6 +117,10 @@ export async function verifyDevice(user, device) { export async function legacyVerifyUser(user) { const cli = MatrixClientPeg.get(); + if (cli.isGuest()) { + dis.dispatch({action: 'require_registration'}); + return; + } // if cross-signing is not explicitly disabled, check if it should be enabled first. if (cli.getCryptoTrustCrossSignedDevices()) { if (!await enable4SIfNeeded()) { @@ -128,6 +136,11 @@ export async function legacyVerifyUser(user) { } export async function verifyUser(user) { + const cli = MatrixClientPeg.get(); + if (cli.isGuest()) { + dis.dispatch({action: 'require_registration'}); + return; + } if (!await enable4SIfNeeded()) { return; } From 709fc2e0041c06dd623814145e3cfaecea62959d Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 26 Jan 2021 11:57:46 +0000 Subject: [PATCH 185/275] Upgrade matrix-js-sdk to 9.5.1 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 807bcaf9f4..80d2cca6ea 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "9.5.0", + "matrix-js-sdk": "9.5.1", "matrix-widget-api": "^0.1.0-beta.10", "minimist": "^1.2.5", "pako": "^1.0.11", diff --git a/yarn.lock b/yarn.lock index cb4fa0e13a..0cbe541c73 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6553,10 +6553,10 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.0.tgz#2f54e73b0fbb03e85b3f81f41da9d33b028c4b30" - integrity sha512-Fg1SGrZ4N2WAtgbK5mEoOfDwTGV83noJ3VUJ9z3rparbQCBr8Rd8ppHBD8RgshVWGdJMPJ4EQBwhQUgHeyhz9g== +matrix-js-sdk@9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.1.tgz#f2e27b7131a8d1a75fd2a803434e63fe672415ef" + integrity sha512-01YbRuU50BDYytTZ5fdmdoQLqOGDT2F7X6vDBrYHpdaRN2jWuLCspQlOKFJKgv73gNhw9V9jfoZN+NxuwuUpUQ== dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" From 36a34008c037d207e459bf58e8ec9aa543c86ad0 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Mon, 25 Jan 2021 23:20:13 +0000 Subject: [PATCH 186/275] Translated using Weblate (Ukrainian) Currently translated at 53.8% (1471 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index b79de72891..fee261e5a0 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -729,7 +729,7 @@ "%(num)s days from now": "%(num)s днів по тому", "Unrecognised address": "Нерозпізнана адреса", "You do not have permission to invite people to this room.": "У вас немає прав запрошувати людей у цю кімнату.", - "User %(userId)s is already in the room": "Користувач %(userId)s вже знаходиться серед вас", + "User %(userId)s is already in the room": "Користувач %(userId)s вже перебуває в кімнаті", "User %(user_id)s does not exist": "Користувача %(user_id)s не існує", "The user must be unbanned before they can be invited.": "Користувач має бути розблокованим(ою), перед тим як може бути запрошений(ая).", "The user's homeserver does not support the version of the room.": "Домашній сервер користувача не підтримує версію кімнати.", @@ -1575,5 +1575,7 @@ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)sприєднується %(count)s разів", "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)sприєдналися", "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)sприєдналися %(count)s разів", - "Members only (since they joined)": "Лише учасники (від часу приєднання)" + "Members only (since they joined)": "Лише учасники (від часу приєднання)", + "This room is not accessible by remote Matrix servers": "Ця кімната недоступна для віддалених серверів Matrix", + "Manually verify all remote sessions": "Перевірити всі сеанси власноруч" } From 1181489cbfcb55fb4d8eda80e0db9716c6a5cff2 Mon Sep 17 00:00:00 2001 From: Samu Voutilainen Date: Tue, 26 Jan 2021 04:50:03 +0000 Subject: [PATCH 187/275] Translated using Weblate (Finnish) Currently translated at 94.7% (2587 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fi/ --- src/i18n/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 799d14633d..fac1ec7bd9 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -2746,7 +2746,7 @@ "A connection error occurred while trying to contact the server.": "Yhteysvirhe yritettäessä ottaa yhteyttä palvelimeen.", "The %(capability)s capability": "%(capability)s-ominaisuus", "See when the avatar changes in this room": "Näe, milloin kuva vaihtuu tässä huoneessa", - "See when the name changes in your active room": "Näe milloin nimi muuttuu aktiivisessa huoneessasi", + "See when the name changes in your active room": "Näe milloin käyttäjän nimi muuttuu aktiivisessa huoneessa", "If disabled, messages from encrypted rooms won't appear in search results.": "Jos ei ole käytössä, salattujen huoneiden viestejä ei näytetä hakutuloksissa.", "Jump to start/end of the composer": "Siirry kirjoittimen alkuun/loppuun", "Dismiss read marker and jump to bottom": "Hylkää lukumerkki ja hyppää pohjaan", From 1ecd3836dad68204e9c8426e6c6cc08e02fccce4 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 26 Jan 2021 12:04:37 +0000 Subject: [PATCH 188/275] Prepare changelog for v3.12.1 --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c460b4f81..589121dca6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Changes in [3.12.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.12.1) (2021-01-26) +===================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.12.0...v3.12.1) + + * Upgrade to JS SDK 9.5.1 + Changes in [3.12.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.12.0) (2021-01-18) ===================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.12.0-rc.1...v3.12.0) From 982c3ceca17ee0ca571c1728947541f7655800c2 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 26 Jan 2021 12:04:37 +0000 Subject: [PATCH 189/275] v3.12.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 80d2cca6ea..d5636a3397 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.12.0", + "version": "3.12.1", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 4dbdeb46ad39d3a68b2d21e9f10b13ac360b310d Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Tue, 26 Jan 2021 12:11:47 +0000 Subject: [PATCH 190/275] Reset matrix-js-sdk back to develop branch --- package.json | 2 +- yarn.lock | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ca89607801..c566575fbd 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.19", - "matrix-js-sdk": "9.5.1", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "matrix-widget-api": "0.1.0-beta.11", "minimist": "^1.2.5", "pako": "^1.0.11", diff --git a/yarn.lock b/yarn.lock index 49b8ac80d7..2303284796 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6558,10 +6558,9 @@ mathml-tag-names@^2.0.1: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@9.5.1: +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "9.5.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.5.1.tgz#f2e27b7131a8d1a75fd2a803434e63fe672415ef" - integrity sha512-01YbRuU50BDYytTZ5fdmdoQLqOGDT2F7X6vDBrYHpdaRN2jWuLCspQlOKFJKgv73gNhw9V9jfoZN+NxuwuUpUQ== + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/7cfbd0da95edc66671e166aa83145b5e17ca76fc" dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" @@ -6569,7 +6568,7 @@ matrix-js-sdk@9.5.1: bs58 "^4.0.1" content-type "^1.0.4" loglevel "^1.7.1" - qs "^6.9.4" + qs "^6.9.6" request "^2.88.2" unhomoglyph "^1.0.6" @@ -7666,6 +7665,11 @@ qs@^6.9.4: resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== +qs@^6.9.6: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" From 501c73ae4b8a77459931d81eb245090ef34dcb46 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 26 Jan 2021 14:08:39 +0000 Subject: [PATCH 191/275] Remove outdated comment --- src/components/views/elements/Pill.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/Pill.js b/src/components/views/elements/Pill.js index 3094f17fb7..5cd5b8bbf1 100644 --- a/src/components/views/elements/Pill.js +++ b/src/components/views/elements/Pill.js @@ -28,7 +28,7 @@ import MatrixClientContext from "../../../contexts/MatrixClientContext"; import {Action} from "../../../dispatcher/actions"; // For URLs of matrix.to links in the timeline which have been reformatted by -// HttpUtils transformTags to relative links. This excludes event URLs (with `[^\/]*`) +// HttpUtils transformTags to relative links. const REGEX_LOCAL_PERMALINK = /^#\/(?:user|room|group)\/(([#!@+]).*?)(?=\/|\?|$)/; class Pill extends React.Component { From 71921ad705559265f8616dcf2cf82c828c4c9ac9 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 26 Jan 2021 14:11:09 +0000 Subject: [PATCH 192/275] Remove unused isPillUrl --- src/components/views/elements/Pill.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/views/elements/Pill.js b/src/components/views/elements/Pill.js index 5cd5b8bbf1..dc4011fb65 100644 --- a/src/components/views/elements/Pill.js +++ b/src/components/views/elements/Pill.js @@ -32,10 +32,6 @@ import {Action} from "../../../dispatcher/actions"; const REGEX_LOCAL_PERMALINK = /^#\/(?:user|room|group)\/(([#!@+]).*?)(?=\/|\?|$)/; class Pill extends React.Component { - static isPillUrl(url) { - return !!getPrimaryPermalinkEntity(url); - } - static isMessagePillUrl(url) { return !!REGEX_LOCAL_PERMALINK.exec(url); } @@ -56,7 +52,7 @@ class Pill extends React.Component { static propTypes = { // The Type of this Pill. If url is given, this is auto-detected. type: PropTypes.string, - // The URL to pillify (no validation is done, see isPillUrl and isMessagePillUrl) + // The URL to pillify (no validation is done) url: PropTypes.string, // Whether the pill is in a message inMessage: PropTypes.bool, From 9ac31747f6b7f5f4bbd4cca295deba80cdf950b1 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 27 Jan 2021 10:36:40 +0000 Subject: [PATCH 193/275] This was missing a break somehow --- src/CallHandler.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CallHandler.tsx b/src/CallHandler.tsx index e0f744630b..3845182f4f 100644 --- a/src/CallHandler.tsx +++ b/src/CallHandler.tsx @@ -396,6 +396,7 @@ export default class CallHandler { } this.logCallStats(call, mappedRoomId); + break; } } }); From fa3ace847386c06cabc74053f533a4348db9c65a Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 27 Jan 2021 11:46:20 +0000 Subject: [PATCH 194/275] Rework message pilling to ignore event permalinks This removes pills from event permalinks since they hide the text associated with the link, which can cause nonsensical messages since words have been removed. In addition, this moves away from fragile regexs to more straightforward code to parse links and adds a test for this case. Regressed by https://github.com/matrix-org/matrix-react-sdk/pull/5188 Fixes https://github.com/vector-im/element-web/issues/15159 --- src/components/views/elements/Pill.js | 21 ++++---------- .../permalinks/ElementPermalinkConstructor.js | 6 +++- src/utils/permalinks/PermalinkConstructor.js | 10 ++++++- src/utils/permalinks/Permalinks.js | 19 +++++++++++- src/utils/pillify.js | 13 ++++----- .../views/messages/TextualBody-test.js | 29 +++++++++++++++++++ 6 files changed, 72 insertions(+), 26 deletions(-) diff --git a/src/components/views/elements/Pill.js b/src/components/views/elements/Pill.js index dc4011fb65..daa4cb70e2 100644 --- a/src/components/views/elements/Pill.js +++ b/src/components/views/elements/Pill.js @@ -1,7 +1,7 @@ /* Copyright 2017 Vector Creations Ltd Copyright 2018 New Vector Ltd -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019, 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,19 +23,11 @@ import { Room, RoomMember } from 'matrix-js-sdk'; import PropTypes from 'prop-types'; import {MatrixClientPeg} from '../../../MatrixClientPeg'; import FlairStore from "../../../stores/FlairStore"; -import {getPrimaryPermalinkEntity} from "../../../utils/permalinks/Permalinks"; +import {getPrimaryPermalinkEntity, parseAppLocalLink} from "../../../utils/permalinks/Permalinks"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import {Action} from "../../../dispatcher/actions"; -// For URLs of matrix.to links in the timeline which have been reformatted by -// HttpUtils transformTags to relative links. -const REGEX_LOCAL_PERMALINK = /^#\/(?:user|room|group)\/(([#!@+]).*?)(?=\/|\?|$)/; - class Pill extends React.Component { - static isMessagePillUrl(url) { - return !!REGEX_LOCAL_PERMALINK.exec(url); - } - static roomNotifPos(text) { return text.indexOf("@room"); } @@ -86,12 +78,9 @@ class Pill extends React.Component { if (nextProps.url) { if (nextProps.inMessage) { - // Default to the empty array if no match for simplicity - // resource and prefix will be undefined instead of throwing - const matrixToMatch = REGEX_LOCAL_PERMALINK.exec(nextProps.url) || []; - - resourceId = matrixToMatch[1]; // The room/user ID - prefix = matrixToMatch[2]; // The first character of prefix + const parts = parseAppLocalLink(nextProps.url); + resourceId = parts.primaryEntityId; // The room/user ID + prefix = parts.sigil; // The first character of prefix } else { resourceId = getPrimaryPermalinkEntity(nextProps.url); prefix = resourceId ? resourceId[0] : undefined; diff --git a/src/utils/permalinks/ElementPermalinkConstructor.js b/src/utils/permalinks/ElementPermalinkConstructor.js index 5ef0598ba1..29f2602304 100644 --- a/src/utils/permalinks/ElementPermalinkConstructor.js +++ b/src/utils/permalinks/ElementPermalinkConstructor.js @@ -1,5 +1,5 @@ /* -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019, 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -76,6 +76,10 @@ export default class ElementPermalinkConstructor extends PermalinkConstructor { } const parts = fullUrl.substring(`${this._elementUrl}/#/`.length).split("/"); + return ElementPermalinkConstructor.parseLinkParts(parts); + } + + static parseLinkParts(parts: string[]): PermalinkParts { if (parts.length < 2) { // we're expecting an entity and an ID of some kind at least throw new Error("URL is missing parts"); } diff --git a/src/utils/permalinks/PermalinkConstructor.js b/src/utils/permalinks/PermalinkConstructor.js index f74c432bf0..25855eb024 100644 --- a/src/utils/permalinks/PermalinkConstructor.js +++ b/src/utils/permalinks/PermalinkConstructor.js @@ -1,5 +1,5 @@ /* -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019, 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -80,4 +80,12 @@ export class PermalinkParts { static forEvent(roomId: string, eventId: string, viaServers: string[]): PermalinkParts { return new PermalinkParts(roomId, eventId, null, null, viaServers || []); } + + get primaryEntityId(): string { + return this.roomIdOrAlias || this.userId || this.groupId; + } + + get sigil(): string { + return this.primaryEntityId[0]; + } } diff --git a/src/utils/permalinks/Permalinks.js b/src/utils/permalinks/Permalinks.js index e157ecc55e..9851bc3cb3 100644 --- a/src/utils/permalinks/Permalinks.js +++ b/src/utils/permalinks/Permalinks.js @@ -1,5 +1,5 @@ /* -Copyright 2019 New Vector Ltd +Copyright 2019, 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -405,6 +405,23 @@ export function parsePermalink(fullUrl: string): PermalinkParts { return null; // not a permalink we can handle } +/** + * Parses an app local link (`#/(user|room|group)/identifer`) to a Matrix entity + * (room, user, group). Such links are produced by `HtmlUtils` when encountering + * links, which calls `tryTransformPermalinkToLocalHref` in this module. + * @param {string} localLink The app local link + * @returns {PermalinkParts} + */ +export function parseAppLocalLink(localLink: string): PermalinkParts { + try { + const segments = localLink.replace("#/", "").split("/"); + return ElementPermalinkConstructor.parseLinkParts(segments); + } catch (e) { + // Ignore failures + } + return null; +} + function getServerName(userId) { return userId.split(":").splice(1).join(":"); } diff --git a/src/utils/pillify.js b/src/utils/pillify.js index 432771592a..72e0e5a4db 100644 --- a/src/utils/pillify.js +++ b/src/utils/pillify.js @@ -1,5 +1,5 @@ /* -Copyright 2019, 2020 The Matrix.org Foundation C.I.C. +Copyright 2019, 2020, 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,7 +19,8 @@ import ReactDOM from 'react-dom'; import {MatrixClientPeg} from '../MatrixClientPeg'; import SettingsStore from "../settings/SettingsStore"; import {PushProcessor} from 'matrix-js-sdk/src/pushprocessor'; -import * as sdk from '../index'; +import Pill from "../components/views/elements/Pill"; +import { parseAppLocalLink } from "./permalinks/Permalinks"; /** * Recurses depth-first through a DOM tree, converting matrix.to links @@ -43,10 +44,10 @@ export function pillifyLinks(nodes, mxEvent, pills) { if (node.tagName === "A" && node.getAttribute("href")) { const href = node.getAttribute("href"); - + const parts = parseAppLocalLink(href); // If the link is a (localised) matrix.to link, replace it with a pill - const Pill = sdk.getComponent('elements.Pill'); - if (Pill.isMessagePillUrl(href)) { + // We don't want to pill event permalinks, so those are ignored. + if (parts && !parts.eventId) { const pillContainer = document.createElement('span'); const pill = ", () => { 'style="width: 16px; height: 16px;" title="@member:domain.bla" alt="" aria-hidden="true">Member' + ''); }); + + it("pills do not appear for event permalinks", () => { + const ev = mkEvent({ + type: "m.room.message", + room: "room_id", + user: "sender", + content: { + body: + "An [event link](https://matrix.to/#/!ZxbRYPQXDXKGmDnJNg:example.com/" + + "$16085560162aNpaH:example.com?via=example.com) with text", + msgtype: "m.text", + format: "org.matrix.custom.html", + formatted_body: + "An event link with text", + }, + event: true, + }); + + const wrapper = mount(); + expect(wrapper.text()).toBe("An event link with text"); + const content = wrapper.find(".mx_EventTile_body"); + expect(content.html()).toBe( + '' + + 'An event link with text', + ); + }); }); it("renders url previews correctly", () => { From 12c671045d4c5bd4c2f3a72ecd4af4f6b70a2be1 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 11:11:22 +0000 Subject: [PATCH 195/275] Upgrade to latest minor versions of deps --- package.json | 100 +- yarn.lock | 3518 +++++++++++++++++++++++++++----------------------- 2 files changed, 1918 insertions(+), 1700 deletions(-) diff --git a/package.json b/package.json index c566575fbd..270068c1fe 100644 --- a/package.json +++ b/package.json @@ -54,48 +54,48 @@ "test:e2e": "./test/end-to-end-tests/run.sh --app-url http://localhost:8080" }, "dependencies": { - "@babel/runtime": "^7.10.5", - "await-lock": "^2.0.1", - "blueimp-canvas-to-blob": "^3.27.0", + "@babel/runtime": "^7.12.5", + "await-lock": "^2.1.0", + "blueimp-canvas-to-blob": "^3.28.0", "browser-encrypt-attachment": "^0.3.0", "browser-request": "^0.3.3", - "cheerio": "^1.0.0-rc.3", + "cheerio": "^1.0.0-rc.5", "classnames": "^2.2.6", - "commonmark": "^0.29.1", + "commonmark": "^0.29.3", "counterpart": "^0.18.6", - "diff-dom": "^4.1.6", + "diff-dom": "^4.2.2", "diff-match-patch": "^1.0.5", - "emojibase-data": "^5.0.1", - "emojibase-regex": "^4.0.1", + "emojibase-data": "^5.1.1", + "emojibase-regex": "^4.1.1", "escape-html": "^1.0.3", "file-saver": "^1.3.8", "filesize": "3.6.1", "flux": "2.1.1", - "focus-visible": "^5.1.0", + "focus-visible": "^5.2.0", "fuse.js": "^2.7.4", "gfm.css": "^1.1.2", "glob-to-regexp": "^0.4.1", - "highlight.js": "^10.1.2", - "html-entities": "^1.3.1", + "highlight.js": "^10.5.0", + "html-entities": "^1.4.0", "is-ip": "^2.0.0", "katex": "^0.12.0", "linkifyjs": "^2.1.9", - "lodash": "^4.17.19", + "lodash": "^4.17.20", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "matrix-widget-api": "0.1.0-beta.11", "minimist": "^1.2.5", "pako": "^1.0.11", "parse5": "^5.1.1", "png-chunks-extract": "^1.0.0", - "project-name-generator": "^2.1.7", + "project-name-generator": "^2.1.9", "prop-types": "^15.7.2", "qrcode": "^1.4.4", - "qs": "^6.9.4", - "re-resizable": "^6.5.4", - "react": "^16.13.1", + "qs": "^6.9.6", + "re-resizable": "^6.9.0", + "react": "^16.14.0", "react-beautiful-dnd": "^4.0.1", - "react-dom": "^16.13.1", - "react-focus-lock": "^2.4.1", + "react-dom": "^16.14.0", + "react-focus-lock": "^2.5.0", "react-transition-group": "^4.4.1", "resize-observer-polyfill": "^1.5.1", "rfc4648": "^1.4.0", @@ -108,61 +108,61 @@ "zxcvbn": "^4.4.2" }, "devDependencies": { - "@babel/cli": "^7.10.5", - "@babel/core": "^7.10.5", - "@babel/parser": "^7.11.0", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-decorators": "^7.10.5", - "@babel/plugin-proposal-export-default-from": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.10.4", - "@babel/plugin-transform-flow-comments": "^7.10.4", - "@babel/plugin-transform-runtime": "^7.10.5", - "@babel/preset-env": "^7.10.4", - "@babel/preset-flow": "^7.10.4", - "@babel/preset-react": "^7.10.4", - "@babel/preset-typescript": "^7.10.4", - "@babel/register": "^7.10.5", - "@babel/traverse": "^7.11.0", - "@peculiar/webcrypto": "^1.1.3", - "@types/classnames": "^2.2.10", + "@babel/cli": "^7.12.10", + "@babel/core": "^7.12.10", + "@babel/parser": "^7.12.11", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.7", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-transform-flow-comments": "^7.12.1", + "@babel/plugin-transform-runtime": "^7.12.10", + "@babel/preset-env": "^7.12.11", + "@babel/preset-flow": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.10", + "@babel/traverse": "^7.12.12", + "@peculiar/webcrypto": "^1.1.4", + "@types/classnames": "^2.2.11", "@types/counterpart": "^0.18.1", "@types/flux": "^3.1.9", "@types/jest": "^26.0.20", "@types/linkifyjs": "^2.1.3", - "@types/lodash": "^4.14.158", + "@types/lodash": "^4.14.168", "@types/modernizr": "^3.5.3", - "@types/node": "^12.12.51", + "@types/node": "^12.19.14", "@types/pako": "^1.0.1", - "@types/qrcode": "^1.3.4", + "@types/qrcode": "^1.3.5", "@types/react": "^16.9", - "@types/react-dom": "^16.9.8", + "@types/react-dom": "^16.9.10", "@types/react-transition-group": "^4.4.0", - "@types/sanitize-html": "^1.23.3", + "@types/sanitize-html": "^1.27.0", "@types/zxcvbn": "^4.4.0", - "@typescript-eslint/eslint-plugin": "^3.7.0", - "@typescript-eslint/parser": "^3.7.0", + "@typescript-eslint/eslint-plugin": "^3.10.1", + "@typescript-eslint/parser": "^3.10.1", "babel-eslint": "^10.1.0", "babel-jest": "^24.9.0", - "chokidar": "^3.4.1", + "chokidar": "^3.5.1", "concurrently": "^4.1.2", "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.2", - "eslint": "7.5.0", - "eslint-config-matrix-org": "^0.1.2", + "enzyme-adapter-react-16": "^1.15.6", + "eslint": "7.18.0", + "eslint-config-matrix-org": "^0.2.0", "eslint-plugin-babel": "^5.3.1", "eslint-plugin-flowtype": "^2.50.3", - "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^2.5.1", "glob": "^5.0.15", - "jest": "^26.5.2", + "jest": "^26.6.3", "jest-canvas-mock": "^2.3.0", "jest-environment-jsdom-sixteen": "^1.0.3", "lolex": "^5.1.2", "matrix-mock-request": "^1.2.3", "matrix-react-test-utils": "^0.2.2", "olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz", - "react-test-renderer": "^16.13.1", + "react-test-renderer": "^16.14.0", "rimraf": "^2.7.1", "stylelint": "^9.10.1", "stylelint-config-standard": "^18.3.0", diff --git a/yarn.lock b/yarn.lock index 2303284796..a0b46df413 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,10 +2,10 @@ # yarn lockfile v1 -"@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== +"@babel/cli@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.12.10.tgz#67a1015b1cd505bde1696196febf910c4c339a48" + integrity sha512-+y4ZnePpvWs1fc/LhZRTHkTesbXkyBYuOB+5CyodZqrEuETXi3zOVfpAQIdgC3lXbHLTDG9dQosxR9BhvLKDLQ== 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-no-fsevents" + chokidar "^3.4.0" "@babel/code-frame@^7.0.0": version "7.10.3" @@ -25,7 +26,7 @@ dependencies: "@babel/highlight" "^7.10.3" -"@babel/code-frame@^7.10.1", "@babel/code-frame@^7.5.5": +"@babel/code-frame@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== @@ -39,14 +40,17 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.5.tgz#d38425e67ea96b1480a3f50404d1bf85676301a6" - integrity sha512-mPVoWNzIpYJHbWje0if7Ck36bpbtTvIxOi9+6WSK9wjGEXearAqlwBoTQvVjsAY2VIwgcs8V940geY3okzRCEw== +"@babel/code-frame@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: - browserslist "^4.12.0" - invariant "^2.2.4" - semver "^5.5.0" + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" + integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== "@babel/core@>=7.2.2", "@babel/core@^7.1.0": version "7.10.2" @@ -70,25 +74,24 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" - integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== +"@babel/core@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== dependencies: "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-module-transforms" "^7.10.5" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.5" - "@babel/types" "^7.10.5" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" lodash "^4.17.19" - resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" @@ -124,7 +127,7 @@ lodash "^4.17.13" source-map "^0.5.0" -"@babel/generator@^7.10.4", "@babel/generator@^7.10.5": +"@babel/generator@^7.10.5": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== @@ -133,15 +136,6 @@ jsesc "^2.5.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== - dependencies: - "@babel/types" "^7.11.0" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/generator@^7.11.5", "@babel/generator@^7.11.6": version "7.11.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" @@ -151,6 +145,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.12.1", "@babel/generator@^7.12.10", "@babel/generator@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== + dependencies: + "@babel/types" "^7.12.11" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" @@ -165,6 +168,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-annotate-as-pure@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" + integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== + dependencies: + "@babel/types" "^7.12.10" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" @@ -173,44 +183,25 @@ "@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-compilation-targets@^7.12.5": + 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/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/types" "^7.10.5" - -"@babel/helper-builder-react-jsx@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" - integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== - dependencies: - "@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== - 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.1": @@ -222,14 +213,13 @@ "@babel/helper-regex" "^7.10.1" regexpu-core "^4.7.0" -"@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.7" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" + integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ== 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" @@ -266,6 +256,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-function-name@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" + integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/types" "^7.12.11" + "@babel/helper-get-function-arity@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" @@ -280,6 +279,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-get-function-arity@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" + integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== + dependencies: + "@babel/types" "^7.12.10" + "@babel/helper-hoist-variables@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" @@ -294,13 +300,20 @@ dependencies: "@babel/types" "^7.10.1" -"@babel/helper-member-expression-to-functions@^7.10.4", "@babel/helper-member-expression-to-functions@^7.10.5": +"@babel/helper-member-expression-to-functions@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== dependencies: "@babel/types" "^7.10.5" +"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + "@babel/helper-module-imports@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" @@ -315,6 +328,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": + 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.12.5" + "@babel/helper-module-transforms@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" @@ -328,19 +348,6 @@ "@babel/types" "^7.10.1" lodash "^4.17.13" -"@babel/helper-module-transforms@^7.10.4", "@babel/helper-module-transforms@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz#120c271c0b3353673fcdfd8c053db3c544a260d6" - integrity sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.5" - lodash "^4.17.19" - "@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" @@ -354,6 +361,21 @@ "@babel/types" "^7.11.0" lodash "^4.17.19" +"@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.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/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" @@ -368,12 +390,19 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-optimise-call-expression@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== + dependencies: + "@babel/types" "^7.12.10" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.8.0": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== -"@babel/helper-plugin-utils@^7.10.4": +"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== @@ -385,23 +414,14 @@ dependencies: lodash "^4.17.13" -"@babel/helper-regex@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" - integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== - 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.1": version "7.10.1" @@ -423,6 +443,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.12.1": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" + "@babel/helper-simple-access@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" @@ -439,6 +469,20 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-split-export-declaration@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" @@ -460,6 +504,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-split-export-declaration@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" + integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== + dependencies: + "@babel/types" "^7.12.11" + "@babel/helper-validator-identifier@^7.10.1", "@babel/helper-validator-identifier@^7.10.3": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" @@ -470,6 +521,16 @@ 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-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" + integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== + "@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" @@ -498,6 +559,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.12.5": + 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.12.5" + "@babel/types" "^7.12.5" + "@babel/highlight@^7.10.1", "@babel/highlight@^7.10.3": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d" @@ -526,121 +596,138 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== -"@babel/parser@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.0.tgz#a9d7e11aead25d3b422d17b2c6502c8dddef6a5d" - integrity sha512-qvRvi4oI8xii8NllyEc4MDJjuZiNaRzyb7Y7lup1NqJV8TZHF4O27CcP+72WPn/k1zkgJ6WJfnIbk4jTsVAZHw== - "@babel/parser@^7.11.5": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== -"@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/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" + integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A== 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== +"@babel/plugin-proposal-decorators@^7.12.12": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.12.tgz#067a6d3d6ca86d54cf56bb183239199c20daeafe" + integrity sha512-fhkE9lJYpw2mjHelBpM2zCbaA11aov2GJs7q4cFaXNrWx0H3bW58H9Esy2rdtYOghFBEYUDRIpvlgi+ZD+AvvQ== 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-default-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz#08f66eef0067cbf6a7bc036977dcdccecaf0c6c5" - integrity sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig== +"@babel/plugin-proposal-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.12.1.tgz#c6e62d668a8abcfe0d28b82f560395fecb611c5a" + integrity sha512-z5Q4Ke7j0AexQRfgUvnD+BdCSgpTEKnqQ3kskk2jWtOBulxICzd1X9BGt7kmWftxZ2W3++OZdt5gtmC8KLxdRQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-export-default-from" "^7.10.4" + "@babel/plugin-syntax-export-default-from" "^7.12.1" -"@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-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.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-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-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.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.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b" + integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" - integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== +"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" - integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== +"@babel/plugin-proposal-optional-chaining@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c" + integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" + "@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": - 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": + 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-proposal-unicode-property-regex@^7.4.4": @@ -665,17 +752,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.1": + 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-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== 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" @@ -686,17 +780,24 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz#e5494f95006355c10292a0ff1ce42a5746002ec8" - integrity sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA== +"@babel/plugin-syntax-export-default-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.12.1.tgz#a9eb31881f4f9a1115a3d2c6d64ac3f6016b5a9d" + integrity sha512-dP5eGg6tHEkhnRD2/vRG/KJKRSg8gtxu2i+P/8/yFPJn/CfPU5G0/7Gks2i3M6IOVAPQekmsLN9LPsmXFFL4Uw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@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-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@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" @@ -714,14 +815,14 @@ 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" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -763,84 +864,84 @@ 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-syntax-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" - integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== 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.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.5.tgz#b81b8aafefbfe68f0f65f7ef397b9ece68a6037d" - integrity sha512-6Ycw3hjpQti0qssQcA6AMSFDHeNJ++R6dIMnpRqUjFeBBTmTDPa8zgF90OVfTvAo11mXZTlVUViY1g8ffrURLg== +"@babel/plugin-transform-block-scoping@^7.12.11": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" + integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== 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.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": - 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": + 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-dotall-regex@^7.4.4": @@ -851,353 +952,336 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.1" "@babel/helper-plugin-utils" "^7.10.1" -"@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-comments@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.10.4.tgz#e0aebf9d1dbfe48fdc97e4bc31fc25985db5c07d" - integrity sha512-wiwS5fCzeWP71WLIzAoFAPTk0GLnhpUfGV4ygwX+Zib6nYiaLhUOWsjLt6+hCwCoH/bwZSg7Qzlc2AuzXg/mbg== +"@babel/plugin-transform-flow-comments@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.12.1.tgz#92fe5a27e635bd6d2e46f616094d60edff895a0b" + integrity sha512-jQd0UQUg98j95JJVQL74mOrzES7dYyd8hy+ZDiMj1wjHw1Nj0Pzkk7tKZdqqAoSZV/yTYLp0lJ0/PTozy2cNDg== dependencies: - "@babel/generator" "^7.10.4" + "@babel/generator" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" -"@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.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.10.tgz#d85e30ecfa68093825773b7b857e5085bbd32c95" + integrity sha512-0ti12wLTLeUIzu9U7kjqIn4MyOL7+Wibc7avsHhj4o1l5C0ATs8p2IMHrVYjm9t9wzhfEO6S3kxax0Rpdo8LTg== 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.7": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.12.tgz#bccca33108fe99d95d7f9e82046bfe762e71f4e7" + integrity sha512-i1AxnKxHeMxUaWVXQOSIco4tvVvvCxMSfeBMnMM06mpaJt3g+MpxYQQrDfojUQldP1xxraPSJYSMEljoWM/dCg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.12.12" -"@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@^7.12.10", "@babel/plugin-transform-react-jsx@^7.12.12": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz#b0da51ffe5f34b9a900e9f1f5fb814f9e512d25e" + integrity sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw== dependencies: - "@babel/helper-builder-react-jsx" "^7.10.4" - "@babel/helper-builder-react-jsx-experimental" "^7.10.4" + "@babel/helper-annotate-as-pure" "^7.12.10" + "@babel/helper-module-imports" "^7.12.5" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/types" "^7.12.12" -"@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.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-runtime@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.5.tgz#3b39b7b24830e0c2d8ff7a4489fe5cf99fbace86" - integrity sha512-tV4V/FjElJ9lQtyjr5xD2IFFbgY46r7EeVu5a8CpEKT5laheHKSlFeHjpkPppW3PqzGLAuv5k2qZX5LgVZIX5w== +"@babel/plugin-transform-runtime@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.10.tgz#af0fded4e846c4b37078e8e5d06deac6cd848562" + integrity sha512-xOrUfzPxw7+WDm9igMgQCbO3cJKymX7dFdsgRr1eu9n3KjjyU4pptIXbXPseQDquw+W+RuJEJMHKHNsPNNm3CA== dependencies: - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-module-imports" "^7.12.5" "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" semver "^5.5.1" -"@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.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" - integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== +"@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.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad" + integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@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== - 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-typescript@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.5.tgz#edf353944e979f40d8ff9fe4e9975d0a465037c5" - integrity sha512-YCyYsFrrRMZ3qR7wRwtSSJovPG5vGyG4ZdcSAivGwTfoasMp3VOB/AKhohu3dFtmB4cCDcsndCSxGtrdliCsZQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^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.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b" + integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA== 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-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" + +"@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/preset-env@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" - integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== +"@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/compat-data" "^7.10.4" - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^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-json-strings" "^7.10.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" - "@babel/plugin-proposal-numeric-separator" "^7.10.4" - "@babel/plugin-proposal-object-rest-spread" "^7.10.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" - "@babel/plugin-proposal-optional-chaining" "^7.10.4" - "@babel/plugin-proposal-private-methods" "^7.10.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + +"@babel/preset-env@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" + integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== + dependencies: + "@babel/compat-data" "^7.12.7" + "@babel/helper-compilation-targets" "^7.12.5" + "@babel/helper-module-imports" "^7.12.5" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.11" + "@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.7" + "@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.7" + "@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" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@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.10.4" - "@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.11" + "@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.7" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.10" + "@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.10.4" - browserslist "^4.12.0" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" + "@babel/types" "^7.12.11" + core-js-compat "^3.8.0" 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== +"@babel/preset-flow@^7.12.1": + 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" @@ -1210,31 +1294,30 @@ "@babel/types" "^7.4.4" 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== +"@babel/preset-react@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9" + integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ== 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.10" + "@babel/plugin-transform-react-jsx-development" "^7.12.7" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" -"@babel/preset-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" - integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== +"@babel/preset-typescript@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.7.tgz#fc7df8199d6aae747896f1e6c61fc872056632a3" + integrity sha512-nOoIqIqBmHBSEgBXWR4Dv/XBehtIFcw9PqZw6rFYuKrzsZmOQm3PR5siLBnKZFEsDb03IegG8nSjU/iXXXYRmw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-transform-typescript" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-transform-typescript" "^7.12.1" -"@babel/register@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.10.5.tgz#354f3574895f1307f79efe37a51525e52fd38d89" - integrity sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw== +"@babel/register@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.12.10.tgz#19b87143f17128af4dbe7af54c735663b3999f60" + integrity sha512-EvX/BvMMJRAA3jZgILWgbsrHwBQvllC5T8B29McyME8DvkdOxk4ujESfrMvME8IHSDvWXrmMXxPvA/lx2gqPLQ== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.19" @@ -1249,13 +1332,6 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c" - integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg== - dependencies: - regenerator-runtime "^0.13.4" - "@babel/runtime@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" @@ -1281,6 +1357,15 @@ "@babel/parser" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/template@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" @@ -1296,7 +1381,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5": +"@babel/traverse@^7.10.4": version "7.10.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== @@ -1311,21 +1396,6 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/traverse@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" - integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.0" - "@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" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - "@babel/traverse@^7.11.5": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" @@ -1341,6 +1411,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.12", "@babel/traverse@^7.12.5": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" + integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== + dependencies: + "@babel/code-frame" "^7.12.11" + "@babel/generator" "^7.12.11" + "@babel/helper-function-name" "^7.12.11" + "@babel/helper-split-export-declaration" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/types" "^7.12.12" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" @@ -1377,6 +1462,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1390,6 +1484,22 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== + 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.20" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1415,61 +1525,61 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.5.2.tgz#94fc4865b1abed7c352b5e21e6c57be4b95604a6" - integrity sha512-lJELzKINpF1v74DXHbCRIkQ/+nUV1M+ntj+X1J8LxCgpmJZjfLmhFejiMSbjjD66fayxl5Z06tbs3HMyuik6rw== +"@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.5.2" + "@jest/types" "^26.6.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.5.2" - jest-util "^26.5.2" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.5.2.tgz#e39f14676f4ba4632ecabfdc374071ab22131f22" - integrity sha512-LLTo1LQMg7eJjG/+P1NYqFof2B25EV1EqzD5FonklihG4UJKiK2JBIvWonunws6W7e+DhNLoFD+g05tCY03eyA== +"@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.5.2" - "@jest/reporters" "^26.5.2" - "@jest/test-result" "^26.5.2" - "@jest/transform" "^26.5.2" - "@jest/types" "^26.5.2" + "@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.5.2" - jest-config "^26.5.2" - jest-haste-map "^26.5.2" - jest-message-util "^26.5.2" + 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.5.2" - jest-resolve-dependencies "^26.5.2" - jest-runner "^26.5.2" - jest-runtime "^26.5.2" - jest-snapshot "^26.5.2" - jest-util "^26.5.2" - jest-validate "^26.5.2" - jest-watcher "^26.5.2" + 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.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.5.2.tgz#eba3cfc698f6e03739628f699c28e8a07f5e65fe" - integrity sha512-YjhCD/Zhkz0/1vdlS/QN6QmuUdDkpgBdK4SdiVg4Y19e29g4VQYN5Xg8+YuHjdoWGY7wJHMxc79uDTeTOy9Ngw== +"@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.5.2" - "@jest/types" "^26.5.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.5.2" + jest-mock "^26.6.2" "@jest/fake-timers@^24.9.0": version "24.9.0" @@ -1491,37 +1601,37 @@ jest-util "^25.5.0" lolex "^5.0.0" -"@jest/fake-timers@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.5.2.tgz#1291ac81680ceb0dc7daa1f92c059307eea6400a" - integrity sha512-09Hn5Oraqt36V1akxQeWMVL0fR9c6PnEhpgLaYvREXZJAh2H2Y+QLCsl0g7uMoJeoWJAuz4tozk1prbR1Fc1sw== +"@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.5.2" + "@jest/types" "^26.6.2" "@sinonjs/fake-timers" "^6.0.1" "@types/node" "*" - jest-message-util "^26.5.2" - jest-mock "^26.5.2" - jest-util "^26.5.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" -"@jest/globals@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.5.2.tgz#c333f82c29e19ecb609a75d1a532915a5c956c59" - integrity sha512-9PmnFsAUJxpPt1s/stq02acS1YHliVBDNfAWMe1bwdRr1iTCfhbNt3ERQXrO/ZfZSweftoA26Q/2yhSVSWQ3sw== +"@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.5.2" - "@jest/types" "^26.5.2" - expect "^26.5.2" + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" -"@jest/reporters@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.5.2.tgz#0f1c900c6af712b46853d9d486c9c0382e4050f6" - integrity sha512-zvq6Wvy6MmJq/0QY0YfOPb49CXKSf42wkJbrBPkeypVa8I+XDxijvFuywo6TJBX/ILPrdrlE/FW9vJZh6Rf9vA== +"@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.5.2" - "@jest/test-result" "^26.5.2" - "@jest/transform" "^26.5.2" - "@jest/types" "^26.5.2" + "@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" @@ -1532,15 +1642,15 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^26.5.2" - jest-resolve "^26.5.2" - jest-util "^26.5.2" - jest-worker "^26.5.0" + 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 "^5.0.1" + v8-to-istanbul "^7.0.0" optionalDependencies: node-notifier "^8.0.0" @@ -1553,10 +1663,10 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^26.5.0": - version "26.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.5.0.tgz#98792457c85bdd902365cd2847b58fff05d96367" - integrity sha512-jWAw9ZwYHJMe9eZq/WrsHlwF8E3hM9gynlcDpOyCb9bR8wEd9ZNBZCi7/jZyzHxC7t3thZ10gO2IDhu0bPKS5g== +"@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" @@ -1571,26 +1681,26 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.5.2.tgz#cc1a44cfd4db2ecee3fb0bc4e9fe087aa54b5230" - integrity sha512-E/Zp6LURJEGSCWpoMGmCFuuEI1OWuI3hmZwmULV0GsgJBh7u0rwqioxhRU95euUuviqBDN8ruX/vP/4bwYolXw== +"@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.5.2" - "@jest/types" "^26.5.2" + "@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.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.5.2.tgz#c4559c7e134b27b020317303ee5399bf62917a4b" - integrity sha512-XmGEh7hh07H2B8mHLFCIgr7gA5Y6Hw1ZATIsbz2fOhpnQ5AnQtZk0gmP0Q5/+mVB2xygO64tVFQxOajzoptkNA== +"@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.5.2" + "@jest/test-result" "^26.6.2" graceful-fs "^4.2.4" - jest-haste-map "^26.5.2" - jest-runner "^26.5.2" - jest-runtime "^26.5.2" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" "@jest/transform@^24.9.0": version "24.9.0" @@ -1614,21 +1724,21 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/transform@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.5.2.tgz#6a0033a1d24316a1c75184d010d864f2c681bef5" - integrity sha512-AUNjvexh+APhhmS8S+KboPz+D3pCxPvEAGduffaAJYxIFxGi/ytZQkrqcKDUU0ERBAo5R7087fyOYr2oms1seg== +"@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.5.2" + "@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.5.2" + jest-haste-map "^26.6.2" jest-regex-util "^26.0.0" - jest-util "^26.5.2" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" slash "^3.0.0" @@ -1654,17 +1764,6 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^26.5.2": - version "26.5.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.5.2.tgz#44c24f30c8ee6c7f492ead9ec3f3c62a5289756d" - integrity sha512-QDs5d0gYiyetI8q+2xWdkixVQMklReZr4ltw7GFDtb4fuJIBCE6mzj2LnitGqCuAlLap6wPyb8fpoHgwZz5fdg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" @@ -1684,12 +1783,50 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents": + version "2.1.8-no-fsevents" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b" + integrity sha512-+nb9vWloHNNMFHjGofEam3wopE3m1yuambrrd/fnPc+lFOMB9ROTqQlche9ByFWNkdNqfSgR/kkQtQ8DzEWt2w== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@peculiar/asn1-schema@^2.0.12", "@peculiar/asn1-schema@^2.0.13": +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@peculiar/asn1-schema@^2.0.12": version "2.0.17" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.0.17.tgz#5c5fcdabefacb1f0fc1579f333f70057d58ab211" integrity sha512-7rJD8bR1r6NFE4skDxXsLsFEO3zM2TfjX9wdq5SERoBNEuxGkAJ3uIH84sIMxvDgJtb3cMfLsv8iNpGN0nAWdw== @@ -1699,6 +1836,16 @@ pvtsutils "^1.0.11" tslib "^2.0.1" +"@peculiar/asn1-schema@^2.0.26": + version "2.0.27" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.0.27.tgz#1ee3b2b869ff3200bcc8ec60e6c87bd5a6f03fe0" + integrity sha512-1tIx7iL3Ma3HtnNS93nB7nhyI0soUJypElj9owd4tpMrRDmeJ8eZubsdq1sb0KSaCs5RqZNoABCP6m5WtnlVhQ== + dependencies: + "@types/asn1js" "^2.0.0" + asn1js "^2.0.26" + pvtsutils "^1.1.1" + tslib "^2.0.3" + "@peculiar/json-schema@^1.1.12": version "1.1.12" resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" @@ -1706,16 +1853,16 @@ dependencies: tslib "^2.0.0" -"@peculiar/webcrypto@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.1.3.tgz#54301b4cfa22e9d879fd8d460528fa44a1548119" - integrity sha512-M1mipPJkWzIf92w3T1Vx5ir3kV9c0oWCcLkeh4vNa/3XDEtQ7xxj5NRKyq67NuVNKLH2/0JD1crlLJyqfYbfBA== +"@peculiar/webcrypto@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.1.4.tgz#cbbe2195e5e6f879780bdac9a66bcbaca75c483c" + integrity sha512-gEVxfbseFDV0Za3AmjTrRB+wigEMOejHDzoo571e8/YWD33Ejmk0XPF3+G+VaN8+5C5IWZx4CPvxQZ7mF2dvNA== dependencies: - "@peculiar/asn1-schema" "^2.0.13" + "@peculiar/asn1-schema" "^2.0.26" "@peculiar/json-schema" "^1.1.12" - pvtsutils "^1.0.11" - tslib "^2.0.1" - webcrypto-core "^1.1.6" + pvtsutils "^1.1.1" + tslib "^2.0.3" + webcrypto-core "^1.1.8" "@sinonjs/commons@^1.7.0": version "1.8.0" @@ -1738,6 +1885,11 @@ dependencies: "@types/pvutils" "*" +"@types/asn1js@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-2.0.0.tgz#10ca75692575744d0117098148a8dc84cbee6682" + integrity sha512-Jjzp5EqU0hNpADctc/UqhiFbY1y2MqIxBVa2S4dBlbnZHTLPMuggoL5q43X63LpsOIINRDirBjP56DUUKIUWIA== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.10" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40" @@ -1789,10 +1941,10 @@ dependencies: "@babel/types" "^7.3.0" -"@types/classnames@^2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.10.tgz#cc658ca319b6355399efc1f5b9e818f1a24bf999" - integrity sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ== +"@types/classnames@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf" + integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw== "@types/color-name@^1.1.1": version "1.1.1" @@ -1899,10 +2051,10 @@ dependencies: "@types/react" "*" -"@types/lodash@^4.14.158": - version "4.14.158" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.158.tgz#b38ea8b6fe799acd076d7a8d7ab71c26ef77f785" - integrity sha512-InCEXJNTv/59yO4VSfuvNrZHt7eeNtWQEgnieIA+mIC+MOWM9arOWG2eQ8Vhk6NbOre6/BidiXhkZYeDY9U35w== +"@types/lodash@^4.14.168": + version "4.14.168" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" + integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== "@types/minimatch@*": version "3.0.3" @@ -1919,10 +2071,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3" integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg== -"@types/node@^12.12.51": - version "12.12.51" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.51.tgz#446a67af8c5ff98947d7cef296484c6ad47ddb16" - integrity sha512-6ILqt8iNThALrxDv2Q4LyYFQxULQz96HKNIFd4s9QRQaiHINYeUpLqeU/2IU7YMtvipG1fQVAy//vY8/fX1Y9w== +"@types/node@^12.19.14": + version "12.19.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.14.tgz#59e5029a3c2aea34f68b717955381692fd47cafb" + integrity sha512-2U9uLN46+7dv9PiS8VQJcHhuoOjiDPZOLAt0WuA1EanEknIMae+2QbMhayF7cgGqjvRVIfNpt+6jLPczJZFiRw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -1949,19 +2101,19 @@ resolved "https://registry.yarnpkg.com/@types/pvutils/-/pvutils-0.0.2.tgz#e21684962cfa58ac920fd576d90556032dc86009" integrity sha512-CgQAm7pjyeF3Gnv78ty4RBVIfluB+Td+2DR8iPaU0prF18pkzptHHP+DoKPfpsJYknKsVZyVsJEu5AuGgAqQ5w== -"@types/qrcode@^1.3.4": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.3.4.tgz#984d97bb72caa558d470158701081ccb712f616b" - integrity sha512-aILE5yvKaqQXlY0YPMEYwK/KwdD43fwQTyagj0ffBBTQj8h//085Zp8LUrOnZ9FT69x64f5UgDo0EueY4BPAdg== +"@types/qrcode@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.3.5.tgz#9c97cc2875f03e2b16a0d89856fc48414e380c38" + integrity sha512-92QMnMb9m0ErBU20za5Eqtf4lzUcSkk5w/Cz30q5qod0lWHm2loztmFs2EnCY06yT51GY1+m/oFq2D8qVK2Bjg== dependencies: "@types/node" "*" -"@types/react-dom@^16.9.8": - version "16.9.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" - integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA== +"@types/react-dom@^16.9.10": + version "16.9.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.10.tgz#4485b0bec3d41f856181b717f45fd7831101156f" + integrity sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw== dependencies: - "@types/react" "*" + "@types/react" "^16" "@types/react-transition-group@^4.4.0": version "4.4.0" @@ -1978,10 +2130,18 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/sanitize-html@^1.23.3": - version "1.23.3" - resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-1.23.3.tgz#26527783aba3bf195ad8a3c3e51bd3713526fc0d" - integrity sha512-Isg8N0ifKdDq6/kaNlIcWfapDXxxquMSk2XC5THsOICRyOIhQGds95XH75/PL/g9mExi4bL8otIqJM/Wo96WxA== +"@types/react@^16": + version "16.14.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.2.tgz#85dcc0947d0645349923c04ccef6018a1ab7538c" + integrity sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/sanitize-html@^1.27.0": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-1.27.0.tgz#77702dc856f16efecc005014c1d2e45b1f2cbc56" + integrity sha512-j7Vnh3P7W4ZcoRsHNO2HpwA2m1d0c2+l39xqSQqH0+WlfcvKypgZp45eCC7NJ75ZyXPxNb2PSbIL6LtZ6E0Qbw== dependencies: htmlparser2 "^4.1.0" @@ -2040,97 +2200,101 @@ resolved "https://registry.yarnpkg.com/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609" integrity sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg== -"@typescript-eslint/eslint-plugin@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.4.0.tgz#8378062e6be8a1d049259bdbcf27ce5dfbeee62b" - integrity sha512-wfkpiqaEVhZIuQRmudDszc01jC/YR7gMSxa6ulhggAe/Hs0KVIuo9wzvFiDbG3JD5pRFQoqnf4m7REDsUvBnMQ== +"@typescript-eslint/eslint-plugin@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" + integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== dependencies: - "@typescript-eslint/experimental-utils" "3.4.0" + "@typescript-eslint/experimental-utils" "3.10.1" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/eslint-plugin@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.0.tgz#0f91aa3c83d019591719e597fbdb73a59595a263" - integrity sha512-4OEcPON3QIx0ntsuiuFP/TkldmBGXf0uKxPQlGtS/W2F3ndYm8Vgdpj/woPJkzUc65gd3iR+qi3K8SDQP/obFg== +"@typescript-eslint/eslint-plugin@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz#92db8e7c357ed7d69632d6843ca70b71be3a721d" + integrity sha512-IJ5e2W7uFNfg4qh9eHkHRUCbgZ8VKtGwD07kannJvM5t/GU8P8+24NX8gi3Hf5jST5oWPY8kyV1s/WtfiZ4+Ww== dependencies: - "@typescript-eslint/experimental-utils" "3.7.0" + "@typescript-eslint/experimental-utils" "4.14.0" + "@typescript-eslint/scope-manager" "4.14.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.4.0.tgz#8a44dfc6fb7f1d071937b390fe27608ebda122b8" - integrity sha512-rHPOjL43lOH1Opte4+dhC0a/+ks+8gOBwxXnyrZ/K4OTAChpSjP76fbI8Cglj7V5GouwVAGaK+xVwzqTyE/TPw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "3.4.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/experimental-utils@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.0.tgz#0ee21f6c48b2b30c63211da23827725078d5169a" - integrity sha512-xpfXXAfZqhhqs5RPQBfAFrWDHoNxD5+sVB5A46TF58Bq1hRfVROrWHcQHHUM9aCBdy9+cwATcvCbRg8aIRbaHQ== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.7.0" - "@typescript-eslint/typescript-estree" "3.7.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.4.0.tgz#fe52b68c5cb3bba3f5d875bd17adb70420d49d8d" - integrity sha512-ZUGI/de44L5x87uX5zM14UYcbn79HSXUR+kzcqU42gH0AgpdB/TjuJy3m4ezI7Q/jk3wTQd755mxSDLhQP79KA== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "3.4.0" - "@typescript-eslint/typescript-estree" "3.4.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/parser@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.7.0.tgz#3e9cd9df9ea644536feb6e5acdb8279ecff96ce9" - integrity sha512-2LZauVUt7jAWkcIW7djUc3kyW+fSarNEuM3RF2JdLHR9BfX/nDEnyA4/uWz0wseoWVZbDXDF7iF9Jc342flNqQ== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "3.7.0" - "@typescript-eslint/types" "3.7.0" - "@typescript-eslint/typescript-estree" "3.7.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/types@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.7.0.tgz#09897fab0cb95479c01166b10b2c03c224821077" - integrity sha512-reCaK+hyKkKF+itoylAnLzFeNYAEktB0XVfSQvf0gcVgpz1l49Lt6Vo9x4MVCCxiDydA0iLAjTF/ODH0pbfnpg== - -"@typescript-eslint/typescript-estree@3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.4.0.tgz#6a787eb70b48969e4cd1ea67b057083f96dfee29" - integrity sha512-zKwLiybtt4uJb4mkG5q2t6+W7BuYx2IISiDNV+IY68VfoGwErDx/RfVI7SWL4gnZ2t1A1ytQQwZ+YOJbHHJ2rw== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" lodash "^4.17.15" + regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.0.tgz#66872e6da120caa4b64e6b4ca5c8702afc74738d" - integrity sha512-xr5oobkYRebejlACGr1TJ0Z/r0a2/HUf0SXqPvlgUMwiMqOCu/J+/Dr9U3T0IxpE5oLFSkqMx1FE/dKaZ8KsOQ== +"@typescript-eslint/experimental-utils@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== dependencies: - "@typescript-eslint/types" "3.7.0" - "@typescript-eslint/visitor-keys" "3.7.0" + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/experimental-utils@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz#5aa7b006736634f588a69ee343ca959cd09988df" + integrity sha512-6i6eAoiPlXMKRbXzvoQD5Yn9L7k9ezzGRvzC/x1V3650rUk3c3AOjQyGYyF9BDxQQDK2ElmKOZRD0CbtdkMzQQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.14.0" + "@typescript-eslint/types" "4.14.0" + "@typescript-eslint/typescript-estree" "4.14.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" + integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "3.10.1" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/parser@^4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.0.tgz#62d4cd2079d5c06683e9bfb200c758f292c4dee7" + integrity sha512-sUDeuCjBU+ZF3Lzw0hphTyScmDDJ5QVkyE21pRoBo8iDl7WBtVFS+WDN3blY1CH3SBt7EmYCw6wfmJjF0l/uYg== + dependencies: + "@typescript-eslint/scope-manager" "4.14.0" + "@typescript-eslint/types" "4.14.0" + "@typescript-eslint/typescript-estree" "4.14.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.14.0.tgz#55a4743095d684e1f7b7180c4bac2a0a3727f517" + integrity sha512-/J+LlRMdbPh4RdL4hfP1eCwHN5bAhFAGOTsvE6SxsrM/47XQiPSgF5MDgLyp/i9kbZV9Lx80DW0OpPkzL+uf8Q== + dependencies: + "@typescript-eslint/types" "4.14.0" + "@typescript-eslint/visitor-keys" "4.14.0" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.0.tgz#d8a8202d9b58831d6fd9cee2ba12f8a5a5dd44b6" + integrity sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" debug "^4.1.1" glob "^7.1.6" is-glob "^4.0.1" @@ -2138,13 +2302,35 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.0.tgz#ac0417d382a136e4571a0b0dcfe52088cb628177" - integrity sha512-k5PiZdB4vklUpUX4NBncn5RBKty8G3ihTY+hqJsCdMuD0v4jofI5xuqwnVcWxfv6iTm2P/dfEa2wMUnsUY8ODw== +"@typescript-eslint/typescript-estree@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz#4bcd67486e9acafc3d0c982b23a9ab8ac8911ed7" + integrity sha512-wRjZ5qLao+bvS2F7pX4qi2oLcOONIB+ru8RGBieDptq/SudYwshveORwCVU4/yMAd4GK7Fsf8Uq1tjV838erag== + dependencies: + "@typescript-eslint/types" "4.14.0" + "@typescript-eslint/visitor-keys" "4.14.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== dependencies: eslint-visitor-keys "^1.1.0" +"@typescript-eslint/visitor-keys@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz#b1090d9d2955b044b2ea2904a22496849acbdf54" + integrity sha512-MeHHzUyRI50DuiPgV9+LxcM52FCJFYjJiWHtXlbyC27b80mfOwKeiKI+MHOTEpcpfmoPFm/vvQS88bYIx6PZTA== + dependencies: + "@typescript-eslint/types" "4.14.0" + eslint-visitor-keys "^2.0.0" + abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -2163,52 +2349,40 @@ acorn-jsx@^5.2.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== +acorn-jsx@^5.3.1: + 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" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.1, acorn@^7.3.1: +acorn@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== -agent-base@4, agent-base@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== - dependencies: - es6-promisify "^5.0.0" +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== -agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== +airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: - es6-promisify "^5.0.0" - -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== - dependencies: - humanize-ms "^1.2.1" - -airbnb-prop-types@^2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz#5287820043af1eb469f5b0af0d6f70da6c52aaef" - integrity sha512-jUh2/hfKsRjNFC4XONQrxo/n/3GG4Tn6Hl0WlFQN5PY9OMC9loSCoAYKnZsWaP8wEfd5xcrPloK0Zg6iS1xwVA== - dependencies: - array.prototype.find "^2.1.0" - function.prototype.name "^1.1.1" - has "^1.0.3" - is-regex "^1.0.4" - object-is "^1.0.1" + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" object.assign "^4.1.0" - object.entries "^1.1.0" + object.entries "^1.1.2" prop-types "^15.7.2" prop-types-exact "^1.2.0" - react-is "^16.9.0" + react-is "^16.13.1" ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.12.2" @@ -2220,6 +2394,26 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.4: + 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" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + another-json@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" @@ -2295,11 +2489,6 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2341,6 +2530,17 @@ array-includes@^3.1.1: es-abstract "^1.17.0" is-string "^1.0.5" +array-includes@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" + is-string "^1.0.5" + array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2348,6 +2548,11 @@ array-union@^1.0.2: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -2358,7 +2563,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.find@^2.1.0: +array.prototype.find@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== @@ -2422,6 +2627,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -2450,10 +2660,10 @@ autoprefixer@^9.0.0: postcss "^7.0.30" postcss-value-parser "^4.1.0" -await-lock@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/await-lock/-/await-lock-2.0.1.tgz#b3f65fdf66e08f7538260f79b46c15bcfc18cadd" - integrity sha512-ntLi9fzlMT/vWjC1wwVI11/cSRJ3nTS35qVekNc9WnaoMOP2eWH0RvIqwLQkDjX4a4YynsKEv+Ere2VONp9wxg== +await-lock@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/await-lock/-/await-lock-2.1.0.tgz#bc78c51d229a34d5d90965a1c94770e772c6145e" + integrity sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ== aws-sign2@~0.7.0: version "0.7.0" @@ -2490,16 +2700,16 @@ babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-jest@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.5.2.tgz#164f367a35946c6cf54eaccde8762dec50422250" - integrity sha512-U3KvymF3SczA3vOL/cgiUFOznfMET+XDIXiWnoJV45siAp2pLMG8i2+/MGZlAC3f/F6Q40LR4M4qDrWZ9wkK8A== +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.5.2" - "@jest/types" "^26.5.2" + "@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.5.0" + babel-preset-jest "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -2539,20 +2749,20 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.5.0.tgz#3916b3a28129c29528de91e5784a44680db46385" - integrity sha512-ck17uZFD3CDfuwCLATWZxkkuGGFhMij8quP8CNhwj8ek1mqFgbFzRJ30xwC04LLscj/aKsVFfRST+b5PT7rSuw== +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" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" - integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -2565,6 +2775,7 @@ babel-preset-current-node-syntax@^0.1.3: "@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@^24.9.0: version "24.9.0" @@ -2574,13 +2785,13 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-jest@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.5.0.tgz#f1b166045cd21437d1188d29f7fba470d5bdb0e7" - integrity sha512-F2vTluljhqkiGSJGBg/jOruA8vIIIL11YrxRcO7nviNTMbbofPSHwnm8mgP7d/wS7wRSexRoI6X1A6T74d4LQA== +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.5.0" - babel-preset-current-node-syntax "^0.1.3" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: version "6.26.0" @@ -2649,17 +2860,17 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bluebird@^3.5.0, bluebird@^3.5.5: +bluebird@^3.5.0: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -blueimp-canvas-to-blob@^3.27.0: - version "3.27.0" - resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.27.0.tgz#a2bd5c43587b95dedf0f6998603452d1bfcc9b9e" - integrity sha512-AcIj+hCw6WquxzJuzC6KzgYmqxLFeTWe88KuY2BEIsW1zbEOfoinDAGlhyvFNGt+U3JElkVSK7anA1FaSdmmfA== +blueimp-canvas-to-blob@^3.28.0: + version "3.28.0" + resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.28.0.tgz#c8ab4dc6bb08774a7f273798cdf94b0776adf6c8" + integrity sha512-5q+YHzgGsuHQ01iouGgJaPJXod2AzTxJXmVv90PpGrRxU7G7IqgPqWXz+PBmt3520jKKi6irWbNV87DicEa7wg== -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -2710,7 +2921,7 @@ browser-request@^0.3.3: resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" integrity sha1-ns5bWsqJopkyJC4Yv5M975h2zBc= -browserslist@^4.12.0, browserslist@^4.8.5: +browserslist@^4.12.0: version "4.12.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== @@ -2720,6 +2931,17 @@ browserslist@^4.12.0, browserslist@^4.8.5: node-releases "^1.1.53" pkg-up "^2.0.0" +browserslist@^4.14.5, browserslist@^4.16.1: + version "4.16.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" + integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== + dependencies: + caniuse-lite "^1.0.30001173" + colorette "^1.2.1" + electron-to-chromium "^1.3.634" + escalade "^3.1.1" + node-releases "^1.1.69" + bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -2765,27 +2987,6 @@ buffer@^5.4.3: base64-js "^1.0.2" ieee754 "^1.1.4" -cacache@^12.0.0: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2801,6 +3002,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -2859,6 +3068,11 @@ caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001079.tgz#ed3e5225cd9a6850984fdd88bf24ce45d69b9c22" integrity sha512-2KaYheg0iOY+CMmDuAB3DHehrXhhb4OZU4KBVGDr/YKyYAcpudaiUQ9PJ9rxrPlKEoJ3ATasQ5AN48MqpwS43Q== +caniuse-lite@^1.0.30001173: + version "1.0.30001178" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz#3ad813b2b2c7d585b0be0a2440e1e233c6eabdbc" + integrity sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -2876,7 +3090,7 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== -chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2931,6 +3145,17 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +cheerio-select-tmp@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz#55bbef02a4771710195ad736d5e346763ca4e646" + integrity sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ== + dependencies: + css-select "^3.1.2" + css-what "^4.0.0" + domelementtype "^2.1.0" + domhandler "^4.0.0" + domutils "^2.4.4" + cheerio@^1.0.0-rc.3: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -2943,29 +3168,23 @@ cheerio@^1.0.0-rc.3: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== +cheerio@^1.0.0-rc.5: + version "1.0.0-rc.5" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.5.tgz#88907e1828674e8f9fee375188b27dadd4f0fa2f" + integrity sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw== dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" + cheerio-select-tmp "^0.1.0" + dom-serializer "~1.2.0" + domhandler "^4.0.0" + entities "~2.1.0" + htmlparser2 "^6.0.0" + parse5 "^6.0.0" + parse5-htmlparser2-tree-adapter "^6.0.0" -chokidar@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.1.tgz#e905bdecf10eaa0a0b1db0c664481cc4cbc22ba1" - integrity sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g== +chokidar@^3.4.0, chokidar@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -2973,20 +3192,20 @@ 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" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + fsevents "~2.3.1" ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +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" @@ -3113,7 +3332,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.15.1, commander@^2.19.0, commander@^2.20.0: +commander@^2.19.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== @@ -3123,19 +3342,24 @@ 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.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -commonmark@^0.29.1: - version "0.29.1" - resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.29.1.tgz#fdbf5970ca23600f4a27487e30eed43b66b83ef5" - integrity sha512-DafPdNYFXoEhsSiR4O+dJ45UJBfDL4cBTks4B+agKiaWt7qjG0bIhg5xuCE0RqU71ikJcBIf4/sRHh9vYQVF8Q== +commonmark@^0.29.3: + version "0.29.3" + resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.29.3.tgz#bb1d5733bfe3ea213b412f33f16439cc12999c2c" + integrity sha512-fvt/NdOFKaL2gyhltSy6BC4LxbbxbnPxBMl923ittqO/JBM0wQHaoYZliE4tp26cRxX/ZZtRsJlZzQrVdUkXAA== dependencies: - entities "~1.1.1" + entities "~2.0" mdurl "~1.0.1" - minimist "~1.2.0" + minimist ">=1.2.2" string.prototype.repeat "^0.2.0" component-emitter@^1.2.1: @@ -3148,16 +3372,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - concurrently@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.2.tgz#1a683b2b5c41e9ed324c9002b9f6e4c6e1f3b6d7" @@ -3190,29 +3404,17 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, dependencies: safe-buffer "~5.1.1" -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -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== +core-js-compat@^3.8.0: + version "3.8.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.3.tgz#9123fb6b9cad30f0651332dc77deba48ef9b0b3f" + integrity sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog== dependencies: - browserslist "^4.8.5" + browserslist "^4.16.1" semver "7.0.0" core-js@^1.0.0: @@ -3276,6 +3478,17 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +css-select@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" + integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== + dependencies: + boolbase "^1.0.0" + css-what "^4.0.0" + domhandler "^4.0.0" + domutils "^2.4.3" + nth-check "^2.0.0" + css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -3291,6 +3504,11 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" + integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -3323,6 +3541,11 @@ csstype@^2.2.0, csstype@^2.6.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== +csstype@^3.0.2: + version "3.0.6" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" + integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3330,11 +3553,6 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -3361,13 +3579,6 @@ date-names@^0.1.11: resolved "https://registry.yarnpkg.com/date-names/-/date-names-0.1.13.tgz#c4358f6f77c8056e2f5ea68fdbb05f0bf1e53bd0" integrity sha512-IxxoeD9tdx8pXVcmqaRlPvrXIsSrSrIZzfzlOkm9u+hyzKp5Wk/odt9O/gd7Ockzy8n/WHeEpTVJ2bF3mMV4LA== -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3375,13 +3586,6 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3412,11 +3616,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3471,24 +3670,16 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== -diff-dom@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/diff-dom/-/diff-dom-4.1.6.tgz#ecd20f4b34703d777b7956790fc7e28e5ff3fece" - integrity sha512-hzHojf1Ar3x1Db/1ijN/uhwYDgde+RoP8pPAPJlrmxp05Bt+Z9Hd7tmuEyPYu1mEuvcO+0pQRZAOCMKi+0I1PQ== - dependencies: - rollup-plugin-terser "^5.1.1" - updates "^8.5.2" +diff-dom@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/diff-dom/-/diff-dom-4.2.2.tgz#49a121fe1614675b4f28ed50df9547bb0c3c1d52" + integrity sha512-qO0WsnnMF6Wc5MEm0j4LkwvJWs4Mpkj6pyXWMtcjGJPHWDNcnQY8ijYoSrsZuArBmlHLN9Dqr4de/3ZlbjpRVw== diff-match-patch@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== -diff-sequences@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.5.0.tgz#ef766cf09d43ed40406611f11c6d8d9dd8b2fefd" - integrity sha512-ZXx86srb/iYy6jG71k++wBN9P9J05UNQ5hQHQd9MtMPvcqXPx/vKU69jfHV637D00Q2gSgPk2D+jSx3l1lDW/Q== - diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -3506,6 +3697,13 @@ dir-glob@^2.2.2: dependencies: path-type "^3.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" @@ -3549,6 +3747,15 @@ dom-serializer@0, dom-serializer@^0.2.1: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1, dom-serializer@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1" + integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + 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" @@ -3567,6 +3774,11 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== +domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -3588,6 +3800,13 @@ domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" +domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -3613,6 +3832,15 @@ domutils@^2.0.0: domelementtype "^2.0.1" domhandler "^3.0.0" +domutils@^2.4.3, domutils@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" + integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + dot-prop@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" @@ -3620,16 +3848,6 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3643,6 +3861,11 @@ electron-to-chromium@^1.3.413: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.464.tgz#fe13feaa08f6f865d3c89d5d72e54c194f463aa5" integrity sha512-Oo+0+CN9d2z6FToQW6Hwvi9ez09Y/usKwr0tsDsyg43a871zVJCi1nR0v03djLbRNcaCKjtrnVf2XJhTxEpPCg== +electron-to-chromium@^1.3.634: + version "1.3.642" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" + integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== + emittery@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" @@ -3658,15 +3881,15 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -emojibase-data@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/emojibase-data/-/emojibase-data-5.0.1.tgz#ce6fe36b4affd3578e0be8779211018a2fdae960" - integrity sha512-rYWlogJ2q5P78U8Xx1vhsXHcYKu1wFnr7+o6z9QHssZ1SsJLTCkJINZIPHRFWuDreAUK457TkqHpdOXElu0fzA== +emojibase-data@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/emojibase-data/-/emojibase-data-5.1.1.tgz#0a0d63dd07ce1376b3d27642f28cafa46f651de6" + integrity sha512-za/ma5SfogHjwUmGFnDbTvSfm8GGFvFaPS27GPti16YZSp5EPgz+UDsZCATXvJGit+oRNBbG/FtybXHKi2UQgQ== -emojibase-regex@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-4.0.1.tgz#a2cd4bbb42825422da9ec72f15e970bc2c90b46a" - integrity sha512-S42UHkFfz15i4NNz+wi9iMKFo+B6Kalc6PJLpYX0BUANViXw4vSyYZMFdBGRLduSabWHuEcTLZl9xOa2YP3eJw== +emojibase-regex@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-4.1.1.tgz#6e781aca520281600fe7a177f1582c33cf1fc545" + integrity sha512-KSigB1zQkNKFygLZ5bAfHs87LJa1ni8QTQtq8lc53Y74NF3Dk2r7kfa8MpooTO8JBb5Xz660X4tSjDB+I+7elA== encoding@^0.1.11: version "0.1.12" @@ -3675,7 +3898,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3694,35 +3917,41 @@ entities@^1.1.1, entities@~1.1.1: 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, entities@~2.0: version "2.0.3" resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== -enzyme-adapter-react-16@^1.15.2: - version "1.15.2" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501" - integrity sha512-SkvDrb8xU3lSxID8Qic9rB8pvevDbLybxPK6D/vW7PrT0s2Cl/zJYuXvsd1EBTz0q4o3iqG3FJhpYz3nUNpM2Q== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +enzyme-adapter-react-16@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" + integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== dependencies: - enzyme-adapter-utils "^1.13.0" - enzyme-shallow-equal "^1.0.1" + enzyme-adapter-utils "^1.14.0" + enzyme-shallow-equal "^1.0.4" has "^1.0.3" - object.assign "^4.1.0" - object.values "^1.1.1" + object.assign "^4.1.2" + object.values "^1.1.2" prop-types "^15.7.2" - react-is "^16.12.0" + react-is "^16.13.1" react-test-renderer "^16.0.0-0" semver "^5.7.0" -enzyme-adapter-utils@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.13.0.tgz#01c885dde2114b4690bf741f8dc94cee3060eb78" - integrity sha512-YuEtfQp76Lj5TG1NvtP2eGJnFKogk/zT70fyYHXK2j3v6CtuHqc8YmgH/vaiBfL8K1SgVVbQXtTcgQZFwzTVyQ== +enzyme-adapter-utils@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" + integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== dependencies: - airbnb-prop-types "^2.15.0" - function.prototype.name "^1.1.2" - object.assign "^4.1.0" - object.fromentries "^2.0.2" + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.3" + has "^1.0.3" + object.assign "^4.1.2" + object.fromentries "^2.0.3" prop-types "^15.7.2" semver "^5.7.1" @@ -3734,6 +3963,14 @@ enzyme-shallow-equal@^1.0.1: has "^1.0.3" object-is "^1.0.2" +enzyme-shallow-equal@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" + integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== + dependencies: + has "^1.0.3" + object-is "^1.1.2" + enzyme@^3.11.0: version "3.11.0" resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28" @@ -3762,11 +3999,6 @@ enzyme@^3.11.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.2.1" -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3791,6 +4023,26 @@ es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstrac string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-abstract@^1.18.0-next.1: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + es-get-iterator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" @@ -3813,17 +4065,10 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" +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" @@ -3872,18 +4117,18 @@ eslint-config-google@^0.14.0: resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.14.0.tgz#4f5f8759ba6e11b424294a219dbfa18c508bcc1a" integrity sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw== -eslint-config-matrix-org@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/eslint-config-matrix-org/-/eslint-config-matrix-org-0.1.2.tgz#b5d7e193e4f3fc5041905967b53c5ddd6924c793" - integrity sha512-fD50uevwkFJuIi/txRiW89NO0h/qZwnkYfvO3cVpuIeoVy7FbtvuW7d8S8dry0T+whnQOb5QP1BABwimURcJag== +eslint-config-matrix-org@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-matrix-org/-/eslint-config-matrix-org-0.2.0.tgz#27571c7c3a9ab6cc1e9d0f3d53a3739d1b004a7f" + integrity sha512-Hwgm1Qk0atjWgj5SWxpFPvxy6k6bDlPb9Pqjvb1i59nx8Zm6jDPy1C5vKQpkFpc0ntr+gJHa+ejYhuhaofu6Mw== dependencies: - "@typescript-eslint/eslint-plugin" "^3.4.0" - "@typescript-eslint/parser" "^3.4.0" + "@typescript-eslint/eslint-plugin" "^4.14.0" + "@typescript-eslint/parser" "^4.14.0" babel-eslint "^10.1.0" eslint-config-google "^0.14.0" eslint-config-recommended "^4.1.0" - eslint-plugin-babel "^5.3.0" - typescript "^3.9.5" + eslint-plugin-babel "^5.3.1" + typescript "^4.1.3" eslint-config-node@^4.1.0: version "4.1.0" @@ -3936,7 +4181,7 @@ eslint-plugin-babel@^5.2.1: dependencies: eslint-rule-composer "^0.3.0" -eslint-plugin-babel@^5.3.0, eslint-plugin-babel@^5.3.1: +eslint-plugin-babel@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" integrity sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g== @@ -3986,7 +4231,7 @@ eslint-plugin-react-native@^3.8.1: dependencies: eslint-plugin-react-native-globals "^0.1.1" -eslint-plugin-react@^7.19.0, eslint-plugin-react@^7.20.3: +eslint-plugin-react@^7.19.0: version "7.20.3" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz#0590525e7eb83890ce71f73c2cf836284ad8c2f1" integrity sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg== @@ -4003,12 +4248,29 @@ eslint-plugin-react@^7.19.0, eslint-plugin-react@^7.20.3: resolve "^1.17.0" string.prototype.matchall "^4.0.2" +eslint-plugin-react@^7.22.0: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== + 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 || ^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.18.1" + string.prototype.matchall "^4.0.2" + eslint-rule-composer@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== -eslint-scope@^5.0.0, eslint-scope@^5.1.0: +eslint-scope@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== @@ -4016,6 +4278,14 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.0: esrecurse "^4.1.0" estraverse "^4.1.1" +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.3.0" + estraverse "^4.1.1" + eslint-utils@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" @@ -4042,25 +4312,31 @@ 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@7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" - integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== +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.18.0: + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67" + integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.3.0" 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.1" esquery "^1.2.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.0" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" globals "^12.1.0" @@ -4071,7 +4347,7 @@ eslint@7.5.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -4080,7 +4356,7 @@ eslint@7.5.0: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^5.2.3" + table "^6.0.4" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -4136,13 +4412,13 @@ espree@^6.1.2: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" -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, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^7.3.1" - acorn-jsx "^5.2.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" esprima@^4.0.0, esprima@^4.0.1: @@ -4164,6 +4440,13 @@ esrecurse@^4.1.0: dependencies: estraverse "^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 "^5.2.0" + estraverse@^4.1.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" @@ -4174,10 +4457,10 @@ estraverse@^5.1.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +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" @@ -4267,16 +4550,16 @@ expect@^1.20.2: object-keys "^1.0.9" tmatch "^2.0.1" -expect@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.5.2.tgz#3e0631c4a657a83dbec769ad246a2998953a55a6" - integrity sha512-ccTGrXZd8DZCcvCz4htGXTkd/LOoy6OEtiDS38x3/VVf6E4AQL0QoeksBiw7BtGR5xDNiRYPB8GN6pfbuTOi7w== +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.5.2" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" jest-get-type "^26.3.0" - jest-matcher-utils "^26.5.2" - jest-message-util "^26.5.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" jest-regex-util "^26.0.0" extend-shallow@^2.0.1: @@ -4349,6 +4632,18 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -4364,6 +4659,13 @@ fast-memoize@^2.5.1: resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== +fastq@^1.6.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" + integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -4400,11 +4702,6 @@ fbjs@^0.8.4: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -4426,6 +4723,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" + file-saver@^1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8" @@ -4467,14 +4771,6 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -4489,6 +4785,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -4498,18 +4802,23 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -flush-write-stream@^1.0.0: - 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== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== flux@2.1.1: version "2.1.1" @@ -4520,15 +4829,17 @@ flux@2.1.1: fbjs "0.1.0-alpha.7" immutable "^3.7.4" -focus-lock@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.7.0.tgz#b2bfb0ca7beacc8710a1ff74275fe0dc60a1d88a" - integrity sha512-LI7v2mH02R55SekHYdv9pRHR9RajVNyIJ2N5IEkWbg7FT5ZmJ9Hw4mWxHeEUcd+dJo0QmzztHvDvWcc7prVFsw== +focus-lock@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.8.1.tgz#bb36968abf77a2063fa173cb6c47b12ac8599d33" + integrity sha512-/LFZOIo82WDsyyv7h7oc0MJF9ACOvDRdx9rWPZ2pgMfNWu/z8hQDBtOchuB/0BVLmuFOZjV02YwUVzNsWx/EzA== + dependencies: + tslib "^1.9.3" -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== +focus-visible@^5.2.0: + 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" @@ -4561,29 +4872,11 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - 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" integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -4597,17 +4890,22 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@~2.1.2: +fsevents@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" + integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.1, function.prototype.name@^1.1.2: +function.prototype.name@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== @@ -4616,6 +4914,16 @@ function.prototype.name@^1.1.1, function.prototype.name@^1.1.2: es-abstract "^1.17.0-next.1" functions-have-names "^1.2.0" +function.prototype.name@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.3.tgz#0bb034bb308e7682826f215eb6b2ae64918847fe" + integrity sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + functions-have-names "^1.2.1" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -4626,6 +4934,11 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== +functions-have-names@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" + integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== + fuse.js@^2.7.4: version "2.7.4" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-2.7.4.tgz#96e420fde7ef011ac49c258a621314fe576536f9" @@ -4646,6 +4959,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.1, get-intrinsic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + 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" @@ -4695,7 +5017,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -4763,6 +5085,18 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^9.0.0: version "9.2.0" resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -4870,10 +5204,10 @@ has@^1.0.1, has@^1.0.3: dependencies: function-bind "^1.1.1" -highlight.js@^10.1.2: - version "10.4.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0" - integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg== +highlight.js@^10.5.0: + version "10.5.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.5.0.tgz#3f09fede6a865757378f2d9ebdcbc15ba268f98f" + integrity sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw== hoist-non-react-statics@^3.3.0: version "3.3.2" @@ -4882,13 +5216,6 @@ hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" -hosted-git-info@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.0.tgz#dd8af49cd01e73cc8e61ba13e217a772fd4ecd2d" - integrity sha512-zYSx1cP4MLsvKtTg8DF/PI6e6FHZ3wcawcTGsrLU2TM+UfD4jmSrn2wdQT16TFbH3lO4PIdjLG0E+cuYDgFD9g== - dependencies: - lru-cache "^5.1.1" - hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -4908,10 +5235,10 @@ html-encoding-sniffer@^2.0.1: dependencies: whatwg-encoding "^1.0.5" -html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== +html-entities@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-escaper@^2.0.0: version "2.0.2" @@ -4945,18 +5272,15 @@ htmlparser2@^4.1.0: domutils "^2.0.0" entities "^2.0.0" -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== +htmlparser2@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.0.tgz#c2da005030390908ca4c91e5629e418e0665ac01" + integrity sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw== dependencies: - agent-base "4" - debug "3.1.0" + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.4.4" + entities "^2.0.0" http-signature@~1.2.0: version "1.2.0" @@ -4967,26 +5291,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== - dependencies: - agent-base "^4.3.0" - debug "^3.1.0" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -4999,17 +5308,12 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4: +ignore@^5.0.4, ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -5035,6 +5339,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-lazy@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" @@ -5068,11 +5380,6 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5086,7 +5393,7 @@ inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.5, ini@~1.3.0: +ini@^1.3.5: version "1.3.7" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== @@ -5136,11 +5443,6 @@ ip-regex@^2.0.0, ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -ip@1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - 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" @@ -5229,6 +5531,11 @@ is-callable@^1.0.4, is-callable@^1.1.4, is-callable@^1.1.5: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== +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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -5236,6 +5543,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + 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" @@ -5387,6 +5701,11 @@ is-map@^2.0.1: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-number-object@^1.0.3, is-number-object@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" @@ -5438,6 +5757,13 @@ is-regex@^1.0.3, is-regex@^1.0.4, is-regex@^1.0.5: dependencies: has-symbols "^1.0.1" +is-regex@^1.1.0, 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-symbols "^1.0.1" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -5624,59 +5950,59 @@ jest-canvas-mock@^2.3.0: cssfontparser "^1.2.1" moo-color "^1.0.2" -jest-changed-files@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.5.2.tgz#330232c6a5c09a7f040a5870e8f0a9c6abcdbed5" - integrity sha512-qSmssmiIdvM5BWVtyK/nqVpN3spR5YyvkvPqz1x3BR1bwIxsWmU/MGwLoCrPNLbkG2ASAKfvmJpOduEApBPh2w== +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.5.2" + "@jest/types" "^26.6.2" execa "^4.0.0" throat "^5.0.0" -jest-cli@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.5.2.tgz#0df114399b4036a3f046f0a9f25c50372c76b3a2" - integrity sha512-usm48COuUvRp8YEG5OWOaxbSM0my7eHn3QeBWxiGUuFhvkGVBvl1fic4UjC02EAEQtDv8KrNQUXdQTV6ZZBsoA== +jest-cli@^26.6.3: + 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.5.2" - "@jest/test-result" "^26.5.2" - "@jest/types" "^26.5.2" + "@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.5.2" - jest-util "^26.5.2" - jest-validate "^26.5.2" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" yargs "^15.4.1" -jest-config@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.5.2.tgz#6e828e25f10124433dd008fbd83348636de0972a" - integrity sha512-dqJOnSegNdE5yDiuGHsjTM5gec7Z4AcAMHiW+YscbOYJAlb3LEtDSobXCq0or9EmGQI5SFmKy4T7P1FxetJOfg== +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.5.2" - "@jest/types" "^26.5.2" - babel-jest "^26.5.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.5.2" - jest-environment-node "^26.5.2" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" jest-get-type "^26.3.0" - jest-jasmine2 "^26.5.2" + jest-jasmine2 "^26.6.3" jest-regex-util "^26.0.0" - jest-resolve "^26.5.2" - jest-util "^26.5.2" - jest-validate "^26.5.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^26.5.2" + pretty-format "^26.6.2" -jest-diff@^26.0.0: +jest-diff@^26.0.0, 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== @@ -5686,16 +6012,6 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.5.2.tgz#8e26cb32dc598e8b8a1b9deff55316f8313c8053" - integrity sha512-HCSWDUGwsov5oTlGzrRM+UPJI/Dpqi9jzeV0fdRNi3Ch5bnoXhnyJMmVg2juv9081zLIy3HGPI5mcuGgXM2xRA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.5.0" - jest-get-type "^26.3.0" - pretty-format "^26.5.2" - jest-docblock@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" @@ -5703,16 +6019,16 @@ jest-docblock@^26.0.0: dependencies: detect-newline "^3.0.0" -jest-each@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.5.2.tgz#35e68d6906a7f826d3ca5803cfe91d17a5a34c31" - integrity sha512-w7D9FNe0m2D3yZ0Drj9CLkyF/mGhmBSULMQTypzAKR746xXnjUrK8GUJdlLTWUF6dd0ks3MtvGP7/xNFr9Aphg== +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.5.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" jest-get-type "^26.3.0" - jest-util "^26.5.2" - pretty-format "^26.5.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" jest-environment-jsdom-sixteen@^1.0.3: version "1.0.3" @@ -5724,30 +6040,30 @@ jest-environment-jsdom-sixteen@^1.0.3: jest-util "^25.1.0" jsdom "^16.2.1" -jest-environment-jsdom@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.5.2.tgz#5feab05b828fd3e4b96bee5e0493464ddd2bb4bc" - integrity sha512-fWZPx0bluJaTQ36+PmRpvUtUlUFlGGBNyGX1SN3dLUHHMcQ4WseNEzcGGKOw4U5towXgxI4qDoI3vwR18H0RTw== +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.5.2" - "@jest/fake-timers" "^26.5.2" - "@jest/types" "^26.5.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.5.2" - jest-util "^26.5.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" jsdom "^16.4.0" -jest-environment-node@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.5.2.tgz#275a0f01b5e47447056f1541a15ed4da14acca03" - integrity sha512-YHjnDsf/GKFCYMGF1V+6HF7jhY1fcLfLNBDjhAOvFGvt6d8vXvNdJGVM7uTZ2VO/TuIyEFhPGaXMX5j3h7fsrA== +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.5.2" - "@jest/fake-timers" "^26.5.2" - "@jest/types" "^26.5.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" "@types/node" "*" - jest-mock "^26.5.2" - jest-util "^26.5.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" jest-get-type@^26.3.0: version "26.3.0" @@ -5773,68 +6089,68 @@ jest-haste-map@^24.9.0: optionalDependencies: fsevents "^1.2.7" -jest-haste-map@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.5.2.tgz#a15008abfc502c18aa56e4919ed8c96304ceb23d" - integrity sha512-lJIAVJN3gtO3k4xy+7i2Xjtwh8CfPcH08WYjZpe9xzveDaqGw9fVNCpkYu6M525wKFVkLmyi7ku+DxCAP1lyMA== +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.5.2" + "@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.5.0" - jest-util "^26.5.2" - jest-worker "^26.5.0" + 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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.5.2.tgz#0e33819d31b1f2aab5efd1e02ce502209c0e64a2" - integrity sha512-2J+GYcgLVPTkpmvHEj0/IDTIAuyblGNGlyGe4fLfDT2aktEPBYvoxUwFiOmDDxxzuuEAD2uxcYXr0+1Yw4tjFA== +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.5.2" - "@jest/source-map" "^26.5.0" - "@jest/test-result" "^26.5.2" - "@jest/types" "^26.5.2" + "@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.5.2" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^26.5.2" - jest-matcher-utils "^26.5.2" - jest-message-util "^26.5.2" - jest-runtime "^26.5.2" - jest-snapshot "^26.5.2" - jest-util "^26.5.2" - pretty-format "^26.5.2" + 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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.5.2.tgz#83fcf9a4a6ef157549552cb4f32ca1d6221eea69" - integrity sha512-h7ia3dLzBFItmYERaLPEtEKxy3YlcbcRSjj0XRNJgBEyODuu+3DM2o62kvIFvs3PsaYoIIv+e+nLRI61Dj1CNw== +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.3.0" - pretty-format "^26.5.2" + pretty-format "^26.6.2" -jest-matcher-utils@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.5.2.tgz#6aa2c76ce8b9c33e66f8856ff3a52bab59e6c85a" - integrity sha512-W9GO9KBIC4gIArsNqDUKsLnhivaqf8MSs6ujO/JDcPIQrmY+aasewweXVET8KdrJ6ADQaUne5UzysvF/RR7JYA== +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.5.2" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - pretty-format "^26.5.2" + pretty-format "^26.6.2" jest-message-util@^24.9.0: version "24.9.0" @@ -5864,17 +6180,18 @@ jest-message-util@^25.5.0: slash "^3.0.0" stack-utils "^1.0.1" -jest-message-util@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.5.2.tgz#6c4c4c46dcfbabb47cd1ba2f6351559729bc11bb" - integrity sha512-Ocp9UYZ5Jl15C5PNsoDiGEk14A4NG0zZKknpWdZGoMzJuGAkVt10e97tnEVMYpk7LnQHZOfuK2j/izLBMcuCZw== +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.5.2" + "@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" @@ -5892,12 +6209,12 @@ jest-mock@^25.1.0, jest-mock@^25.5.0: dependencies: "@jest/types" "^25.5.0" -jest-mock@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.5.2.tgz#c9302e8ef807f2bfc749ee52e65ad11166a1b6a1" - integrity sha512-9SiU4b5PtO51v0MtJwVRqeGEroH66Bnwtq4ARdNP7jNXbpT7+ByeWNAk4NeT/uHfNSVDXEXgQo1XRuwEqS6Rdw== +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.5.2" + "@jest/types" "^26.6.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -5915,83 +6232,84 @@ 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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.5.2.tgz#ee30b7cfea81c81bf5e195a9287d7ec07f893170" - integrity sha512-LLkc8LuRtxqOx0AtX/Npa2C4I23WcIrwUgNtHYXg4owYF/ZDQShcwBAHjYZIFR06+HpQcZ43+kCTMlQ3aDCYTg== +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.5.2" + "@jest/types" "^26.6.2" jest-regex-util "^26.0.0" - jest-snapshot "^26.5.2" + jest-snapshot "^26.6.2" -jest-resolve@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.5.2.tgz#0d719144f61944a428657b755a0e5c6af4fc8602" - integrity sha512-XsPxojXGRA0CoDD7Vis59ucz2p3cQFU5C+19tz3tLEAlhYKkK77IL0cjYjikY9wXnOaBeEdm1rOgSJjbZWpcZg== +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.5.2" + "@jest/types" "^26.6.2" chalk "^4.0.0" graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.2" - jest-util "^26.5.2" + 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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.5.2.tgz#4f9e6b0bb7eb4710c209a9e145b8a10894f4c19f" - integrity sha512-GKhYxtSX5+tXZsd2QwfkDqPIj5C2HqOdXLRc2x2qYqWE26OJh17xo58/fN/mLhRkO4y6o60ZVloan7Kk5YA6hg== +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.5.2" - "@jest/environment" "^26.5.2" - "@jest/test-result" "^26.5.2" - "@jest/types" "^26.5.2" + "@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.5.2" + jest-config "^26.6.3" jest-docblock "^26.0.0" - jest-haste-map "^26.5.2" - jest-leak-detector "^26.5.2" - jest-message-util "^26.5.2" - jest-resolve "^26.5.2" - jest-runtime "^26.5.2" - jest-util "^26.5.2" - jest-worker "^26.5.0" + 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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.5.2.tgz#b72f5f79eb2fe0c46bfef4cdb9c1e01d1c69ba41" - integrity sha512-zArr4DatX/Sn0wswX/AnAuJgmwgAR5rNtrUz36HR8BfMuysHYNq5sDbYHuLC4ICyRdy5ae/KQ+sczxyS9G6Qvw== +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.5.2" - "@jest/environment" "^26.5.2" - "@jest/fake-timers" "^26.5.2" - "@jest/globals" "^26.5.2" - "@jest/source-map" "^26.5.0" - "@jest/test-result" "^26.5.2" - "@jest/transform" "^26.5.2" - "@jest/types" "^26.5.2" + "@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.5.2" - jest-haste-map "^26.5.2" - jest-message-util "^26.5.2" - jest-mock "^26.5.2" + 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.5.2" - jest-snapshot "^26.5.2" - jest-util "^26.5.2" - jest-validate "^26.5.2" + 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.4.1" @@ -6001,34 +6319,34 @@ jest-serializer@^24.9.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-serializer@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.5.0.tgz#f5425cc4c5f6b4b355f854b5f0f23ec6b962bc13" - integrity sha512-+h3Gf5CDRlSLdgTv7y0vPIAoLgX/SI7T4v6hy+TEXMgYbv+ztzbg5PSN6mUXAT/hXYHvZRWm+MaObVfqkhCGxA== +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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.5.2.tgz#0cf7642eaf8e8d2736bd443f619959bf237f9ccf" - integrity sha512-MkXIDvEefzDubI/WaDVSRH4xnkuirP/Pz8LhAIDXcVQTmcEfwxywj5LGwBmhz+kAAIldA7XM4l96vbpzltSjqg== +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.5.2" + "@jest/types" "^26.6.2" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.0.0" chalk "^4.0.0" - expect "^26.5.2" + expect "^26.6.2" graceful-fs "^4.2.4" - jest-diff "^26.5.2" + jest-diff "^26.6.2" jest-get-type "^26.3.0" - jest-haste-map "^26.5.2" - jest-matcher-utils "^26.5.2" - jest-message-util "^26.5.2" - jest-resolve "^26.5.2" + 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.5.2" + pretty-format "^26.6.2" semver "^7.3.2" jest-util@^24.9.0: @@ -6060,41 +6378,41 @@ jest-util@^25.1.0, jest-util@^25.5.0: is-ci "^2.0.0" make-dir "^3.0.0" -jest-util@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.5.2.tgz#8403f75677902cc52a1b2140f568e91f8ed4f4d7" - integrity sha512-WTL675bK+GSSAYgS8z9FWdCT2nccO1yTIplNLPlP0OD8tUk/H5IrWKMMRudIQQ0qp8bb4k+1Qa8CxGKq9qnYdg== +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.5.2" + "@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.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.5.2.tgz#7ea266700b64234cd1c0cee982490c5a80e9b0f0" - integrity sha512-FmJks0zY36mp6Af/5sqO6CTL9bNMU45yKCJk3hrz8d2aIqQIlN1pr9HPIwZE8blLaewOla134nt5+xAmWsx3SQ== +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.5.2" + "@jest/types" "^26.6.2" camelcase "^6.0.0" chalk "^4.0.0" jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^26.5.2" + pretty-format "^26.6.2" -jest-watcher@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.5.2.tgz#2957f4461007e0769d74b537379ecf6b7c696916" - integrity sha512-i3m1NtWzF+FXfJ3ljLBB/WQEp4uaNhX7QcQUWMokcifFTUQBDFyUMEwk0JkJ1kopHbx7Een3KX0Q7+9koGM/Pw== +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.5.2" - "@jest/types" "^26.5.2" + "@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.5.2" + jest-util "^26.6.2" string-length "^4.0.1" jest-worker@^24.9.0: @@ -6105,23 +6423,23 @@ jest-worker@^24.9.0: merge-stream "^2.0.0" supports-color "^6.1.0" -jest-worker@^26.5.0: - version "26.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30" - integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug== +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" supports-color "^7.0.0" -jest@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.5.2.tgz#c6791642b331fe7abd2f993b0a74aa546f7be0fb" - integrity sha512-4HFabJVwsgDwul/7rhXJ3yFAF/aUkVIXiJWmgFxb+WMdZG39fVvOwYAs8/3r4AlFPc4m/n5sTMtuMbOL3kNtrQ== +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: - "@jest/core" "^26.5.2" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^26.5.2" + jest-cli "^26.6.3" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -6183,7 +6501,7 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.1: 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== @@ -6198,6 +6516,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -6245,6 +6568,14 @@ jsx-ast-utils@^2.4.1: array-includes "^3.1.1" object.assign "^4.1.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + katex@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/katex/-/katex-0.12.0.tgz#2fb1c665dbd2b043edcf8a1f5c555f46beaa0cb9" @@ -6308,13 +6639,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -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.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -6422,6 +6746,11 @@ lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + log-symbols@^2.0.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" @@ -6461,13 +6790,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -6490,23 +6812,6 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" -make-fetch-happen@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.0.tgz#a8e3fe41d3415dd656fe7b8e8172e1fb4458b38d" - integrity sha512-nFr/vpL1Jc60etMVKeaLOqfGjMMb3tAHFVJWxHOFCFS04Zmd7kGlMxo0l1tzfhoQje0/UPnd0X8OeGUiXXnfPA== - dependencies: - agentkeepalive "^3.4.1" - cacache "^12.0.0" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^5.1.1" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -6639,7 +6944,7 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: +merge2@^1.2.3, merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -6703,32 +7008,11 @@ minimist-options@^3.0.1: arrify "^1.0.1" is-plain-obj "^1.1.0" -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: +minimist@>=1.2.2, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -6756,24 +7040,12 @@ moo@^0.5.0: resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.0.0, ms@^2.1.1: +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== @@ -6831,15 +7103,6 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-fetch-npm@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" - integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" - node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -6875,6 +7138,11 @@ node-releases@^1.1.53: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== +node-releases@^1.1.69: + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -6921,6 +7189,13 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -6967,7 +7242,12 @@ object-inspect@^1.1.0, object-inspect@^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-is@^1.0.1, object-is@^1.0.2: +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== @@ -6975,6 +7255,14 @@ object-is@^1.0.1, object-is@^1.0.2: define-properties "^1.1.3" es-abstract "^1.17.5" +object-is@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.9, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -6997,6 +7285,16 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + 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.1, object.entries@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" @@ -7016,6 +7314,16 @@ object.fromentries@^2.0.2: function-bind "^1.1.1" has "^1.0.3" +object.fromentries@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" + integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -7041,6 +7349,16 @@ object.values@^1.1.1: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + "olm@https://packages.matrix.org/npm/olm/olm-3.2.1.tgz": version "3.2.1" resolved "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz#d623d76f99c3518dde68be8c86618d68bc7b004a" @@ -7167,15 +7485,6 @@ pako@^1.0.11: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -7220,6 +7529,13 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + parse5@5.1.1, parse5@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" @@ -7232,6 +7548,11 @@ parse5@^3.0.1: dependencies: "@types/node" "*" +parse5@^6.0.0, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -7286,6 +7607,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" @@ -7516,16 +7842,6 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -pretty-format@^26.5.2: - version "26.5.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.5.2.tgz#5d896acfdaa09210683d34b6dc0e6e21423cd3e1" - integrity sha512-VizyV669eqESlkOikKJI8Ryxl/kPpbdLwNdPs2GrbQs18MpySB5S0Yo0N7zkg2xTRiFq4CFw8ct5Vg4a0xP0og== - dependencies: - "@jest/types" "^26.5.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -7541,26 +7857,13 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -project-name-generator@^2.1.7: - version "2.1.7" - resolved "https://registry.yarnpkg.com/project-name-generator/-/project-name-generator-2.1.7.tgz#504c68a2a843247aa3af493a226ecf78ce8beceb" - integrity sha512-kLGQGiyvkZsWtqhPhUs85UkSgmH5OnZJLNrtlqkK+GZPR0cybe8Nr9jG3bD52w2siH9EE3l/a9y56bn0YX5wYw== +project-name-generator@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/project-name-generator/-/project-name-generator-2.1.9.tgz#959177f1feb2355d74fa98745d72a65a5f75b674" + integrity sha512-QmLHqz2C4VHmAyDEAFlVfnuWAHr4vwZhK2bbm4IrwuHNzNKOdG9b4U+NmQbsm1uOoV4kGWv7+FVLsu7Bb/ieYQ== dependencies: - commander "^2.15.1" - lodash "^4.17.10" - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" + commander "^6.1.0" + lodash "^4.17.20" promise@^7.0.3, promise@^7.1.1: version "7.3.1" @@ -7600,14 +7903,6 @@ psl@^1.1.28: resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -7616,15 +7911,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -7642,6 +7928,13 @@ pvtsutils@^1.0.11: dependencies: tslib "^2.0.1" +pvtsutils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.1.1.tgz#22c2d7689139d2c36d7ef3ac3d5e29bcd818d38a" + integrity sha512-Evbhe6L4Sxwu4SPLQ4LQZhgfWDQO3qa1lju9jM5cxsQp8vE10VipcSmo7hiJW48TmiHgVLgDtC2TL6/+ND+IVg== + dependencies: + tslib "^2.0.3" + pvutils@latest: version "1.0.17" resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.0.17.tgz#ade3c74dfe7178944fe44806626bd2e249d996bf" @@ -7710,20 +8003,10 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" -rc@1.2.8, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -re-resizable@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.5.4.tgz#909a1e37f9d1a3afd356893a5779a030167be641" - integrity sha512-7T3L1lexB2zkZIDmzRJbwdq+xGFuRkrEVQIf5hBPnh7JuS9kG9Yc8XgIaxTWic1kU7jVlDgqzfId/gvmpBCjpA== +re-resizable@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.0.tgz#9c3059b389ced6ade602234cc5bb1e12d231cd47" + integrity sha512-3cUDG81ylyqI0Pdgle/RHwwRYq0ORZzsUaySOCO8IbEtNyaRtrIHYm/jMQ5pjcNiKCxR3vsSymIQZHwJq4gg2Q== dependencies: fast-memoize "^2.5.1" @@ -7750,29 +8033,29 @@ react-clientside-effect@^1.2.2: dependencies: "@babel/runtime" "^7.0.0" -react-dom@^16.13.1: - 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== +react-dom@^16.14.0: + 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" prop-types "^15.6.2" scheduler "^0.19.1" -react-focus-lock@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.4.1.tgz#e842cc93da736b5c5d331799012544295cbcee4f" - integrity sha512-c5ZP56KSpj9EAxzScTqQO7bQQNPltf/W1ZEBDqNDOV1XOIwvAyHX0O7db9ekiAtxyKgnqZjQlLppVg94fUeL9w== +react-focus-lock@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.5.0.tgz#12e3a3940e897c26e2c2a0408cd25ea3c99b3709" + integrity sha512-XLxj6uTXgz0US8TmqNU2jMfnXwZG0mH2r/afQqvPEaX6nyEll5LHVcEXk2XDUQ34RVeLPkO/xK5x6c/qiuSq/A== dependencies: "@babel/runtime" "^7.0.0" - focus-lock "^0.7.0" + focus-lock "^0.8.1" prop-types "^15.6.2" react-clientside-effect "^1.2.2" use-callback-ref "^1.2.1" use-sidecar "^1.0.1" -react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6, react-is@^16.9.0: +react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -7809,7 +8092,7 @@ react-redux@^5.0.6: react-is "^16.6.0" react-lifecycles-compat "^3.0.0" -react-test-renderer@^16.0.0-0, react-test-renderer@^16.13.1: +react-test-renderer@^16.0.0-0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== @@ -7819,6 +8102,16 @@ react-test-renderer@^16.0.0-0, react-test-renderer@^16.13.1: react-is "^16.8.6" scheduler "^0.19.1" +react-test-renderer@^16.14.0: + version "16.14.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== + dependencies: + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.19.1" + react-transition-group@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" @@ -7829,10 +8122,10 @@ react-transition-group@^4.4.1: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== +react@^16.14.0: + 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" @@ -7908,7 +8201,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.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.2: 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== @@ -7939,10 +8232,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" @@ -8049,13 +8342,17 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" -registry-auth-token@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" - integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== +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: - rc "^1.2.8" - safe-buffer "^5.0.1" + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" regjsgen@^0.5.1: version "0.5.2" @@ -8186,6 +8483,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -8233,13 +8535,21 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +resolve@^1.18.1: + 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" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -8253,10 +8563,10 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rfc4648@^1.4.0: version "1.4.0" @@ -8270,38 +8580,20 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -rollup-plugin-terser@^5.1.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" - integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^2.1.2" - terser "^4.6.2" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - rst-selector-parser@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" @@ -8320,12 +8612,10 @@ run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" +run-parallel@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== rxjs@^6.5.2: version "6.5.5" @@ -8341,7 +8631,7 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, 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== @@ -8410,16 +8700,16 @@ scheduler@^0.19.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" @@ -8427,11 +8717,6 @@ semver@^7.2.1, semver@^7.3.2: dependencies: lru-cache "^6.0.0" -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -8518,10 +8803,14 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -8553,22 +8842,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== - dependencies: - ip "1.1.5" - smart-buffer "^4.1.0" - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -8580,7 +8853,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12: +source-map-support@^0.5.16, source-map-support@^0.5.6: 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== @@ -8681,13 +8954,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^6.0.0, ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" @@ -8718,19 +8984,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" @@ -8739,15 +8992,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff" - integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^5.2.0" - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -8817,6 +9061,14 @@ string.prototype.trimend@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + 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" @@ -8843,6 +9095,14 @@ string.prototype.trimstart@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -8920,7 +9180,7 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@^3.0.1: +strip-json-comments@^3.0.1, 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== @@ -8930,11 +9190,6 @@ strip-json-comments@^3.1.0: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" @@ -9091,6 +9346,16 @@ table@^5.0.0, table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + tar-js@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/tar-js/-/tar-js-0.3.0.tgz#6949aabfb0ba18bb1562ae51a439fd0f30183a17" @@ -9104,15 +9369,6 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser@^4.6.2: - version "4.7.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" - integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -9137,7 +9393,7 @@ text-encoding-utf-8@^1.0.2: resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== -text-table@0.2.0, text-table@^0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -9147,14 +9403,6 @@ 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: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -9288,6 +9536,11 @@ tslib@^2.0.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.2.tgz#462295631185db44b21b1ea3615b63cd1c038242" integrity sha512-wAH28hcEKwna96/UacuWaVspVLkg4x1aDM9JlzqaQTOFczCktkVAb5fmXChgandR1EraDPs2w8P+ozM+oafwxg== +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -9348,16 +9601,16 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.9.5, typescript@^3.9.7: +typescript@^3.9.7: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" + integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== + ua-parser-js@^0.7.18: version "0.7.21" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" @@ -9428,20 +9681,6 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - unist-util-find-all-after@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899" @@ -9500,22 +9739,6 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -updates@^8.5.2: - version "8.5.3" - resolved "https://registry.yarnpkg.com/updates/-/updates-8.5.3.tgz#6397674fcfe9938deabbfa2f88dad717d756eebb" - integrity sha512-bREdpucNEtSULXu2PLfYmKnRD6E0lM16vbZNsgR39Ou7FqiUEyasA0o2Lrb3uHwZN3L2WhOjf+EjQl7NiOHhug== - dependencies: - chalk "2.4.2" - find-up "4.1.0" - hosted-git-info "3.0.0" - make-fetch-happen "5.0.0" - minimist "1.2.0" - rc "1.2.8" - registry-auth-token "4.0.0" - semver "6.3.0" - string-width "4.1.0" - text-table "0.2.0" - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -9584,10 +9807,10 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== -v8-to-istanbul@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz#0608f5b49a481458625edb058488607f25498ba5" - integrity sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q== +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -9673,7 +9896,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -webcrypto-core@^1.1.6: +webcrypto-core@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.1.8.tgz#91720c07f4f2edd181111b436647ea5a282af0a9" integrity sha512-hKnFXsqh0VloojNeTfrwFoRM4MnaWzH6vtXcaFcGjPEu+8HmBdQZnps3/2ikOFqS8bJN1RYr6mI2P/FJzyZnXg== @@ -9852,7 +10075,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -9862,11 +10085,6 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From f8816e0bda7f7c42f0d38973af76f9007519479f Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 12:36:28 +0000 Subject: [PATCH 196/275] Pin React types to 16.x for now This avoids type conflicts from other deps that depends on just `*`. Type deps needs to be de-duplicated down to a single version to avoid errors (unlike code deps). --- package.json | 3 +++ yarn.lock | 12 ++---------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 270068c1fe..1b4259ed53 100644 --- a/package.json +++ b/package.json @@ -170,6 +170,9 @@ "typescript": "^3.9.7", "walk": "^2.3.14" }, + "resolutions": { + "**/@types/react": "^16.14" + }, "jest": { "testEnvironment": "./__test-utils__/environment.js", "testMatch": [ diff --git a/yarn.lock b/yarn.lock index a0b46df413..06a4f2e6a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2122,15 +2122,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.9": - version "16.9.35" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.35.tgz#a0830d172e8aadd9bd41709ba2281a3124bbd368" - integrity sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@types/react@^16": +"@types/react@*", "@types/react@^16", "@types/react@^16.14", "@types/react@^16.9": version "16.14.2" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.2.tgz#85dcc0947d0645349923c04ccef6018a1ab7538c" integrity sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ== @@ -3536,7 +3528,7 @@ cssstyle@^2.2.0: dependencies: cssom "~0.3.6" -csstype@^2.2.0, csstype@^2.6.7: +csstype@^2.6.7: version "2.6.10" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== From ca08475498cd0c59a2bb8bf365a60c067c9f75be Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 13:04:41 +0000 Subject: [PATCH 197/275] Apply all simple major version upgrades --- package.json | 37 +- yarn.lock | 1764 ++++++++++++++------------------------------------ 2 files changed, 497 insertions(+), 1304 deletions(-) diff --git a/package.json b/package.json index 1b4259ed53..c5392d32b0 100644 --- a/package.json +++ b/package.json @@ -68,24 +68,23 @@ "emojibase-data": "^5.1.1", "emojibase-regex": "^4.1.1", "escape-html": "^1.0.3", - "file-saver": "^1.3.8", - "filesize": "3.6.1", + "file-saver": "^2.0.5", + "filesize": "6.1.0", "flux": "2.1.1", "focus-visible": "^5.2.0", - "fuse.js": "^2.7.4", "gfm.css": "^1.1.2", "glob-to-regexp": "^0.4.1", "highlight.js": "^10.5.0", "html-entities": "^1.4.0", - "is-ip": "^2.0.0", + "is-ip": "^3.1.0", "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.20", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "matrix-widget-api": "0.1.0-beta.11", "minimist": "^1.2.5", - "pako": "^1.0.11", - "parse5": "^5.1.1", + "pako": "^2.0.3", + "parse5": "^6.0.1", "png-chunks-extract": "^1.0.0", "project-name-generator": "^2.1.9", "prop-types": "^15.7.2", @@ -132,7 +131,7 @@ "@types/linkifyjs": "^2.1.3", "@types/lodash": "^4.14.168", "@types/modernizr": "^3.5.3", - "@types/node": "^12.19.14", + "@types/node": "^14.14.22", "@types/pako": "^1.0.1", "@types/qrcode": "^1.3.5", "@types/react": "^16.9", @@ -140,34 +139,34 @@ "@types/react-transition-group": "^4.4.0", "@types/sanitize-html": "^1.27.0", "@types/zxcvbn": "^4.4.0", - "@typescript-eslint/eslint-plugin": "^3.10.1", - "@typescript-eslint/parser": "^3.10.1", + "@typescript-eslint/eslint-plugin": "^4.14.0", + "@typescript-eslint/parser": "^4.14.0", "babel-eslint": "^10.1.0", - "babel-jest": "^24.9.0", + "babel-jest": "^26.6.3", "chokidar": "^3.5.1", - "concurrently": "^4.1.2", + "concurrently": "^5.3.0", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.6", "eslint": "7.18.0", "eslint-config-matrix-org": "^0.2.0", "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-flowtype": "^2.50.3", + "eslint-plugin-flowtype": "^5.2.0", "eslint-plugin-react": "^7.22.0", - "eslint-plugin-react-hooks": "^2.5.1", - "glob": "^5.0.15", + "eslint-plugin-react-hooks": "^4.2.0", + "glob": "^7.1.6", "jest": "^26.6.3", "jest-canvas-mock": "^2.3.0", "jest-environment-jsdom-sixteen": "^1.0.3", - "lolex": "^5.1.2", + "lolex": "^6.0.0", "matrix-mock-request": "^1.2.3", "matrix-react-test-utils": "^0.2.2", "olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz", "react-test-renderer": "^16.14.0", - "rimraf": "^2.7.1", - "stylelint": "^9.10.1", - "stylelint-config-standard": "^18.3.0", + "rimraf": "^3.0.2", + "stylelint": "^13.9.0", + "stylelint-config-standard": "^20.0.0", "stylelint-scss": "^3.18.0", - "typescript": "^3.9.7", + "typescript": "^4.1.3", "walk": "^2.3.14" }, "resolutions": { diff --git a/yarn.lock b/yarn.lock index 06a4f2e6a6..9cba2b531f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,7 +52,28 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== -"@babel/core@>=7.2.2", "@babel/core@^7.1.0": +"@babel/core@>=7.9.0", "@babel/core@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.2.tgz#bd6786046668a925ac2bd2fd95b579b92a23b36a" integrity sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ== @@ -74,27 +95,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/core@^7.7.5": version "7.11.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" @@ -117,7 +117,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.10.1", "@babel/generator@^7.10.2", "@babel/generator@^7.4.0": +"@babel/generator@^7.10.1", "@babel/generator@^7.10.2": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" integrity sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA== @@ -586,7 +586,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0": +"@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2", "@babel/parser@^7.7.0": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== @@ -843,7 +843,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -1339,7 +1339,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.1", "@babel/template@^7.4.0": +"@babel/template@^7.10.1": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== @@ -1366,7 +1366,7 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.7.0": version "7.10.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== @@ -1426,7 +1426,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.10.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" integrity sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng== @@ -1516,15 +1516,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" - integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== - dependencies: - "@jest/source-map" "^24.9.0" - chalk "^2.0.1" - slash "^2.0.0" - "@jest/console@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" @@ -1581,15 +1572,6 @@ "@types/node" "*" jest-mock "^26.6.2" -"@jest/fake-timers@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" - integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== - dependencies: - "@jest/types" "^24.9.0" - jest-message-util "^24.9.0" - jest-mock "^24.9.0" - "@jest/fake-timers@^25.1.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" @@ -1654,15 +1636,6 @@ optionalDependencies: node-notifier "^8.0.0" -"@jest/source-map@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" - integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - "@jest/source-map@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" @@ -1672,15 +1645,6 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" - integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== - dependencies: - "@jest/console" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@jest/test-result@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" @@ -1702,28 +1666,6 @@ jest-runner "^26.6.3" jest-runtime "^26.6.3" -"@jest/transform@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" - integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.9.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.9.0" - jest-regex-util "^24.9.0" - jest-util "^24.9.0" - micromatch "^3.1.10" - pirates "^4.0.1" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" @@ -1745,15 +1687,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - "@jest/types@^25.5.0": version "25.5.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" @@ -1775,14 +1708,6 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents": version "2.1.8-no-fsevents" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b" @@ -1813,11 +1738,6 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - "@nodelib/fs.walk@^1.2.3": version "1.2.6" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" @@ -1878,6 +1798,21 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@stylelint/postcss-css-in-js@^0.37.2": + version "0.37.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" + integrity sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA== + dependencies: + "@babel/core" ">=7.9.0" + +"@stylelint/postcss-markdown@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391" + integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ== + dependencies: + remark "^13.0.0" + unist-util-find-all-after "^3.0.2" + "@types/asn1js@^0.0.1": version "0.0.1" resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-0.0.1.tgz#ef8b9f9708cb1632a1c3a9cd27717caabe793bc2" @@ -1901,17 +1836,6 @@ "@types/babel__template" "*" "@types/babel__traverse" "*" -"@types/babel__core@^7.1.0": - version "7.1.8" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.8.tgz#057f725aca3641f49fc11c7a87a9de5ec588a5d7" - integrity sha512-KXBiQG2OXvaPWFPDS1rD8yV9vO0OuWIqAEqLsbfX0oU2REN5KuoMnZ1gClWcBhO5I3n6oTVAmrMufOvRqdmFTQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@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" @@ -1956,11 +1880,6 @@ resolved "https://registry.yarnpkg.com/@types/counterpart/-/counterpart-0.18.1.tgz#b1b784d9e54d9879f0a8cb12f2caedab65430fe8" integrity sha512-PRuFlBBkvdDOtxlIASzTmkEFar+S66Ek48NVVTWMUjtJAdn5vyMSN8y6IZIoIymGpR36q2nZbIYazBWyFxL+IQ== -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - "@types/events@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1979,14 +1898,6 @@ "@types/fbemitter" "*" "@types/react" "*" -"@types/glob@^7.1.1": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.2.tgz#06ca26521353a545d94a0adc74f38a59d232c987" - integrity sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA== - dependencies: - "@types/minimatch" "*" - "@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" @@ -2056,10 +1967,17 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== -"@types/minimatch@*": +"@types/mdast@^3.0.0": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + dependencies: + "@types/unist" "*" + +"@types/minimist@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== "@types/modernizr@^3.5.3": version "3.5.3" @@ -2071,10 +1989,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3" integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg== -"@types/node@^12.19.14": - version "12.19.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.14.tgz#59e5029a3c2aea34f68b717955381692fd47cafb" - integrity sha512-2U9uLN46+7dv9PiS8VQJcHhuoOjiDPZOLAt0WuA1EanEknIMae+2QbMhayF7cgGqjvRVIfNpt+6jLPczJZFiRw== +"@types/node@^14.14.22": + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2086,6 +2004,11 @@ resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.1.tgz#33b237f3c9aff44d0f82fe63acffa4a365ef4a61" integrity sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prettier@^2.0.0": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.1.tgz#be148756d5480a84cde100324c03a86ae5739fb5" @@ -2152,34 +2075,11 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== -"@types/vfile-message@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" - integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== - dependencies: - vfile-message "*" - -"@types/vfile@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" - integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== - dependencies: - "@types/node" "*" - "@types/unist" "*" - "@types/vfile-message" "*" - "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== -"@types/yargs@^13.0.0": - version "13.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1" - integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg== - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^15.0.0": version "15.0.7" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.7.tgz#dad50a7a234a35ef9460737a56024287a3de1d2b" @@ -2192,18 +2092,6 @@ resolved "https://registry.yarnpkg.com/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609" integrity sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg== -"@typescript-eslint/eslint-plugin@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz#7e061338a1383f59edc204c605899f93dc2e2c8f" - integrity sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ== - dependencies: - "@typescript-eslint/experimental-utils" "3.10.1" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - "@typescript-eslint/eslint-plugin@^4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz#92db8e7c357ed7d69632d6843ca70b71be3a721d" @@ -2218,17 +2106,6 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" - integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - "@typescript-eslint/experimental-utils@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz#5aa7b006736634f588a69ee343ca959cd09988df" @@ -2241,17 +2118,6 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.10.1.tgz#1883858e83e8b442627e1ac6f408925211155467" - integrity sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "3.10.1" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-visitor-keys "^1.1.0" - "@typescript-eslint/parser@^4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.14.0.tgz#62d4cd2079d5c06683e9bfb200c758f292c4dee7" @@ -2270,30 +2136,11 @@ "@typescript-eslint/types" "4.14.0" "@typescript-eslint/visitor-keys" "4.14.0" -"@typescript-eslint/types@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" - integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== - "@typescript-eslint/types@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.0.tgz#d8a8202d9b58831d6fd9cee2ba12f8a5a5dd44b6" integrity sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A== -"@typescript-eslint/typescript-estree@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== - dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - "@typescript-eslint/typescript-estree@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz#4bcd67486e9acafc3d0c982b23a9ab8ac8911ed7" @@ -2308,13 +2155,6 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== - dependencies: - eslint-visitor-keys "^1.1.0" - "@typescript-eslint/visitor-keys@4.14.0": version "4.14.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz#b1090d9d2955b044b2ea2904a22496849acbdf54" @@ -2423,16 +2263,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -2508,11 +2338,6 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -2533,23 +2358,11 @@ array-includes@^3.1.2: get-intrinsic "^1.0.1" is-string "^1.0.5" -array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -2639,17 +2452,17 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.0.0: - version "9.8.0" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.0.tgz#68e2d2bef7ba4c3a65436f662d0a56a741e56511" - integrity sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A== +autoprefixer@^9.8.6: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== dependencies: browserslist "^4.12.0" - caniuse-lite "^1.0.30001061" - chalk "^2.4.2" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.30" + postcss "^7.0.32" postcss-value-parser "^4.1.0" await-lock@^2.1.0: @@ -2679,19 +2492,6 @@ babel-eslint@^10.0.1, babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" - integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== - dependencies: - "@jest/transform" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.9.0" - chalk "^2.4.2" - slash "^2.0.0" - babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -2713,16 +2513,6 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" -babel-plugin-istanbul@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" - integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" - babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -2734,13 +2524,6 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" - integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== - dependencies: - "@types/babel__traverse" "^7.0.6" - 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" @@ -2769,14 +2552,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" - integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.9.0" - 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" @@ -2845,13 +2620,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - bluebird@^3.5.0: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -3002,48 +2770,19 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" @@ -3055,12 +2794,12 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== -caniuse-lite@^1.0.30001043, caniuse-lite@^1.0.30001061: +caniuse-lite@^1.0.30001043: version "1.0.30001079" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001079.tgz#ed3e5225cd9a6850984fdd88bf24ce45d69b9c22" integrity sha512-2KaYheg0iOY+CMmDuAB3DHehrXhhb4OZU4KBVGDr/YKyYAcpudaiUQ9PJ9rxrPlKEoJ3ATasQ5AN48MqpwS43Q== -caniuse-lite@^1.0.30001173: +caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173: version "1.0.30001178" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001178.tgz#3ad813b2b2c7d585b0be0a2440e1e233c6eabdbc" integrity sha512-VtdZLC0vsXykKni8Uztx45xynytOi71Ufx9T8kHptSw9AL4dpqailUJJHavttuzUe1KYuBYtChiWv+BAb7mPmQ== @@ -3077,12 +2816,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -ccount@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17" - integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw== - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3112,11 +2846,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -character-entities-html4@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" - integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== - character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -3225,15 +2954,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -3252,29 +2972,18 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-regexp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f" - integrity sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw== +clone-regexp@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-2.2.0.tgz#7d65e00885cd8796405c35a737e7a86b7429e36f" + integrity sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q== dependencies: - is-regexp "^1.0.0" - is-supported-regexp-flag "^1.0.0" + is-regexp "^2.0.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collapse-white-space@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" - integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== - collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -3364,20 +3073,20 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concurrently@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-4.1.2.tgz#1a683b2b5c41e9ed324c9002b9f6e4c6e1f3b6d7" - integrity sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg== +concurrently@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.3.0.tgz#7500de6410d043c912b2da27de3202cb489b1e7b" + integrity sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ== dependencies: chalk "^2.4.2" - date-fns "^1.30.1" + date-fns "^2.0.1" lodash "^4.17.15" read-pkg "^4.0.1" rxjs "^6.5.2" spawn-command "^0.0.2-1" - supports-color "^4.5.0" - tree-kill "^1.2.1" - yargs "^12.0.5" + supports-color "^6.1.0" + tree-kill "^1.2.2" + yargs "^13.3.0" contains-path@^0.1.0: version "0.1.0" @@ -3424,15 +3133,16 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== +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: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" counterpart@^0.18.6: version "0.18.6" @@ -3538,13 +3248,6 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -3561,10 +3264,10 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@^1.30.1: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +date-fns@^2.0.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" + integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== date-names@^0.1.11: version "0.1.13" @@ -3585,7 +3288,14 @@ debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize-keys@^1.0.0: +debug@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= @@ -3682,13 +3392,6 @@ dijkstrajs@^1.0.1: resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3833,13 +3536,6 @@ domutils@^2.4.3, domutils@^2.4.4: domelementtype "^2.0.1" domhandler "^4.0.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== - dependencies: - is-obj "^2.0.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3998,7 +3694,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, 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== @@ -4180,12 +3876,13 @@ eslint-plugin-babel@^5.3.1: dependencies: eslint-rule-composer "^0.3.0" -eslint-plugin-flowtype@^2.50.3: - version "2.50.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.50.3.tgz#61379d6dce1d010370acd6681740fd913d68175f" - integrity sha512-X+AoKVOr7Re0ko/yEXyM5SSZ0tazc6ffdIOocp2fFUlWoDt7DV0Bz99mngOkAFLOAWjqRA5jPwqUCbrx13XoxQ== +eslint-plugin-flowtype@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.0.tgz#a4bef5dc18f9b2bdb41569a4ab05d73805a3d261" + integrity sha512-z7ULdTxuhlRJcEe1MVljePXricuPOrsWfScRXFhNzVD5dmTHWjIF57AxD0e7AbEoLSbjSsaA5S+hCg43WvpXJQ== dependencies: - lodash "^4.17.10" + lodash "^4.17.15" + string-natural-compare "^3.0.1" eslint-plugin-import@^2.14.0: version "2.22.0" @@ -4206,10 +3903,10 @@ eslint-plugin-import@^2.14.0: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-react-hooks@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" - integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== +eslint-plugin-react-hooks@^4.2.0: + 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-native-globals@^0.1.1: version "0.1.2" @@ -4504,12 +4201,12 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execall@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" - integrity sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M= +execall@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/execall/-/execall-2.0.0.tgz#16a06b5fe5099df7d00be5d9c06eecded1663b45" + integrity sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow== dependencies: - clone-regexp "^1.0.0" + clone-regexp "^2.1.0" exit@^0.1.2: version "0.1.2" @@ -4612,19 +4309,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: +fast-glob@^3.1.1, fast-glob@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -4651,6 +4336,11 @@ fast-memoize@^2.5.1: resolved "https://registry.yarnpkg.com/fast-memoize/-/fast-memoize-2.5.2.tgz#79e3bb6a4ec867ea40ba0e7146816f6cdce9b57e" integrity sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw== +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fastq@^1.6.0: version "1.10.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" @@ -4701,13 +4391,6 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-4.0.0.tgz#633567d15364aefe0b299e1e217735e8f3a9f6e8" - integrity sha512-AVSwsnbV8vH/UVbvgEhf3saVQXORNv0ZzSkvkhQIaia5Tia+JhGTaa/ePUSVoPHQyGayQNmYfkzFi3WZV5zcpA== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -4722,20 +4405,15 @@ file-entry-cache@^6.0.0: dependencies: flat-cache "^3.0.4" -file-saver@^1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8" - integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg== +file-saver@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" + integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== fill-range@^4.0.0: version "4.0.0" @@ -4874,14 +4552,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" @@ -4931,21 +4601,11 @@ functions-have-names@^1.2.1: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== -fuse.js@^2.7.4: - version "2.7.4" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-2.7.4.tgz#96e420fde7ef011ac49c258a621314fe576536f9" - integrity sha1-luQg/efvARrEnCWKYhMU/ldlNvk= - 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== -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -4965,10 +4625,10 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== get-stream@^4.0.0: version "4.1.0" @@ -5016,27 +4676,11 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -5077,7 +4721,7 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^11.0.1: +globby@^11.0.1, globby@^11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== @@ -5089,33 +4733,19 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= -gonzales-pe@^4.2.3: +gonzales-pe@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== dependencies: minimist "^1.2.5" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, 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== @@ -5138,10 +4768,10 @@ har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== has-flag@^3.0.0: version "3.0.0" @@ -5213,6 +4843,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" + integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== + dependencies: + lru-cache "^6.0.0" + html-element-map@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.2.0.tgz#dfbb09efe882806af63d990cf6db37993f099f22" @@ -5237,10 +4874,10 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-tags@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" - integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== htmlparser2@^3.10.0, htmlparser2@^3.9.1: version "3.10.1" @@ -5300,12 +4937,12 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4, ignore@^5.1.4: +ignore@^5.1.4, ignore@^5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -5315,14 +4952,6 @@ immutable@^3.7.4: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -5339,10 +4968,10 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-lazy@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" - integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== +import-lazy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== import-local@^3.0.2: version "3.0.2" @@ -5357,10 +4986,10 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== indexes-of@^1.0.1: version "1.0.1" @@ -5380,7 +5009,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, 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== @@ -5425,16 +5054,16 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.0.0, ip-regex@^2.1.0: +ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +ip-regex@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.2.0.tgz#a03f5eb661d9a154e3973a03de8b23dd0ad6892e" + integrity sha512-n5cDDeTWWRwK1EBoWwRti+8nP4NbytBBY0pldmnIkq6Z55KNFmWofh4rl9dPZpj+U/nVq7gweR3ylrvMt4YZ5A== + 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" @@ -5454,11 +5083,6 @@ is-alphabetical@^1.0.0: resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -is-alphanumeric@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" - integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -5584,11 +5208,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - is-docker@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" @@ -5635,13 +5254,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -5681,12 +5293,12 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== -is-ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" - integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== dependencies: - ip-regex "^2.0.0" + ip-regex "^4.0.0" is-map@^2.0.1: version "2.0.1" @@ -5715,16 +5327,16 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5756,10 +5368,10 @@ is-regex@^1.1.0, is-regex@^1.1.1: dependencies: has-symbols "^1.0.1" -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= +is-regexp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" + integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== is-set@^2.0.1: version "2.0.1" @@ -5786,11 +5398,6 @@ is-subset@^0.1.1: resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= -is-supported-regexp-flag@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" - integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== - is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -5813,21 +5420,11 @@ is-weakset@^2.0.1: resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== -is-whitespace-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" - integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-word-character@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" - integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== - is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -5875,29 +5472,11 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" @@ -6062,25 +5641,6 @@ jest-get-type@^26.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== -jest-haste-map@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" - integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== - dependencies: - "@jest/types" "^24.9.0" - anymatch "^2.0.0" - fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.9.0" - jest-util "^24.9.0" - jest-worker "^24.9.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" - jest-haste-map@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" @@ -6144,20 +5704,6 @@ jest-matcher-utils@^26.6.2: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-message-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" - integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" - jest-message-util@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" @@ -6187,13 +5733,6 @@ jest-message-util@^26.6.2: slash "^3.0.0" stack-utils "^2.0.2" -jest-mock@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" - integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== - dependencies: - "@jest/types" "^24.9.0" - jest-mock@^25.1.0, jest-mock@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" @@ -6214,11 +5753,6 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" - integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== - jest-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" @@ -6306,11 +5840,6 @@ jest-runtime@^26.6.3: strip-bom "^4.0.0" yargs "^15.4.1" -jest-serializer@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" - integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== - jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -6341,24 +5870,6 @@ jest-snapshot@^26.6.2: pretty-format "^26.6.2" semver "^7.3.2" -jest-util@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" - integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== - dependencies: - "@jest/console" "^24.9.0" - "@jest/fake-timers" "^24.9.0" - "@jest/source-map" "^24.9.0" - "@jest/test-result" "^24.9.0" - "@jest/types" "^24.9.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" - jest-util@^25.1.0, jest-util@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" @@ -6407,14 +5918,6 @@ jest-watcher@^26.6.2: jest-util "^26.6.2" string-length "^4.0.1" -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -6594,7 +6097,7 @@ kind-of@^5.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -6609,22 +6112,10 @@ klona@^2.0.3: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -known-css-properties@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a" - integrity sha512-bEZlJzXo5V/ApNNa5z375mJC6Nrz4vG43UgcSCrg2OHC+yuB6j0iDSrY7RQ/+PRofFB03wNIIt9iXIVLr4wc7w== - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +known-css-properties@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.20.0.tgz#0570831661b47dd835293218381166090ff60e96" + integrity sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw== leven@^3.1.0: version "3.1.0" @@ -6675,16 +6166,6 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6733,7 +6214,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.2.1: +lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.2.1: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== @@ -6743,26 +6224,33 @@ lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -log-symbols@^2.0.0, log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: - chalk "^2.0.1" + chalk "^4.0.0" loglevel@^1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== -lolex@^5.0.0, lolex@^5.1.2: +lolex@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== dependencies: "@sinonjs/commons" "^1.7.0" -longest-streak@^2.0.1: +lolex@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-6.0.0.tgz#790de1911da46e67e4b60c94859d19e2db0bb7e9" + integrity sha512-ad9IBHbfVJ3bPAotDxnCgJgKcNK5/mrRAfbJzXhY5+PEmuBWP7wyHQlA6L8TfSfPlqlDjY4K7IG6mbzsrIBx1A== + dependencies: + "@sinonjs/commons" "^1.7.0" + +longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== @@ -6774,14 +6262,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -6811,13 +6291,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -6828,10 +6301,10 @@ map-obj@^1.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= +map-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5" + integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g== map-visit@^1.0.0: version "1.0.0" @@ -6840,17 +6313,7 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-escapes@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" - integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== - -markdown-table@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== - -mathml-tag-names@^2.0.1: +mathml-tag-names@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== @@ -6890,57 +6353,80 @@ matrix-widget-api@0.1.0-beta.11: "@types/events" "^3.0.0" events "^3.2.0" -mdast-util-compact@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" - integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== +mdast-util-from-markdown@^0.8.0: + version "0.8.4" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.4.tgz#2882100c1b9fc967d3f83806802f303666682d32" + integrity sha512-jj891B5pV2r63n2kBTFh8cRI2uR9LQHsXG1zSDqfhXkIlDzrTcIlbB5+5aaYEkl8vOPIOPLf8VT7Ere1wWTMdw== dependencies: - unist-util-visit "^1.1.0" + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + +mdast-util-to-markdown@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.2.tgz#8fe6f42a2683c43c5609dfb40407c095409c85b4" + integrity sha512-iRczns6WMvu0hUw02LXsPDJshBIwtUPbvHBWo19IQeU0YqmzlA8Pd30U8V7uiI0VPkxzS7A/NXBXH6u+HS87Zg== + dependencies: + "@types/unist" "^2.0.0" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== mdurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memoize-one@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-3.1.1.tgz#ef609811e3bc28970eac2884eece64d167830d17" integrity sha512-YqVh744GsMlZu6xkhGslPSqSurOv6P+kLN2J3ysBZfagLcL5FdRK/0UpgLoL8hwjjEvvAVkjJZyFP+1T6p1vgA== -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +micromark@~2.11.0: + version "2.11.2" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.2.tgz#e8b6a05f54697d2d3d27fc89600c6bc40dd05f35" + integrity sha512-IXuP76p2uj8uMg4FQc1cRE7lPCLsfAXuEfdjtdO55VRiFO1asrCSQ5g43NmPqFtRwzEnEhafRVzn2jg0UiKArQ== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -6980,25 +6466,31 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.44.0" -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -"minimatch@2 || 3", minimatch@^3.0.4: +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" + kind-of "^6.0.3" minimist@>=1.2.2, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" @@ -7037,7 +6529,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== @@ -7047,11 +6539,6 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - nanoid@^3.1.12: version "3.1.12" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" @@ -7135,7 +6622,7 @@ node-releases@^1.1.69: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7145,6 +6632,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.0.tgz#1f8a7c423b3d2e85eb36985eaf81de381d01301a" + integrity sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw== + dependencies: + hosted-git-info "^3.0.6" + resolve "^1.17.0" + semver "^7.3.2" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -7200,11 +6697,6 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -7316,14 +6808,6 @@ object.fromentries@^2.0.3: es-abstract "^1.18.0-next.1" has "^1.0.3" -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -7393,25 +6877,11 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@~1.0.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= -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -7422,11 +6892,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -7472,10 +6937,10 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +pako@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.3.tgz#cdf475e31b678565251406de9e759196a0ea7a43" + integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== parent-module@^1.0.0: version "1.0.1" @@ -7484,10 +6949,10 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-entities@^1.0.2, parse-entities@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" - integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: character-entities "^1.0.0" character-entities-legacy "^1.0.0" @@ -7528,7 +6993,7 @@ parse5-htmlparser2-tree-adapter@^6.0.0: dependencies: parse5 "^6.0.1" -parse5@5.1.1, parse5@^5.1.1: +parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== @@ -7592,13 +7057,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -7629,7 +7087,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.0, pify@^4.0.1: +pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== @@ -7698,79 +7156,45 @@ postcss-html@^0.36.0: dependencies: htmlparser2 "^3.10.0" -postcss-jsx@^0.36.0: - version "0.36.4" - resolved "https://registry.yarnpkg.com/postcss-jsx/-/postcss-jsx-0.36.4.tgz#37a68f300a39e5748d547f19a747b3257240bd50" - integrity sha512-jwO/7qWUvYuWYnpOb0+4bIIgJt7003pgU3P6nETBLaOyBXuTD55ho21xnals5nBrlpTIFodyd3/jBi6UO3dHvA== - dependencies: - "@babel/core" ">=7.2.2" - -postcss-less@^3.1.0: +postcss-less@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== dependencies: postcss "^7.0.14" -postcss-markdown@^0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560" - integrity sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ== - dependencies: - remark "^10.0.1" - unist-util-find-all-after "^1.0.2" - postcss-media-query-parser@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244" integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ= -postcss-reporter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" - integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== - dependencies: - chalk "^2.4.1" - lodash "^4.17.11" - log-symbols "^2.2.0" - postcss "^7.0.7" - postcss-resolve-nested-selector@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4= -postcss-safe-parser@^4.0.0: +postcss-safe-parser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== dependencies: postcss "^7.0.26" -postcss-sass@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.3.5.tgz#6d3e39f101a53d2efa091f953493116d32beb68c" - integrity sha512-B5z2Kob4xBxFjcufFnhQ2HqJQ2y/Zs/ic5EZbCywCkxKd756Q40cIQ/veRDwSrw1BF6+4wUgmpm0sBASqVi65A== +postcss-sass@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3" + integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg== dependencies: - gonzales-pe "^4.2.3" - postcss "^7.0.1" + gonzales-pe "^4.3.0" + postcss "^7.0.21" -postcss-scss@^2.0.0: +postcss-scss@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.1.1.tgz#ec3a75fa29a55e016b90bf3269026c53c1d2b383" integrity sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA== dependencies: postcss "^7.0.6" -postcss-selector-parser@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -7780,22 +7204,27 @@ postcss-selector-parser@^6.0.2: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + postcss-syntax@^0.36.2: version "0.36.2" resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== -postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.30, postcss@^7.0.6, postcss@^7.0.7: +postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.6: version "7.0.32" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== @@ -7804,6 +7233,15 @@ postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.2 source-map "^0.6.1" supports-color "^6.1.0" +postcss@^7.0.21, postcss@^7.0.32, postcss@^7.0.35: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + postcss@^8.0.2: version "8.0.7" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.0.7.tgz#764d26d8bc64a87af6d945238ae6ef36bf6fc32d" @@ -7965,10 +7403,10 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== raf-schd@^2.1.0: version "2.1.2" @@ -8131,22 +7569,6 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" - integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== - dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -8165,15 +7587,6 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - read-pkg@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" @@ -8231,20 +7644,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: - util.promisify "^1.0.0" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" + indent-string "^4.0.0" + strip-indent "^3.0.0" redux-thunk@^2.2.0: version "2.3.0" @@ -8358,55 +7764,28 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -remark-parse@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" - integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== dependencies: - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^1.1.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^1.0.0" - vfile-location "^2.0.0" - xtend "^4.0.1" + mdast-util-from-markdown "^0.8.0" -remark-stringify@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" - integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== +remark-stringify@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-9.0.1.tgz#576d06e910548b0a7191a71f27b33f1218862894" + integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^1.1.0" - mdast-util-compact "^1.0.0" - parse-entities "^1.0.2" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^1.0.1" - unherit "^1.0.4" - xtend "^4.0.1" + mdast-util-to-markdown "^0.6.0" -remark@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" - integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== dependencies: - remark-parse "^6.0.0" - remark-stringify "^6.0.0" - unified "^7.0.0" + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" remove-trailing-separator@^1.0.1: version "1.1.0" @@ -8418,16 +7797,11 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.0.0, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 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= - request-promise-core@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" @@ -8480,11 +7854,6 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -8507,11 +7876,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -8572,13 +7936,6 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -8958,11 +8315,6 @@ stack-utils@^2.0.2: dependencies: escape-string-regexp "^2.0.0" -state-toggle@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" - integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -8984,22 +8336,10 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" @@ -9109,30 +8449,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" - integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - is-alphanumerical "^1.0.0" - is-hexadecimal "^1.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -9167,10 +8483,12 @@ 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-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: version "3.1.1" @@ -9187,17 +8505,17 @@ style-search@^0.1.0: resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" integrity sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI= -stylelint-config-recommended@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-2.2.0.tgz#46ab139db4a0e7151fd5f94af155512886c96d3f" - integrity sha512-bZ+d4RiNEfmoR74KZtCKmsABdBJr4iXRiCso+6LtMJPw5rd/KnxUWTxht7TbafrTJK1YRjNgnN0iVZaJfc3xJA== +stylelint-config-recommended@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz#e0e547434016c5539fe2650afd58049a2fd1d657" + integrity sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ== -stylelint-config-standard@^18.3.0: - version "18.3.0" - resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-18.3.0.tgz#a2a1b788d2cf876c013feaff8ae276117a1befa7" - integrity sha512-Tdc/TFeddjjy64LvjPau9SsfVRexmTFqUhnMBrzz07J4p2dVQtmpncRF/o8yZn8ugA3Ut43E6o1GtjX80TFytw== +stylelint-config-standard@^20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz#06135090c9e064befee3d594289f50e295b5e20d" + integrity sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA== dependencies: - stylelint-config-recommended "^2.2.0" + stylelint-config-recommended "^3.0.0" stylelint-scss@^3.18.0: version "3.18.0" @@ -9210,58 +8528,59 @@ stylelint-scss@^3.18.0: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -stylelint@^9.10.1: - version "9.10.1" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-9.10.1.tgz#5f0ee3701461dff1d68284e1386efe8f0677a75d" - integrity sha512-9UiHxZhOAHEgeQ7oLGwrwoDR8vclBKlSX7r4fH0iuu0SfPwFaLkb1c7Q2j1cqg9P7IDXeAV2TvQML/fRQzGBBQ== +stylelint@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.9.0.tgz#93921ee6e11d4556b9f31131f485dc813b68e32a" + integrity sha512-VVWH2oixOAxpWL1vH+V42ReCzBjW2AeqskSAbi8+3OjV1Xg3VZkmTcAqBZfRRvJeF4BvYuDLXebW3tIHxgZDEg== dependencies: - autoprefixer "^9.0.0" + "@stylelint/postcss-css-in-js" "^0.37.2" + "@stylelint/postcss-markdown" "^0.36.2" + autoprefixer "^9.8.6" balanced-match "^1.0.0" - chalk "^2.4.1" - cosmiconfig "^5.0.0" - debug "^4.0.0" - execall "^1.0.0" - file-entry-cache "^4.0.0" - get-stdin "^6.0.0" + chalk "^4.1.0" + cosmiconfig "^7.0.0" + debug "^4.3.1" + execall "^2.0.0" + fast-glob "^3.2.5" + fastest-levenshtein "^1.0.12" + file-entry-cache "^6.0.0" + get-stdin "^8.0.0" global-modules "^2.0.0" - globby "^9.0.0" + globby "^11.0.2" globjoin "^0.1.4" - html-tags "^2.0.0" - ignore "^5.0.4" - import-lazy "^3.1.0" + html-tags "^3.1.0" + ignore "^5.1.8" + import-lazy "^4.0.0" imurmurhash "^0.1.4" - known-css-properties "^0.11.0" - leven "^2.1.0" - lodash "^4.17.4" - log-symbols "^2.0.0" - mathml-tag-names "^2.0.1" - meow "^5.0.0" - micromatch "^3.1.10" + known-css-properties "^0.20.0" + lodash "^4.17.20" + log-symbols "^4.0.0" + mathml-tag-names "^2.1.3" + meow "^9.0.0" + micromatch "^4.0.2" normalize-selector "^0.2.0" - pify "^4.0.0" - postcss "^7.0.13" + postcss "^7.0.35" postcss-html "^0.36.0" - postcss-jsx "^0.36.0" - postcss-less "^3.1.0" - postcss-markdown "^0.36.0" + postcss-less "^3.1.4" postcss-media-query-parser "^0.2.3" - postcss-reporter "^6.0.0" postcss-resolve-nested-selector "^0.1.1" - postcss-safe-parser "^4.0.0" - postcss-sass "^0.3.5" - postcss-scss "^2.0.0" - postcss-selector-parser "^3.1.0" + postcss-safe-parser "^4.0.2" + postcss-sass "^0.4.4" + postcss-scss "^2.1.1" + postcss-selector-parser "^6.0.4" postcss-syntax "^0.36.2" - postcss-value-parser "^3.3.0" - resolve-from "^4.0.0" - signal-exit "^3.0.2" - slash "^2.0.0" + postcss-value-parser "^4.1.0" + resolve-from "^5.0.0" + slash "^3.0.0" specificity "^0.4.1" - string-width "^3.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" style-search "^0.1.0" sugarss "^2.0.0" svg-tags "^1.0.0" - table "^5.0.0" + table "^6.0.7" + v8-compile-cache "^2.2.0" + write-file-atomic "^3.0.3" sugarss@^2.0.0: version "2.0.0" @@ -9270,13 +8589,6 @@ sugarss@^2.0.0: dependencies: postcss "^7.0.2" -supports-color@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= - dependencies: - has-flag "^2.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9328,7 +8640,7 @@ 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== -table@^5.0.0, table@^5.2.3: +table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== @@ -9338,7 +8650,7 @@ table@^5.0.0, table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.4: +table@^6.0.4, table@^6.0.7: version "6.0.7" resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== @@ -9361,16 +8673,6 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -9478,25 +8780,15 @@ tr46@^2.0.2: dependencies: punycode "^2.1.1" -tree-kill@^1.2.1: +tree-kill@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - -trim-trailing-lines@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" - integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== - -trim@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" - integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== trough@^1.0.0: version "1.0.5" @@ -9576,6 +8868,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -9593,11 +8890,6 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^3.9.7: - version "3.9.7" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" - integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== - typescript@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" @@ -9608,14 +8900,6 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== -unherit@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" - integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== - dependencies: - inherits "^2.0.0" - xtend "^4.0.0" - unhomoglyph@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.6.tgz#ea41f926d0fcf598e3b8bb2980c2ddac66b081d3" @@ -9644,19 +8928,17 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unified@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" - integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== +unified@^9.1.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: - "@types/unist" "^2.0.0" - "@types/vfile" "^3.0.0" bail "^1.0.0" extend "^3.0.0" - is-plain-obj "^1.1.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" trough "^1.0.0" - vfile "^3.0.0" - x-is-string "^0.1.0" + vfile "^4.0.0" union-value@^1.0.0: version "1.0.1" @@ -9673,29 +8955,17 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -unist-util-find-all-after@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-1.0.5.tgz#5751a8608834f41d117ad9c577770c5f2f1b2899" - integrity sha512-lWgIc3rrTMTlK1Y0hEuL+k+ApzFk78h+lsaa2gHf63Gp5Ww+mt11huDniuaoq1H+XMK2lIIjjPkncxXcDp3QDw== +unist-util-find-all-after@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6" + integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ== dependencies: - unist-util-is "^3.0.0" + unist-util-is "^4.0.0" -unist-util-is@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" - integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== - -unist-util-remove-position@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" - integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== - dependencies: - unist-util-visit "^1.1.0" - -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" - integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== +unist-util-is@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.4.tgz#3e9e8de6af2eb0039a59f50c9b3e99698a924f50" + integrity sha512-3dF39j/u423v4BBQrk1AQ2Ve1FxY5W3JKwXxVFzBODQ6WEvccguhgp802qQLKSnxPODE6WuRZtV+ohlUg4meBA== unist-util-stringify-position@^2.0.0: version "2.0.3" @@ -9704,20 +8974,6 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" -unist-util-visit-parents@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" - integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== - dependencies: - unist-util-is "^3.0.0" - -unist-util-visit@^1.1.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" - integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== - dependencies: - unist-util-visit-parents "^2.0.0" - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -9769,21 +9025,11 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -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= -util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" @@ -9799,6 +9045,11 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-compile-cache@^2.2.0: + 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@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" @@ -9830,12 +9081,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vfile-location@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" - integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== - -vfile-message@*: +vfile-message@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== @@ -9843,22 +9089,15 @@ vfile-message@*: "@types/unist" "^2.0.0" unist-util-stringify-position "^2.0.0" -vfile-message@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" - integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== - dependencies: - unist-util-stringify-position "^1.1.1" - -vfile@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" - integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: + "@types/unist" "^2.0.0" is-buffer "^2.0.0" - replace-ext "1.0.0" - unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" w3c-hr-time@^1.0.2: version "1.0.2" @@ -9990,14 +9229,6 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -10021,16 +9252,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -10052,11 +9274,6 @@ ws@^7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== -x-is-string@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" - integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= - xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -10067,12 +9284,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -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== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -10082,20 +9294,10 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +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== yargs-parser@^13.1.2: version "13.1.2" @@ -10113,25 +9315,12 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" +yargs-parser@^20.2.3: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs@^13.2.4: +yargs@^13.2.4, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -10164,6 +9353,11 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== + zxcvbn@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30" From 0cb266eda270ca0d359dbf8a2bd5facb549dd3c1 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 13:07:52 +0000 Subject: [PATCH 198/275] lolex renamed to @sinonjs/fake-timers --- package.json | 2 +- test/UserActivity-test.js | 6 +++--- yarn.lock | 14 +++++++------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index c5392d32b0..7f2f4d6a47 100644 --- a/package.json +++ b/package.json @@ -124,6 +124,7 @@ "@babel/register": "^7.12.10", "@babel/traverse": "^7.12.12", "@peculiar/webcrypto": "^1.1.4", + "@sinonjs/fake-timers": "^7.0.2", "@types/classnames": "^2.2.11", "@types/counterpart": "^0.18.1", "@types/flux": "^3.1.9", @@ -157,7 +158,6 @@ "jest": "^26.6.3", "jest-canvas-mock": "^2.3.0", "jest-environment-jsdom-sixteen": "^1.0.3", - "lolex": "^6.0.0", "matrix-mock-request": "^1.2.3", "matrix-react-test-utils": "^0.2.2", "olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz", diff --git a/test/UserActivity-test.js b/test/UserActivity-test.js index 51fb720bce..2c622b2638 100644 --- a/test/UserActivity-test.js +++ b/test/UserActivity-test.js @@ -1,5 +1,5 @@ /* -Copyright 2019 New Vector Ltd +Copyright 2019, 2021 New Vector Ltd Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import lolex from 'lolex'; +import FakeTimers from '@sinonjs/fake-timers'; import EventEmitter from 'events'; import UserActivity from '../src/UserActivity'; @@ -39,7 +39,7 @@ describe('UserActivity', function() { fakeDocument = new FakeDomEventEmitter(); userActivity = new UserActivity(fakeWindow, fakeDocument); userActivity.start(); - clock = lolex.install(); + clock = FakeTimers.install(); }); afterEach(function() { diff --git a/yarn.lock b/yarn.lock index 9cba2b531f..83cbafb882 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1798,6 +1798,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@sinonjs/fake-timers@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.0.2.tgz#a53e71d4154ee704ea9b36a6d0b0780e246fadd1" + integrity sha512-dF84L5YC90gIOegPDCYymPIsDmwMWWSh7BwfDXQYePi8lVIEp7IZ1UVGkME8FjXOsDPxan12x4aaK+Lo6wVh9A== + dependencies: + "@sinonjs/commons" "^1.7.0" + "@stylelint/postcss-css-in-js@^0.37.2": version "0.37.2" resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2" @@ -6243,13 +6250,6 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" -lolex@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-6.0.0.tgz#790de1911da46e67e4b60c94859d19e2db0bb7e9" - integrity sha512-ad9IBHbfVJ3bPAotDxnCgJgKcNK5/mrRAfbJzXhY5+PEmuBWP7wyHQlA6L8TfSfPlqlDjY4K7IG6mbzsrIBx1A== - dependencies: - "@sinonjs/commons" "^1.7.0" - longest-streak@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" From ea706189a2358d1295fbd61451f4354c768f3bca Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 13:10:01 +0000 Subject: [PATCH 199/275] Nested upgrades via `yarn upgrade` --- yarn.lock | 1718 ++++++++++++----------------------------------------- 1 file changed, 389 insertions(+), 1329 deletions(-) diff --git a/yarn.lock b/yarn.lock index 83cbafb882..babe59c1bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,28 +19,7 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a" - integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg== - dependencies: - "@babel/highlight" "^7.10.3" - -"@babel/code-frame@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.1.tgz#d5481c5095daa1c57e16e54c6f9198443afb49ff" - integrity sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw== - dependencies: - "@babel/highlight" "^7.10.1" - -"@babel/code-frame@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.12.11": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== @@ -52,7 +31,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== -"@babel/core@>=7.9.0", "@babel/core@^7.12.10": +"@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.7.5": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== @@ -73,78 +52,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.2.tgz#bd6786046668a925ac2bd2fd95b579b92a23b36a" - integrity sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.2" - "@babel/helper-module-transforms" "^7.10.1" - "@babel/helpers" "^7.10.1" - "@babel/parser" "^7.10.2" - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.2" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.7.5": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.1", "@babel/generator@^7.10.2": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.2.tgz#0fa5b5b2389db8bfdfcc3492b551ee20f5dd69a9" - integrity sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA== - dependencies: - "@babel/types" "^7.10.2" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/generator@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.5.tgz#1b903554bc8c583ee8d25f1e8969732e6b829a69" - integrity sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig== - dependencies: - "@babel/types" "^7.10.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== - dependencies: - "@babel/types" "^7.11.5" - jsesc "^2.5.1" - source-map "^0.5.0" - "@babel/generator@^7.12.1", "@babel/generator@^7.12.10", "@babel/generator@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" @@ -154,21 +61,7 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" - integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-annotate-as-pure@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" - integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-annotate-as-pure@^7.12.10": +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== @@ -204,15 +97,6 @@ "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-regexp-features-plugin@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" - integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.1" - "@babel/helper-regex" "^7.10.1" - regexpu-core "^4.7.0" - "@babel/helper-create-regexp-features-plugin@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f" @@ -231,32 +115,13 @@ 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.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz#92bd63829bfc9215aca9d9defa85f56b539454f4" - integrity sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== - dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/helper-function-name@^7.12.11": +"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== @@ -265,20 +130,6 @@ "@babel/template" "^7.12.7" "@babel/types" "^7.12.11" -"@babel/helper-get-function-arity@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz#7303390a81ba7cb59613895a192b93850e373f7d" - integrity sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" - "@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" @@ -293,20 +144,6 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz#432967fd7e12a4afef66c4687d4ca22bc0456f15" - integrity sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz#172f56e7a63e78112f3a04055f24365af702e7ee" - integrity sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA== - dependencies: - "@babel/types" "^7.10.5" - "@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" @@ -314,20 +151,6 @@ dependencies: "@babel/types" "^7.12.7" -"@babel/helper-module-imports@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz#dd331bd45bccc566ce77004e9d05fe17add13876" - integrity sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg== - dependencies: - "@babel/types" "^7.10.1" - -"@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== - dependencies: - "@babel/types" "^7.10.4" - "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" @@ -335,32 +158,6 @@ dependencies: "@babel/types" "^7.12.5" -"@babel/helper-module-transforms@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" - integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== - dependencies: - "@babel/helper-module-imports" "^7.10.1" - "@babel/helper-replace-supers" "^7.10.1" - "@babel/helper-simple-access" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - lodash "^4.17.13" - -"@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== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" - "@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" @@ -376,44 +173,18 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" -"@babel/helper-optimise-call-expression@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz#b4a1f2561870ce1247ceddb02a3860fa96d72543" - integrity sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-optimise-call-expression@^7.12.10": +"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== dependencies: "@babel/types" "^7.12.10" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz#ec5a5cf0eec925b66c60580328b122c01230a127" - integrity sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA== - -"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-regex@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" - integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== - dependencies: - lodash "^4.17.13" - "@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" @@ -423,26 +194,6 @@ "@babel/helper-wrap-function" "^7.10.4" "@babel/types" "^7.12.1" -"@babel/helper-replace-supers@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" - integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.1" - "@babel/helper-optimise-call-expression" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.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== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-replace-supers@^7.12.1": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" @@ -453,22 +204,6 @@ "@babel/traverse" "^7.12.10" "@babel/types" "^7.12.11" -"@babel/helper-simple-access@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" - integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/types" "^7.10.1" - -"@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== - dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" @@ -483,45 +218,14 @@ dependencies: "@babel/types" "^7.12.1" -"@babel/helper-split-export-declaration@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" - integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== - dependencies: - "@babel/types" "^7.10.1" - -"@babel/helper-split-export-declaration@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" - integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== - dependencies: - "@babel/types" "^7.11.0" - -"@babel/helper-split-export-declaration@^7.12.11": +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== dependencies: "@babel/types" "^7.12.11" -"@babel/helper-validator-identifier@^7.10.1", "@babel/helper-validator-identifier@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" - integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-identifier@^7.12.11": +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== @@ -532,33 +236,15 @@ integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== "@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.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" - integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== - dependencies: - "@babel/template" "^7.10.1" - "@babel/traverse" "^7.10.1" - "@babel/types" "^7.10.1" - -"@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== - dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" - "@babel/helpers@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" @@ -568,15 +254,6 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" -"@babel/highlight@^7.10.1", "@babel/highlight@^7.10.3": - version "7.10.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d" - integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw== - dependencies: - "@babel/helper-validator-identifier" "^7.10.3" - chalk "^2.0.0" - js-tokens "^4.0.0" - "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -586,22 +263,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.1", "@babel/parser@^7.10.2", "@babel/parser@^7.7.0": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.2.tgz#871807f10442b92ff97e4783b9b54f6a0ca812d0" - integrity sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ== - -"@babel/parser@^7.10.4", "@babel/parser@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" - integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== - -"@babel/parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== - -"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== @@ -722,7 +384,7 @@ "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.12.1": +"@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== @@ -730,14 +392,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" - integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -752,20 +406,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.1": +"@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-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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@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" @@ -936,7 +583,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.12.1": +"@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== @@ -944,14 +591,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" - integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.1" - "@babel/helper-plugin-utils" "^7.10.1" - "@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" @@ -1284,9 +923,9 @@ "@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" @@ -1325,39 +964,14 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.2.tgz#d103f21f2602497d38348a32e008637d506db839" - integrity sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.12.5": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.10.1": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.1.tgz#e167154a94cb5f14b28dc58f5356d2162f539811" - integrity sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" - -"@babel/template@^7.10.4", "@babel/template@^7.3.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/template@^7.12.7": +"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== @@ -1366,52 +980,7 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.1", "@babel/traverse@^7.7.0": - version "7.10.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.1.tgz#bbcef3031e4152a6c0b50147f4958df54ca0dd27" - integrity sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ== - dependencies: - "@babel/code-frame" "^7.10.1" - "@babel/generator" "^7.10.1" - "@babel/helper-function-name" "^7.10.1" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.1" - "@babel/types" "^7.10.1" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/traverse@^7.10.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" - integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/types" "^7.10.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.12", "@babel/traverse@^7.12.5": +"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.12", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== @@ -1426,43 +995,7 @@ globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.10.1", "@babel/types@^7.10.2", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.10.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.2.tgz#30283be31cad0dbf6fb00bd40641ca0ea675172d" - integrity sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng== - dependencies: - "@babel/helper-validator-identifier" "^7.10.1" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.10.4", "@babel/types@^7.10.5": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" - integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" - integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.11.5", "@babel/types@^7.3.3": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7": +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== @@ -1746,17 +1279,7 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" -"@peculiar/asn1-schema@^2.0.12": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.0.17.tgz#5c5fcdabefacb1f0fc1579f333f70057d58ab211" - integrity sha512-7rJD8bR1r6NFE4skDxXsLsFEO3zM2TfjX9wdq5SERoBNEuxGkAJ3uIH84sIMxvDgJtb3cMfLsv8iNpGN0nAWdw== - dependencies: - "@types/asn1js" "^0.0.1" - asn1js "^2.0.26" - pvtsutils "^1.0.11" - tslib "^2.0.1" - -"@peculiar/asn1-schema@^2.0.26": +"@peculiar/asn1-schema@^2.0.12", "@peculiar/asn1-schema@^2.0.26": version "2.0.27" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.0.27.tgz#1ee3b2b869ff3200bcc8ec60e6c87bd5a6f03fe0" integrity sha512-1tIx7iL3Ma3HtnNS93nB7nhyI0soUJypElj9owd4tpMrRDmeJ8eZubsdq1sb0KSaCs5RqZNoABCP6m5WtnlVhQ== @@ -1785,9 +1308,9 @@ webcrypto-core "^1.1.8" "@sinonjs/commons@^1.7.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" - integrity sha512-wEj54PfsZ5jGSwMX68G8ZXFawcSglQSXqCftWX3ec8MDUzQdHgcKvw97awHbY0efQEL5iKUOAmmVtoYgmrSG4Q== + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== dependencies: type-detect "4.0.8" @@ -1820,22 +1343,15 @@ remark "^13.0.0" unist-util-find-all-after "^3.0.2" -"@types/asn1js@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-0.0.1.tgz#ef8b9f9708cb1632a1c3a9cd27717caabe793bc2" - integrity sha1-74uflwjLFjKhw6nNJ3F8qr55O8I= - dependencies: - "@types/pvutils" "*" - "@types/asn1js@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-2.0.0.tgz#10ca75692575744d0117098148a8dc84cbee6682" integrity sha512-Jjzp5EqU0hNpADctc/UqhiFbY1y2MqIxBVa2S4dBlbnZHTLPMuggoL5q43X63LpsOIINRDirBjP56DUUKIUWIA== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.10" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.10.tgz#ca58fc195dd9734e77e57c6f2df565623636ab40" - integrity sha512-x8OM8XzITIMyiwl5Vmo2B1cR1S1Ipkyv4mdlbJjMa1lmuKvKY9FrBbEANIaMlnWn5Rf7uO+rC/VgYabNkE17Hw== + 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" @@ -1844,31 +1360,24 @@ "@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.12" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.12.tgz#22f49a028e69465390f87bb103ebd61bd086b8f5" - integrity sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/babel__traverse@^7.0.4": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== dependencies: "@babel/types" "^7.3.0" @@ -1877,11 +1386,6 @@ resolved "https://registry.yarnpkg.com/@types/classnames/-/classnames-2.2.11.tgz#2521cc86f69d15c5b90664e4829d84566052c1cf" integrity sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw== -"@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/counterpart@^0.18.1": version "0.18.1" resolved "https://registry.yarnpkg.com/@types/counterpart/-/counterpart-0.18.1.tgz#b1b784d9e54d9879f0a8cb12f2caedab65430fe8" @@ -1906,18 +1410,13 @@ "@types/react" "*" "@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/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5" - integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w== - -"@types/istanbul-lib-coverage@^2.0.1": +"@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" integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== @@ -1953,9 +1452,9 @@ pretty-format "^26.0.0" "@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== "@types/json5@^0.0.29": version "0.0.29" @@ -1991,12 +1490,7 @@ resolved "https://registry.yarnpkg.com/@types/modernizr/-/modernizr-3.5.3.tgz#8ef99e6252191c1d88647809109dc29884ba6d7a" integrity sha512-jhMOZSS0UGYTS9pqvt6q3wtT3uvOSve5piTEmTMx3zzTuBLvSIMxSIBIc3d5lajVD5h4xc41AMZD2M5orN3PxA== -"@types/node@*": - version "14.0.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.11.tgz#61d4886e2424da73b7b25547f59fdcb534c165a3" - integrity sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg== - -"@types/node@^14.14.22": +"@types/node@*", "@types/node@^14.14.22": version "14.14.22" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== @@ -2017,20 +1511,15 @@ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.1.tgz#be148756d5480a84cde100324c03a86ae5739fb5" - integrity sha512-2zs+O+UkDsJ1Vcp667pd3f8xearMdopz/z54i99wtRDI5KLmngk7vlrYZD0ZjKHaROR03EznlBbVY9PfAEyJIQ== + version "2.1.6" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.6.tgz#f4b1efa784e8db479cdb8b14403e2144b1e9ff03" + integrity sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA== "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== -"@types/pvutils@*": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@types/pvutils/-/pvutils-0.0.2.tgz#e21684962cfa58ac920fd576d90556032dc86009" - integrity sha512-CgQAm7pjyeF3Gnv78ty4RBVIfluB+Td+2DR8iPaU0prF18pkzptHHP+DoKPfpsJYknKsVZyVsJEu5AuGgAqQ5w== - "@types/qrcode@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.3.5.tgz#9c97cc2875f03e2b16a0d89856fc48414e380c38" @@ -2083,14 +1572,14 @@ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== "@types/yargs@^15.0.0": - version "15.0.7" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.7.tgz#dad50a7a234a35ef9460737a56024287a3de1d2b" - integrity sha512-Gf4u3EjaPNcC9cTu4/j2oN14nSVhr8PQ+BvBcBQHAhDZfl0bVIiLgvnRXv/dn58XhTm9UXvBpvJpDlwV65QxOA== + version "15.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.12.tgz#6234ce3e3e3fa32c5db301a170f96a599c960d74" + integrity sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw== dependencies: "@types/yargs-parser" "*" @@ -2183,12 +1672,7 @@ acorn-globals@^6.0.0: acorn "^7.1.1" 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== - -acorn-jsx@^5.3.1: +acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: 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== @@ -2198,12 +1682,7 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" - integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== - -acorn@^7.4.0: +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== @@ -2223,17 +1702,7 @@ airbnb-prop-types@^2.16.0: prop-types-exact "^1.2.0" react-is "^16.13.1" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2258,10 +1727,10 @@ another-json@^0.2.0: resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" integrity sha1-tfQBnJc7bdXGUGotk0acttMq7tw= -ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1: version "4.3.1" @@ -2287,21 +1756,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.0.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" -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== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2345,16 +1806,7 @@ array-filter@^1.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= -array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" - -array-includes@^3.1.2: +array-includes@^3.1.1, array-includes@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== @@ -2384,20 +1836,22 @@ array.prototype.find@^2.1.1: es-abstract "^1.17.4" array.prototype.flat@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" array.prototype.flatmap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" - integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" function-bind "^1.1.1" arrify@^1.0.1: @@ -2483,9 +1937,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" - integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== babel-eslint@^10.0.1, babel-eslint@^10.1.0: version "10.1.0" @@ -2592,10 +2046,10 @@ base-x@^3.0.2: dependencies: safe-buffer "^5.0.1" -base64-js@^1.0.2: - 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== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" @@ -2623,9 +2077,9 @@ binary-extensions@^1.0.0: integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== bluebird@^3.5.0: version "3.7.2" @@ -2637,7 +2091,7 @@ blueimp-canvas-to-blob@^3.28.0: resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.28.0.tgz#c8ab4dc6bb08774a7f273798cdf94b0776adf6c8" integrity sha512-5q+YHzgGsuHQ01iouGgJaPJXod2AzTxJXmVv90PpGrRxU7G7IqgPqWXz+PBmt3520jKKi6irWbNV87DicEa7wg== -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -2688,17 +2142,7 @@ browser-request@^0.3.3: resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" integrity sha1-ns5bWsqJopkyJC4Yv5M975h2zBc= -browserslist@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" - integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== - dependencies: - caniuse-lite "^1.0.30001043" - electron-to-chromium "^1.3.413" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -browserslist@^4.14.5, browserslist@^4.16.1: +browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.1: version "4.16.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766" integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA== @@ -2747,12 +2191,12 @@ buffer-from@^1.0.0, buffer-from@^1.1.1: integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer@^5.4.3: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" cache-base@^1.0.1: version "1.0.1" @@ -2797,14 +2241,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== - -caniuse-lite@^1.0.30001043: - version "1.0.30001079" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001079.tgz#ed3e5225cd9a6850984fdd88bf24ce45d69b9c22" - integrity sha512-2KaYheg0iOY+CMmDuAB3DHehrXhhb4OZU4KBVGDr/YKyYAcpudaiUQ9PJ9rxrPlKEoJ3ATasQ5AN48MqpwS43Q== + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001173: version "1.0.30001178" @@ -2884,19 +2323,7 @@ cheerio-select-tmp@^0.1.0: domhandler "^4.0.0" domutils "^2.4.4" -cheerio@^1.0.0-rc.3: - 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" - -cheerio@^1.0.0-rc.5: +cheerio@^1.0.0-rc.3, cheerio@^1.0.0-rc.5: version "1.0.0-rc.5" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.5.tgz#88907e1828674e8f9fee375188b27dadd4f0fa2f" integrity sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw== @@ -3131,9 +2558,9 @@ core-js@^1.0.0: integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= core-js@^2.4.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -3198,21 +2625,6 @@ css-select@^3.1.2: domutils "^2.4.3" nth-check "^2.0.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= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - css-what@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" @@ -3245,11 +2657,6 @@ cssstyle@^2.2.0: dependencies: cssom "~0.3.6" -csstype@^2.6.7: - version "2.6.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" - integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== - csstype@^3.0.2: version "3.0.6" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" @@ -3288,14 +2695,7 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - 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" - -debug@^4.3.1: +debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -3335,7 +2735,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -define-properties@^1.1.2, define-properties@^1.1.3, define-properties@~1.1.2: +define-properties@^1.1.3, define-properties@~1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -3374,10 +2774,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== -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== +detect-node-es@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.0.0.tgz#c0318b9e539a5256ca780dd9575c9345af05b8ed" + integrity sha512-S4AHriUkTX9FoFvL4G8hXDcx6t3gp2HpfCza3Q0v6S78gul2hKWifLQbeW+ZF89+hSm2ZIc/uF3J97ZgytgTRg== diff-dom@^4.2.2: version "4.2.2" @@ -3434,14 +2834,14 @@ doctrine@^3.0.0: esutils "^2.0.2" dom-helpers@^5.0.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" - integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + version "5.2.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.0.tgz#57fd054c5f8f34c52a3eeffdb7e7e93cd357d95b" + integrity sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ== dependencies: "@babel/runtime" "^7.8.7" - csstype "^2.6.7" + csstype "^3.0.2" -dom-serializer@0, dom-serializer@^0.2.1: +dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== @@ -3458,25 +2858,12 @@ dom-serializer@^1.0.1, dom-serializer@~1.2.0: domhandler "^4.0.0" 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" - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: +domelementtype@1, 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== - -domelementtype@^2.1.0: +domelementtype@^2.0.1, domelementtype@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== @@ -3496,9 +2883,9 @@ domhandler@^2.3.0: domelementtype "1" domhandler@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" - integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== dependencies: domelementtype "^2.0.1" @@ -3509,14 +2896,6 @@ domhandler@^4.0.0: dependencies: domelementtype "^2.1.0" -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -3525,16 +2904,7 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" -domutils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" - integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== - dependencies: - dom-serializer "^0.2.1" - domelementtype "^2.0.1" - domhandler "^3.0.0" - -domutils@^2.4.3, domutils@^2.4.4: +domutils@^2.0.0, domutils@^2.4.3, domutils@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== @@ -3551,20 +2921,15 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.413: - version "1.3.464" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.464.tgz#fe13feaa08f6f865d3c89d5d72e54c194f463aa5" - integrity sha512-Oo+0+CN9d2z6FToQW6Hwvi9ez09Y/usKwr0tsDsyg43a871zVJCi1nR0v03djLbRNcaCKjtrnVf2XJhTxEpPCg== - electron-to-chromium@^1.3.634: version "1.3.642" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== 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@^7.0.1: version "7.0.3" @@ -3587,11 +2952,11 @@ emojibase-regex@^4.1.1: integrity sha512-KSigB1zQkNKFygLZ5bAfHs87LJa1ni8QTQtq8lc53Y74NF3Dk2r7kfa8MpooTO8JBb5Xz660X4tSjDB+I+7elA== 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.1.0: version "1.4.4" @@ -3601,27 +2966,27 @@ end-of-stream@^1.1.0: once "^1.4.0" enquirer@^2.3.5: - version "2.3.5" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" - integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - ansi-colors "^3.2.1" + 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: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - -entities@~2.1.0: +entities@^2.0.0, entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== +entities@~2.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + enzyme-adapter-react-16@^1.15.6: version "1.15.6" resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" @@ -3650,15 +3015,7 @@ enzyme-adapter-utils@^1.14.0: prop-types "^15.7.2" semver "^5.7.1" -enzyme-shallow-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.1.tgz#7afe03db3801c9b76de8440694096412a8d9d49e" - integrity sha512-hGA3i1so8OrYOZSM9whlkNmVHOicJpsjgTzC+wn2JMJXhq1oO4kA4bJ5MsfzSIcC71aLDKzJ6gZpIxrqt3QTAQ== - dependencies: - has "^1.0.3" - object-is "^1.0.2" - -enzyme-shallow-equal@^1.0.4: +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== @@ -3701,22 +3058,22 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, 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== +es-abstract@^1.17.0-next.1, es-abstract@^1.17.4: + 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.1: version "1.18.0-next.2" @@ -3739,11 +3096,12 @@ es-abstract@^1.18.0-next.1: string.prototype.trimstart "^1.0.3" es-get-iterator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" + integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.0" + get-intrinsic "^1.0.1" has-symbols "^1.0.1" is-arguments "^1.0.4" is-map "^2.0.1" @@ -3853,7 +3211,7 @@ eslint-config-recommended@^4.1.0: eslint-config-node "^4.1.0" eslint-config-react-native "^4.1.0" -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== @@ -3869,14 +3227,7 @@ eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-babel@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz#2e7f251ccc249326da760c1a4c948a91c32d0023" - integrity sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w== - dependencies: - eslint-rule-composer "^0.3.0" - -eslint-plugin-babel@^5.3.1: +eslint-plugin-babel@^5.2.1, eslint-plugin-babel@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz#75a2413ffbf17e7be57458301c60291f2cfbf560" integrity sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g== @@ -3892,16 +3243,16 @@ eslint-plugin-flowtype@^5.2.0: string-natural-compare "^3.0.1" eslint-plugin-import@^2.14.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" @@ -3921,30 +3272,14 @@ eslint-plugin-react-native-globals@^0.1.1: integrity sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g== eslint-plugin-react-native@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-3.8.1.tgz#92811e37191ecb0d29c0f0a0c9e5c943ee573821" - integrity sha512-6Z4s4nvgFRdda/1s1+uu4a6EMZwEjjJ9Bk/1yBImv0fd9U2CsGu2cUakAtV83cZKhizbWhSouXoaK4JtlScdFg== + version "3.10.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-native/-/eslint-plugin-react-native-3.10.0.tgz#240f7e6979a908af3dfd9ba9652434c33f4d64cd" + integrity sha512-4f5+hHYYq5wFhB5eptkPEAR7FfvqbS7AzScUOANfAMZtYw5qgnCxRq45bpfBaQF+iyPMim5Q8pubcpvLv75NAg== dependencies: + "@babel/traverse" "^7.7.4" eslint-plugin-react-native-globals "^0.1.1" -eslint-plugin-react@^7.19.0: - version "7.20.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz#0590525e7eb83890ce71f73c2cf836284ad8c2f1" - integrity sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg== - 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" - object.entries "^1.1.2" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.17.0" - string.prototype.matchall "^4.0.2" - -eslint-plugin-react@^7.22.0: +eslint-plugin-react@^7.19.0, eslint-plugin-react@^7.22.0: version "7.22.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== @@ -3966,15 +3301,7 @@ eslint-rule-composer@^0.3.0: resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== -eslint-scope@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" - integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.1.1: +eslint-scope@^5.0.0, 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== @@ -3989,14 +3316,7 @@ eslint-utils@^1.4.3: dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" - integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.1.0: +eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== @@ -4129,13 +3449,6 @@ esquery@^1.0.1, 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== - dependencies: - estraverse "^4.1.0" - esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" @@ -4143,17 +3456,12 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -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.2.0: +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== @@ -4194,9 +3502,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" @@ -4559,12 +3867,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@~2.3.1: +fsevents@^2.1.2, fsevents@~2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== @@ -4574,16 +3877,7 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45" - integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - functions-have-names "^1.2.0" - -function.prototype.name@^1.1.3: +function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.3.tgz#0bb034bb308e7682826f215eb6b2ae64918847fe" integrity sha512-H51qkbNSp8mtkJt+nyW1gyStBiKZxfRqySNUR99ylq6BPXHKI4SEvIlTKp4odLfjRKJV04DFWMU3G/YRlQOsag== @@ -4598,20 +3892,15 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -functions-have-names@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" - integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== - -functions-have-names@^1.2.1: +functions-have-names@^1.2.0, functions-have-names@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== 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@^2.0.1: version "2.0.5" @@ -4768,11 +4057,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" hard-rejection@^2.1.0: @@ -4790,7 +4079,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -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== @@ -4886,7 +4175,7 @@ html-tags@^3.1.0: resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -htmlparser2@^3.10.0, htmlparser2@^3.9.1: +htmlparser2@^3.10.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -4932,17 +4221,24 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@0.4.24, 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.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +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.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" @@ -4959,15 +4255,7 @@ immutable@^3.7.4: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= -import-fresh@^3.0.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== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -5022,14 +4310,14 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inquirer@^7.0.0: - version "7.3.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.2.tgz#25245d2e32dc9f33dbe26eeaada231daa66e9c7c" - integrity sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w== + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.0" @@ -5037,7 +4325,7 @@ inquirer@^7.0.0: cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.16" + lodash "^4.17.19" mute-stream "0.0.8" run-async "^2.4.0" rxjs "^6.6.0" @@ -5099,9 +4387,11 @@ is-alphanumerical@^1.0.0: is-decimal "^1.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -5115,10 +4405,10 @@ is-arrow-function@^2.0.3: dependencies: is-callable "^1.0.4" -is-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" - integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== +is-bigint@^1.0.0, is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== is-binary-path@^1.0.0: version "1.0.1" @@ -5134,10 +4424,12 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.0.0, is-boolean-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" - integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== +is-boolean-object@^1.0.0, is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" is-buffer@^1.1.5: version "1.1.6" @@ -5145,16 +4437,11 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.0.4, is-callable@^1.1.4, is-callable@^1.1.5: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== - -is-callable@^1.2.2: +is-callable@^1.0.4, is-callable@^1.1.4, is-callable@^1.1.5, 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== @@ -5277,9 +4564,9 @@ is-generator-fn@^2.0.0: integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-generator-function@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" - integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw== + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== is-glob@^3.1.0: version "3.1.0" @@ -5308,9 +4595,9 @@ is-ip@^3.1.0: ip-regex "^4.0.0" is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-negative-zero@^2.0.1: version "2.0.1" @@ -5361,14 +4648,7 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-regex@^1.0.3, is-regex@^1.0.4, is-regex@^1.0.5: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" - integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== - dependencies: - has-symbols "^1.0.1" - -is-regex@^1.1.0, is-regex@^1.1.1: +is-regex@^1.0.3, is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.0, 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== @@ -5381,9 +4661,9 @@ is-regexp@^2.0.0: integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" @@ -5949,9 +5229,9 @@ jest@^26.6.3: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - 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== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -6062,14 +5342,6 @@ 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== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - "jsx-ast-utils@^2.4.1 || ^3.0.0": version "3.2.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" @@ -6145,14 +5417,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -line-column@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" - integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= - dependencies: - isarray "^1.0.0" - isobject "^2.0.0" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6197,9 +5461,9 @@ locate-path@^5.0.0: p-locate "^4.1.0" lodash-es@^4.2.1: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" - integrity sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ== + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.20.tgz#29f6332eefc60e849f869c264bc71126ad61e8f7" + integrity sha512-JD1COMZsq8maT6mnuz1UMV0jvYD0E0aUsSOdrr1/nAG3dhqQXwRRgeW0cSqH1U43INKcqxaiVIQNOUDld7gRDA== lodash.escape@^4.0.1: version "4.0.1" @@ -6221,12 +5485,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.2.1: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.17.20: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -6454,17 +5713,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -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.45.0: + 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.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: - mime-db "1.44.0" + mime-db "1.45.0" mimic-fn@^2.1.0: version "2.1.0" @@ -6529,7 +5788,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -6539,10 +5798,10 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanoid@^3.1.12: - version "3.1.12" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" - integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== nanomatch@^1.2.9: version "1.2.13" @@ -6567,15 +5826,14 @@ natural-compare@^1.4.0: integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= nearley@^2.7.10: - version "2.19.3" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.3.tgz#ae3b040e27616b5348102c436d1719209476a5a1" - integrity sha512-FpAy1PmTsUpOtgxr23g4jRNvJHYzZEW2PixXeSzksLR/ykPfwKhAodc2+9wQhY+JneWLcvkDw6q7FJIsIdF/aQ== + version "2.20.1" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== dependencies: commander "^2.19.0" moo "^0.5.0" railroad-diagrams "^1.0.0" randexp "0.4.6" - semver "^5.4.1" nice-try@^1.0.4: version "1.0.5" @@ -6612,11 +5870,6 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^1.1.53: - version "1.1.58" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" - integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== - node-releases@^1.1.69: version "1.1.70" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" @@ -6685,13 +5938,6 @@ nth-check@^2.0.0: dependencies: boolbase "^1.0.0" -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - num2fraction@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" @@ -6721,25 +5967,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.1.0, 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.9.0: +object-inspect@^1.1.0, object-inspect@^1.7.0, object-inspect@^1.8.0, object-inspect@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== -object-is@^1.0.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -object-is@^1.1.2: +object-is@^1.0.2, object-is@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== @@ -6747,7 +5980,7 @@ object-is@^1.1.2: call-bind "^1.0.0" define-properties "^1.1.3" -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.9, object-keys@^1.1.1: +object-keys@^1.0.12, object-keys@^1.0.9, 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== @@ -6759,17 +5992,7 @@ 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== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.assign@^4.1.2: +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -6780,25 +6003,16 @@ object.assign@^4.1.2: object-keys "^1.1.1" object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" has "^1.0.3" -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.fromentries@^2.0.3: +object.fromentries@^2.0.2, object.fromentries@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072" integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw== @@ -6815,17 +6029,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.values@^1.1.2: +object.values@^1.1.1, object.values@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== @@ -6847,9 +6051,9 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: wrappy "1" onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + 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" @@ -6883,9 +6087,9 @@ os-tmpdir@~1.0.2: integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-finally@^1.0.0: version "1.0.0" @@ -6977,9 +6181,9 @@ parse-json@^4.0.0: json-parse-better-errors "^1.0.1" parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" @@ -6998,13 +6202,6 @@ 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" "*" - parse5@^6.0.0, parse5@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" @@ -7120,13 +6317,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - pluralizers@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/pluralizers/-/pluralizers-0.1.7.tgz#8d38dd0a1b660e739b10ab2eab10b684c9d50142" @@ -7195,16 +6385,7 @@ postcss-scss@^2.1.1: dependencies: postcss "^7.0.6" -postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.4: +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== @@ -7224,16 +6405,7 @@ postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.6: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.21, postcss@^7.0.32, postcss@^7.0.35: +postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.6: version "7.0.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== @@ -7243,13 +6415,12 @@ postcss@^7.0.21, postcss@^7.0.32, postcss@^7.0.35: supports-color "^6.1.0" postcss@^8.0.2: - version "8.0.7" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.0.7.tgz#764d26d8bc64a87af6d945238ae6ef36bf6fc32d" - integrity sha512-LTCMGOjmC/CGWV/azk3h34u6TNj1s9p4XleEiW8yA3j+8k+z3mnv5V7yyREvWDKlkel8GxqhjEZJ+JXWTzKPWw== + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.4.tgz#20a98a39cf303d15129c2865a9ec37eda0031d04" + integrity sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg== dependencies: colorette "^1.2.1" - line-column "^1.0.2" - nanoid "^3.1.12" + nanoid "^3.1.20" source-map "^0.6.1" prelude-ls@^1.2.1: @@ -7272,11 +6443,6 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: ansi-styles "^4.0.0" react-is "^17.0.1" -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -7303,12 +6469,12 @@ promise@^7.0.3, promise@^7.1.1: asap "~2.0.3" 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-exact@^1.2.0: version "1.2.0" @@ -7351,14 +6517,7 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pvtsutils@^1.0.11: - version "1.0.14" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.0.14.tgz#002a07d5a47b00aa9191889e450493390ebffefc" - integrity sha512-X9SBWQ9ceNAEEgLweoE7m7P6LDnZ3pZADBq7utQQV4pQ1vj7uQIAXaAQRCz/4nKLKQRT9ZrHOuxailKqBiztrg== - dependencies: - tslib "^2.0.1" - -pvtsutils@^1.1.1: +pvtsutils@^1.0.11, pvtsutils@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.1.1.tgz#22c2d7689139d2c36d7ef3ac3d5e29bcd818d38a" integrity sha512-Evbhe6L4Sxwu4SPLQ4LQZhgfWDQO3qa1lju9jM5cxsQp8vE10VipcSmo7hiJW48TmiHgVLgDtC2TL6/+ND+IVg== @@ -7383,12 +6542,7 @@ qrcode@^1.4.4: pngjs "^3.3.0" yargs "^13.2.4" -qs@^6.9.4: - 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.9.6: +qs@^6.9.4, qs@^6.9.6: version "6.9.6" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== @@ -7457,9 +6611,9 @@ react-beautiful-dnd@^4.0.1: reselect "^3.0.1" react-clientside-effect@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.2.tgz#6212fb0e07b204e714581dd51992603d1accc837" - integrity sha512-nRmoyxeok5PBO6ytPvSjKp9xwXg9xagoTK1mMjwnQxqM9Hd7MNPl+LS1bOSOe+CV2+4fnEquc7H/S8QD3q697A== + version "1.2.3" + resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.3.tgz#95c95f520addfb71743608b990bfe01eb002012b" + integrity sha512-96HOmjJjjemxZD4qMdaMWFl3d/3Dqm/MAXnThoP8+jQihevYs8VzooqYWlVEPmkp9tVIa06i67R7FF1qsuzUwQ== dependencies: "@babel/runtime" "^7.0.0" @@ -7522,17 +6676,7 @@ react-redux@^5.0.6: react-is "^16.6.0" react-lifecycles-compat "^3.0.0" -react-test-renderer@^16.0.0-0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" - integrity sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ== - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" - -react-test-renderer@^16.14.0: +react-test-renderer@^16.0.0-0, react-test-renderer@^16.14.0: version "16.14.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== @@ -7680,9 +6824,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" @@ -7690,17 +6834,16 @@ 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.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: "@babel/runtime" "^7.8.4" - private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -7711,12 +6854,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" @@ -7728,18 +6871,6 @@ regexpp@^3.0.0, 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== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - regexpu-core@^4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" @@ -7758,9 +6889,9 @@ regjsgen@^0.5.1: integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + version "0.6.6" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a" + integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ== dependencies: jsesc "~0.5.0" @@ -7891,14 +7022,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.18.1: +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -7966,17 +7090,10 @@ run-parallel@^1.1.9: resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== -rxjs@^6.5.2: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -rxjs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" - integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== +rxjs@^6.5.2, rxjs@^6.6.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" @@ -7997,7 +7114,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== @@ -8115,20 +7232,21 @@ shellwords@^0.1.1: resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" 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== +side-channel@^1.0.2, side-channel@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" 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== @@ -8257,9 +7375,9 @@ spdx-expression-parse@^3.0.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.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== specificity@^0.4.1: version "0.4.1" @@ -8304,14 +7422,16 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.4.tgz#4b600971dcfc6aed0cbdf2a8268177cc916c87c8" + integrity sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w== + dependencies: + escape-string-regexp "^2.0.0" stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" @@ -8360,16 +7480,17 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.0" string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + version "4.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" + integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.1" has-symbols "^1.0.1" internal-slot "^1.0.2" regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" + side-channel "^1.0.3" string.prototype.repeat@^0.2.0: version "0.2.0" @@ -8377,23 +7498,15 @@ string.prototype.repeat@^0.2.0: integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= string.prototype.trim@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" - integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + version "1.2.3" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" + integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" -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== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimend@^1.0.3: +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== @@ -8401,33 +7514,7 @@ string.prototype.trimend@^1.0.3: call-bind "^1.0.0" define-properties "^1.1.3" -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== - 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" - -string.prototype.trimstart@^1.0.3: +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== @@ -8490,16 +7577,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: +strip-json-comments@^3.0.1, 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== -strip-json-comments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" - integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== - style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" @@ -8603,20 +7685,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0: +supports-color@^7.0.0, supports-color@^7.1.0: 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" -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== - dependencies: - has-flag "^4.0.0" - supports-hyperlinks@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" @@ -8806,29 +7881,19 @@ tsconfig-paths@^3.9.0: strip-bom "^3.0.0" tslib@^1.8.1, 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== -tslib@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" - integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== - -tslib@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.2.tgz#462295631185db44b21b1ea3615b63cd1c038242" - integrity sha512-wAH28hcEKwna96/UacuWaVspVLkg4x1aDM9JlzqaQTOFczCktkVAb5fmXChgandR1EraDPs2w8P+ozM+oafwxg== - -tslib@^2.0.3: +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + version "3.19.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.19.1.tgz#d8566e0c51c82f32f9c25a4d367cd62409a547a9" + integrity sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw== dependencies: tslib "^1.8.1" @@ -8896,9 +7961,9 @@ typescript@^4.1.3: integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== ua-parser-js@^0.7.18: - version "0.7.21" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" - integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== + version "0.7.23" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b" + integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA== unhomoglyph@^1.0.6: version "1.0.6" @@ -8988,9 +8053,9 @@ upath@^1.1.1: integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== 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.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -9008,16 +8073,16 @@ url@^0.11.0: querystring "0.2.0" use-callback-ref@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.4.tgz#d86d1577bfd0b955b6e04aaf5971025f406bea3c" - integrity sha512-rXpsyvOnqdScyied4Uglsp14qzag1JIemLeTWGKbwpotWht57hbP78aNT+Q4wdFKQfQibbUX4fb6Qb4y11aVOQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.5.tgz#6115ed242cfbaed5915499c0a9842ca2912f38a5" + integrity sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg== use-sidecar@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.2.tgz#e72f582a75842f7de4ef8becd6235a4720ad8af6" - integrity sha512-287RZny6m5KNMTb/Kq9gmjafi7lQL0YHO1lYolU6+tY1h9+Z3uCtkJJ3OSOq3INwYf2hBryCcDh4520AhJibMA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.4.tgz#38398c3723727f9f924bed2343dfa3db6aaaee46" + integrity sha512-A5ggIS3/qTdxCAlcy05anO2/oqXOfpmxnpRE1Jm+fHHtCvUvNSZDGqgOSAXPriBVAcw2fMFFkh5v5KqrFFhCMA== dependencies: - detect-node "^2.0.4" + detect-node-es "^1.0.0" tslib "^1.9.3" use@^3.1.0: @@ -9040,12 +8105,7 @@ uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@^2.0.3: - 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== - -v8-compile-cache@^2.2.0: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: 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== @@ -9161,9 +8221,9 @@ whatwg-encoding@^1.0.5: 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== + version "3.5.0" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" + integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== whatwg-fetch@^0.9.0: version "0.9.0" @@ -9176,24 +8236,24 @@ whatwg-mimetype@^2.3.0: integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^8.0.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.3.0.tgz#d1e11e565334486cdb280d3101b9c3fd1c867582" - integrity sha512-BQRf/ej5Rp3+n7k0grQXZj9a1cHtsp4lqj01p59xBWFKdezR8sO37XnpafwNqiFac/v2Il12EIMjX/Y4VZtT8Q== + 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 "^6.1.0" which-boxed-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" - integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - is-bigint "^1.0.0" - is-boolean-object "^1.0.0" - is-number-object "^1.0.3" - is-string "^1.0.4" - is-symbol "^1.0.2" + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" which-collection@^1.0.0: version "1.0.1" @@ -9270,9 +8330,9 @@ write@1.0.3: mkdirp "^0.5.1" 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.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" + integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== xml-name-validator@^3.0.0: version "3.0.0" @@ -9285,9 +8345,9 @@ xmlchars@^2.2.0: integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yallist@^4.0.0: version "4.0.0" From 84b1f2e6c6021fc6793c813466e395a854c3c555 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 13:40:46 +0000 Subject: [PATCH 200/275] Resolve typing errors after TypeScript upgrade --- src/BasePlatform.ts | 2 +- src/ContentMessages.tsx | 2 +- src/CountlyAnalytics.ts | 4 ++-- src/HtmlUtils.tsx | 2 ++ src/components/views/auth/PasswordLogin.tsx | 2 +- src/components/views/auth/RegistrationForm.tsx | 2 +- src/components/views/rooms/BasicMessageComposer.tsx | 2 +- src/rageshake/submit-rageshake.ts | 4 ++-- src/stores/AsyncStoreWithClient.ts | 4 ++-- src/stores/room-list/RoomListStore.ts | 4 ---- yarn.lock | 2 +- 11 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/BasePlatform.ts b/src/BasePlatform.ts index c301aa6a10..927de5a0a8 100644 --- a/src/BasePlatform.ts +++ b/src/BasePlatform.ts @@ -56,7 +56,7 @@ export default abstract class BasePlatform { this.startUpdateCheck = this.startUpdateCheck.bind(this); } - abstract async getConfig(): Promise<{}>; + abstract getConfig(): Promise<{}>; abstract getDefaultDeviceDisplayName(): string; diff --git a/src/ContentMessages.tsx b/src/ContentMessages.tsx index 5409a606de..bec36d49f6 100644 --- a/src/ContentMessages.tsx +++ b/src/ContentMessages.tsx @@ -497,7 +497,7 @@ export default class ContentMessages { content.info.mimetype = file.type; } - const prom = new Promise((resolve) => { + const prom = new Promise((resolve) => { if (file.type.indexOf('image/') === 0) { content.msgtype = 'm.image'; infoForImageFile(matrixClient, roomId, file).then((imageInfo) => { diff --git a/src/CountlyAnalytics.ts b/src/CountlyAnalytics.ts index b4727bc88b..974c08df18 100644 --- a/src/CountlyAnalytics.ts +++ b/src/CountlyAnalytics.ts @@ -840,7 +840,7 @@ export default class CountlyAnalytics { let endTime = CountlyAnalytics.getTimestamp(); const cli = MatrixClientPeg.get(); if (!cli.getRoom(roomId)) { - await new Promise(resolve => { + await new Promise(resolve => { const handler = (room) => { if (room.roomId === roomId) { cli.off("Room", handler); @@ -880,7 +880,7 @@ export default class CountlyAnalytics { let endTime = CountlyAnalytics.getTimestamp(); if (!room.findEventById(eventId)) { - await new Promise(resolve => { + await new Promise(resolve => { const handler = (ev) => { if (ev.getId() === eventId) { room.off("Room.localEchoUpdated", handler); diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 637c0a2696..7d6b049914 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -422,6 +422,8 @@ export function bodyToHtml(content: IContent, highlights: string[], opts: IOpts if (SettingsStore.getValue("feature_latex_maths")) { const phtml = cheerio.load(safeBody, { _useHtmlParser2: true, decodeEntities: false }) + // @ts-ignore - The types for `replaceWith` wrongly expect + // Cheerio instance to be returned. phtml('div, span[data-mx-maths!=""]').replaceWith(function(i, e) { return katex.renderToString( AllHtmlEntities.decode(phtml(e).attr('data-mx-maths')), diff --git a/src/components/views/auth/PasswordLogin.tsx b/src/components/views/auth/PasswordLogin.tsx index 84e583c3a5..b2a3d62f55 100644 --- a/src/components/views/auth/PasswordLogin.tsx +++ b/src/components/views/auth/PasswordLogin.tsx @@ -196,7 +196,7 @@ export default class PasswordLogin extends React.PureComponent { // Validation and state updates are async, so we need to wait for them to complete // first. Queue a `setState` callback and wait for it to resolve. - await new Promise(resolve => this.setState({}, resolve)); + await new Promise(resolve => this.setState({}, resolve)); if (this.allFieldsValid()) { return true; diff --git a/src/components/views/auth/RegistrationForm.tsx b/src/components/views/auth/RegistrationForm.tsx index a0c7ab7b4f..e42ed88f99 100644 --- a/src/components/views/auth/RegistrationForm.tsx +++ b/src/components/views/auth/RegistrationForm.tsx @@ -194,7 +194,7 @@ export default class RegistrationForm extends React.PureComponent this.setState({}, resolve)); + await new Promise(resolve => this.setState({}, resolve)); if (this.allFieldsValid()) { return true; diff --git a/src/components/views/rooms/BasicMessageComposer.tsx b/src/components/views/rooms/BasicMessageComposer.tsx index 2ececdeaed..017ce77166 100644 --- a/src/components/views/rooms/BasicMessageComposer.tsx +++ b/src/components/views/rooms/BasicMessageComposer.tsx @@ -519,7 +519,7 @@ export default class BasicMessageEditor extends React.Component private async tabCompleteName(event: React.KeyboardEvent) { try { - await new Promise(resolve => this.setState({showVisualBell: false}, resolve)); + await new Promise(resolve => this.setState({showVisualBell: false}, resolve)); const {model} = this.props; const caret = this.getCaret(); const position = model.positionForOffset(caret.offset, caret.atNodeEnd); diff --git a/src/rageshake/submit-rageshake.ts b/src/rageshake/submit-rageshake.ts index d361f6b0dd..29856b1a86 100644 --- a/src/rageshake/submit-rageshake.ts +++ b/src/rageshake/submit-rageshake.ts @@ -235,7 +235,7 @@ export async function downloadBugReport(opts: IOpts = {}) { let i = 0; for (const [key, value] of body.entries()) { if (key === 'compressed-log') { - await new Promise((resolve => { + await new Promise((resolve => { const reader = new FileReader(); reader.addEventListener('loadend', ev => { tape.append(`log-${i++}.log`, new TextDecoder().decode(ev.target.result as ArrayBuffer)); @@ -269,7 +269,7 @@ function uint8ToString(buf: Buffer) { } function _submitReport(endpoint: string, body: FormData, progressCallback: (string) => void) { - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { const req = new XMLHttpRequest(); req.open("POST", endpoint); req.timeout = 5 * 60 * 1000; diff --git a/src/stores/AsyncStoreWithClient.ts b/src/stores/AsyncStoreWithClient.ts index 38e709d8c2..7ed9bbd249 100644 --- a/src/stores/AsyncStoreWithClient.ts +++ b/src/stores/AsyncStoreWithClient.ts @@ -43,7 +43,7 @@ export abstract class AsyncStoreWithClient extends AsyncStore< })(dispatcher); } - protected get matrixClient(): MatrixClient { + get matrixClient(): MatrixClient { return this.readyStore.mxClient; } @@ -55,7 +55,7 @@ export abstract class AsyncStoreWithClient extends AsyncStore< // Default implementation is to do nothing. } - protected abstract async onAction(payload: ActionPayload); + protected abstract onAction(payload: ActionPayload): Promise; protected async onDispatch(payload: ActionPayload) { await this.onAction(payload); diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index 8c17da06fe..24a75c53e7 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -89,10 +89,6 @@ export class RoomListStoreClass extends AsyncStoreWithClient { return this.algorithm.getOrderedRooms(); } - public get matrixClient(): MatrixClient { - return super.matrixClient; - } - // Intended for test usage public async resetStore() { await this.reset(); diff --git a/yarn.lock b/yarn.lock index babe59c1bd..36affd13d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6542,7 +6542,7 @@ qrcode@^1.4.4: pngjs "^3.3.0" yargs "^13.2.4" -qs@^6.9.4, qs@^6.9.6: +qs@^6.9.6: version "6.9.6" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== From d78bc98521dc7a421a9356c306584a2d1142aa8f Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 20 Jan 2021 13:49:15 +0000 Subject: [PATCH 201/275] Resolve linting errors after upgrades --- .eslintrc.js | 2 ++ res/css/structures/_RoomView.scss | 2 +- src/IdentityAuthClient.js | 1 + src/components/structures/LeftPanelWidget.tsx | 2 +- src/components/structures/TabbedView.tsx | 1 - src/components/views/right_panel/RoomSummaryCard.tsx | 2 +- src/components/views/voip/CallView.tsx | 2 +- 7 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index bc2a142c2d..99695b7a03 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -22,6 +22,8 @@ module.exports = { "files": ["src/**/*.{ts,tsx}"], "extends": ["matrix-org/ts"], "rules": { + // We're okay being explicit at the moment + "@typescript-eslint/no-empty-interface": "off", // We disable this while we're transitioning "@typescript-eslint/no-explicit-any": "off", // We'd rather not do this but we do diff --git a/res/css/structures/_RoomView.scss b/res/css/structures/_RoomView.scss index 572c7166d2..36bf96359b 100644 --- a/res/css/structures/_RoomView.scss +++ b/res/css/structures/_RoomView.scss @@ -219,7 +219,7 @@ hr.mx_RoomView_myReadMarker { position: relative; top: -1px; z-index: 1; - transition: width 400ms easeInSine 1s, opacity 400ms easeInSine 1s; + transition: width 400ms easeinsine 1s, opacity 400ms easeinsine 1s; width: 99%; opacity: 1; } diff --git a/src/IdentityAuthClient.js b/src/IdentityAuthClient.js index fbdb6812ee..d3bfee2380 100644 --- a/src/IdentityAuthClient.js +++ b/src/IdentityAuthClient.js @@ -165,6 +165,7 @@ export default class IdentityAuthClient { }); const [confirmed] = await finished; if (confirmed) { + // eslint-disable-next-line react-hooks/rules-of-hooks useDefaultIdentityServer(); } else { throw new AbortedIdentityActionError( diff --git a/src/components/structures/LeftPanelWidget.tsx b/src/components/structures/LeftPanelWidget.tsx index 4daec76d08..e88af282ba 100644 --- a/src/components/structures/LeftPanelWidget.tsx +++ b/src/components/structures/LeftPanelWidget.tsx @@ -56,7 +56,7 @@ const LeftPanelWidget: React.FC = ({ onResize }) => { const [height, setHeight] = useLocalStorageState("left-panel-widget-height", INITIAL_HEIGHT); const [expanded, setExpanded] = useLocalStorageState("left-panel-widget-expanded", true); - useEffect(onResize, [expanded]); + useEffect(onResize, [expanded, onResize]); const [onFocus, isActive, ref] = useRovingTabIndex(); const tabIndex = isActive ? 0 : -1; diff --git a/src/components/structures/TabbedView.tsx b/src/components/structures/TabbedView.tsx index 6bc35eb2a4..21f9f3f5d6 100644 --- a/src/components/structures/TabbedView.tsx +++ b/src/components/structures/TabbedView.tsx @@ -20,7 +20,6 @@ import * as React from "react"; import {_t} from '../../languageHandler'; import * as sdk from "../../index"; import AutoHideScrollbar from './AutoHideScrollbar'; -import { ReactNode } from "react"; /** * Represents a tab for the TabbedView. diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index 00ee1945d8..bbe61807ae 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -77,7 +77,7 @@ export const useWidgets = (room: Room) => { setApps([...WidgetStore.instance.getApps(room.roomId)]); }, [room]); - useEffect(updateApps, [room]); + useEffect(updateApps, [room, updateApps]); useEventEmitter(WidgetStore.instance, room.roomId, updateApps); useEventEmitter(WidgetLayoutStore.instance, WidgetLayoutStore.emissionForRoom(room), updateApps); diff --git a/src/components/views/voip/CallView.tsx b/src/components/views/voip/CallView.tsx index fac87bf02a..5a170b44d5 100644 --- a/src/components/views/voip/CallView.tsx +++ b/src/components/views/voip/CallView.tsx @@ -15,7 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, { createRef, CSSProperties, ReactNode } from 'react'; +import React, { createRef, CSSProperties } from 'react'; import dis from '../../../dispatcher/dispatcher'; import CallHandler from '../../../CallHandler'; import {MatrixClientPeg} from '../../../MatrixClientPeg'; From e6673bca1bbbd4839d97645e1462b4fc761af611 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 27 Jan 2021 12:50:12 +0000 Subject: [PATCH 202/275] Improve SSO auth flow Use replaceState instead of a redirect to strip the loginToken Put user into the same post-auth flows of E2ESetup Skip UIA prompt in this post-auth flow, happy path is a server grace period --- src/Lifecycle.ts | 2 +- src/components/structures/MatrixChat.tsx | 81 ++++++++++--------- src/components/structures/auth/E2eSetup.js | 2 + .../security/CreateCrossSigningDialog.js | 10 +++ 4 files changed, 56 insertions(+), 39 deletions(-) diff --git a/src/Lifecycle.ts b/src/Lifecycle.ts index f87af1a791..4602f2b5bb 100644 --- a/src/Lifecycle.ts +++ b/src/Lifecycle.ts @@ -366,7 +366,7 @@ async function abortLogin() { // The plan is to gradually move the localStorage access done here into // SessionStore to avoid bugs where the view becomes out-of-sync with // localStorage (e.g. isGuest etc.) -async function restoreFromLocalStorage(opts?: { ignoreGuest?: boolean }): Promise { +export async function restoreFromLocalStorage(opts?: { ignoreGuest?: boolean }): Promise { const ignoreGuest = opts?.ignoreGuest; if (!localStorage) { diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 62c729c422..a399d92eaf 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -218,6 +218,7 @@ export default class MatrixChat extends React.PureComponent { private screenAfterLogin?: IScreen; private windowWidth: number; private pageChanging: boolean; + private tokenLogin?: boolean; private accountPassword?: string; private accountPasswordTimer?: NodeJS.Timeout; private focusComposer: boolean; @@ -323,13 +324,16 @@ export default class MatrixChat extends React.PureComponent { Lifecycle.attemptTokenLogin( this.props.realQueryParams, this.props.defaultDeviceDisplayName, - ).then((loggedIn) => { + ).then(async (loggedIn) => { if (loggedIn) { + this.tokenLogin = true; this.props.onTokenLoginCompleted(); - // don't do anything else until the page reloads - just stay in - // the 'loading' state. - return; + // Create and start the client + await Lifecycle.restoreFromLocalStorage({ + ignoreGuest: true, + }); + return this.postLoginSetup(); } // if the user has followed a login or register link, don't reanimate @@ -353,6 +357,39 @@ export default class MatrixChat extends React.PureComponent { CountlyAnalytics.instance.enable(/* anonymous = */ true); } + private async postLoginSetup() { + const cli = MatrixClientPeg.get(); + const cryptoEnabled = cli.isCryptoEnabled(); + + const promisesList = [this.firstSyncPromise.promise]; + if (cryptoEnabled) { + // wait for the client to finish downloading cross-signing keys for us so we + // know whether or not we have keys set up on this account + promisesList.push(cli.downloadKeys([cli.getUserId()])); + } + + // Now update the state to say we're waiting for the first sync to complete rather + // than for the login to finish. + this.setState({ pendingInitialSync: true }); + + await Promise.all(promisesList); + + if (!cryptoEnabled) { + this.setState({ pendingInitialSync: false }); + return; + } + + const crossSigningIsSetUp = cli.getStoredCrossSigningForUser(cli.getUserId()); + if (crossSigningIsSetUp) { + this.setStateForNewView({ view: Views.COMPLETE_SECURITY }); + } else if (await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing")) { + this.setStateForNewView({ view: Views.E2E_SETUP }); + } else { + this.onLoggedIn(); + } + this.setState({ pendingInitialSync: false }); + } + // TODO: [REACT-WARNING] Replace with appropriate lifecycle stage // eslint-disable-next-line camelcase UNSAFE_componentWillUpdate(props, state) { @@ -1833,40 +1870,7 @@ export default class MatrixChat extends React.PureComponent { // Create and start the client await Lifecycle.setLoggedIn(credentials); - - const cli = MatrixClientPeg.get(); - const cryptoEnabled = cli.isCryptoEnabled(); - if (!cryptoEnabled) { - this.onLoggedIn(); - } - - const promisesList = [this.firstSyncPromise.promise]; - if (cryptoEnabled) { - // wait for the client to finish downloading cross-signing keys for us so we - // know whether or not we have keys set up on this account - promisesList.push(cli.downloadKeys([cli.getUserId()])); - } - - // Now update the state to say we're waiting for the first sync to complete rather - // than for the login to finish. - this.setState({ pendingInitialSync: true }); - - await Promise.all(promisesList); - - if (!cryptoEnabled) { - this.setState({ pendingInitialSync: false }); - return; - } - - const crossSigningIsSetUp = cli.getStoredCrossSigningForUser(cli.getUserId()); - if (crossSigningIsSetUp) { - this.setStateForNewView({ view: Views.COMPLETE_SECURITY }); - } else if (await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing")) { - this.setStateForNewView({ view: Views.E2E_SETUP }); - } else { - this.onLoggedIn(); - } - this.setState({ pendingInitialSync: false }); + await this.postLoginSetup(); }; // complete security / e2e setup has finished @@ -1910,6 +1914,7 @@ export default class MatrixChat extends React.PureComponent { ); } else if (this.state.view === Views.LOGGED_IN) { diff --git a/src/components/structures/auth/E2eSetup.js b/src/components/structures/auth/E2eSetup.js index 6df8158002..d97a972718 100644 --- a/src/components/structures/auth/E2eSetup.js +++ b/src/components/structures/auth/E2eSetup.js @@ -24,6 +24,7 @@ export default class E2eSetup extends React.Component { static propTypes = { onFinished: PropTypes.func.isRequired, accountPassword: PropTypes.string, + tokenLogin: PropTypes.bool, }; render() { @@ -33,6 +34,7 @@ export default class E2eSetup extends React.Component { diff --git a/src/components/views/dialogs/security/CreateCrossSigningDialog.js b/src/components/views/dialogs/security/CreateCrossSigningDialog.js index 226419e759..be546d2616 100644 --- a/src/components/views/dialogs/security/CreateCrossSigningDialog.js +++ b/src/components/views/dialogs/security/CreateCrossSigningDialog.js @@ -34,6 +34,7 @@ import InteractiveAuthDialog from '../InteractiveAuthDialog'; export default class CreateCrossSigningDialog extends React.PureComponent { static propTypes = { accountPassword: PropTypes.string, + tokenLogin: PropTypes.bool, }; constructor(props) { @@ -96,6 +97,9 @@ export default class CreateCrossSigningDialog extends React.PureComponent { user: MatrixClientPeg.get().getUserId(), password: this.state.accountPassword, }); + } else if (this.props.tokenLogin) { + // We are hoping the grace period is active + await makeRequest({}); } else { const dialogAesthetics = { [SSOAuthEntry.PHASE_PREAUTH]: { @@ -144,6 +148,12 @@ export default class CreateCrossSigningDialog extends React.PureComponent { }); this.props.onFinished(true); } catch (e) { + if (this.props.tokenLogin) { + // ignore any failures, we are relying on grace period here + this.props.onFinished(); + return; + } + this.setState({ error: e }); console.error("Error bootstrapping cross-signing", e); } From 51aab9ca08debede2a4fd18079b043a46e904b67 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 27 Jan 2021 13:06:59 +0000 Subject: [PATCH 203/275] Fix import style for commonmark --- src/Markdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Markdown.js b/src/Markdown.js index dc4d442aff..f670bded12 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import commonmark from 'commonmark'; +import * as commonmark from 'commonmark'; import {escape} from "lodash"; const ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u']; From 4975e0245be02febd05548fd5104d11496d329d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slobodan=20Simi=C4=87?= Date: Wed, 27 Jan 2021 08:42:46 +0000 Subject: [PATCH 204/275] Translated using Weblate (Serbian) Currently translated at 47.9% (1309 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/sr/ --- src/i18n/strings/sr.json | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index c994d6bde9..df9b54dc0f 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -195,7 +195,7 @@ "Failed to ban user": "Неуспех при забрањивању приступа кориснику", "Failed to mute user": "Неуспех при пригушивању корисника", "Failed to change power level": "Неуспех при промени нивоа моћи", - "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Нећете моћи да опозовете ове промене зато што снижавате себе, ако сте последњи овлашћени корисник у соби, немогуће је да поново добијете овлашћења.", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Нећете моћи да опозовете ове промене јер себи смањујете овлашћења. Ако сте последњи овлашћени корисник у соби, немогуће је да поново добијете овлашћења.", "Are you sure?": "Да ли сте сигурни?", "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Нећете моћи да опозовете ову измену јер унапређујете корисника тако да има исти ниво моћи као и ви.", "Unignore": "Не занемаруј више", @@ -827,8 +827,8 @@ "Permission Required": "Неопходна је дозвола", "You do not have permission to start a conference call in this room": "Немате дозволу да започињете конференцијски позив у овој соби", "This event could not be displayed": "Овај догађај не може бити приказан", - "Demote yourself?": "Снизите чин себи?", - "Demote": "Снизите чин", + "Demote yourself?": "Рашчињавате себе?", + "Demote": "Рашчини", "Whether or not you're logged in (we don't record your username)": "Да ли сте пријављени (не бележимо ваше корисничко име)", "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "Фајл „%(fileName)s“ премашује ограничење величине отпремања на овом серверу", "Unable to load! Check your network connectivity and try again.": "Не могу да учитам! Проверите повезаност и пробајте поново.", @@ -937,8 +937,8 @@ "Room Topic": "Тема собе", "Messages in this room are end-to-end encrypted.": "Поруке у овој соби су шифроване с краја на крај.", "Messages in this room are not end-to-end encrypted.": "Поруке у овој соби нису шифроване с краја на крај.", - "%(count)s verified sessions|other": "Укупно потврђених сесија: %(count)s", - "%(count)s verified sessions|one": "Једна потврђена сесија", + "%(count)s verified sessions|other": "потврђених сесија: %(count)s", + "%(count)s verified sessions|one": "1 потврђена сесија", "Hide verified sessions": "Сакриј потврђене сесије", "Remove recent messages by %(user)s": "Уклони недавне поруке корисника %(user)s", "Remove recent messages": "Уклони недавне поруке", @@ -1403,5 +1403,16 @@ "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings.": "Ако нисте ви уклонили начин опоравка, нападач можда покушава да приступи вашем налогу. Промените своју лозинку и поставите нови начин опоравка у поставкама, одмах.", "If you did this accidentally, you can setup Secure Messages on this session which will re-encrypt this session's message history with a new recovery method.": "Ако сте то случајно учинили, безбедне поруке можете подесити у овој сесији, која ће поново шифровати историју порука сесије помоћу новог начина опоравка.", "This session has detected that your Security Phrase and key for Secure Messages have been removed.": "Сесија је открила да су ваша безбедносна фраза и кључ за безбедне поруке уклоњени.", - "Cancel autocomplete": "Откажи ауто-довршавање" + "Cancel autocomplete": "Откажи ауто-довршавање", + "Direct message": "Директна порука", + "Hide sessions": "Сакриј сесије", + "Trusted": "поуздан", + "Not trusted": "није поуздан", + "Room settings": "Поставке собе", + "Show files": "Прикажи фајлове", + "Not encrypted": "Није шифровано", + "Add widgets, bridges & bots": "Додај виџете, мостове и ботове", + "Edit widgets, bridges & bots": "Уреди виџете, мостове и ботове", + "Widgets": "Виџети", + "Set my room layout for everyone": "Постави мој распоред собе за сваког" } From 34ae766893f4c0aa31a6a5b3c5653c567a03f387 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 27 Jan 2021 14:27:41 +0000 Subject: [PATCH 205/275] Wire up MSC2858 brand attribute For better brand adherance. Also removes old support for https IdP icons. --- res/css/views/elements/_SSOButtons.scss | 18 ++++++++++ res/img/element-icons/brands/apple.svg | 3 ++ res/img/element-icons/brands/facebook.svg | 4 +++ res/img/element-icons/brands/github.svg | 3 ++ res/img/element-icons/brands/gitlab.svg | 9 +++++ res/img/element-icons/brands/google.svg | 6 ++++ res/img/element-icons/brands/twitter.svg | 3 ++ src/Login.ts | 10 ++++++ src/components/views/elements/SSOButtons.tsx | 38 +++++++++++++++----- 9 files changed, 86 insertions(+), 8 deletions(-) create mode 100644 res/img/element-icons/brands/apple.svg create mode 100644 res/img/element-icons/brands/facebook.svg create mode 100644 res/img/element-icons/brands/github.svg create mode 100644 res/img/element-icons/brands/gitlab.svg create mode 100644 res/img/element-icons/brands/google.svg create mode 100644 res/img/element-icons/brands/twitter.svg diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index c61247655c..d20f2cafce 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -30,6 +30,8 @@ limitations under the License. width: 100%; padding-left: 32px; padding-right: 32px; + border-color: $input-border-color; + color: $primary-fg-color; > img { object-fit: contain; @@ -56,3 +58,19 @@ limitations under the License. } } } + +.mx_SSOButton.mx_SSOButton_brand_facebook { + background-color: #3c5a99; + border-color: #3c5a99; + color: #ffffff; +} +.mx_SSOButton.mx_SSOButton_brand_google { + background-color: #eb4335; + border-color: #eb4335; + color: #ffffff; +} +.mx_SSOButton.mx_SSOButton_brand_twitter { + background-color: #47acdf; + border-color: #47acdf; + color: #ffffff; +} diff --git a/res/img/element-icons/brands/apple.svg b/res/img/element-icons/brands/apple.svg new file mode 100644 index 0000000000..308c3c5d5a --- /dev/null +++ b/res/img/element-icons/brands/apple.svg @@ -0,0 +1,3 @@ + + + diff --git a/res/img/element-icons/brands/facebook.svg b/res/img/element-icons/brands/facebook.svg new file mode 100644 index 0000000000..087ddacdff --- /dev/null +++ b/res/img/element-icons/brands/facebook.svg @@ -0,0 +1,4 @@ + + + + diff --git a/res/img/element-icons/brands/github.svg b/res/img/element-icons/brands/github.svg new file mode 100644 index 0000000000..503719520b --- /dev/null +++ b/res/img/element-icons/brands/github.svg @@ -0,0 +1,3 @@ + + + diff --git a/res/img/element-icons/brands/gitlab.svg b/res/img/element-icons/brands/gitlab.svg new file mode 100644 index 0000000000..df84c41e21 --- /dev/null +++ b/res/img/element-icons/brands/gitlab.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/res/img/element-icons/brands/google.svg b/res/img/element-icons/brands/google.svg new file mode 100644 index 0000000000..25f2bb7f0a --- /dev/null +++ b/res/img/element-icons/brands/google.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/img/element-icons/brands/twitter.svg b/res/img/element-icons/brands/twitter.svg new file mode 100644 index 0000000000..4fc3d2f2a2 --- /dev/null +++ b/res/img/element-icons/brands/twitter.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Login.ts b/src/Login.ts index 6493b244e0..aecc0493c7 100644 --- a/src/Login.ts +++ b/src/Login.ts @@ -33,10 +33,20 @@ interface IPasswordFlow { type: "m.login.password"; } +export enum IdentityProviderBrand { + Gitlab = "org.matrix.gitlab", + Github = "org.matrix.github", + Apple = "org.matrix.apple", + Google = "org.matrix.google", + Facebook = "org.matrix.facebook", + Twitter = "org.matrix.twitter", +} + export interface IIdentityProvider { id: string; name: string; icon?: string; + brand?: IdentityProviderBrand | string; } export interface ISSOFlow { diff --git a/src/components/views/elements/SSOButtons.tsx b/src/components/views/elements/SSOButtons.tsx index 5c3098d807..cc894eaf03 100644 --- a/src/components/views/elements/SSOButtons.tsx +++ b/src/components/views/elements/SSOButtons.tsx @@ -22,13 +22,32 @@ import {MatrixClient} from "matrix-js-sdk/src/client"; import PlatformPeg from "../../../PlatformPeg"; import AccessibleButton from "./AccessibleButton"; import {_t} from "../../../languageHandler"; -import {IIdentityProvider, ISSOFlow} from "../../../Login"; +import {IdentityProviderBrand, IIdentityProvider, ISSOFlow} from "../../../Login"; interface ISSOButtonProps extends Omit { idp: IIdentityProvider; mini?: boolean; } +const getIcon = (brand: IdentityProviderBrand | string) => { + switch (brand) { + case IdentityProviderBrand.Apple: + return require(`../../../../res/img/element-icons/brands/apple.svg`); + case IdentityProviderBrand.Facebook: + return require(`../../../../res/img/element-icons/brands/facebook.svg`); + case IdentityProviderBrand.Github: + return require(`../../../../res/img/element-icons/brands/github.svg`); + case IdentityProviderBrand.Gitlab: + return require(`../../../../res/img/element-icons/brands/gitlab.svg`); + case IdentityProviderBrand.Google: + return require(`../../../../res/img/element-icons/brands/google.svg`); + case IdentityProviderBrand.Twitter: + return require(`../../../../res/img/element-icons/brands/twitter.svg`); + default: + return null; + } +} + const SSOButton: React.FC = ({ matrixClient, loginType, @@ -46,16 +65,19 @@ const SSOButton: React.FC = ({ }; let icon; - if (typeof idp?.icon === "string" && (idp.icon.startsWith("mxc://") || idp.icon.startsWith("https://"))) { - icon = {label}; + let brandClass; + const brandIcon = idp ? getIcon(idp.brand) : null; + if (brandIcon) { + const brandName = idp.brand.split(".").pop(); + brandClass = `mx_SSOButton_brand_${brandName}`; + icon = {brandName}; + } else if (typeof idp?.icon === "string" && idp.icon.startsWith("mxc://")) { + const src = matrixClient.mxcUrlToHttp(idp.icon, 24, 24, "crop", true); + icon = {idp.name}; } const classes = classNames("mx_SSOButton", { + [brandClass]: brandClass, mx_SSOButton_mini: mini, }); From db346d129bdd503b4a04fafdbf2785bda944071a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 27 Jan 2021 13:13:44 -0700 Subject: [PATCH 206/275] Run a UI refresh over the OIDC Exchange confirmation dialog --- .../dialogs/WidgetOpenIDPermissionsDialog.js | 26 +++++++++---------- src/i18n/strings/en_EN.json | 7 +++-- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.js b/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.js index 7ed3d04318..c01d3d39b8 100644 --- a/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.js +++ b/src/components/views/dialogs/WidgetOpenIDPermissionsDialog.js @@ -70,26 +70,26 @@ export default class WidgetOpenIDPermissionsDialog extends React.Component { return ( + title={_t("Allow this widget to verify your identity")}>

    - {_t( - "A widget located at %(widgetUrl)s would like to verify your identity. " + - "By allowing this, the widget will be able to verify your user ID, but not " + - "perform actions as you.", { - widgetUrl: this.props.widget.templateUrl.split("?")[0], - }, - )} + {_t("The widget will verify your user ID, but won't be able to perform actions for you:")} +

    +

    + {/* cheap trim to just get the path */} + {this.props.widget.templateUrl.split("?")[0].split("#")[0]}

    -
    } />
    ); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8d047ea3f1..228042f854 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2242,10 +2242,9 @@ "Approve": "Approve", "Decline All": "Decline All", "Remember my selection for this widget": "Remember my selection for this widget", - "A widget would like to verify your identity": "A widget would like to verify your identity", - "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.", - "Allow": "Allow", - "Deny": "Deny", + "Allow this widget to verify your identity": "Allow this widget to verify your identity", + "The widget will verify your user ID, but won't be able to perform actions for you:": "The widget will verify your user ID, but won't be able to perform actions for you:", + "Remember this": "Remember this", "Wrong file type": "Wrong file type", "Looks good!": "Looks good!", "Wrong Security Key": "Wrong Security Key", From edb363b75156f52550958e1de06396b9bad818a5 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 27 Jan 2021 14:22:55 -0700 Subject: [PATCH 207/275] Allow stickerpickers the legacy "visibility" capability Fixes https://github.com/vector-im/element-web/issues/16237 --- src/stores/widgets/StopGapWidgetDriver.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/stores/widgets/StopGapWidgetDriver.ts b/src/stores/widgets/StopGapWidgetDriver.ts index 8baea97fe0..8a286d909b 100644 --- a/src/stores/widgets/StopGapWidgetDriver.ts +++ b/src/stores/widgets/StopGapWidgetDriver.ts @@ -71,6 +71,10 @@ export class StopGapWidgetDriver extends WidgetDriver { const stickerSendingCap = WidgetEventCapability.forRoomEvent(EventDirection.Send, EventType.Sticker).raw; this.allowedCapabilities.add(MatrixCapabilities.StickerSending); // legacy as far as MSC2762 is concerned this.allowedCapabilities.add(stickerSendingCap); + + // Auto-approve the legacy visibility capability. We send it regardless of capability. + // Widgets don't technically need to request this capability, but Scalar still does. + this.allowedCapabilities.add("visibility"); } } From 08b067fd682e5cf88b0e7b20f0e4f840f26746e1 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 27 Jan 2021 14:31:48 -0700 Subject: [PATCH 208/275] Remove check that prevents Jitsi widgets from being unpinned Later in the code we do a conditional on the widget type to auto-pin the widget, so we don't need this one to force the widget higher. Fixes https://github.com/vector-im/element-web/issues/16280 --- src/stores/widgets/WidgetLayoutStore.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/stores/widgets/WidgetLayoutStore.ts b/src/stores/widgets/WidgetLayoutStore.ts index b6320defb9..86ce9c97d4 100644 --- a/src/stores/widgets/WidgetLayoutStore.ts +++ b/src/stores/widgets/WidgetLayoutStore.ts @@ -201,11 +201,6 @@ export class WidgetLayoutStore extends ReadyWatchingStore { const topWidgets: IApp[] = []; const rightWidgets: IApp[] = []; for (const widget of widgets) { - if (WidgetType.JITSI.matches(widget.type)) { - topWidgets.push(widget); - continue; - } - const stateContainer = roomLayout?.widgets?.[widget.id]?.container; const manualContainer = userLayout?.widgets?.[widget.id]?.container; const isLegacyPinned = !!legacyPinned?.[widget.id]; From 2c11f0bb7c78c409b30a5b1e2f363767e1d2539b Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Thu, 28 Jan 2021 03:09:52 +0530 Subject: [PATCH 209/275] Added condition to hide the 'find a room' UI unless the user is explicitly filtering the list --- src/components/views/rooms/RoomList.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/rooms/RoomList.tsx b/src/components/views/rooms/RoomList.tsx index 2d6396c83f..45db15df7c 100644 --- a/src/components/views/rooms/RoomList.tsx +++ b/src/components/views/rooms/RoomList.tsx @@ -455,8 +455,9 @@ export default class RoomList extends React.PureComponent { const unfilteredLists = RoomListStore.instance.unfilteredLists const unfilteredRooms = unfilteredLists[DefaultTagID.Untagged] || []; const unfilteredHistorical = unfilteredLists[DefaultTagID.Archived] || []; + const unfilteredFavourite = unfilteredLists[DefaultTagID.Favourite] || []; // show a prompt to join/create rooms if the user is in 0 rooms and no historical - if (unfilteredRooms.length < 1 && unfilteredHistorical < 1) { + if (unfilteredRooms.length < 1 && unfilteredHistorical < 1 && unfilteredFavourite < 1) { explorePrompt =
    {_t("Use the + to make a new room or explore existing ones below")}
    Date: Wed, 27 Jan 2021 14:40:04 -0700 Subject: [PATCH 210/275] Fix Jitsi widgets causing localized tile crashes Seems to be that as part of the layout work the timing sequence for when `.getRoom().widgets` will work changed. We can get around this with `initIfNeeded` which will no-op in the worst case. This also includes a copy change to make ended conferences stop lying about where to find the widget. This is work towards https://github.com/vector-im/element-web/issues/15739 --- src/components/views/messages/MJitsiWidgetEvent.tsx | 4 +++- src/stores/WidgetStore.ts | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/views/messages/MJitsiWidgetEvent.tsx b/src/components/views/messages/MJitsiWidgetEvent.tsx index 3ff11f7b6f..6031ede8fa 100644 --- a/src/components/views/messages/MJitsiWidgetEvent.tsx +++ b/src/components/views/messages/MJitsiWidgetEvent.tsx @@ -37,11 +37,13 @@ export default class MJitsiWidgetEvent extends React.PureComponent { const senderName = this.props.mxEvent.sender?.name || this.props.mxEvent.getSender(); const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); const widgetId = this.props.mxEvent.getStateKey(); - const widget = WidgetStore.instance.getRoom(room.roomId).widgets.find(w => w.id === widgetId); + const widget = WidgetStore.instance.getRoom(room.roomId, true).widgets.find(w => w.id === widgetId); let joinCopy = _t('Join the conference at the top of this room'); if (widget && WidgetLayoutStore.instance.isInContainer(room, widget, Container.Right)) { joinCopy = _t('Join the conference from the room information card on the right'); + } else if (!widget) { + joinCopy = null; } if (!url) { diff --git a/src/stores/WidgetStore.ts b/src/stores/WidgetStore.ts index 4ff39aaaee..8961581964 100644 --- a/src/stores/WidgetStore.ts +++ b/src/stores/WidgetStore.ts @@ -154,7 +154,8 @@ export default class WidgetStore extends AsyncStoreWithClient { this.emit(UPDATE_EVENT, roomId); }; - public getRoom = (roomId: string) => { + public getRoom = (roomId: string, initIfNeeded = false) => { + if (initIfNeeded) this.initRoom(roomId); // internally handles "if needed" return this.roomMap.get(roomId); }; From dd5911e7e5f68b5d2743ed89b53e1ac1df6957ba Mon Sep 17 00:00:00 2001 From: c-cal Date: Wed, 27 Jan 2021 17:15:10 +0000 Subject: [PATCH 211/275] Translated using Weblate (French) Currently translated at 97.2% (2655 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 2e5f7851c3..3bb86d2c63 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -2561,7 +2561,7 @@ "Got an account? Sign in": "Vous avez un compte ? Connectez-vous", "New here? Create an account": "Nouveau ici ? Créez un compte", "There was a problem communicating with the homeserver, please try again later.": "Il y a eu un problème lors de la communication avec le serveur d'accueil, veuillez réessayer ultérieurement.", - "New? Create account": "Nouveau? Créez un compte", + "New? Create account": "Nouveau ? Créez un compte", "That username already exists, please try another.": "Ce nom d'utilisateur existe déjà, essayez-en un autre.", "Already have an account? Sign in here": "Vous avez déjà un compte ? Connectez-vous ici", "Algeria": "Algérie", From 14caa2f0a175d7e870bdaebd6627e5d711558b84 Mon Sep 17 00:00:00 2001 From: MusiCode1 Date: Wed, 27 Jan 2021 21:57:34 +0000 Subject: [PATCH 212/275] Translated using Weblate (Hebrew) Currently translated at 98.5% (2691 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/he/ --- src/i18n/strings/he.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index a1ca215c3b..7e9bc25035 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -2742,5 +2742,10 @@ "Review terms and conditions": "עיין בתנאים ובהגבלות", "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "כדי להמשיך להשתמש בשרת הבית (%(homeserverDomain)s), עליך לבדוק ולהסכים לתנאים ולהגבלות שלנו.", "For security, this session has been signed out. Please sign in again.": "למען ביטחון, הפגישה הזו נותקה. אנא היכנסו שוב.", - "Signed Out": "יציאה" + "Signed Out": "יציאה", + "Channel: ": "ערוץ: ", + "Dial pad": "לוח חיוג", + "There was an error looking up the phone number": "אירעה שגיאה בחיפוש מספר הטלפון", + "Unable to look up phone number": "לא ניתן לחפש את מספר הטלפון", + "%(senderName)s has updated the widget layout": "%(senderName)s עדכן את פריסת היישומון" } From 41682fa8d2d205aec145eb82a1b78d3ad0d309bc Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 27 Jan 2021 20:37:04 -0700 Subject: [PATCH 213/275] Update src/components/views/elements/PersistedElement.js --- src/components/views/elements/PersistedElement.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/elements/PersistedElement.js b/src/components/views/elements/PersistedElement.js index 506266d2b6..07b01cb03f 100644 --- a/src/components/views/elements/PersistedElement.js +++ b/src/components/views/elements/PersistedElement.js @@ -165,7 +165,7 @@ export default class PersistedElement extends React.Component { const parentRect = parent.getBoundingClientRect(); Object.assign(child.style, { - zIndex: 10, + zIndex: 9, position: 'absolute', top: parentRect.top + 'px', left: parentRect.left + 'px', From 317b370b599e1025702f4e7999dcb95685d456cc Mon Sep 17 00:00:00 2001 From: MusiCode1 Date: Wed, 27 Jan 2021 22:05:25 +0000 Subject: [PATCH 214/275] Translated using Weblate (Hebrew) Currently translated at 98.7% (2696 of 2731 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/he/ --- src/i18n/strings/he.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 7e9bc25035..647f98f3e4 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -2747,5 +2747,10 @@ "Dial pad": "לוח חיוג", "There was an error looking up the phone number": "אירעה שגיאה בחיפוש מספר הטלפון", "Unable to look up phone number": "לא ניתן לחפש את מספר הטלפון", - "%(senderName)s has updated the widget layout": "%(senderName)s עדכן את פריסת היישומון" + "%(senderName)s has updated the widget layout": "%(senderName)s עדכן את פריסת היישומון", + "There was an error finding this widget.": "אירעה שגיאה במציאת היישומון הזה.", + "Active Widgets": "יישומונים פעילים", + "Set my room layout for everyone": "הגדר את פריסת החדר שלי עבור כולם", + "Open dial pad": "פתח לוח חיוג", + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "גבה את מפתחות ההצפנה שלך עם נתוני חשבונך במקרה שתאבד את הגישה להפעלות שלך. המפתחות שלך מאובטחים באמצעות מפתח אבטחה ייחודי." } From 1761a4ec800624bef0b81875948cff50610324f8 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 28 Jan 2021 10:45:29 +0000 Subject: [PATCH 215/275] Improve SSO UIA Fixes Fallback UIA postmessage interface Auto-closes SSO UIA tab when the user has completed the flow within it Error for when auth stage is restarted because it failed --- src/components/structures/InteractiveAuth.js | 8 ++- src/components/structures/MatrixChat.tsx | 6 +- .../auth/InteractiveAuthEntryComponents.js | 56 ++++++++++++++++--- src/i18n/strings/en_EN.json | 1 + 4 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/components/structures/InteractiveAuth.js b/src/components/structures/InteractiveAuth.js index c8fcd7e9ca..23e43da195 100644 --- a/src/components/structures/InteractiveAuth.js +++ b/src/components/structures/InteractiveAuth.js @@ -177,7 +177,13 @@ export default class InteractiveAuthComponent extends React.Component { stageState: stageState, errorText: stageState.error, }, () => { - if (oldStage != stageType) this._setFocus(); + if (oldStage !== stageType) { + this._setFocus(); + } else if (!stageState.error && this._stageComponent.current && + this._stageComponent.current.attemptFailed + ) { + this._stageComponent.current.attemptFailed(); + } }); }; diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index a399d92eaf..2f6c5bf353 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -325,9 +325,13 @@ export default class MatrixChat extends React.PureComponent { this.props.realQueryParams, this.props.defaultDeviceDisplayName, ).then(async (loggedIn) => { + if (this.props.realQueryParams?.loginToken) { + // remove the loginToken from the URL regardless + this.props.onTokenLoginCompleted(); + } + if (loggedIn) { this.tokenLogin = true; - this.props.onTokenLoginCompleted(); // Create and start the client await Lifecycle.restoreFromLocalStorage({ diff --git a/src/components/views/auth/InteractiveAuthEntryComponents.js b/src/components/views/auth/InteractiveAuthEntryComponents.js index 60e57afc98..c8469192d2 100644 --- a/src/components/views/auth/InteractiveAuthEntryComponents.js +++ b/src/components/views/auth/InteractiveAuthEntryComponents.js @@ -609,8 +609,12 @@ export class SSOAuthEntry extends React.Component { this.props.authSessionId, ); + this._popupWindow = null; + window.addEventListener("message", this._onReceiveMessage); + this.state = { phase: SSOAuthEntry.PHASE_PREAUTH, + attemptFailed: false, }; } @@ -618,12 +622,33 @@ export class SSOAuthEntry extends React.Component { this.props.onPhaseChange(SSOAuthEntry.PHASE_PREAUTH); } + componentWillUnmount() { + window.removeEventListener("message", this._onReceiveMessage); + if (this._popupWindow) { + this._popupWindow.close(); + } + } + + attemptFailed = () => { + this.setState({ + attemptFailed: true, + }); + }; + + _onReceiveMessage = event => { + if (event.data === "authDone" && event.origin === this.props.matrixClient.getHomeserverUrl()) { + if (this._popupWindow) { + this._popupWindow.close(); + } + } + }; + onStartAuthClick = () => { // Note: We don't use PlatformPeg's startSsoAuth functions because we almost // certainly will need to open the thing in a new tab to avoid losing application // context. - window.open(this._ssoUrl, '_blank'); + this._popupWindow = window.open(this._ssoUrl, "_blank"); this.setState({phase: SSOAuthEntry.PHASE_POSTAUTH}); this.props.onPhaseChange(SSOAuthEntry.PHASE_POSTAUTH); }; @@ -656,10 +681,28 @@ export class SSOAuthEntry extends React.Component { ); } - return
    - {cancelButton} - {continueButton} -
    ; + let errorSection; + if (this.props.errorText) { + errorSection = ( +
    + { this.props.errorText } +
    + ); + } else if (this.state.attemptFailed) { + errorSection = ( +
    + { _t("Something went wrong in confirming your identity. Cancel and try again.") } +
    + ); + } + + return + { errorSection } +
    + {cancelButton} + {continueButton} +
    +
    ; } } @@ -710,8 +753,7 @@ export class FallbackAuthEntry extends React.Component { this.props.loginType, this.props.authSessionId, ); - this._popupWindow = window.open(url); - this._popupWindow.opener = null; + this._popupWindow = window.open(url, "_blank"); }; _onReceiveMessage = event => { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8d047ea3f1..cc69a66d18 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2334,6 +2334,7 @@ "Please enter the code it contains:": "Please enter the code it contains:", "Code": "Code", "Submit": "Submit", + "Something went wrong in confirming your identity. Cancel and try again.": "Something went wrong in confirming your identity. Cancel and try again.", "Start authentication": "Start authentication", "Enter password": "Enter password", "Nice, strong password!": "Nice, strong password!", From fd4109b8ad61e37f089d12b2d421a85b67522cdc Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 28 Jan 2021 11:00:04 +0000 Subject: [PATCH 216/275] fix tests by reverting if removal --- src/components/structures/MatrixChat.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 2f6c5bf353..9520815134 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -364,6 +364,9 @@ export default class MatrixChat extends React.PureComponent { private async postLoginSetup() { const cli = MatrixClientPeg.get(); const cryptoEnabled = cli.isCryptoEnabled(); + if (!cryptoEnabled) { + this.onLoggedIn(); + } const promisesList = [this.firstSyncPromise.promise]; if (cryptoEnabled) { From 2996ceca5261845be25b300491e51f9e2e0881ad Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Thu, 28 Jan 2021 17:21:36 +0000 Subject: [PATCH 217/275] Add optional mobile guide toast This adds an optional toast which Element deployments can enable to nudge users towards the mobile apps once they are inside the app. Part of https://github.com/vector-im/element-web/issues/16283 --- src/components/structures/MatrixChat.tsx | 6 +++ src/i18n/strings/en_EN.json | 4 +- src/toasts/MobileGuideToast.ts | 61 ++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/toasts/MobileGuideToast.ts diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 62c729c422..2b1b93ebec 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -81,6 +81,7 @@ import ThreepidInviteStore, { IThreepidInvite, IThreepidInviteWireFormat } from import {UIFeature} from "../../settings/UIFeature"; import { CommunityPrototypeStore } from "../../stores/CommunityPrototypeStore"; import DialPadModal from "../views/voip/DialPadModal"; +import { showToast as showMobileGuideToast } from '../../toasts/MobileGuideToast'; /** constants for MatrixChat.state.view */ export enum Views { @@ -1186,6 +1187,11 @@ export default class MatrixChat extends React.PureComponent { ) { showAnalyticsToast(this.props.config.piwik?.policyUrl); } + if (SdkConfig.get().mobileGuideToast) { + // The toast contains further logic to detect mobile platforms, + // check if it has been dismissed before, etc. + showMobileGuideToast(); + } } private showScreenAfterLogin() { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8d047ea3f1..8f9884c27b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -726,6 +726,9 @@ "Notifications": "Notifications", "Enable desktop notifications": "Enable desktop notifications", "Enable": "Enable", + "Mobile experience": "Mobile experience", + "Element Web is currently experimental on mobile. The native apps are recommended for most people.": "Element Web is currently experimental on mobile. The native apps are recommended for most people.", + "Learn more": "Learn more", "Your homeserver has exceeded its user limit.": "Your homeserver has exceeded its user limit.", "Your homeserver has exceeded one of its resource limits.": "Your homeserver has exceeded one of its resource limits.", "Contact your server admin.": "Contact your server admin.", @@ -2190,7 +2193,6 @@ "We call the places where you can host your account ‘homeservers’.": "We call the places where you can host your account ‘homeservers’.", "Other homeserver": "Other homeserver", "Use your preferred Matrix homeserver if you have one, or host your own.": "Use your preferred Matrix homeserver if you have one, or host your own.", - "Learn more": "Learn more", "About homeservers": "About homeservers", "Sign out and remove encryption keys?": "Sign out and remove encryption keys?", "Clear Storage and Sign Out": "Clear Storage and Sign Out", diff --git a/src/toasts/MobileGuideToast.ts b/src/toasts/MobileGuideToast.ts new file mode 100644 index 0000000000..310f261c15 --- /dev/null +++ b/src/toasts/MobileGuideToast.ts @@ -0,0 +1,61 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { _t } from "../languageHandler"; +import GenericToast from "../components/views/toasts/GenericToast"; +import ToastStore from "../stores/ToastStore"; + +const onAccept = () => { + window.location.href = "mobile_guide/"; +}; + +const onReject = () => { + document.cookie = "element_mobile_redirect_to_guide=false;path=/;max-age=14400"; + hideToast(); +}; + +const TOAST_KEY = "mobileguide"; + +export const showToast = () => { + const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; + const isAndroid = /Android/.test(navigator.userAgent); + if (!isIos && !isAndroid) { + return; + } + if (document.cookie.includes("element_mobile_redirect_to_guide=false")) { + return; + } + ToastStore.sharedInstance().addOrReplaceToast({ + key: TOAST_KEY, + title: _t("Mobile experience"), + props: { + description: _t( + "Element Web is currently experimental on mobile. " + + "The native apps are recommended for most people.", + ), + acceptLabel: _t("Learn more"), + onAccept, + rejectLabel: _t("Dismiss"), + onReject, + }, + component: GenericToast, + priority: 99, + }); +}; + +export const hideToast = () => { + ToastStore.sharedInstance().dismissToast(TOAST_KEY); +}; From 6031e34fbeb5327fc7dbf18e917203e111e7b032 Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Thu, 28 Jan 2021 23:07:59 +0530 Subject: [PATCH 218/275] fix language dropdown to center --- res/css/views/auth/_AuthHeader.scss | 4 ++-- res/css/views/auth/_AuthHeaderLogo.scss | 4 ++-- res/css/views/auth/_LanguageSelector.scss | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/css/views/auth/_AuthHeader.scss b/res/css/views/auth/_AuthHeader.scss index b1372affee..ea17723da4 100644 --- a/res/css/views/auth/_AuthHeader.scss +++ b/res/css/views/auth/_AuthHeader.scss @@ -18,7 +18,7 @@ limitations under the License. display: flex; flex-direction: column; width: 206px; - padding: 25px 40px; + padding: 25px 25px; box-sizing: border-box; } @@ -26,4 +26,4 @@ limitations under the License. .mx_AuthHeader { display: none; } -} +} \ No newline at end of file diff --git a/res/css/views/auth/_AuthHeaderLogo.scss b/res/css/views/auth/_AuthHeaderLogo.scss index 917dcabf67..7bc2a389c1 100644 --- a/res/css/views/auth/_AuthHeaderLogo.scss +++ b/res/css/views/auth/_AuthHeaderLogo.scss @@ -17,7 +17,7 @@ limitations under the License. .mx_AuthHeaderLogo { margin-top: 15px; flex: 1; - padding: 0 10px; + padding: 0 25px; } .mx_AuthHeaderLogo img { @@ -28,4 +28,4 @@ limitations under the License. .mx_AuthHeaderLogo { display: none; } -} +} \ No newline at end of file diff --git a/res/css/views/auth/_LanguageSelector.scss b/res/css/views/auth/_LanguageSelector.scss index 0823d47720..a039dce408 100644 --- a/res/css/views/auth/_LanguageSelector.scss +++ b/res/css/views/auth/_LanguageSelector.scss @@ -23,9 +23,9 @@ limitations under the License. font-size: $font-14px; font-weight: 600; color: $authpage-lang-color; - width: 160px; + width: auto; } .mx_AuthBody_language .mx_Dropdown_arrow { background: $authpage-lang-color; -} +} \ No newline at end of file From d006c521c26f8623e908909d9b738bec2f1200af Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Thu, 28 Jan 2021 23:49:13 +0530 Subject: [PATCH 219/275] solved style-lint errors --- res/css/views/auth/_AuthHeader.scss | 2 +- res/css/views/auth/_AuthHeaderLogo.scss | 2 +- res/css/views/auth/_LanguageSelector.scss | 2 +- res/css/views/auth/_Welcome.scss | 1 - 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/res/css/views/auth/_AuthHeader.scss b/res/css/views/auth/_AuthHeader.scss index ea17723da4..13d5195160 100644 --- a/res/css/views/auth/_AuthHeader.scss +++ b/res/css/views/auth/_AuthHeader.scss @@ -26,4 +26,4 @@ limitations under the License. .mx_AuthHeader { display: none; } -} \ No newline at end of file +} diff --git a/res/css/views/auth/_AuthHeaderLogo.scss b/res/css/views/auth/_AuthHeaderLogo.scss index 7bc2a389c1..86f0313b68 100644 --- a/res/css/views/auth/_AuthHeaderLogo.scss +++ b/res/css/views/auth/_AuthHeaderLogo.scss @@ -28,4 +28,4 @@ limitations under the License. .mx_AuthHeaderLogo { display: none; } -} \ No newline at end of file +} diff --git a/res/css/views/auth/_LanguageSelector.scss b/res/css/views/auth/_LanguageSelector.scss index a039dce408..885ee7f30d 100644 --- a/res/css/views/auth/_LanguageSelector.scss +++ b/res/css/views/auth/_LanguageSelector.scss @@ -28,4 +28,4 @@ limitations under the License. .mx_AuthBody_language .mx_Dropdown_arrow { background: $authpage-lang-color; -} \ No newline at end of file +} diff --git a/res/css/views/auth/_Welcome.scss b/res/css/views/auth/_Welcome.scss index 6c16c953fa..894174d6e2 100644 --- a/res/css/views/auth/_Welcome.scss +++ b/res/css/views/auth/_Welcome.scss @@ -18,7 +18,6 @@ limitations under the License. display: flex; flex-direction: column; align-items: center; - &.mx_WelcomePage_registrationDisabled { .mx_ButtonCreateAccount { display: none; From 992247201eec3343b2d5a54ef90b6695a32ccae6 Mon Sep 17 00:00:00 2001 From: dangwynne Date: Thu, 28 Jan 2021 20:36:33 +0000 Subject: [PATCH 220/275] Fix issue #16270 new rooms are titled 'Empty Room'. Signed-off-by: Dan Gwynne dangwynne1@gmail.com --- src/components/views/rooms/RoomTile.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/components/views/rooms/RoomTile.tsx b/src/components/views/rooms/RoomTile.tsx index c985e80010..631abeed10 100644 --- a/src/components/views/rooms/RoomTile.tsx +++ b/src/components/views/rooms/RoomTile.tsx @@ -110,6 +110,11 @@ export default class RoomTile extends React.PureComponent { CommunityPrototypeStore.getUpdateEventName(this.props.room.roomId), this.onCommunityUpdate, ); + this.props.room.on("Room.name", this.onRoomNameUpdate); + } + + private onRoomNameUpdate = (room) => { + this.forceUpdate(); } private onNotificationUpdate = () => { @@ -150,6 +155,8 @@ export default class RoomTile extends React.PureComponent { CommunityPrototypeStore.getUpdateEventName(this.props.room?.roomId), this.onCommunityUpdate, ); + prevProps.room.off("Room.name", this.onRoomNameUpdate); + this.props.room.on("Room.name", this.onRoomNameUpdate); } } @@ -171,6 +178,7 @@ export default class RoomTile extends React.PureComponent { CommunityPrototypeStore.getUpdateEventName(this.props.room.roomId), this.onCommunityUpdate, ); + this.props.room.off("Room.name", this.onRoomNameUpdate); } defaultDispatcher.unregister(this.dispatcherRef); this.notificationState.off(NOTIFICATION_STATE_UPDATE, this.onNotificationUpdate); From 512ac5ef3bc70e88348bcde5f8e005de6395e641 Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Fri, 29 Jan 2021 03:58:05 +0530 Subject: [PATCH 221/275] fixed invisible text after logging out in the dark theme --- res/css/views/elements/_ServerPicker.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/elements/_ServerPicker.scss b/res/css/views/elements/_ServerPicker.scss index ae1e445a9f..70730bf123 100644 --- a/res/css/views/elements/_ServerPicker.scss +++ b/res/css/views/elements/_ServerPicker.scss @@ -59,7 +59,7 @@ limitations under the License. } .mx_ServerPicker_server { - color: $primary-fg-color; + color: #2e2f32; grid-column: 1; grid-row: 2; margin-bottom: 16px; From 5d4c38188c8de7bd4e06bc82cd2882cffbe037f2 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Thu, 28 Jan 2021 20:42:48 -0700 Subject: [PATCH 222/275] Update widget-api to beta.12 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7f2f4d6a47..014cee02aa 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "linkifyjs": "^2.1.9", "lodash": "^4.17.20", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", - "matrix-widget-api": "0.1.0-beta.11", + "matrix-widget-api": "^0.1.0-beta.12", "minimist": "^1.2.5", "pako": "^2.0.3", "parse5": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index 36affd13d6..83a708f510 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5604,10 +5604,10 @@ matrix-react-test-utils@^0.2.2: resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853" integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ== -matrix-widget-api@0.1.0-beta.11: - version "0.1.0-beta.11" - resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.11.tgz#3658e244bf82eebea36e64475ebfce86b778b476" - integrity sha512-RxIghopRKTQdmYMJzZg/QR+wcPcKe9S1pZZ31zN/M1LKsvTLThBYdMcP1idKh7MkhpO9eCdCVjJOMJTrqxNzbQ== +matrix-widget-api@^0.1.0-beta.12: + version "0.1.0-beta.12" + resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.12.tgz#6cadeabde14f02949b7c3177434a4755942559b8" + integrity sha512-43xVAzLYzddYF73r6NK7NZ3geDLshQqCNAAcv0t5LFyFkKYGWDQG/cg8Vn8d37wm9WVBqYZUOXy9vBD4JcWVPA== dependencies: "@types/events" "^3.0.0" events "^3.2.0" From 4f065ad822e0979bb6e3119591272f9f6b88c6e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Fri, 29 Jan 2021 10:31:59 +0100 Subject: [PATCH 223/275] Fix escape for cancelling replies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/components/views/rooms/SendMessageComposer.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/SendMessageComposer.js b/src/components/views/rooms/SendMessageComposer.js index 553fb44c04..7b516e1f52 100644 --- a/src/components/views/rooms/SendMessageComposer.js +++ b/src/components/views/rooms/SendMessageComposer.js @@ -156,13 +156,14 @@ export default class SendMessageComposer extends React.Component { this.onVerticalArrow(event, true); } else if (event.key === Key.ARROW_DOWN) { this.onVerticalArrow(event, false); - } else if (this._prepareToEncrypt) { - this._prepareToEncrypt(); } else if (event.key === Key.ESCAPE) { dis.dispatch({ action: 'reply_to_event', event: null, }); + } else if (this._prepareToEncrypt) { + // This needs to be last! + this._prepareToEncrypt(); } }; From 4474e1418633c7460593fdd72e8791c55cda04e5 Mon Sep 17 00:00:00 2001 From: NetanelHarris Date: Fri, 29 Jan 2021 09:31:38 +0000 Subject: [PATCH 224/275] Translated using Weblate (Hebrew) Currently translated at 99.2% (2714 of 2735 strings) Translation: Element Web/matrix-react-sdk Translate-URL: https://translate.element.io/projects/element-web/matrix-react-sdk/he/ --- src/i18n/strings/he.json | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 647f98f3e4..75dd462b97 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -767,8 +767,8 @@ "%(senderName)s made future room history visible to all room members.": "%(senderName)s הגדיר את הסטוריית החדר כפתוחה לכל משתמשי החדר.", "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s הגדיר את תצוגת ההסטוריה של החדר כפתוחה עבור כל משתמשי החדר, מהרגע שבו הם הצתרפו.", "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s הגדיר את תצוגת ההסטוריה של החדר כפתוחה עבור כל משתמשי החדר, מהרגע שבו הם הוזמנו.", - "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s שלח את ההזמנה אל %(targetDisplayName)s להצתרף אל החדר.", - "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s שלל את ההזמנה עבור %(targetDisplayName)s להצתרף אל החדר.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s שלח הזמנה ל%(targetDisplayName)s להצטרף אל החדר.", + "%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.": "%(senderName)s דחה את ההזמנה של %(targetDisplayName)s להצטרף אל החדר.", "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s התחיל שיחת וידאו. (אינו נתמך בדפדפן זה)", "%(senderName)s placed a video call.": "%(senderName)s התחיל שיחת וידאו.", "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s התחיל שיחה קולית. (אינו נתמך בדפדפן זה)", @@ -816,7 +816,7 @@ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s הסיר חסימה מ %(targetName)s.", "%(targetName)s left the room.": "%(targetName)s עזב\\ה את החדר.", "%(targetName)s rejected the invitation.": "%(targetName)s דחו את ההזמנה.", - "%(targetName)s joined the room.": "%(targetName)s הצתרף אל החדר.", + "%(targetName)s joined the room.": "%(targetName)s הצטרף אל החדר.", "%(senderName)s made no change.": "%(senderName)s לא עשה שום שינוי.", "%(senderName)s set a profile picture.": "%(senderName)s הגדירו תמונת פרופיל.", "%(senderName)s changed their profile picture.": "%(senderName)s שינו את תמונת הפרופיל שלהם.", @@ -1103,7 +1103,7 @@ "Show read receipts sent by other users": "הצג הודעות שנקראו בידי משתמשים אחרים", "Show display name changes": "הצג שינויים של שמות", "Show avatar changes": "הצג שינויים באווטר", - "Show join/leave messages (invites/kicks/bans unaffected)": "הצג הודעות הצתרף\\עזב (הזמנות\\בעיטות\\חסימות לא מושפעות)", + "Show join/leave messages (invites/kicks/bans unaffected)": "הצג הודעות הצטרף/עזב (הזמנות/בעיטות/חסימות לא מושפעות)", "Show a placeholder for removed messages": "הצד מקום לתצוגת הודעות שהוסרו", "Use a more compact ‘Modern’ layout": "השתמש בתצוגה מודרנית ומצומצמת יותר", "Enable Emoji suggestions while typing": "החל הצעות לסמלים בזמן כתיבה", @@ -2752,5 +2752,27 @@ "Active Widgets": "יישומונים פעילים", "Set my room layout for everyone": "הגדר את פריסת החדר שלי עבור כולם", "Open dial pad": "פתח לוח חיוג", - "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "גבה את מפתחות ההצפנה שלך עם נתוני חשבונך במקרה שתאבד את הגישה להפעלות שלך. המפתחות שלך מאובטחים באמצעות מפתח אבטחה ייחודי." + "Back up your encryption keys with your account data in case you lose access to your sessions. Your keys will be secured with a unique Security Key.": "גבה את מפתחות ההצפנה שלך עם נתוני חשבונך במקרה שתאבד את הגישה להפעלות שלך. המפתחות שלך מאובטחים באמצעות מפתח אבטחה ייחודי.", + "If you've forgotten your Security Key you can ": "אם שכחת את מפתח האבטחה שלך תוכל
    -
    diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 06b1023a51..37645aeb00 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -118,6 +118,11 @@ "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.", "Only continue if you trust the owner of the server.": "Only continue if you trust the owner of the server.", "Trust": "Trust", + "We couldn't log you in": "We couldn't log you in", + "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.": "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.", + "Try again": "Try again", + "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.", + "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.", "%(name)s is requesting verification": "%(name)s is requesting verification", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s does not have permission to send you notifications - please check your browser settings", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s was not given permission to send notifications - please try again", From 69b2d67250a4033e8fe7e15aa8b9bde73a9036e8 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 12:58:31 +0000 Subject: [PATCH 251/275] Update src/Lifecycle.ts Co-authored-by: J. Ryan Stinnett --- src/Lifecycle.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Lifecycle.ts b/src/Lifecycle.ts index a4519309af..7780d4c87a 100644 --- a/src/Lifecycle.ts +++ b/src/Lifecycle.ts @@ -185,8 +185,8 @@ export function attemptTokenLogin( console.warn("Cannot log in with token: can't determine HS URL to use"); Modal.createTrackedDialog("SSO", "Unknown HS", ErrorDialog, { title: _t("We couldn't log you in"), - description: _t("We asked the browser to remember which homeserver you use, to let you sign in. " + - "Unfortunately your browser has forgotten in. Go to the sign in page and try again."), + description: _t("We asked the browser to remember which homeserver you use to let you sign in, " + + "but unfortunately your browser has forgotten it. Go to the sign in page and try again."), button: _t("Try again"), }); return Promise.resolve(false); From accd2492a3a7be3ddeac53e7f8b5cf3a88b1e7c1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 13:01:57 +0000 Subject: [PATCH 252/275] i18n --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 37645aeb00..823efd1adf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -119,7 +119,7 @@ "Only continue if you trust the owner of the server.": "Only continue if you trust the owner of the server.", "Trust": "Trust", "We couldn't log you in": "We couldn't log you in", - "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.": "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.", + "We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.", "Try again": "Try again", "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.", "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.", From bad71cf52f12267f46c6e3a285e785164c67b7d1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 1 Feb 2021 16:25:50 +0000 Subject: [PATCH 253/275] Better errors for SSO failures --- src/BasePlatform.ts | 4 +++ src/Lifecycle.ts | 38 ++++++++++++++++++--- src/components/structures/MatrixChat.tsx | 1 + src/components/views/dialogs/ErrorDialog.js | 6 +++- src/i18n/strings/en_EN.json | 5 +++ 5 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/BasePlatform.ts b/src/BasePlatform.ts index 927de5a0a8..d0d5e60ce8 100644 --- a/src/BasePlatform.ts +++ b/src/BasePlatform.ts @@ -30,6 +30,7 @@ import {idbLoad, idbSave, idbDelete} from "./utils/StorageManager"; export const SSO_HOMESERVER_URL_KEY = "mx_sso_hs_url"; export const SSO_ID_SERVER_URL_KEY = "mx_sso_is_url"; +export const SSO_IDP_ID_KEY = "mx_sso_idp_id"; export enum UpdateCheckStatus { Checking = "CHECKING", @@ -258,6 +259,9 @@ export default abstract class BasePlatform { if (mxClient.getIdentityServerUrl()) { localStorage.setItem(SSO_ID_SERVER_URL_KEY, mxClient.getIdentityServerUrl()); } + if (idpId) { + localStorage.setItem(SSO_IDP_ID_KEY, idpId); + } const callbackUrl = this.getSSOCallbackUrl(fragmentAfterLogin); window.location.href = mxClient.getSsoLoginUrl(callbackUrl.toString(), loginType, idpId); // redirect to SSO } diff --git a/src/Lifecycle.ts b/src/Lifecycle.ts index 4602f2b5bb..a4519309af 100644 --- a/src/Lifecycle.ts +++ b/src/Lifecycle.ts @@ -46,11 +46,13 @@ import {IntegrationManagers} from "./integrations/IntegrationManagers"; import {Mjolnir} from "./mjolnir/Mjolnir"; import DeviceListener from "./DeviceListener"; import {Jitsi} from "./widgets/Jitsi"; -import {SSO_HOMESERVER_URL_KEY, SSO_ID_SERVER_URL_KEY} from "./BasePlatform"; +import {SSO_HOMESERVER_URL_KEY, SSO_ID_SERVER_URL_KEY, SSO_IDP_ID_KEY} from "./BasePlatform"; import ThreepidInviteStore from "./stores/ThreepidInviteStore"; import CountlyAnalytics from "./CountlyAnalytics"; import CallHandler from './CallHandler'; import LifecycleCustomisations from "./customisations/Lifecycle"; +import ErrorDialog from "./components/views/dialogs/ErrorDialog"; +import {_t} from "./languageHandler"; const HOMESERVER_URL_KEY = "mx_hs_url"; const ID_SERVER_URL_KEY = "mx_is_url"; @@ -162,7 +164,8 @@ export async function getStoredSessionOwner(): Promise<[string, boolean]> { * query-parameters extracted from the real query-string of the starting * URI. * - * @param {String} defaultDeviceDisplayName + * @param {string} defaultDeviceDisplayName + * @param {string} fragmentAfterLogin path to go to after a successful login, only used for "Try again" * * @returns {Promise} promise which resolves to true if we completed the token * login, else false @@ -170,6 +173,7 @@ export async function getStoredSessionOwner(): Promise<[string, boolean]> { export function attemptTokenLogin( queryParams: Record, defaultDeviceDisplayName?: string, + fragmentAfterLogin?: string, ): Promise { if (!queryParams.loginToken) { return Promise.resolve(false); @@ -179,6 +183,12 @@ export function attemptTokenLogin( const identityServer = localStorage.getItem(SSO_ID_SERVER_URL_KEY); if (!homeserver) { console.warn("Cannot log in with token: can't determine HS URL to use"); + Modal.createTrackedDialog("SSO", "Unknown HS", ErrorDialog, { + title: _t("We couldn't log you in"), + description: _t("We asked the browser to remember which homeserver you use, to let you sign in. " + + "Unfortunately your browser has forgotten in. Go to the sign in page and try again."), + button: _t("Try again"), + }); return Promise.resolve(false); } @@ -198,8 +208,28 @@ export function attemptTokenLogin( return true; }); }).catch((err) => { - console.error("Failed to log in with login token: " + err + " " + - err.data); + Modal.createTrackedDialog("SSO", "Token Rejected", ErrorDialog, { + title: _t("We couldn't log you in"), + description: err.name === "ConnectionError" + ? _t("Your homeserver was unreachable and was not able to log you in. Please try again. " + + "If this continues, please contact your homeserver administrator.") + : _t("Your homeserver rejected your log in attempt. " + + "This could be due to things just taking too long. Please try again. " + + "If this continues, please contact your homeserver administrator."), + button: _t("Try again"), + onFinished: tryAgain => { + if (tryAgain) { + const cli = Matrix.createClient({ + baseUrl: homeserver, + idBaseUrl: identityServer, + }); + const idpId = localStorage.getItem(SSO_IDP_ID_KEY) || undefined; + PlatformPeg.get().startSingleSignOn(cli, "sso", fragmentAfterLogin, idpId); + } + }, + }); + console.error("Failed to log in with login token:"); + console.error(err); return false; }); } diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 2c652f7c8c..8ed4b6cd11 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -325,6 +325,7 @@ export default class MatrixChat extends React.PureComponent { Lifecycle.attemptTokenLogin( this.props.realQueryParams, this.props.defaultDeviceDisplayName, + this.getFragmentAfterLogin(), ).then(async (loggedIn) => { if (this.props.realQueryParams?.loginToken) { // remove the loginToken from the URL regardless diff --git a/src/components/views/dialogs/ErrorDialog.js b/src/components/views/dialogs/ErrorDialog.js index acebdcd854..3bfa635adf 100644 --- a/src/components/views/dialogs/ErrorDialog.js +++ b/src/components/views/dialogs/ErrorDialog.js @@ -50,6 +50,10 @@ export default class ErrorDialog extends React.Component { button: null, }; + onClick = () => { + this.props.onFinished(true); + }; + render() { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); return ( @@ -64,7 +68,7 @@ export default class ErrorDialog extends React.Component { { this.props.description || _t('An error has occurred.') }
    -
    diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 06b1023a51..37645aeb00 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -118,6 +118,11 @@ "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.", "Only continue if you trust the owner of the server.": "Only continue if you trust the owner of the server.", "Trust": "Trust", + "We couldn't log you in": "We couldn't log you in", + "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.": "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.", + "Try again": "Try again", + "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.", + "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.", "%(name)s is requesting verification": "%(name)s is requesting verification", "%(brand)s does not have permission to send you notifications - please check your browser settings": "%(brand)s does not have permission to send you notifications - please check your browser settings", "%(brand)s was not given permission to send notifications - please try again": "%(brand)s was not given permission to send notifications - please try again", From f8f9b4e390aaca5ab90319b8ea670ddcf0010b49 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 12:58:31 +0000 Subject: [PATCH 254/275] Update src/Lifecycle.ts Co-authored-by: J. Ryan Stinnett --- src/Lifecycle.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Lifecycle.ts b/src/Lifecycle.ts index a4519309af..7780d4c87a 100644 --- a/src/Lifecycle.ts +++ b/src/Lifecycle.ts @@ -185,8 +185,8 @@ export function attemptTokenLogin( console.warn("Cannot log in with token: can't determine HS URL to use"); Modal.createTrackedDialog("SSO", "Unknown HS", ErrorDialog, { title: _t("We couldn't log you in"), - description: _t("We asked the browser to remember which homeserver you use, to let you sign in. " + - "Unfortunately your browser has forgotten in. Go to the sign in page and try again."), + description: _t("We asked the browser to remember which homeserver you use to let you sign in, " + + "but unfortunately your browser has forgotten it. Go to the sign in page and try again."), button: _t("Try again"), }); return Promise.resolve(false); From 10ffac9f41cb5e8814eedb87bdff4e21d1281010 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 13:01:57 +0000 Subject: [PATCH 255/275] i18n --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 37645aeb00..823efd1adf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -119,7 +119,7 @@ "Only continue if you trust the owner of the server.": "Only continue if you trust the owner of the server.", "Trust": "Trust", "We couldn't log you in": "We couldn't log you in", - "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.": "We asked the browser to remember which homeserver you use, to let you sign in. Unfortunately your browser has forgotten in. Go to the sign in page and try again.", + "We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.": "We asked the browser to remember which homeserver you use to let you sign in, but unfortunately your browser has forgotten it. Go to the sign in page and try again.", "Try again": "Try again", "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver was unreachable and was not able to log you in. Please try again. If this continues, please contact your homeserver administrator.", "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.": "Your homeserver rejected your log in attempt. This could be due to things just taking too long. Please try again. If this continues, please contact your homeserver administrator.", From e4629878bc97eef029fd33014d6f5ac8e72a1c18 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 14:22:28 +0000 Subject: [PATCH 256/275] Lock widget room ID when added This changes the widget room ID available to widget URL templates so that it's locked to the room the widget was added in. Fixes https://github.com/vector-im/element-web/issues/16337 --- src/components/views/dialogs/ModalWidgetDialog.tsx | 4 ++-- src/stores/ModalWidgetStore.ts | 7 ++++++- src/stores/widgets/StopGapWidget.ts | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/ModalWidgetDialog.tsx b/src/components/views/dialogs/ModalWidgetDialog.tsx index 484e8f0dcf..92fb406965 100644 --- a/src/components/views/dialogs/ModalWidgetDialog.tsx +++ b/src/components/views/dialogs/ModalWidgetDialog.tsx @@ -35,13 +35,13 @@ import { } from "matrix-widget-api"; import {StopGapWidgetDriver} from "../../../stores/widgets/StopGapWidgetDriver"; import {MatrixClientPeg} from "../../../MatrixClientPeg"; -import RoomViewStore from "../../../stores/RoomViewStore"; import {OwnProfileStore} from "../../../stores/OwnProfileStore"; import { arrayFastClone } from "../../../utils/arrays"; import { ElementWidget } from "../../../stores/widgets/StopGapWidget"; interface IProps { widgetDefinition: IModalWidgetOpenRequestData; + widgetRoomId?: string; sourceWidgetId: string; onFinished(success: boolean, data?: IModalWidgetReturnData): void; } @@ -123,7 +123,7 @@ export default class ModalWidgetDialog extends React.PureComponent { return !this.modalInstance; }; - public openModalWidget = (requestData: IModalWidgetOpenRequestData, sourceWidget: Widget) => { + public openModalWidget = ( + requestData: IModalWidgetOpenRequestData, + sourceWidget: Widget, + widgetRoomId?: string, + ) => { if (this.modalInstance) return; this.openSourceWidgetId = sourceWidget.id; this.modalInstance = Modal.createTrackedDialog('Modal Widget', '', ModalWidgetDialog, { widgetDefinition: {...requestData}, + widgetRoomId, sourceWidgetId: sourceWidget.id, onFinished: (success: boolean, data?: IModalWidgetReturnData) => { if (!success) { diff --git a/src/stores/widgets/StopGapWidget.ts b/src/stores/widgets/StopGapWidget.ts index cc2934aec1..17371d6d45 100644 --- a/src/stores/widgets/StopGapWidget.ts +++ b/src/stores/widgets/StopGapWidget.ts @@ -190,7 +190,7 @@ export class StopGapWidget extends EventEmitter { private runUrlTemplate(opts = {asPopout: false}): string { const templated = this.mockWidget.getCompleteUrl({ - currentRoomId: RoomViewStore.getRoomId(), + widgetRoomId: this.roomId, currentUserId: MatrixClientPeg.get().getUserId(), userDisplayName: OwnProfileStore.instance.displayName, userHttpAvatarUrl: OwnProfileStore.instance.getHttpAvatarUrl(), From f53e7039939f633a86d09c7570f49c2aab5d0449 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 14:42:10 +0000 Subject: [PATCH 257/275] Upgrade matrix-widget-api --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 014cee02aa..d484774aea 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "linkifyjs": "^2.1.9", "lodash": "^4.17.20", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", - "matrix-widget-api": "^0.1.0-beta.12", + "matrix-widget-api": "^0.1.0-beta.13", "minimist": "^1.2.5", "pako": "^2.0.3", "parse5": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index 83a708f510..6419d68b13 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5604,10 +5604,10 @@ matrix-react-test-utils@^0.2.2: resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853" integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ== -matrix-widget-api@^0.1.0-beta.12: - version "0.1.0-beta.12" - resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.12.tgz#6cadeabde14f02949b7c3177434a4755942559b8" - integrity sha512-43xVAzLYzddYF73r6NK7NZ3geDLshQqCNAAcv0t5LFyFkKYGWDQG/cg8Vn8d37wm9WVBqYZUOXy9vBD4JcWVPA== +matrix-widget-api@^0.1.0-beta.13: + version "0.1.0-beta.13" + resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.13.tgz#ebddc83eaef39bbb87b621a02a35902e1a29b9ef" + integrity sha512-DJAvuX2E7gxc/a9rtJPDh17ba9xGIOAoBHcWirNTN3KGodzsrZ+Ns+M/BREFWMwGS5yEBZko5eq7uhXStEbnyQ== dependencies: "@types/events" "^3.0.0" events "^3.2.0" From 14f9a529b8ad303a94c2f7c75abe6fef0e9f212d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 14:22:28 +0000 Subject: [PATCH 258/275] Lock widget room ID when added This changes the widget room ID available to widget URL templates so that it's locked to the room the widget was added in. Fixes https://github.com/vector-im/element-web/issues/16337 --- src/components/views/dialogs/ModalWidgetDialog.tsx | 4 ++-- src/stores/ModalWidgetStore.ts | 7 ++++++- src/stores/widgets/StopGapWidget.ts | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/ModalWidgetDialog.tsx b/src/components/views/dialogs/ModalWidgetDialog.tsx index 484e8f0dcf..92fb406965 100644 --- a/src/components/views/dialogs/ModalWidgetDialog.tsx +++ b/src/components/views/dialogs/ModalWidgetDialog.tsx @@ -35,13 +35,13 @@ import { } from "matrix-widget-api"; import {StopGapWidgetDriver} from "../../../stores/widgets/StopGapWidgetDriver"; import {MatrixClientPeg} from "../../../MatrixClientPeg"; -import RoomViewStore from "../../../stores/RoomViewStore"; import {OwnProfileStore} from "../../../stores/OwnProfileStore"; import { arrayFastClone } from "../../../utils/arrays"; import { ElementWidget } from "../../../stores/widgets/StopGapWidget"; interface IProps { widgetDefinition: IModalWidgetOpenRequestData; + widgetRoomId?: string; sourceWidgetId: string; onFinished(success: boolean, data?: IModalWidgetReturnData): void; } @@ -123,7 +123,7 @@ export default class ModalWidgetDialog extends React.PureComponent { return !this.modalInstance; }; - public openModalWidget = (requestData: IModalWidgetOpenRequestData, sourceWidget: Widget) => { + public openModalWidget = ( + requestData: IModalWidgetOpenRequestData, + sourceWidget: Widget, + widgetRoomId?: string, + ) => { if (this.modalInstance) return; this.openSourceWidgetId = sourceWidget.id; this.modalInstance = Modal.createTrackedDialog('Modal Widget', '', ModalWidgetDialog, { widgetDefinition: {...requestData}, + widgetRoomId, sourceWidgetId: sourceWidget.id, onFinished: (success: boolean, data?: IModalWidgetReturnData) => { if (!success) { diff --git a/src/stores/widgets/StopGapWidget.ts b/src/stores/widgets/StopGapWidget.ts index cc2934aec1..17371d6d45 100644 --- a/src/stores/widgets/StopGapWidget.ts +++ b/src/stores/widgets/StopGapWidget.ts @@ -190,7 +190,7 @@ export class StopGapWidget extends EventEmitter { private runUrlTemplate(opts = {asPopout: false}): string { const templated = this.mockWidget.getCompleteUrl({ - currentRoomId: RoomViewStore.getRoomId(), + widgetRoomId: this.roomId, currentUserId: MatrixClientPeg.get().getUserId(), userDisplayName: OwnProfileStore.instance.displayName, userHttpAvatarUrl: OwnProfileStore.instance.getHttpAvatarUrl(), From ad2a18756606523bda9ff5126b0ce09bb5f3768d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 14:42:10 +0000 Subject: [PATCH 259/275] Upgrade matrix-widget-api --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index dab253442c..f616e76c61 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "linkifyjs": "^2.1.9", "lodash": "^4.17.20", "matrix-js-sdk": "9.6.0-rc.1", - "matrix-widget-api": "^0.1.0-beta.12", + "matrix-widget-api": "^0.1.0-beta.13", "minimist": "^1.2.5", "pako": "^2.0.3", "parse5": "^6.0.1", diff --git a/yarn.lock b/yarn.lock index 3359314305..88376bcad0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5605,10 +5605,10 @@ matrix-react-test-utils@^0.2.2: resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853" integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ== -matrix-widget-api@^0.1.0-beta.12: - version "0.1.0-beta.12" - resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.12.tgz#6cadeabde14f02949b7c3177434a4755942559b8" - integrity sha512-43xVAzLYzddYF73r6NK7NZ3geDLshQqCNAAcv0t5LFyFkKYGWDQG/cg8Vn8d37wm9WVBqYZUOXy9vBD4JcWVPA== +matrix-widget-api@^0.1.0-beta.13: + version "0.1.0-beta.13" + resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.13.tgz#ebddc83eaef39bbb87b621a02a35902e1a29b9ef" + integrity sha512-DJAvuX2E7gxc/a9rtJPDh17ba9xGIOAoBHcWirNTN3KGodzsrZ+Ns+M/BREFWMwGS5yEBZko5eq7uhXStEbnyQ== dependencies: "@types/events" "^3.0.0" events "^3.2.0" From 1ba09999155ae1327c56fa2a841ee5e429c5f4aa Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 17:19:18 +0000 Subject: [PATCH 260/275] Update SSO Facebook social branding to match guidelines --- res/css/views/elements/_SSOButtons.scss | 5 ----- res/img/element-icons/brands/facebook.svg | 9 +++++++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index add048efb0..e223a0a70f 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -73,11 +73,6 @@ limitations under the License. } } -.mx_SSOButton.mx_SSOButton_brand_facebook { - background-color: #3c5a99; - border-color: #3c5a99; - color: #ffffff; -} .mx_SSOButton.mx_SSOButton_brand_twitter { background-color: #47acdf; border-color: #47acdf; diff --git a/res/img/element-icons/brands/facebook.svg b/res/img/element-icons/brands/facebook.svg index 087ddacdff..2742785424 100644 --- a/res/img/element-icons/brands/facebook.svg +++ b/res/img/element-icons/brands/facebook.svg @@ -1,4 +1,9 @@ - - + + + + + + + From 3e3a88116d61f40550a36e5cf319cdf6a90997d2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 17:28:52 +0000 Subject: [PATCH 261/275] Fix register exploding if the server is down or we just don't have flows --- src/components/structures/auth/Login.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/auth/Login.tsx b/src/components/structures/auth/Login.tsx index 606aeb44ab..a217f1b4d9 100644 --- a/src/components/structures/auth/Login.tsx +++ b/src/components/structures/auth/Login.tsx @@ -340,8 +340,8 @@ export default class LoginComponent extends React.PureComponent }; onTryRegisterClick = ev => { - const hasPasswordFlow = this.state.flows.find(flow => flow.type === "m.login.password"); - const ssoFlow = this.state.flows.find(flow => flow.type === "m.login.sso" || flow.type === "m.login.cas"); + const hasPasswordFlow = this.state.flows?.find(flow => flow.type === "m.login.password"); + const ssoFlow = this.state.flows?.find(flow => flow.type === "m.login.sso" || flow.type === "m.login.cas"); // If has no password flow but an SSO flow guess that the user wants to register with SSO. // TODO: instead hide the Register button if registration is disabled by checking with the server, // has no specific errCode currently and uses M_FORBIDDEN. From 0e94d08d9a0be06da45c93db8f941b304c841386 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 17:29:19 +0000 Subject: [PATCH 262/275] Update SSO Twitter social branding to match guidelines --- res/css/views/elements/_SSOButtons.scss | 6 ------ res/img/element-icons/brands/twitter.svg | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index e223a0a70f..e02816780f 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -72,9 +72,3 @@ limitations under the License. } } } - -.mx_SSOButton.mx_SSOButton_brand_twitter { - background-color: #47acdf; - border-color: #47acdf; - color: #ffffff; -} diff --git a/res/img/element-icons/brands/twitter.svg b/res/img/element-icons/brands/twitter.svg index 4fc3d2f2a2..43eb825a59 100644 --- a/res/img/element-icons/brands/twitter.svg +++ b/res/img/element-icons/brands/twitter.svg @@ -1,3 +1,3 @@ - + From f383c42be3c33f49ac60f9262d6ef76def232dc0 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 17:19:18 +0000 Subject: [PATCH 263/275] Update SSO Facebook social branding to match guidelines --- res/css/views/elements/_SSOButtons.scss | 5 ----- res/img/element-icons/brands/facebook.svg | 9 +++++++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index add048efb0..e223a0a70f 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -73,11 +73,6 @@ limitations under the License. } } -.mx_SSOButton.mx_SSOButton_brand_facebook { - background-color: #3c5a99; - border-color: #3c5a99; - color: #ffffff; -} .mx_SSOButton.mx_SSOButton_brand_twitter { background-color: #47acdf; border-color: #47acdf; diff --git a/res/img/element-icons/brands/facebook.svg b/res/img/element-icons/brands/facebook.svg index 087ddacdff..2742785424 100644 --- a/res/img/element-icons/brands/facebook.svg +++ b/res/img/element-icons/brands/facebook.svg @@ -1,4 +1,9 @@ - - + + + + + + + From 842fe36c7e7ae524fe8ede8f80a2750db49d7fca Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 17:28:52 +0000 Subject: [PATCH 264/275] Fix register exploding if the server is down or we just don't have flows --- src/components/structures/auth/Login.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/auth/Login.tsx b/src/components/structures/auth/Login.tsx index 606aeb44ab..a217f1b4d9 100644 --- a/src/components/structures/auth/Login.tsx +++ b/src/components/structures/auth/Login.tsx @@ -340,8 +340,8 @@ export default class LoginComponent extends React.PureComponent }; onTryRegisterClick = ev => { - const hasPasswordFlow = this.state.flows.find(flow => flow.type === "m.login.password"); - const ssoFlow = this.state.flows.find(flow => flow.type === "m.login.sso" || flow.type === "m.login.cas"); + const hasPasswordFlow = this.state.flows?.find(flow => flow.type === "m.login.password"); + const ssoFlow = this.state.flows?.find(flow => flow.type === "m.login.sso" || flow.type === "m.login.cas"); // If has no password flow but an SSO flow guess that the user wants to register with SSO. // TODO: instead hide the Register button if registration is disabled by checking with the server, // has no specific errCode currently and uses M_FORBIDDEN. From b83de3301be4ff096419c2f2672c58fe3c010119 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 Feb 2021 17:29:19 +0000 Subject: [PATCH 265/275] Update SSO Twitter social branding to match guidelines --- res/css/views/elements/_SSOButtons.scss | 6 ------ res/img/element-icons/brands/twitter.svg | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/res/css/views/elements/_SSOButtons.scss b/res/css/views/elements/_SSOButtons.scss index e223a0a70f..e02816780f 100644 --- a/res/css/views/elements/_SSOButtons.scss +++ b/res/css/views/elements/_SSOButtons.scss @@ -72,9 +72,3 @@ limitations under the License. } } } - -.mx_SSOButton.mx_SSOButton_brand_twitter { - background-color: #47acdf; - border-color: #47acdf; - color: #ffffff; -} diff --git a/res/img/element-icons/brands/twitter.svg b/res/img/element-icons/brands/twitter.svg index 4fc3d2f2a2..43eb825a59 100644 --- a/res/img/element-icons/brands/twitter.svg +++ b/res/img/element-icons/brands/twitter.svg @@ -1,3 +1,3 @@ - + From 388e23b40b7c06502444850588af2311d586988a Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 17:48:37 +0000 Subject: [PATCH 266/275] Fix flair height after accent changes The accent changes in https://github.com/matrix-org/matrix-react-sdk/pull/5569 led to a regression in flair display where the bottom edge was clipped. Fixes https://github.com/vector-im/element-web/issues/16350 Regressed by https://github.com/matrix-org/matrix-react-sdk/pull/5569 --- res/css/views/rooms/_EventTile.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss index 429ac7ed4b..acf3049804 100644 --- a/res/css/views/rooms/_EventTile.scss +++ b/res/css/views/rooms/_EventTile.scss @@ -74,7 +74,6 @@ $left-gutter: 64px; margin-left: 5px; display: inline-block; vertical-align: top; - height: 16px; overflow: hidden; user-select: none; From 4136a62be2fd1cac151220316ff2b62b396376c2 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 17:48:37 +0000 Subject: [PATCH 267/275] Fix flair height after accent changes The accent changes in https://github.com/matrix-org/matrix-react-sdk/pull/5569 led to a regression in flair display where the bottom edge was clipped. Fixes https://github.com/vector-im/element-web/issues/16350 Regressed by https://github.com/matrix-org/matrix-react-sdk/pull/5569 --- res/css/views/rooms/_EventTile.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss index 429ac7ed4b..acf3049804 100644 --- a/res/css/views/rooms/_EventTile.scss +++ b/res/css/views/rooms/_EventTile.scss @@ -74,7 +74,6 @@ $left-gutter: 64px; margin-left: 5px; display: inline-block; vertical-align: top; - height: 16px; overflow: hidden; user-select: none; From af0b009600c3b8f0f5ad739bc2ff011f29e38935 Mon Sep 17 00:00:00 2001 From: Ayush Kumar <2580ayush2580@gmail.com> Date: Wed, 3 Feb 2021 00:05:55 +0530 Subject: [PATCH 268/275] Fix term_policy aligned to the center --- res/css/views/auth/_InteractiveAuthEntryComponents.scss | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/res/css/views/auth/_InteractiveAuthEntryComponents.scss b/res/css/views/auth/_InteractiveAuthEntryComponents.scss index 5df73b139f..ffaad3cd7a 100644 --- a/res/css/views/auth/_InteractiveAuthEntryComponents.scss +++ b/res/css/views/auth/_InteractiveAuthEntryComponents.scss @@ -83,7 +83,10 @@ limitations under the License. } .mx_InteractiveAuthEntryComponents_termsPolicy { - display: block; + display: flex; + flex-direction: row; + justify-content: start; + align-items: center; } .mx_InteractiveAuthEntryComponents_passwordSection { From 41c18d0d249288d60283a740c18f23913d16ec95 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 3 Feb 2021 12:02:50 +0000 Subject: [PATCH 269/275] Upgrade matrix-js-sdk to 9.6.0 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f616e76c61..60c4212739 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.20", - "matrix-js-sdk": "9.6.0-rc.1", + "matrix-js-sdk": "9.6.0", "matrix-widget-api": "^0.1.0-beta.13", "minimist": "^1.2.5", "pako": "^2.0.3", diff --git a/yarn.lock b/yarn.lock index 88376bcad0..3febf0570f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5577,10 +5577,10 @@ mathml-tag-names@^2.1.3: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@9.6.0-rc.1: - version "9.6.0-rc.1" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.6.0-rc.1.tgz#f5dd325b9b5c5b3fdf5199351ab51ecab1b2113c" - integrity sha512-Da5C4uTm7LRfjyb9pM7dbmkwFVVYH8HdjRa7rpaRP9elHwptJmAeoKEzPU5HcPkFFNQbBy11Kq+58IgKcVpwKA== +matrix-js-sdk@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.6.0.tgz#e3aee2f2a2c395aaa8a90a19023addee7af02099" + integrity sha512-zoNqB7z0C0QDncN7yD1K50c4C88VPofWaCQ0gNXqO/Ac1dr/xLF/46iNF9Y+dBwq7siBO9wEh20WFHMaRpeLOg== dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" From 379c485ff82b8e19e58c6eec130b2f7bb4ab19c4 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 3 Feb 2021 12:07:41 +0000 Subject: [PATCH 270/275] Prepare changelog for v3.13.0 --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18f2c1a421..5d1595396b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +Changes in [3.13.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.13.0) (2021-02-03) +===================================================================================================== +[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.13.0-rc.1...v3.13.0) + + * Upgrade to JS SDK 9.6.0 + * [Release] Fix flair height after accent changes + [\#5612](https://github.com/matrix-org/matrix-react-sdk/pull/5612) + * [Release] Iterate Social Logins work around edge cases and branding + [\#5610](https://github.com/matrix-org/matrix-react-sdk/pull/5610) + * [Release] Lock widget room ID when added + [\#5608](https://github.com/matrix-org/matrix-react-sdk/pull/5608) + * [Release] Better errors for SSO failures + [\#5606](https://github.com/matrix-org/matrix-react-sdk/pull/5606) + * [Release] Fix RoomView re-mounting breaking peeking + [\#5603](https://github.com/matrix-org/matrix-react-sdk/pull/5603) + Changes in [3.13.0-rc.1](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.13.0-rc.1) (2021-01-29) =============================================================================================================== [Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.12.1...v3.13.0-rc.1) From 11f80be0f7d4d6b05e8d527f051b99b8ae9f2839 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 3 Feb 2021 12:07:42 +0000 Subject: [PATCH 271/275] v3.13.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 60c4212739..4e32409fb7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "matrix-react-sdk", - "version": "3.13.0-rc.1", + "version": "3.13.0", "description": "SDK for matrix.org using React", "author": "matrix.org", "repository": { From 9840ac6f179f3188675d24ce33dac672e83cc4b0 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 3 Feb 2021 12:10:42 +0000 Subject: [PATCH 272/275] Resetting package fields for development --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 4e32409fb7..1d0c530ffd 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "matrix-gen-i18n": "scripts/gen-i18n.js", "matrix-prune-i18n": "scripts/prune-i18n.js" }, - "main": "./lib/index.js", + "main": "./src/index.js", "matrix_src_main": "./src/index.js", "matrix_lib_main": "./lib/index.js", "matrix_lib_typings": "./lib/index.d.ts", @@ -190,6 +190,5 @@ "transformIgnorePatterns": [ "/node_modules/(?!matrix-js-sdk).+$" ] - }, - "typings": "./lib/index.d.ts" + } } From bd538823cfc1046ce2577385a4ffdecca67e52f3 Mon Sep 17 00:00:00 2001 From: RiotRobot Date: Wed, 3 Feb 2021 12:11:07 +0000 Subject: [PATCH 273/275] Reset matrix-js-sdk back to develop branch --- package.json | 2 +- yarn.lock | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1d0c530ffd..a5f626d09a 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.20", - "matrix-js-sdk": "9.6.0", + "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#develop", "matrix-widget-api": "^0.1.0-beta.13", "minimist": "^1.2.5", "pako": "^2.0.3", diff --git a/yarn.lock b/yarn.lock index 3febf0570f..1a350f697a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5577,10 +5577,9 @@ mathml-tag-names@^2.1.3: resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3" integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== -matrix-js-sdk@9.6.0: +"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": version "9.6.0" - resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-9.6.0.tgz#e3aee2f2a2c395aaa8a90a19023addee7af02099" - integrity sha512-zoNqB7z0C0QDncN7yD1K50c4C88VPofWaCQ0gNXqO/Ac1dr/xLF/46iNF9Y+dBwq7siBO9wEh20WFHMaRpeLOg== + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/6ad3fb16b3813c717943f6bc8bca5a55fe325477" dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" From fd7c50f6836abbd82afd8191017d06f57a0158b1 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 3 Feb 2021 14:05:22 +0000 Subject: [PATCH 274/275] Move route splitting inside route parsing --- .../permalinks/ElementPermalinkConstructor.js | 18 +++++++++++------- src/utils/permalinks/Permalinks.js | 4 ++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/utils/permalinks/ElementPermalinkConstructor.js b/src/utils/permalinks/ElementPermalinkConstructor.js index 29f2602304..7d1096e22d 100644 --- a/src/utils/permalinks/ElementPermalinkConstructor.js +++ b/src/utils/permalinks/ElementPermalinkConstructor.js @@ -75,11 +75,19 @@ export default class ElementPermalinkConstructor extends PermalinkConstructor { throw new Error("Does not appear to be a permalink"); } - const parts = fullUrl.substring(`${this._elementUrl}/#/`.length).split("/"); - return ElementPermalinkConstructor.parseLinkParts(parts); + const parts = fullUrl.substring(`${this._elementUrl}/#/`.length); + return ElementPermalinkConstructor.parseAppRoute(parts); } - static parseLinkParts(parts: string[]): PermalinkParts { + /** + * Parses an app route (`(user|room|group)/identifer`) to a Matrix entity + * (room, user, group). + * @param {string} route The app route + * @returns {PermalinkParts} + */ + static parseAppRoute(route: string): PermalinkParts { + const parts = route.split("/"); + if (parts.length < 2) { // we're expecting an entity and an ID of some kind at least throw new Error("URL is missing parts"); } @@ -93,10 +101,6 @@ export default class ElementPermalinkConstructor extends PermalinkConstructor { // Probably a group, no further parsing needed. return PermalinkParts.forGroup(entity); } else if (entityType === 'room') { - if (parts.length === 2) { - return PermalinkParts.forRoom(entity, []); - } - // rejoin the rest because v3 events can have slashes (annoyingly) const eventIdAndQuery = parts.length > 2 ? parts.slice(2).join('/') : ""; const secondaryParts = eventIdAndQuery.split("?"); diff --git a/src/utils/permalinks/Permalinks.js b/src/utils/permalinks/Permalinks.js index 9851bc3cb3..086abc669d 100644 --- a/src/utils/permalinks/Permalinks.js +++ b/src/utils/permalinks/Permalinks.js @@ -414,8 +414,8 @@ export function parsePermalink(fullUrl: string): PermalinkParts { */ export function parseAppLocalLink(localLink: string): PermalinkParts { try { - const segments = localLink.replace("#/", "").split("/"); - return ElementPermalinkConstructor.parseLinkParts(segments); + const segments = localLink.replace("#/", ""); + return ElementPermalinkConstructor.parseAppRoute(segments); } catch (e) { // Ignore failures } From 474c029db5cda5b2af05505ba31d7e7956b00824 Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Wed, 3 Feb 2021 15:18:19 +0000 Subject: [PATCH 275/275] Fix permalink via parsing for rooms This adjusts the app local link parsing path to better handle `via`s in query params. Previously this path only expected them when an event ID was also present, but it's also valid to have `via`s without event IDs as well. Fixes https://github.com/vector-im/element-web/issues/16345 --- .../permalinks/ElementPermalinkConstructor.js | 18 +++++------ .../views/messages/TextualBody-test.js | 32 +++++++++++++++++++ test/test-utils.js | 1 + 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/utils/permalinks/ElementPermalinkConstructor.js b/src/utils/permalinks/ElementPermalinkConstructor.js index 7d1096e22d..da7f5797ea 100644 --- a/src/utils/permalinks/ElementPermalinkConstructor.js +++ b/src/utils/permalinks/ElementPermalinkConstructor.js @@ -92,6 +92,11 @@ export default class ElementPermalinkConstructor extends PermalinkConstructor { throw new Error("URL is missing parts"); } + // Split optional query out of last part + const [lastPartMaybeWithQuery] = parts.splice(-1, 1); + const [lastPart, query = ""] = lastPartMaybeWithQuery.split("?"); + parts.push(lastPart); + const entityType = parts[0]; const entity = parts[1]; if (entityType === 'user') { @@ -101,16 +106,9 @@ export default class ElementPermalinkConstructor extends PermalinkConstructor { // Probably a group, no further parsing needed. return PermalinkParts.forGroup(entity); } else if (entityType === 'room') { - // rejoin the rest because v3 events can have slashes (annoyingly) - const eventIdAndQuery = parts.length > 2 ? parts.slice(2).join('/') : ""; - const secondaryParts = eventIdAndQuery.split("?"); - - const eventId = secondaryParts[0]; - const query = secondaryParts.length > 1 ? secondaryParts[1] : ""; - - // TODO: Verify Element works with via args - const via = query.split("via=").filter(p => !!p); - + // Rejoin the rest because v3 events can have slashes (annoyingly) + const eventId = parts.length > 2 ? parts.slice(2).join('/') : ""; + const via = query.split(/&?via=/).filter(p => !!p); return PermalinkParts.forEvent(entity, eventId, via); } else { throw new Error("Unknown entity type in permalink"); diff --git a/test/components/views/messages/TextualBody-test.js b/test/components/views/messages/TextualBody-test.js index 461af19658..d5b80b6756 100644 --- a/test/components/views/messages/TextualBody-test.js +++ b/test/components/views/messages/TextualBody-test.js @@ -242,6 +242,38 @@ describe("", () => { 'rel="noreferrer noopener">event link with text', ); }); + + it("pills appear for room links with vias", () => { + const ev = mkEvent({ + type: "m.room.message", + room: "room_id", + user: "sender", + content: { + body: + "A [room link](https://matrix.to/#/!ZxbRYPQXDXKGmDnJNg:example.com" + + "?via=example.com&via=bob.com) with vias", + msgtype: "m.text", + format: "org.matrix.custom.html", + formatted_body: + "A room link with vias", + }, + event: true, + }); + + const wrapper = mount(); + expect(wrapper.text()).toBe("A !ZxbRYPQXDXKGmDnJNg:example.com with vias"); + const content = wrapper.find(".mx_EventTile_body"); + expect(content.html()).toBe( + '' + + 'A ' + + '!ZxbRYPQXDXKGmDnJNg:example.com with vias', + ); + }); }); it("renders url previews correctly", () => { diff --git a/test/test-utils.js b/test/test-utils.js index c8e623b1d9..839e1d6cd8 100644 --- a/test/test-utils.js +++ b/test/test-utils.js @@ -243,6 +243,7 @@ export function mkStubRoom(roomId = null) { on: jest.fn(), removeListener: jest.fn(), getDMInviter: jest.fn(), + getAvatarUrl: () => 'mxc://avatar.url/room.png', }; }