From 5ef0eece9a4ee9134560e9f3757f8138610051f8 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 14 May 2018 16:09:22 +0100 Subject: [PATCH 001/480] refactor and sort Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/rooms/RoomSettings.js | 65 +++++++++++++++------- 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index 658f99223e..f1aba322e2 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -695,26 +695,51 @@ module.exports = React.createClass({ relatedGroupsEvent={this.props.room.currentState.getStateEvents('m.room.related_groups', '')} />; - let userLevelsSection; + let privilegedUsersSection =
{ _t('No users have specific privileges in this room') }.
; // default + let mutedUsersSection; if (Object.keys(userLevels).length) { - userLevelsSection = -
-

{ _t('Privileged Users') }

- -
; - } else { - userLevelsSection =
{ _t('No users have specific privileges in this room') }.
; + ); + } else if (userLevels[user] < defaultUserLevel) { // muted + mutedUsers.push(
  • + { _t("%(user)s is a %(userRole)s", { + user: user, + userRole: , + }) } +
  • ); + } + }); + + privilegedUsers.sort((a, b) => userLevels[b.key] - userLevels[a.key]); + mutedUsers.sort((a, b) => userLevels[a.key] - userLevels[b.key]); + + if (privilegedUsers.length) { + privilegedUsersSection = +
    +

    { _t('Privileged Users') }

    + +
    ; + } + if (mutedUsers.length) { + mutedUsersSection = +
    +

    { _t('Muted Users') }

    + +
    ; + } } const banned = this.props.room.getMembersWithMembership("ban"); @@ -979,8 +1004,8 @@ module.exports = React.createClass({ { unfederatableSection } - { userLevelsSection } - + { privilegedUsersSection } + { mutedUsersSection } { bannedUsersSection }

    { _t('Advanced') }

    From 06e1acdf04f2a91ee25decd443ec5de489cb320c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 14 May 2018 16:11:42 +0100 Subject: [PATCH 002/480] run i18n-gen and i18n-prune Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/i18n/strings/bg.json | 7 ---- src/i18n/strings/ca.json | 6 --- src/i18n/strings/cs.json | 5 --- src/i18n/strings/da.json | 1 - src/i18n/strings/de_DE.json | 7 ---- src/i18n/strings/el.json | 5 --- src/i18n/strings/en_EN.json | 70 +++++++++++++++++------------------ src/i18n/strings/en_US.json | 5 --- src/i18n/strings/eo.json | 6 --- src/i18n/strings/es.json | 3 -- src/i18n/strings/eu.json | 7 ---- src/i18n/strings/fi.json | 4 -- src/i18n/strings/fr.json | 7 ---- src/i18n/strings/gl.json | 7 ---- src/i18n/strings/he.json | 1 - src/i18n/strings/hu.json | 7 ---- src/i18n/strings/it.json | 7 ---- src/i18n/strings/ja.json | 1 - src/i18n/strings/ko.json | 5 --- src/i18n/strings/lv.json | 6 --- src/i18n/strings/nl.json | 7 ---- src/i18n/strings/pl.json | 6 --- src/i18n/strings/pt.json | 5 --- src/i18n/strings/pt_BR.json | 5 --- src/i18n/strings/ru.json | 7 ---- src/i18n/strings/sk.json | 7 ---- src/i18n/strings/sq.json | 1 - src/i18n/strings/sr.json | 7 ---- src/i18n/strings/sv.json | 1 - src/i18n/strings/th.json | 3 -- src/i18n/strings/tr.json | 5 --- src/i18n/strings/uk.json | 1 - src/i18n/strings/zh_Hans.json | 7 ---- src/i18n/strings/zh_Hant.json | 7 ---- 34 files changed, 34 insertions(+), 202 deletions(-) diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index dc48b0ba59..7356b62fda 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -532,8 +532,6 @@ "You should not yet trust it to secure data": "Все още не трябва да се доверявате на това, че ще защити Вашите данни", "Invalid file%(extra)s": "Невалиден файл%(extra)s", "Error decrypting image": "Грешка при разшифроване на снимка", - "This image cannot be displayed.": "Тази снимка не може да бъде показана.", - "Image '%(Body)s' cannot be displayed.": "Снимката '%(Body)s' не може да бъде показана.", "Error decrypting video": "Грешка при разшифроване на видео", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s промени аватара на %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s премахна аватара на стаята.", @@ -713,9 +711,7 @@ "Ignore request": "Игнорирай поканата", "Loading device info...": "Зареждане на информация за устройството...", "Encryption key request": "Заявка за ключ за шифроване", - "Otherwise, click here to send a bug report.": "В противен случай, натиснете тук, за да изпратите съобщение за грешка.", "Unable to restore session": "Неуспешно възстановяване на сесията", - "Continue anyway": "Продължи въпреки това", "Invalid Email Address": "Невалиден имейл адрес", "This doesn't appear to be a valid email address": "Това не изглежда да е валиден имейл адрес", "Please check your email and click on the link it contains. Once this is done, click continue.": "Моля, проверете своя имейл адрес и натиснете връзката, която той съдържа. След като направите това, натиснете продължи.", @@ -962,7 +958,6 @@ "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.": "Сигурни ли сте, че искате да премахнете (изтриете) това събитие? Забележете, че ако изтриете събитие за промяна на името на стая или тема, това може да обърне промяната.", "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "За да потвърдите, че на това устройство може да се вярва, моля свържете се със собственика му по друг начин (напр. на живо или чрез телефонен разговор) и го попитайте дали ключът, който той вижда в неговите настройки на потребителя за това устройство, съвпада с ключа по-долу:", "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ако съвпада, моля натиснете бутона за потвърждение по-долу. Ако не, то тогава някой друг имитира това устройство и вероятно искате вместо това да натиснете бутона за черен списък.", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Засякохме грешка при опита за възстановяване на предишната Ви сесия. Ако продължите, ще трябва да влезете в профила си отново. Шифрованата история на чата няма да бъде четима.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако преди сте използвали по-нова версия на Riot, Вашата сесия може да не бъде съвместима с текущата версия. Затворете този прозорец и се върнете в по-новата версия.", "This will be your account name on the homeserver, or you can pick a different server.": "Това ще бъде името на профила Ви на Home сървъра, или можете да изберете друг сървър.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Препоръчваме Ви да минете през процеса за потвърждение за всяко устройство, за да потвърдите, че принадлежат на легитимен собственик. Ако предпочитате, можете да изпратите съобщение без потвърждение.", @@ -996,7 +991,6 @@ "Join this community": "Присъединете се в тази общност", "Leave this community": "Напуснете тази общност", "Stickerpack": "Пакет със стикери", - "Sticker Messages": "Съобщения със стикери", "You don't currently have any stickerpacks enabled": "В момента нямате включени пакети със стикери", "Add a stickerpack": "Добави пакет със стикери", "Hide Stickers": "Скрий стикери", @@ -1108,7 +1102,6 @@ "Notify me for anything else": "Извести ме за всичко останало", "When I'm invited to a room": "Когато ме поканят в стая", "Keywords": "Ключови думи", - "Click here to create a GitHub issue.": "Натиснете тук, за да създадете GitHub issue.", "Can't update user notification settings": "Неуспешно обновяване на потребителски настройки за известяване", "Notify for all other messages/rooms": "Извести ме за всички други съобщения/стаи", "Unable to look up room ID from server": "Стая с такъв идентификатор не е намерена на сървъра", diff --git a/src/i18n/strings/ca.json b/src/i18n/strings/ca.json index b95c4914b1..514c6e66fe 100644 --- a/src/i18n/strings/ca.json +++ b/src/i18n/strings/ca.json @@ -499,8 +499,6 @@ "Download %(text)s": "Baixa %(text)s", "Invalid file%(extra)s": "Fitxer invàlid%(extra)s", "Error decrypting image": "S'ha produït un error en desencriptar la imatge", - "Image '%(Body)s' cannot be displayed.": "La imatge '%(Body)s' no es pot mostrar.", - "This image cannot be displayed.": "Aquesta imatge no es pot mostrar.", "Error decrypting video": "S'ha produït un error en desencriptar el vídeo", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ha canviat el seu avatar per a la sala %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s ha eliminat l'avatar de la sala.", @@ -694,9 +692,7 @@ "Ignore request": "Ignora la sol·licitud", "Loading device info...": "S'està carregant la informació del dispositiu...", "Encryption key request": "Sol·licitud de claus", - "Otherwise, click here to send a bug report.": "D'una altra manera, click here per a enviar un informe d'error.", "Unable to restore session": "No s'ha pogut restaurar la sessió", - "Continue anyway": "Continua de totes maneres", "Invalid Email Address": "El correu electrònic no és vàlid", "This doesn't appear to be a valid email address": "Aquest no sembla ser un correu electrònic vàlid", "Verification Pending": "Verificació pendent", @@ -714,7 +710,6 @@ "This will be your account name on the homeserver, or you can pick a different server.": "Aquest serà el nom del seu compte al servidor amfitrió, o bé trieu-ne un altre different server.", "If you already have a Matrix account you can log in instead.": "Si ja teniu un compte a Matrix, podeu log in.", "Block users on other matrix homeservers from joining this room": "Impedeix als usuaris d'altres servidors de Matrix d'entrar a aquesta sala", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Hem trobat un error en intentar restaurar la vostra sessió anterior. Si continueu, haureu d'iniciar la sessió de nou i l'historial de xat encriptat serà il·legible.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si anteriorment heu utilitzat un versió de Riot més recent, la vostra sessió podría ser incompatible amb aquesta versió. Tanqueu aquesta finestra i torneu a la versió més recent.", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Actualment teniu a la llista negre els dispositius no verificats; per enviar missatges a aquests dispositius, els heu de verificar abans.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Recomanem que dugueu a terme el procès de verificació per a cada dispositiu per tal de confirmar que són del legítim propietari, però podeu enviar el missatge sense verificar-ho si ho preferiu.", @@ -986,7 +981,6 @@ "Notify me for anything else": "Notifica'm per a qualsevol altra cosa", "View Source": "Mostra el codi", "Keywords": "Paraules clau", - "Click here to create a GitHub issue.": "Clica aquí per crear una issue a GitHub.", "Can't update user notification settings": "No es poden actualitzar els paràmetres de les notificacions de l'usuari", "Notify for all other messages/rooms": "Notifica per a tots els altres missatges o sales", "Unable to look up room ID from server": "No s'ha pogut cercar l'ID de la sala en el servidor", diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index d19f17e097..a80b9daf64 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -262,7 +262,6 @@ "olm version:": "verze olm:", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Jakmile je jednou šifrování v místnosti zapnuto, nelze už vypnout (prozatím)", "Only people who have been invited": "Pouze lidé, kteří byli pozváni", - "Otherwise, click here to send a bug report.": "V opačném případě klikněte zde a pošlete hlášení o chybě.", "Password": "Heslo", "Password:": "Heslo:", "Passwords can't be empty": "Hesla nemohou být prázdná", @@ -494,8 +493,6 @@ "You need to be able to invite users to do that.": "Pro tuto akci musíte mít právo zvát uživatele.", "Delete Widget": "Smazat widget", "Error decrypting image": "Chyba při dešifrování obrázku", - "Image '%(Body)s' cannot be displayed.": "Obrázek '%(Body)s' nemůže být zobrazen.", - "This image cannot be displayed.": "Tento obrázek nelze zobrazit.", "Error decrypting video": "Chyba při dešifrování videa", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odstranil/a avatar místnosti.", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s změnil/a avatar místnosti na ", @@ -808,9 +805,7 @@ "Ignore request": "Ignorovat žádost", "Encryption key request": "Žádost o šifrovací klíč", "Unable to restore session": "Nelze obnovit relaci", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Při pokusu o obnovení vaší předcházející relace se vyskytla chyba. Pokud budete pokračovat musíte se znovu přihlásit a historie šifrovaného rozhovoru nebude již dostupná.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Pokud jste se v minulosti již přihlásili s novější verzi programu Riot, vaše relace nemusí být kompatibilní s touto verzí. Zavřete prosím toto okno a přihlaste se znovu pomocí nové verze.", - "Continue anyway": "Přesto pokračovat", "Please check your email and click on the link it contains. Once this is done, click continue.": "Prosím, zkontrolujte si email a klikněte na odkaz ve zprávě, kterou jsme vám zaslali. V případě, že jste tak již učinili, klikněte na tlačítko Pokračovat.", "This will allow you to reset your password and receive notifications.": "Toto vám umožní obnovit si heslo a přijímat oznámení emailem.", "Skip": "Přeskočit", diff --git a/src/i18n/strings/da.json b/src/i18n/strings/da.json index 19fc7d06c6..2a59530d5a 100644 --- a/src/i18n/strings/da.json +++ b/src/i18n/strings/da.json @@ -393,7 +393,6 @@ "There are advanced notifications which are not shown here": "Der er avancerede meddelelser, som ikke vises her", "%(count)s Members|other": "%(count)s medlemmer", "Logs sent": "Logfiler sendt", - "Click here to create a GitHub issue.": "Klik her for at oprette et GitHub-issue.", "Reply": "Besvar", "All messages (noisy)": "Alle meddelelser (højlydt)", "GitHub issue link:": "Link til GitHub issue:", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 21d40dd86d..f2f4e103f7 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -431,7 +431,6 @@ "Verify device": "Gerät verifizieren", "I verify that the keys match": "Ich bestätige, dass die Schlüssel identisch sind", "Unable to restore session": "Sitzungswiederherstellung fehlgeschlagen", - "Continue anyway": "Trotzdem fortfahren", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Nicht verifizierte Geräte werden aktuell blockiert und auf die Sperrliste gesetzt. Um Nachrichten an diese Geräte senden zu können, müssen diese zunächst verifiziert werden.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" enthält Geräte, die du bislang noch nicht gesehen hast.", "Unknown devices": "Unbekannte Geräte", @@ -458,8 +457,6 @@ "What does this mean?": "Was bedeutet das?", "Error decrypting audio": "Audio-Entschlüsselung fehlgeschlagen", "Error decrypting image": "Bild-Entschlüsselung fehlgeschlagen", - "Image '%(Body)s' cannot be displayed.": "Das Bild '%(Body)s' kann nicht angezeigt werden.", - "This image cannot be displayed.": "Dieses Bild kann nicht angezeigt werden.", "Error decrypting video": "Video-Entschlüsselung fehlgeschlagen", "Import room keys": "Raum-Schlüssel importieren", "File to import": "Zu importierende Datei", @@ -480,7 +477,6 @@ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Dies wird dein Benutzerkonto dauerhaft unbenutzbar machen. Du wirst nicht in der Lage sein, dich mit derselben Benutzer-ID erneut zu registrieren.", "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Um sicherzustellen, dass diesem Gerät vertraut werden kann, kontaktiere bitte den Eigentümer des Geräts über ein anderes Kommunikationsmittel (z.B. im persönlichen Gespräch oder durch einen Telefonanruf) und vergewissere dich, dass der Schlüssel, den der Eigentümer in den Benutzer-Einstellungen für dieses Gerät sieht, mit dem folgenden Schlüssel identisch ist:", "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Wenn er identisch ist, bitte den Bestätigen-Button unten verwenden. Falls er nicht identisch sein sollte, hat eine Fremdperson Kontrolle über dieses Gerät und es sollte gesperrt werden.", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Bei der Wiederherstellung deiner letzten Sitzung ist ein Fehler aufgetreten. Um fortzufahren, musst du dich erneut anmelden. Ein zuvor verschlüsselter Chatverlauf wird in der Folge nicht mehr lesbar sein.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Wenn du zuvor eine aktuellere Version von Riot verwendet hast, ist deine Sitzung eventuell inkompatibel mit dieser Version. Bitte schließe dieses Fenster und kehre zur aktuelleren Version zurück.", "Blacklist": "Blockieren", "Unblacklist": "Entblockieren", @@ -590,7 +586,6 @@ "Last seen": "Zuletzt gesehen", "Level:": "Berechtigungslevel:", "No display name": "Kein Anzeigename", - "Otherwise, click here to send a bug report.": "Alternativ hier klicken, um einen Fehlerbericht zu senden.", "Private Chat": "Privater Chat", "Public Chat": "Öffentlicher Chat", "Reason: %(reasonText)s": "Grund: %(reasonText)s", @@ -995,7 +990,6 @@ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Änderungen am Namen und Bild deiner Community werden evtl. erst nach 30 Minuten von anderen Nutzern gesehen werden.", "Join this community": "Community beitreten", "Leave this community": "Community verlassen", - "Sticker Messages": "Sticker-Nachrichten", "You don't currently have any stickerpacks enabled": "Du hast aktuell keine Stickerpacks aktiviert", "Add a stickerpack": "Füge ein Stickerpack hinzu", "Hide Stickers": "Sticker verbergen", @@ -1110,7 +1104,6 @@ "What's new?": "Was ist neu?", "Notify me for anything else": "Über alles andere benachrichtigen", "When I'm invited to a room": "Wenn ich in einen Raum eingeladen werde", - "Click here to create a GitHub issue.": "Klicke hier um ein GithHub-Problem zu erstellen.", "Can't update user notification settings": "Benachrichtigungs-Einstellungen des Benutzers konnten nicht aktualisiert werden", "Notify for all other messages/rooms": "Benachrichtigungen für alle anderen Mitteilungen/Räume aktivieren", "Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen", diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index b5acd8855e..9817010e38 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -384,7 +384,6 @@ "Device key": "Κλειδί συσκευής", "Verify device": "Επιβεβαίωση συσκευής", "Unable to restore session": "Αδυναμία επαναφοράς συνεδρίας", - "Continue anyway": "Συνέχεια οπωσδήποτε", "Unknown devices": "Άγνωστες συσκευές", "Unknown Address": "Άγνωστη διεύθυνση", "Blacklist": "Μαύρη λίστα", @@ -402,8 +401,6 @@ "What does this mean?": "Τι σημαίνει αυτό;", "Error decrypting audio": "Σφάλμα κατά την αποκρυπτογράφηση του ήχου", "Error decrypting image": "Σφάλμα κατά την αποκρυπτογράφηση της εικόνας", - "Image '%(Body)s' cannot be displayed.": "Η εικόνα '%(Body)s' δεν μπορεί να εμφανιστεί.", - "This image cannot be displayed.": "Αυτή η εικόνα δεν μπορεί να εμφανιστεί.", "Error decrypting video": "Σφάλμα κατά την αποκρυπτογράφηση του βίντεο", "Add an Integration": "Προσθήκη ενσωμάτωσης", "URL Previews": "Προεπισκόπηση συνδέσμων", @@ -462,7 +459,6 @@ "No users have specific privileges in this room": "Κανένας χρήστης δεν έχει συγκεκριμένα δικαιώματα σε αυτό το δωμάτιο", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Μόλις ενεργοποιηθεί η κρυπτογράφηση για ένα δωμάτιο, δεν μπορεί να απενεργοποιηθεί ξανά (για τώρα)", "Only people who have been invited": "Μόνο άτομα που έχουν προσκληθεί", - "Otherwise, click here to send a bug report.": "Διαφορετικά, κάντε κλικ εδώ για να αποστείλετε μια αναφορά σφάλματος.", "%(senderName)s placed a %(callType)s call.": "Ο %(senderName)s πραγματοποίησε μια %(callType)s κλήση.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Παρακαλούμε ελέγξτε την ηλεκτρονική σας αλληλογραφία και κάντε κλικ στον σύνδεσμο που περιέχει. Μόλις γίνει αυτό, κάντε κλίκ στο κουμπί συνέχεια.", "Refer a friend to Riot:": "Πείτε για το Riot σε έναν φίλο σας:", @@ -621,7 +617,6 @@ "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Με αυτόν τον τρόπο, ο λογαριασμός σας θα είναι μόνιμα αχρησιμοποίητος. Δεν θα μπορείτε να εγγραφείτε ξανά με το ίδιο αναγνωριστικό χρήστη.", "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Για να βεβαιωθείτε ότι είναι αξιόπιστη αυτή η συσκευή, επικοινωνήστε με τον κάτοχο της χρησιμοποιώντας άλλα μέσα (π.χ. προσωπικά ή μέσω τηλεφώνου) και ρωτήστε εάν το κλειδί που βλέπετε στις ρυθμίσεις χρήστη για αυτήν τη συσκευή ταιριάζει με το παρακάτω κλειδί:", "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Εάν ταιριάζει, πατήστε το κουμπί επιβεβαίωσης παρακάτω. Εάν όχι, τότε κάποιος άλλος παρακολουθεί αυτή τη συσκευή και ίσως θέλετε να πατήσετε το κουμπί της μαύρης λίστας.", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Παρουσιάστηκε ένα σφάλμα κατά την προσπάθεια επαναφοράς της προηγούμενης συνεδρίας. Αν συνεχίσετε, θα χρειαστεί να συνδεθείτε ξανά και το κρυπτογραφημένο ιστορικό συνομιλιών θα είναι μη αναγνώσιμο.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Αν χρησιμοποιούσατε προηγουμένως μια πιο πρόσφατη έκδοση του Riot, η συνεδρία σας ίσως είναι μη συμβατή με αυτήν την έκδοση. Κλείστε αυτό το παράθυρο και επιστρέψτε στην πιο πρόσφατη έκδοση.", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Αυτήν τη στιγμή βάζετε σε μαύρη λίστα μη επιβαιωμένες συσκευές. Για να στείλετε μηνύματα σε αυτές τις συσκευές, πρέπει να τις επιβεβαιώσετε.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Σας συνιστούμε να ολοκληρώσετε τη διαδικασία επαλήθευσης για κάθε συσκευή και να επιβεβαιώσετε ότι ανήκουν στον νόμιμο κάτοχό της, αλλά εάν προτιμάτε μπορείτε να στείλετε ξανά το μήνυμα χωρίς επαλήθευση.", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 9b932ef2b6..d38259cdbf 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -41,6 +41,10 @@ "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", "Upload Failed": "Upload Failed", + "Failure to create room": "Failure to create room", + "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", + "Send anyway": "Send anyway", + "Send": "Send", "Sun": "Sun", "Mon": "Mon", "Tue": "Tue", @@ -80,6 +84,7 @@ "Failed to invite users to community": "Failed to invite users to community", "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", + "Unnamed Room": "Unnamed Room", "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", "Unable to enable Notifications": "Unable to enable Notifications", @@ -178,11 +183,6 @@ "%(names)s and %(count)s others are typing|other": "%(names)s and %(count)s others are typing", "%(names)s and %(count)s others are typing|one": "%(names)s and one other is typing", "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", - "Failure to create room": "Failure to create room", - "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", - "Send anyway": "Send anyway", - "Send": "Send", - "Unnamed Room": "Unnamed Room", "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", "Not a valid Riot keyfile": "Not a valid Riot keyfile", "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", @@ -190,7 +190,6 @@ "Message Replies": "Message Replies", "Message Pinning": "Message Pinning", "Tag Panel": "Tag Panel", - "Sticker Messages": "Sticker Messages", "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", "Use compact timeline layout": "Use compact timeline layout", "Hide removed messages": "Hide removed messages", @@ -297,6 +296,29 @@ "Off": "Off", "On": "On", "Noisy": "Noisy", + "Invalid alias format": "Invalid alias format", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "Invalid address format": "Invalid address format", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "not specified": "not specified", + "not set": "not set", + "Remote addresses for this room:": "Remote addresses for this room:", + "Addresses": "Addresses", + "The main address for this room is": "The main address for this room is", + "Local addresses for this room:": "Local addresses for this room:", + "This room has no local addresses": "This room has no local addresses", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "Invalid community ID": "Invalid community ID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is not a valid community ID", + "Flair": "Flair", + "Showing flair for these communities:": "Showing flair for these communities:", + "This room is not showing flair for any communities": "This room is not showing flair for any communities", + "New community ID (e.g. +foo:%(localDomain)s)": "New community ID (e.g. +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "You have disabled 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 enabled by default for participants in this room.", + "URL previews are disabled by default for participants in this room.": "URL previews are disabled by default for participants in this room.", + "URL Previews": "URL Previews", "Cannot add any more widgets": "Cannot add any more widgets", "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", "Add a widget": "Add a widget", @@ -393,11 +415,11 @@ "numbullet": "numbullet", "Markdown is disabled": "Markdown is disabled", "Markdown is enabled": "Markdown is enabled", - "Unpin Message": "Unpin Message", - "Jump to message": "Jump to message", "No pinned messages.": "No pinned messages.", "Loading...": "Loading...", "Pinned Messages": "Pinned Messages", + "Unpin Message": "Unpin Message", + "Jump to message": "Jump to message", "%(duration)ss": "%(duration)ss", "%(duration)sm": "%(duration)sm", "%(duration)sh": "%(duration)sh", @@ -490,9 +512,10 @@ "To kick users, you must be a": "To kick users, you must be a", "To ban users, you must be a": "To ban users, you must be a", "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", - "Privileged Users": "Privileged Users", - "%(user)s is a %(userRole)s": "%(user)s is a %(userRole)s", "No users have specific privileges in this room": "No users have specific privileges in this room", + "%(user)s is a %(userRole)s": "%(user)s is a %(userRole)s", + "Privileged Users": "Privileged Users", + "Muted Users": "Muted Users", "Banned users": "Banned users", "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", "Leave room": "Leave room", @@ -528,29 +551,6 @@ "Scroll to unread messages": "Scroll to unread messages", "Jump to first unread message.": "Jump to first unread message.", "Close": "Close", - "Invalid alias format": "Invalid alias format", - "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", - "Invalid address format": "Invalid address format", - "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", - "not specified": "not specified", - "not set": "not set", - "Remote addresses for this room:": "Remote addresses for this room:", - "Addresses": "Addresses", - "The main address for this room is": "The main address for this room is", - "Local addresses for this room:": "Local addresses for this room:", - "This room has no local addresses": "This room has no local addresses", - "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", - "Invalid community ID": "Invalid community ID", - "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is not a valid community ID", - "Flair": "Flair", - "Showing flair for these communities:": "Showing flair for these communities:", - "This room is not showing flair for any communities": "This room is not showing flair for any communities", - "New community ID (e.g. +foo:%(localDomain)s)": "New community ID (e.g. +foo:%(localDomain)s)", - "You have enabled URL previews by default.": "You have enabled URL previews by default.", - "You have disabled 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 enabled by default for participants in this room.", - "URL previews are disabled by default for participants in this room.": "URL previews are disabled by default for participants in this room.", - "URL Previews": "URL Previews", "Sunday": "Sunday", "Monday": "Monday", "Tuesday": "Tuesday", @@ -566,8 +566,6 @@ "Download %(text)s": "Download %(text)s", "Invalid file%(extra)s": "Invalid file%(extra)s", "Error decrypting image": "Error decrypting image", - "This image cannot be displayed.": "This image cannot be displayed.", - "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", "Error decrypting video": "Error decrypting video", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", @@ -815,8 +813,8 @@ "Encryption key request": "Encryption key request", "Sign out": "Sign out", "Log out and remove encryption keys?": "Log out and remove encryption keys?", - "Send Logs": "Send Logs", "Clear Storage and Sign Out": "Clear Storage and Sign Out", + "Send Logs": "Send Logs", "Refresh": "Refresh", "Unable to restore session": "Unable to restore session", "We encountered an error trying to restore your previous session.": "We encountered an error trying to restore your previous session.", diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index a3184fdc38..e316f72e80 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -509,10 +509,8 @@ "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", "Verify device": "Verify device", "I verify that the keys match": "I verify that the keys match", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.", "Unable to restore session": "Unable to restore session", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", - "Continue anyway": "Continue anyway", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", @@ -558,8 +556,6 @@ "What does this mean?": "What does this mean?", "Error decrypting audio": "Error decrypting audio", "Error decrypting image": "Error decrypting image", - "Image '%(Body)s' cannot be displayed.": "Image '%(Body)s' cannot be displayed.", - "This image cannot be displayed.": "This image cannot be displayed.", "Error decrypting video": "Error decrypting video", "Add an Integration": "Add an Integration", "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?": "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?", @@ -608,7 +604,6 @@ "Last seen": "Last seen", "Level:": "Level:", "No display name": "No display name", - "Otherwise, click here to send a bug report.": "Otherwise, click here to send a bug report.", "Private Chat": "Private Chat", "Public Chat": "Public Chat", "Reason: %(reasonText)s": "Reason: %(reasonText)s", diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json index cc8de81fa9..fae7d6cfa8 100644 --- a/src/i18n/strings/eo.json +++ b/src/i18n/strings/eo.json @@ -475,8 +475,6 @@ "Download %(text)s": "Elŝuti %(text)s", "Invalid file%(extra)s": "Malvalida dosiero%(extra)s", "Error decrypting image": "Eraro malĉifrante bildon", - "Image '%(Body)s' cannot be displayed.": "Bildo ‹%(Body)s› ne montreblas.", - "This image cannot be displayed.": "Ĉi tiu bildo ne montreblas.", "Error decrypting video": "Eraro malĉifrante videon", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s forigis la ĉambran profilbildon.", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s agordis la ĉambran profilbildon al ", @@ -673,11 +671,8 @@ "Ignore request": "Malatenti peton", "Loading device info...": "Enleganta informojn pri aparato…", "Encryption key request": "Peto por ĉifra ŝlosilo", - "Otherwise, click here to send a bug report.": "Alie, klaku ĉi tie por sendi cimraporton.", "Unable to restore session": "Seanco ne restaŭreblas", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Okazis eraron dum restaŭro de via antaŭa seanco. Se vi daŭrigos, vi devos denove saluti, kaj ĉifrita babila historio estos nelegebla.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se vi antaŭe uzis pli novan version de Riot, via seanco eble ne kongruos kun ĉi tiu versio. Fermu ĉi tiun fenestron kaj revenu al la pli nova versio.", - "Continue anyway": "Tamen daŭrigi", "Invalid Email Address": "Malvalida retpoŝtadreso", "This doesn't appear to be a valid email address": "Tio ĉi ne ŝajnas esti valida retpoŝtadreso", "Verification Pending": "Atendanta kontrolon", @@ -1107,7 +1102,6 @@ "Checking for an update...": "Serĉanta ĝisdatigojn…", "There are advanced notifications which are not shown here": "Ekzistas specialaj sciigoj, kiuj ne montriĝas ĉi tie", "Logs sent": "Protokolo sendiĝis", - "Click here to create a GitHub issue.": "Klaku ĉi tie por krei raporton ĉe GitHub.", "GitHub issue link:": "Ligilo al raporto ĉe GitHub:", "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.": "Sencimigaj protokoloj enhavas informojn pri uzo de aplikaĵo, inkluzive vian salutnomon, la identigilojn aŭ nomojn de la ĉambroj aŭ grupoj kiujn vi vizitis, kaj la salutnomojn de aliaj uzantoj. Ili ne enhavas mesaĝojn.", "Failed to send logs: ": "Malsukcesis sendi protokolon: ", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 07b38d7566..7ec0e821db 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -250,7 +250,6 @@ "Verify device": "Verifique el dispositivo", "I verify that the keys match": "Confirmo que las claves coinciden", "Unable to restore session": "No se puede recuperar la sesión", - "Continue anyway": "Continuar igualmente", "Room Colour": "Color de la sala", "Room contains unknown devices": "La sala contiene dispositivos desconocidos", "Room name (optional)": "Nombre de la sala (opcional)", @@ -344,7 +343,6 @@ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez se active el cifrado en esta sala, no podrá ser desactivado (por ahora)", "Only people who have been invited": "Sólo usuarios que han sido invitados", "Operation failed": "Falló la operación", - "Otherwise, click here to send a bug report.": "También puede pulsar aquí para enviar un informe de fallos.", "Password": "Contraseña", "Password:": "Contraseña:", "Passwords can't be empty": "Las contraseñas no pueden estar en blanco", @@ -696,7 +694,6 @@ "What's new?": "¿Qué hay de nuevo?", "Notify me for anything else": "Notificarme para cualquier otra cosa", "When I'm invited to a room": "Cuando estoy invitado a una sala", - "Click here to create a GitHub issue.": "Haz click aquí para crear una incidencia en Github.", "Can't update user notification settings": "No se puede actualizar la configuración de notificaciones del usuario", "Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas", "Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor", diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index e478c3270b..4015d703ce 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -327,7 +327,6 @@ "No users have specific privileges in this room": "Ez dago gela honetan baimen zehatzik duen erabiltzailerik", "olm version:": "olm bertsioa:", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Behin gela batean zifratzea gaituta ezin da gero desgaitu (oraingoz)", - "Otherwise, click here to send a bug report.": "Bestela, bidali arazte-txosten bat.", "Server may be unavailable, overloaded, or you hit a bug.": "Agian zerbitzaria ez dago eskuragarri, edo gainezka dago, edo akats bat aurkitu duzu.", "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen. Etorkizunean hau hobetuko da.", "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Segurtasunagatik, saioa amaitzeak nabigatzaile honetako muturretik muturrerako zifratze gako guztiak ezabatuko ditu. Zure elkarrizketen historiala deszifratzeko gai izan nahi baduzu etorkizuneko Riot saioetan, esportatu zure gelako gakoen babes-kopia bat.", @@ -574,10 +573,8 @@ "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Gailu hau fidagarria dela egiaztatzeko, kontaktatu bere jabea beste medio bat erabiliz (adib. aurrez aurre edo telefonoz deituz) eta galdetu beraien erabiltzaile-ezarpenetan bere gailurako ikusten duen gakoa hemen beheko bera den:", "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Bat badator sakatu egiaztatu botoia. Bat ez badator, beste inor gailu hau atzematen dago eta blokeatu beharko zenuke.", "In future this verification process will be more sophisticated.": "etorkizunean egiaztaketa metodoa hobetuko da.", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Errore bat gertatu da zure aurreko saioa berreskuratzen saiatzean. Jarraitzen baduzu berriro hasi beharko duzu saioa eta ezin izango duzu irakurri zifratutako historiala.", "Unable to restore session": "Ezin izan da saioa berreskuratu", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Aurretik Riot bertsio berriago bat erabili baduzu, zure saioa bertsio honekin bateraezina izan daiteke. Itxi leiho hau eta itzuli bertsio berriagora.", - "Continue anyway": "Jarraitu hala ere", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Gailu bakoitzaren egiaztaketa prozesua jarraitzea aholkatzen dizugu, benetako jabeari dagozkiela baieztatzeko, baina mezua egiaztatu gabe birbidali dezakezu ere.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" gelan aurretik ikusi ez dituzun gailuak daude.", "Unknown devices": "Gailu ezezagunak", @@ -600,8 +597,6 @@ "What does this mean?": "Zer esan nahi du honek?", "Error decrypting audio": "Errorea audioa deszifratzean", "Error decrypting image": "Errorea audioa deszifratzean", - "Image '%(Body)s' cannot be displayed.": "Ezin da '%(Body)s' irudia bistaratu.", - "This image cannot be displayed.": "Irudi hau ezin da bistaratu.", "Error decrypting video": "Errorea bideoa deszifratzean", "Add an Integration": "Gehitu integrazioa", "Removed or unknown message type": "Kenduta edo mezu mota ezezaguna", @@ -996,7 +991,6 @@ "Join this community": "Elkartu komunitate honetara", "Leave this community": "Atera komunitate honetatik", "Stickerpack": "Eranskailu-multzoa", - "Sticker Messages": "Eranskailu mezuak", "You don't currently have any stickerpacks enabled": "Ez duzu eranskailu multzorik aktibatuta", "Add a stickerpack": "Gehitu eranskailu-multzoa", "Hide Stickers": "Ezkutatu eranskailuak", @@ -1110,7 +1104,6 @@ "What's new?": "Zer dago berri?", "Notify me for anything else": "Jakinarazi beste edozer", "When I'm invited to a room": "Gela batetara gonbidatzen nautenean", - "Click here to create a GitHub issue.": "Egin klik hemen GitHub-en arazoaren berri emateko.", "Can't update user notification settings": "Ezin dira erabiltzailearen jakinarazpenen ezarpenak eguneratu", "Notify for all other messages/rooms": "Jakinarazi beste mezu/gela guztiak", "Unable to look up room ID from server": "Ezin izan da gelaren IDa zerbitzarian bilatu", diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 7f7ac9729f..0f05b697a6 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -440,7 +440,6 @@ "Verify device": "Varmenna laite", "I verify that the keys match": "Totean että avaimet vastaavat toisiaan", "Unable to restore session": "Istunnon palautus epäonnistui", - "Continue anyway": "Jatka kuitenkin", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s poisti huoneen nimen.", "Changes to who can read history will only apply to future messages in this room": "Muutokset koskien ketkä voivat lukea historian koskevat vain uusia viestejä", "Click here to join the discussion!": "Paina tästä liittyäksesi keskusteluun", @@ -517,7 +516,6 @@ "Failed to change power level": "Oikeustason muuttaminen epäonnistui", "'%(alias)s' is not a valid format for an address": "'%(alias)s' ei ole oikean muotoinen osoitteelle", "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ei ole oikean muotoinen aliakselle", - "Otherwise, click here to send a bug report.": "Paina muutoin tästä lähettääksesi virheraportin.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Ole hyvä ja tarkista sähköpostisi ja seuraa sen sisältämää linkkiä. Kun olet valmis, paina jatka.", "Power level must be positive integer.": "Oikeustason pitää olla positiivinen kokonaisluku.", "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Salasanan uudelleenalustus uudelleenalustaa myös päästä päähän-salausavaimet kaikilla laitteilla, jolloin vanhojen viestien lukeminen ei ole enään mahdollista, ellet ensin vie huoneavaimet ja tuo ne takaisin jälkeenpäin. Tämä tulee muuttumaan tulevaisuudessa.", @@ -576,8 +574,6 @@ "What does this mean?": "Mitä tämä tarkoittaa?", "Error decrypting audio": "Äänen salauksen purku epäonnistui", "Error decrypting image": "Kuvan salauksen purku epäonnistui", - "Image '%(Body)s' cannot be displayed.": "Kuva '%(Body)s' ei voida näyttää.", - "This image cannot be displayed.": "Tätä kuvaa ei voida näyttää.", "Error decrypting video": "Videon salauksen purku epäonnistui", "Add an Integration": "Lisää integraatio", "Removed or unknown message type": "Poistettu tai tuntematon viestityyppi", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 9c0f3f98e8..0787a06134 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -443,10 +443,8 @@ "In future this verification process will be more sophisticated.": "À l’avenir ce processus de vérification sera plus sophistiqué.", "Verify device": "Vérifier cet appareil", "I verify that the keys match": "J’ai vérifié que les clés correspondaient", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Nous avons rencontré une erreur en essayant de rétablir votre session précédente. Si vous continuez, vous devrez vous identifier à nouveau et l’historique de vos discussions chiffrées sera illisible.", "Unable to restore session": "Impossible de restaurer la session", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si vous avez utilisé une version plus récente de Riot précédemment, votre session risque d’être incompatible avec cette version. Fermez cette fenêtre et retournez à la version plus récente.", - "Continue anyway": "Continuer quand même", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Vous êtes en train d’ajouter à la liste noire des appareils non-vérifiés ; pour envoyer des messages à ces appareils vous devez les vérifier.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nous vous recommandons d’effectuer le processus de vérification pour tous les appareils afin de confirmer qu’ils appartiennent à leurs propriétaires légitimes, mais vous pouvez renvoyer le(s) message(s) sans vérifier si vous préférez.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contient des appareils que vous n'avez encore jamais vus.", @@ -478,8 +476,6 @@ "What does this mean?": "Qu’est ce que cela signifie ?", "Error decrypting audio": "Erreur lors du déchiffrement de l’audio", "Error decrypting image": "Erreur lors du déchiffrement de l’image", - "Image '%(Body)s' cannot be displayed.": "L'image \"%(Body)s\" ne peut pas être affichée.", - "This image cannot be displayed.": "Cette image ne peut pas être affichée.", "Error decrypting video": "Erreur lors du déchiffrement de la vidéo", "Add an Integration": "Ajouter une intégration", "URL Previews": "Aperçus des liens", @@ -579,7 +575,6 @@ "Incoming video call from %(name)s": "Appel vidéo entrant de %(name)s", "Incoming voice call from %(name)s": "Appel vocal entrant de %(name)s", "No display name": "Pas de nom affiché", - "Otherwise, click here to send a bug report.": "Sinon, cliquer ici pour envoyer un rapport d'erreur.", "Private Chat": "Discussion privée", "Public Chat": "Discussion publique", "Reason: %(reasonText)s": "Raison : %(reasonText)s", @@ -996,7 +991,6 @@ "Join this community": "Rejoindre cette communauté", "Leave this community": "Quitter cette communauté", "Stickerpack": "Pack de stickers", - "Sticker Messages": "Messages sticker", "You don't currently have any stickerpacks enabled": "Vous n'avez activé aucun pack de stickers pour l'instant", "Add a stickerpack": "Ajouter un pack de stickers", "Hide Stickers": "Masquer les stickers", @@ -1158,7 +1152,6 @@ "Preparing to send logs": "Préparation d'envoi des rapports", "Missing roomId.": "Identifiant de salon manquant.", "Picture": "Image", - "Click here to create a GitHub issue.": "Cliquez ici pour créer un signalement sur GitHub.", "Popout widget": "Détacher le widget", "Every page you use in the app": "Toutes les pages que vous utilisez dans l'application", "e.g. ": "par ex. ", diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 06bff9eb76..6c329b5454 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -475,8 +475,6 @@ "Download %(text)s": "Baixar %(text)s", "Invalid file%(extra)s": "Ficheiro non válido %(extra)s", "Error decrypting image": "Fallo ao descifrar a imaxe", - "Image '%(Body)s' cannot be displayed.": "Imaxe '%(Body)s' non pode ser mostrada.", - "This image cannot be displayed.": "Esta imaxe non se pode ser mostrada.", "Error decrypting video": "Fallo descifrando vídeo", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s cambiou o avatar para %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s eliminou o avatar da sala.", @@ -674,11 +672,8 @@ "Ignore request": "Ignorar petición", "Loading device info...": "Cargando información do dispositivo...", "Encryption key request": "Petición de chave de cifrado", - "Otherwise, click here to send a bug report.": "Se non, pulse aquí para enviar un informe de fallo.", "Unable to restore session": "Non se puido restaurar a sesión", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Atopamos un erro intentando restablecer a sesión anterior. Si continúa, deberá conectarse de novo, e a parte cifrada do chat non será lexible.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si anteriormente utilizou unha versión máis recente de Riot, a súa sesión podería non ser compatible con esta versión. Peche esta ventá e volte a versión máis recente.", - "Continue anyway": "Continuar igualmente", "Invalid Email Address": "Enderezo de email non válido", "This doesn't appear to be a valid email address": "Este non semella ser un enderezo de email válido", "Verification Pending": "Verificación pendente", @@ -996,7 +991,6 @@ "Submit debug logs": "Enviar informes de depuración", "Opens the Developer Tools dialog": "Abre o cadro de Ferramentas de Desenvolvedoras", "Stickerpack": "Peganitas", - "Sticker Messages": "Mensaxes pegadas", "You don't currently have any stickerpacks enabled": "Non ten paquetes de pegatinas habilitados", "Add a stickerpack": "Engadir un paquete de pegatinas", "Hide Stickers": "Agochar pegatinas", @@ -1110,7 +1104,6 @@ "What's new?": "Qué hai de novo?", "Notify me for anything else": "Notificarme todo o demáis", "When I'm invited to a room": "Cando son convidado a unha sala", - "Click here to create a GitHub issue.": "Pulse aquí para crear un reporte en GitHub.", "Can't update user notification settings": "Non se poden actualizar os axutes de notificación", "Notify for all other messages/rooms": "Notificar para todas as outras mensaxes/salas", "Unable to look up room ID from server": "Non se puido atopar o ID da sala do servidor", diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 7e747428a6..dbae2858a9 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -195,7 +195,6 @@ "What's new?": "מה חדש?", "Notify me for anything else": "התראה לי על כל דבר אחר", "When I'm invited to a room": "מתי אני מוזמן לחדר", - "Click here to create a GitHub issue.": "הקלק כאן ליצירת דווח תקלה ‫ב: GitHub .", "Can't update user notification settings": "לא ניתן לעדכן הגדרות התראה למשתמש", "Notify for all other messages/rooms": "התראה לכל שאר ההודעות/החדרים", "Unable to look up room ID from server": "לא ניתן לאתר מזהה חדר על השרת", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index c2b8af12ee..15691712db 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -279,7 +279,6 @@ "olm version:": "olm verzió:", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Ha egyszer bekapcsolod a titkosítást a szobába utána nem lehet kikapcsolni (egyenlőre)", "Only people who have been invited": "Csak akiket meghívtak", - "Otherwise, click here to send a bug report.": "Különben hiba jelentés küldéséhez kattints ide.", "Password": "Jelszó", "Password:": "Jelszó:", "Passwords can't be empty": "A jelszó nem lehet üres", @@ -562,7 +561,6 @@ "Verify device": "Eszköz ellenőrzése", "I verify that the keys match": "Megerősítem, hogy a kulcsok egyeznek", "Unable to restore session": "A kapcsolatot nem lehet visszaállítani", - "Continue anyway": "Mindenképpen tovább", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" szobában olyan eszközök vannak amiket még nem láttál.", "Unknown devices": "Ismeretlen eszköz", "Unknown Address": "Ismeretlen cím", @@ -585,8 +583,6 @@ "What does this mean?": "Ez mit jelent?", "Error decrypting audio": "Hiba a hang visszafejtésénél", "Error decrypting image": "Hiba a kép visszafejtésénél", - "Image '%(Body)s' cannot be displayed.": "'%(Body)s' képet nem lehet megjeleníteni.", - "This image cannot be displayed.": "Ezt a képet nem lehet megjeleníteni.", "Error decrypting video": "Hiba a videó visszafejtésénél", "Add an Integration": "Integráció hozzáadása", "Removed or unknown message type": "Eltávolított üzenet vagy ismeretlen üzenet típus", @@ -621,7 +617,6 @@ "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.": "Biztos hogy eltávolítod (törlöd) ezt az eseményt? Figyelem, ha törlöd vagy megváltoztatod a szoba nevét vagy a témát ez a változtatás érvényét vesztheti.", "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Az eszköz megbízhatóságának ellenőrzéséhez, lépj kapcsolatba a tulajdonossal valami más csatornán (pl. személyesen vagy telefon hívással) és kérdezd meg, hogy a kulcs amit a Felhasználói Beállításoknál látnak az eszközhöz megegyezik-e a kulccsal itt:", "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ha megegyezik, nyomd meg az megerősítő gombot alul. Ha nem akkor valaki más használja az eszközt és inkább a Feketelista gombot szeretnéd használni.", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Az előző kapcsolat visszaállításánál hibára akadtunk. Ha folytatod újra be kell jelentkezned és a titkosított csevegések olvashatatlanok lesznek.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ha egy újabb Riot verziót használtál valószínűleg ez kapcsolat nem lesz kompatibilis vele. Zárd be az ablakot és térj vissza az újabb verzióhoz.", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Jelenleg fekete listára teszel minden ismeretlen eszközt. Ha üzenetet szeretnél küldeni ezekre az eszközökre először ellenőrizned kell őket.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Azt javasoljuk, hogy menj végig ellenőrző folyamaton minden eszköznél, hogy meg megerősítsd minden eszköz a jogos tulajdonosához tartozik, de újraküldheted az üzenetet ellenőrzés nélkül, ha úgy szeretnéd.", @@ -996,7 +991,6 @@ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "A közösséget name és avatar érintő változások legfeljebb 30 percig nem lesznek láthatók más felhasználók számára.", "Leave this community": "Közösség elhagyása", "Stickerpack": "Matrica csomag", - "Sticker Messages": "Matrica üzenetek", "You don't currently have any stickerpacks enabled": "Nincs engedélyezett matrica csomagod", "Add a stickerpack": "Matrica csomag hozzáadása", "Hide Stickers": "Matricák elrejtése", @@ -1109,7 +1103,6 @@ "What's new?": "Mik az újdonságok?", "Notify me for anything else": "Értesíts minden egyéb esetben", "When I'm invited to a room": "Amikor meghívnak egy szobába", - "Click here to create a GitHub issue.": "Kattints ide GitHub hibajegy nyitásához .", "Can't update user notification settings": "Nem lehet frissíteni az értesítési beállításokat", "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához", "Unable to look up room ID from server": "Nem lehet a szoba azonosítóját megkeresni a szerveren", diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index ba7417bcc8..b660231915 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -521,8 +521,6 @@ "Download %(text)s": "Scarica %(text)s", "Invalid file%(extra)s": "File non valido %(extra)s", "Error decrypting image": "Errore decifratura immagine", - "This image cannot be displayed.": "Questa immagine non può essere visualizzata.", - "Image '%(Body)s' cannot be displayed.": "L'immagine '%(Body)s' non può essere visualizzata.", "Error decrypting video": "Errore decifratura video", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ha cambiato l'avatar per %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s ha rimosso l'avatar della stanza.", @@ -714,11 +712,8 @@ "Ignore request": "Ignora la richiesta", "Loading device info...": "Caricamento info dispositivo...", "Encryption key request": "Richiesta chiave di cifratura", - "Otherwise, click here to send a bug report.": "Altrimenti clicca qui per inviare una segnalazione di errore.", "Unable to restore session": "Impossibile ripristinare la sessione", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Abbiamo riscontrato un errore tentando di ripristinare la tua sessione precedente. Se continui, dovrai accedere di nuovo e la cronologia della chat criptata sarà illeggibile.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se hai usato precedentemente una versione più recente di Riot, la tua sessione potrebbe essere incompatibile con questa versione. Chiudi questa finestra e torna alla versione più recente.", - "Continue anyway": "Continua comunque", "Invalid Email Address": "Indirizzo email non valido", "This doesn't appear to be a valid email address": "Questo non sembra essere un indirizzo email valido", "Verification Pending": "In attesa di verifica", @@ -993,7 +988,6 @@ "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Le modifiche al nome e all'avatar effettuate alla tua comunità potrebbero non essere visibili agli altri utenti per i prossimi 30 minuti.", "Join this community": "Unisciti a questa comunità", "Leave this community": "Esci da questa comunità", - "Sticker Messages": "Messaggi adesivi", "You don't currently have any stickerpacks enabled": "Non hai ancora alcun pacchetto di adesivi attivato", "Add a stickerpack": "Aggiungi un pacchetto di adesivi", "Who can join this community?": "Chi può unirsi a questa comunità?", @@ -1104,7 +1098,6 @@ "What's new?": "Cosa c'è di nuovo?", "Notify me for anything else": "Notificami per qualsiasi altra cosa", "When I'm invited to a room": "Quando vengo invitato/a in una stanza", - "Click here to create a GitHub issue.": "Clicca qui per creare una segnalazione su GitHub.", "Can't update user notification settings": "Impossibile aggiornare le impostazioni di notifica dell'utente", "Notify for all other messages/rooms": "Notifica per tutti gli altri messaggi/stanze", "Unable to look up room ID from server": "Impossibile consultare l'ID stanza dal server", diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index 013790aa80..3908ede0e2 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -210,7 +210,6 @@ "Failed to send custom event.": "カスタムイベントの送信に失敗しました。", "What's new?": "新着", "Notify me for anything else": "他の場合についても通知する", - "Click here to create a GitHub issue.": "ここをクリック してGithubの問題を報告してください。", "Notify for all other messages/rooms": "他のすべてのメッセージ又は部屋について通知する", "Unable to look up room ID from server": "サーバから部屋IDを検索できません", "Couldn't find a matching Matrix room": "一致するMatrixの部屋を見つけることができませんでした", diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index ff5ebd72d7..f0b8cc454f 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -286,7 +286,6 @@ "Phone": "전화", "Once encryption is enabled for a room it cannot be turned off again (for now)": "방을 암호화하면 암호화를 도중에 끌 수 없어요. (현재로서는)", "Only people who have been invited": "초대받은 사람만", - "Otherwise, click here to send a bug report.": "그 밖에는, 여기를 눌러 오류 보고서를 보내주세요.", "%(senderName)s placed a %(callType)s call.": "%(senderName)s님이 %(callType)s 전화를 걸었어요.", "Please check your email and click on the link it contains. Once this is done, click continue.": "이메일을 확인하시고 그 안에 있는 주소를 누르세요. 이 일을 하고 나서, 계속하기를 누르세요.", "Power level must be positive integer.": "권한 등급은 양의 정수여야만 해요.", @@ -569,10 +568,8 @@ "In future this verification process will be more sophisticated.": "앞으로는 이 확인 과정이 더 정교해질 거에요.", "Verify device": "인증한 장치", "I verify that the keys match": "키가 맞는 걸 확인했어요", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "이전 세션을 복구하는 도중 오류가 일어났어요. 계속하시려면, 다시 로그인하셔야 하고, 암호화한 기록은 읽을 수 없게 될 거에요.", "Unable to restore session": "세션을 복구할 수 없어요", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "이전에 더 최근 버전의 라이엇을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.", - "Continue anyway": "무시하고 계속하기", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "현재 인증하지 않은 장치를 요주의로 지정하셨어요. 이 장치들에 메시지를 보내려면 인증을 해야 해요.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "각 장치가 알맞은 소유자에게 속해 있는지 인증 과정을 거치길 추천하지만, 원하신다면 그러지 않고 메시지를 다시 보내실 수 있어요.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"에 본 적 없는 장치가 있어요.", @@ -601,8 +598,6 @@ "Identity server URL": "ID 서버 URL", "Error decrypting audio": "음성 해독 오류", "Error decrypting image": "사진 해독 오류", - "Image '%(Body)s' cannot be displayed.": "'%(Body)s' 사진을 보여드릴 수 없어요.", - "This image cannot be displayed.": "이 사진을 보여드릴 수 없어요.", "Error decrypting video": "영상 해독 오류", "Add an Integration": "통합 추가", "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?": "타사 사이트로 이동하는데 %(integrationsUrl)s에서 쓰도록 계정을 인증할 수 있어요. 계속하시겠어요?", diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json index 6282d40daf..17238aa206 100644 --- a/src/i18n/strings/lv.json +++ b/src/i18n/strings/lv.json @@ -272,7 +272,6 @@ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Tiklīdz istabai tiks iespējota šifrēšana, tā vairs nebūs atslēdzama (pašlaik)", "Only people who have been invited": "Vienīgi cilvēki, kuri uzaicināti", "Operation failed": "Darbība neizdevās", - "Otherwise, click here to send a bug report.": "pretējā gadījumā, klikšķini šeit, lai nosūtītu paziņojumu par kļūdu.", "Password": "Parole", "Password:": "Parole:", "Passwords can't be empty": "Paroles nevar būt tukšas", @@ -350,7 +349,6 @@ "Failed to invite the following users to the %(roomName)s room:": "Neizdevās uzaicināt sekojošos lietotājus uz %(roomName)s istabu:", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" atrodas ierīces, kuras Tu neesi iepriekš redzējis/usi.", "You are registering with %(SelectedTeamName)s": "Tu reģistrējies ar %(SelectedTeamName)s", - "Image '%(Body)s' cannot be displayed.": "Attēlu '%(Body)s' nav iespējams parādīt.", "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.", @@ -515,7 +513,6 @@ "Nov": "Nov.", "Dec": "Dec.", "Set a display name:": "Iestatīt attēloto vārdu:", - "This image cannot be displayed.": "Šo attēlu nav iespējams parādīt.", "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s nomainīja istabas avataru uz ", "Upload an avatar:": "Augšuplādē avataru (profila attēlu):", "This server does not support authentication with a phone number.": "Šis serveris neatbalsta autentifikāciju pēc telefona numura.", @@ -582,10 +579,8 @@ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ja tā sakrīt, tad nospied zemāk esošo verifikācijas pogu . Ja nesakrīt, tad kāds cits ir piekļuvis šai ierīcei un šādā gadījumā Tu, iespējams, vēlies izmantot \"melnais saraksts\" iespēju.", "Verify device": "Verificēt ierīci", "I verify that the keys match": "Es apstiprinu, ka atslēgas sakrīt", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Atgadījās kļūda, mēģinot atjaunot tavu iepriekšējo sesiju. Ja vēlies turpināt, Tev ir jāpierakstās no jauna, taču šifrētā čata ziņu vēsture nebūs izlasāma.", "Unable to restore session": "Nav iespējams atjaunot sesiju", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ja Tu iepriekš izmantoji jaunāku Riot versiju, tava sesija var nebūt saderīga ar šo versiju. Aizver šo logu un atgriezies jaunākajā versijā.", - "Continue anyway": "Turpināt jebkurā gadījumā", "Unknown devices": "Nezināmas ierīces", "Unknown Address": "Nezināma adrese", "Unblacklist": "Atbloķēšanas saraksts", @@ -1097,7 +1092,6 @@ "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ā", - "Click here to create a GitHub issue.": "Nospied šeit lai izveidotu GitHub problēmpaziņojumu.", "Can't update user notification settings": "Neizdodas atjaunot 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", diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index e96280f2e4..1ddcda076e 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -329,7 +329,6 @@ "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een ruimte is ingeschakeld kan het niet meer worden uitgeschakeld (kan later wijzigen)", "Only people who have been invited": "Alleen personen die zijn uitgenodigd", - "Otherwise, click here to send a bug report.": "Klik anders hier om een foutmelding te versturen.", "Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.", "Power level must be positive integer.": "Machtsniveau moet een positief geheel getal zijn.", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.", @@ -573,10 +572,8 @@ "In future this verification process will be more sophisticated.": "In de toekomst zal dit verificatie proces meer geraffineerd zijn.", "Verify device": "Apparaat verifiëren", "I verify that the keys match": "Ik verifieer dat de sleutels overeenkomen", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "We ervaren een fout terwijl er wordt geprobeerd om de vorige sessie te herstellen. Als je doorgaat moet je opnieuw inloggen en versleutelde gespreksgeschiedenis zal onleesbaar zijn.", "Unable to restore session": "Het is niet mogelijk om de sessie te herstellen", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Als je eerst gebruik hebt gemaakt van een recentere versie van Riot, dan is je sessie misschien onverenigbaar met deze versie. Sluit dit scherm en ga terug naar de recentere versie.", - "Continue anyway": "Toch doorgaan", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We raden je aan om door het verificatieproces van elk apparaat te gaan om te bevestigen dat ze tot de legitieme eigenaar behoren maar je kan het bericht versturen zonder te verifiëren als je dat liever doet.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" bevat apparaten die je nog niet eerder hebt gezien.", "Unknown devices": "Onbekende apparaten", @@ -602,8 +599,6 @@ "What does this mean?": "Wat betekent dit?", "Error decrypting audio": "Fout met het ontsleutelen van de audio", "Error decrypting image": "Fout met het ontsleutelen van de afbeelding", - "Image '%(Body)s' cannot be displayed.": "Afbeelding '%(Body)s' kan niet worden weergeven.", - "This image cannot be displayed.": "Deze afbeelding kan niet worden weergeven.", "Error decrypting video": "Fout met het ontsleutelen van de video", "Add an Integration": "Voeg een integratie toe", "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?": "Je wordt zo naar een derde-partij-website verbonden zodat je het account kan legitimeren voor gebruik met %(integrationsUrl)s. Wil je doorgaan?", @@ -986,7 +981,6 @@ "Failed to remove tag %(tagName)s from room": "Het is niet gelukt om de label %(tagName)s van de ruimte te verwijderen", "Failed to add tag %(tagName)s to room": "Het is niet gelukt om de label %(tagName)s aan deze ruimte toe te voegen", "Stickerpack": "Stickerpakket", - "Sticker Messages": "Sticker Berichten", "You don't currently have any stickerpacks enabled": "Je hebt momenteel geen stickerpakketten aan staan", "Add a stickerpack": "Stickerpakket toevoegen", "Hide Stickers": "Stickers verbergen", @@ -1151,7 +1145,6 @@ "Checking for an update...": "Aan het kijken voor een update...", "There are advanced notifications which are not shown here": "Er zijn geavanceerde notificaties die hier niet getoond worden", "Logs sent": "Logs verstuurd", - "Click here to create a GitHub issue.": "Klik hier om een Github opgave in te dienen.", "GitHub issue link:": "GitHub opgave link:", "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 bevatten applicatie-gebruik data inclusief je gebruikersnaam, de ID's of namen van de ruimtes en groepen die je hebt bezocht en de gebruikersnamen van andere gebruikers. Ze bevatten geen berichten.", "Failed to send logs: ": "Het is niet gelukt om de logs te versturen: ", diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 445d3ad025..8d7c5d11da 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -11,7 +11,6 @@ "Start chatting": "Rozpocznij konwersację", "Start Chatting": "Rozpocznij Konwersację", "Updates": "Aktualizacje", - "This image cannot be displayed.": "Ten obrazek nie może zostać wyświetlony.", "Default server": "Domyślny serwer", "Add User": "Dodaj użytkownika", "Verify...": "Zweryfikuj...", @@ -347,7 +346,6 @@ "olm version:": "wersja olm:", "Once encryption is enabled for a room it cannot be turned off again (for now)": "Po włączeniu szyfrowania w pokoju nie można go ponownie wyłączyć (póki co)", "Only people who have been invited": "Tylko ludzie, którzy zostali zaproszeni", - "Otherwise, click here to send a bug report.": "W przeciwnym razie, kliknij tutaj by wysłać raport o błędzie.", "Password": "Hasło", "Password:": "Hasło:", "Passwords can't be empty": "Hasła nie mogą być puste", @@ -607,10 +605,8 @@ "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Jeśli klucz pasuje, naciśnij na przycisk \"Zweryfikuj\" poniżej. Jeśli nie, to ktoś inny najprawdopodobniej przejmuje lub podszywa się pod to urządzenie i powinieneś nacisnąć przycisk dodania do czarnej listy.", "In future this verification process will be more sophisticated.": "W przyszłości proces weryfikacji będzie bardziej skomplikowany.", "I verify that the keys match": "Upewnię się, że klucze się zgadzają", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Napotkaliśmy błąd podczas próby przywrócenia Twojej poprzedniej sesji. Aby kontynuować, musisz zalogować się ponownie, a zaszyfrowana historia czatu nie będzie do odczytania.", "Unable to restore session": "Przywrócenie sesji jest niemożliwe", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Jeśli wcześniej używałeś/aś nowszej wersji Riot, Twoja sesja może być niekompatybilna z tą wersją. Zamknij to okno i powróć do nowszej wersji.", - "Continue anyway": "Kontynuuj mimo to", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Aktualnie wpisujesz niezweryfikowane urządzenia na czarną listę; aby wysłać wiadomość do tych urządzeń musisz je zweryfikować.", "Riot collects anonymous analytics to allow us to improve the application.": "Riot zbiera anonimowe dane analityczne, aby umożliwić nam rozwijanie aplikacji.", "Verifies a user, device, and pubkey tuple": "Weryfikuje użytkownika, urządzenie i krotkę kluczy publicznych", @@ -632,7 +628,6 @@ "What does this mean?": "Co to znaczy?", "Error decrypting audio": "Błąd deszyfrowania audio", "Error decrypting image": "Błąd deszyfrowania obrazu", - "Image '%(Body)s' cannot be displayed.": "Obraz '%(Body)s' nie może zostać wyświetlony.", "Error decrypting video": "Błąd deszyfrowania wideo", "Removed or unknown message type": "Usunięto lub nieznany typ wiadomości", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Próbowano załadować konkretny punkt na osi czasu w tym pokoju, ale nie nie można go znaleźć.", @@ -883,7 +878,6 @@ "What's new?": "Co nowego?", "Notify me for anything else": "Powiadom mnie o całej reszcie", "When I'm invited to a room": "Kiedy zostanę zaproszony do pokoju", - "Click here to create a GitHub issue.": "Kliknij tutaj aby założyć wątek na GitHubie dot. problemu.", "Can't update user notification settings": "Nie można zaktualizować ustawień powiadomień użytkownika", "Notify for all other messages/rooms": "Powiadamiaj o wszystkich innych wiadomośsciach/pokojach", "Unable to look up room ID from server": "Nie można wyszukać ID pokoju na serwerze", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 12339e6757..229d4f32a1 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -443,10 +443,8 @@ "In future this verification process will be more sophisticated.": "No futuro, este processo de verificação será mais sofisticado.", "Verify device": "Verificar o dispositivo", "I verify that the keys match": "Eu confirmo que as chaves são iguais", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Encontramos um erro tentando restaurar sua sessão anterior. Se você continuar, terá que fazer login novamente, e o histórico da conversa criptografada se tornará ilegível.", "Unable to restore session": "Não foi possível restaurar a sessão", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se você já usou antes uma versão mais recente do Riot, a sua sessão pode ser incompatível com esta versão. Feche esta janela e tente abrir com a versão mais recente.", - "Continue anyway": "Continuar de qualquer maneira", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Você está atualmente bloqueando dispositivos não verificados. Para enviar mensagens para estes dispositivos, você necessita antes verificá-los.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nós recomendamos que você passe pelo processo de verificação para cada dispositivo para confirmar que eles pertencem às pessoas que efetivamente são suas donas, mas você pode reenviar a mensagem sem verificar isso, se assim o desejar.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contém dispositivos que você não viu antes.", @@ -478,8 +476,6 @@ "What does this mean?": "O que isso significa?", "Error decrypting audio": "Erro ao descriptografar o áudio", "Error decrypting image": "Erro ao descriptografar a imagem", - "Image '%(Body)s' cannot be displayed.": "A imagem '%(Body)s' não pode ser exibida.", - "This image cannot be displayed.": "Esta imagem não pode ser exibida.", "Error decrypting video": "Erro ao descriptografar o vídeo", "Add an Integration": "Adicionar uma integração", "Removed or unknown message type": "Mensagem removida ou de tipo desconhecido", @@ -560,7 +556,6 @@ "You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.", "Undecryptable": "Não é possível descriptografar", "Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida", - "Otherwise, click here to send a bug report.": "Caso contrário, clique aqui para enviar um relatório de erros.", "To link to a room it must have an address.": "Para produzir um link para uma sala, ela necessita ter um endereço.", "Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.", "Alias (optional)": "Apelido (opcional)", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 9a4739357e..a3333de2f2 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -445,10 +445,8 @@ "In future this verification process will be more sophisticated.": "No futuro, este processo de verificação será mais sofisticado.", "Verify device": "Verificar o dispositivo", "I verify that the keys match": "Eu confirmo que as chaves são iguais", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Encontramos um erro tentando restaurar sua sessão anterior. Se você continuar, terá que fazer login novamente, e o histórico da conversa criptografada se tornará ilegível.", "Unable to restore session": "Não foi possível restaurar a sessão", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se você já usou antes uma versão mais recente do Riot, a sua sessão pode ser incompatível com esta versão. Feche esta janela e tente abrir com a versão mais recente.", - "Continue anyway": "Continuar de qualquer maneira", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Você está atualmente bloqueando dispositivos não verificados. Para enviar mensagens para estes dispositivos, você necessita antes verificá-los.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nós recomendamos que você passe pelo processo de verificação para cada dispositivo para confirmar que eles pertencem às pessoas que efetivamente são suas donas, mas você pode reenviar a mensagem sem verificar isso, se assim o desejar.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contém dispositivos que você não viu antes.", @@ -480,8 +478,6 @@ "What does this mean?": "O que isso significa?", "Error decrypting audio": "Erro ao descriptografar o áudio", "Error decrypting image": "Erro ao descriptografar a imagem", - "Image '%(Body)s' cannot be displayed.": "A imagem '%(Body)s' não pode ser exibida.", - "This image cannot be displayed.": "Esta imagem não pode ser exibida.", "Error decrypting video": "Erro ao descriptografar o vídeo", "Add an Integration": "Adicionar uma integração", "Removed or unknown message type": "Mensagem removida ou de tipo desconhecido", @@ -590,7 +586,6 @@ "Last seen": "Último uso", "Level:": "Nível:", "No display name": "Sem nome público de usuária(o)", - "Otherwise, click here to send a bug report.": "Caso contrário, clique aqui para enviar um relatório de erros.", "Private Chat": "Conversa privada", "Public Chat": "Conversa pública", "Reason: %(reasonText)s": "Justificativa: %(reasonText)s", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 2e6bdf45f0..c27580979e 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -492,10 +492,8 @@ "In future this verification process will be more sophisticated.": "В будущем процесс проверки будет усовершенствован.", "Verify device": "Проверить устройство", "I verify that the keys match": "Я подтверждаю, что ключи совпадают", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Произошла ошибка при попытке восстановить предыдущий сеанс. Если продолжить, потребуется снова войти в систему, а зашифрованная история чата будет нечитаема.", "Unable to restore session": "Восстановление сессии не удалось", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Если вы использовали более новую версию Riot, то ваша сессия может быть несовместима с текущей. Закройте это окно и вернитесь к использованию более новой версии.", - "Continue anyway": "Все равно продолжить", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "У вас включено занесение непроверенных устройств в черный список. Для отправки сообщений на эти устройства вам необходимо их проверить.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Мы рекомендуем вам выполнить процедуру проверки каждого устройства, чтобы удостовериться, что они принадлежат их законному владельцу, но вы можете переотправить сообщение без проверки, если хотите.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" содержит неподтвержденные устройства.", @@ -523,8 +521,6 @@ "What does this mean?": "Что это значит?", "Error decrypting audio": "Ошибка расшифровки аудиозаписи", "Error decrypting image": "Ошибка расшифровки изображения", - "Image '%(Body)s' cannot be displayed.": "Изображение '%(Body)s' не может быть отображено.", - "This image cannot be displayed.": "Не удается показать изображение.", "Error decrypting video": "Ошибка расшифровки видео", "Add an Integration": "Добавить интеграцию", "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?": "Вы будете перенаправлены на внешний сайт, чтобы войти в свою учетную запись для использования с %(integrationsUrl)s. Продолжить?", @@ -586,7 +582,6 @@ "Last seen": "Последний вход", "Level:": "Уровень:", "No display name": "Нет отображаемого имени", - "Otherwise, click here to send a bug report.": "В противном случае, нажмите 2 для отправки отчета об ошибке.", "Private Chat": "Приватный чат", "Public Chat": "Публичный чат", "Reason: %(reasonText)s": "Причина: %(reasonText)s", @@ -998,7 +993,6 @@ "Who can join this community?": "Кто может присоединиться к этому сообществу?", "Everyone": "Все", "Stickerpack": "Стикеры", - "Sticker Messages": "Стикеры", "Add a stickerpack": "Добавить стикеры", "Hide Stickers": "Скрыть стикеры", "Show Stickers": "Показать стикеры", @@ -1109,7 +1103,6 @@ "What's new?": "Что нового?", "Notify me for anything else": "Уведомлять во всех остальных случаях", "When I'm invited to a room": "Приглашения в комнаты", - "Click here to create a GitHub issue.": "Нажмите здесь для создания запроса о проблеме на GitHub.", "Can't update user notification settings": "Не удалось обновить пользовательские настройки оповещения", "Notify for all other messages/rooms": "Уведомлять обо всех остальных сообщениях и комнатах", "Unable to look up room ID from server": "Не удалось найти ID комнаты на сервере", diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index 142b5dfea9..523cabaa68 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -423,8 +423,6 @@ "Download %(text)s": "Stiahnuť %(text)s", "Invalid file%(extra)s": "Neplatný súbor%(extra)s", "Error decrypting image": "Chyba pri dešifrovaní obrázka", - "Image '%(Body)s' cannot be displayed.": "Nie je možné zobraziť obrázok '%(Body)s'.", - "This image cannot be displayed.": "Tento obrázok nie je možné zobraziť.", "Error decrypting video": "Chyba pri dešifrovaní videa", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s zmenil obrázok miestnosti %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odstránil obrázok miestnosti.", @@ -611,11 +609,8 @@ "Ignore request": "Ignorovať žiadosť", "Loading device info...": "Načítanie informácií o zariadení...", "Encryption key request": "Žiadosť o šifrovacie kľúče", - "Otherwise, click here to send a bug report.": "inak kliknutím sem nahláste chybu.", "Unable to restore session": "Nie je možné obnoviť reláciu", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Pri pokuse o obnovenie vašej predchádzajúcej relácie sa vyskytla chyba. Ak budete pokračovať, musíte sa znovu prihlásiť, a história šifrovaných konverzácii nebude viac čitateľná.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ak ste sa v minulosti prihlásili s novšou verziou programu Riot, vaša relácia nemusí byť kompatibilná s touto verziou. Zatvorte prosím toto okno a vráťte sa cez najnovšiu verziu Riot.", - "Continue anyway": "Napriek tomu pokračovať", "Invalid Email Address": "Nesprávna emailová adresa", "This doesn't appear to be a valid email address": "Zdá sa, že toto nie je platná emailová adresa", "Verification Pending": "Nedokončené overenie", @@ -996,7 +991,6 @@ "Submit debug logs": "Odoslať ladiace záznamy", "Opens the Developer Tools dialog": "Otvorí dialóg nástroje pre vývojárov", "Stickerpack": "Balíček nálepiek", - "Sticker Messages": "Správy s nálepkami", "You don't currently have any stickerpacks enabled": "Momentálne nemáte aktívne žiadne balíčky s nálepkami", "Add a stickerpack": "Pridať balíček s nálepkami", "Hide Stickers": "Skryť nálepky", @@ -1109,7 +1103,6 @@ "What's new?": "Čo je nové?", "Notify me for anything else": "Oznamovať mi všetko ostatné", "When I'm invited to a room": "Pozvania vstúpiť do miestnosti", - "Click here to create a GitHub issue.": "Kliknutím sem nám pošlete hlásenie o chybe cez Github.", "Can't update user notification settings": "Nie je možné aktualizovať používateľské nastavenia oznamovania", "Notify for all other messages/rooms": "oznamovať všetky ostatné správy / miestnosti", "Unable to look up room ID from server": "Nie je možné vyhľadať ID miestnosti na servery", diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 9dbb76396e..2936695a6d 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -246,7 +246,6 @@ "Can't update user notification settings": "S’përditësohen dot rregullime njoftimi të përdoruesit", "Notify for all other messages/rooms": "Njoftim për krejt mesazhet/dhomat e tjera", "Unable to look up room ID from server": "S’arrihet të kërkohet ID dhome nga shërbyesi", - "Click here to create a GitHub issue.": "Klikoni këtu që të hapni një çështje në GitHub.", "Couldn't find a matching Matrix room": "S’u gjet dot një dhomë Matrix me përputhje", "Invite to this room": "Ftoje te kjo dhomë", "You cannot delete this message. (%(code)s)": "S’mund ta fshini këtë mesazh. (%(code)s)", diff --git a/src/i18n/strings/sr.json b/src/i18n/strings/sr.json index 5c91838e3e..dc39bb8cdd 100644 --- a/src/i18n/strings/sr.json +++ b/src/i18n/strings/sr.json @@ -480,8 +480,6 @@ "Download %(text)s": "Преузми %(text)s", "Invalid file%(extra)s": "Неисправна датотека %(extra)s", "Error decrypting image": "Грешка при дешифровању слике", - "Image '%(Body)s' cannot be displayed.": "Слика „%(Body)s“ се не може приказати.", - "This image cannot be displayed.": "Ова слика се не може приказати.", "Error decrypting video": "Грешка при дешифровању видеа", "%(senderDisplayName)s changed the avatar for %(roomName)s": "Корисник %(senderDisplayName)s је променио аватара собе %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "Корисник %(senderDisplayName)s је уклонио аватара собе.", @@ -682,11 +680,8 @@ "Ignore request": "Занемари захтев", "Loading device info...": "Учитавам податке о уређају...", "Encryption key request": "Захтев за кључ шифровања", - "Otherwise, click here to send a bug report.": "У супротном, кликните овде да бисте послали извештај о грешци.", "Unable to restore session": "Не могу да повратим сесију", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Наишли смо на грешку приликом опоравка ваше претходне сесије. Ако наставите, мораћете да се пријавите поново и ваш шифровани историјат ћаскања неће бити читљив.", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако сте претходно користили новије издање Riot-а, ваша сесија може бити некомпатибилна са овим издањем. Затворите овај прозор и вратите се на новије издање.", - "Continue anyway": "Ипак настави", "Invalid Email Address": "Неисправна мејл адреса", "This doesn't appear to be a valid email address": "Изгледа да ово није исправна мејл адреса", "Verification Pending": "Чека се на проверу", @@ -1137,7 +1132,6 @@ "Your device resolution": "Резолуција вашег уређаја", "Popout widget": "Виџет за искакање", "Missing roomId.": "Недостаје roomId.", - "Sticker Messages": "Поруке са налепницама", "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Видео корисник %(displayName)s (%(userName)s) у %(dateTime)s", "You don't currently have any stickerpacks enabled": "Тренутно немате омогућено било које паковање са налепницама", "Add a stickerpack": "Додај паковање са налепницама", @@ -1151,7 +1145,6 @@ "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.": "Записници за поправљање грешака садрже податке о коришћењу апликације међу којима се налази ваше корисничко име, ИБ-јеви или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", - "Click here to create a GitHub issue.": "Кликните овде да бисте пријавили проблем на Гитхабу (GitHub).", "GitHub issue link:": "Веза до проблема на Гитхабу:", "Notes:": "Напомене:", "Unable to join community": "Не могу да приступим заједници", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 42c06615cb..4456cd1c2d 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -268,7 +268,6 @@ "Once encryption is enabled for a room it cannot be turned off again (for now)": "När kryptering aktiveras i ett rum kan det inte deaktiveras (tills vidare)", "Only people who have been invited": "Endast inbjudna", "Operation failed": "Handlingen misslyckades", - "Otherwise, click here to send a bug report.": "Annars kan du klicka här för att skicka en buggrapport.", "Password": "Lösenord", "Password:": "Lösenord:", "Passwords can't be empty": "Lösenorden kan inte vara tomma", diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index 17ba4d461f..6fa7febabd 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -407,7 +407,6 @@ "Custom level": "กำหนดระดับเอง", "No display name": "ไม่มีชื่อที่แสดง", "Only people who have been invited": "เฉพาะบุคคลที่ได้รับเชิญ", - "Otherwise, click here to send a bug report.": "หรือคลิกที่นี่เพื่อรายงานจุดบกพร่อง", "Power level must be positive integer.": "ระดับอำนาจต้องเป็นจำนวนเต็มบวก", "%(roomName)s does not exist.": "ไม่มีห้อง %(roomName)s อยู่จริง", "To link to a room it must have an address.": "ห้องต้องมีที่อยู่ก่อน ถึงจะลิงก์ได้", @@ -430,8 +429,6 @@ "What does this mean?": "นี่แปลว่าอะไร?", "Error decrypting audio": "เกิดข้อผิดพลาดในการถอดรหัสเสียง", "Error decrypting image": "เกิดข้อผิดพลาดในการถอดรหัสรูป", - "Image '%(Body)s' cannot be displayed.": "ไม่สามารถแสดงรูป '%(Body)s' ได้", - "This image cannot be displayed.": "ไม่สามารถแสดงรูปนี้ได้", "Error decrypting video": "เกิดข้อผิดพลาดในการถอดรหัสวิดิโอ", "Fetching third party location failed": "การเรียกข้อมูลตำแหน่งจากบุคคลที่สามล้มเหลว", "A new version of Riot is available.": "มี Riot เวอร์ชั่นใหม่", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index d890ed634e..451383bc02 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -268,7 +268,6 @@ "Once encryption is enabled for a room it cannot be turned off again (for now)": "Bu oda için şifreleme etkinleştirildikten sonra tekrar kapatılamaz (şimdilik)", "Only people who have been invited": "Sadece davet edilmiş insanlar", "Operation failed": "Operasyon başarısız oldu", - "Otherwise, click here to send a bug report.": "Aksi taktirde , bir hata raporu göndermek için buraya tıklayın .", "Password": "Şifre", "Password:": "Şifre:", "Passwords can't be empty": "Şifreler boş olamaz", @@ -566,10 +565,8 @@ "In future this verification process will be more sophisticated.": "Gelecekte bu doğrulama işlemi daha gelişmiş olacak.", "Verify device": "Cihazı Doğrula", "I verify that the keys match": "Anahtarların uyuştuğunu doğruluyorum", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "Önceki oturumunuzu geri getirmeye çalışırken bir hata ile karşılaşdık . Devam ederseniz , tekrar oturum açmanız gerekecek , ve şifreli sohbet geçmişi okunamıyor hale gelecek.", "Unable to restore session": "Oturum geri yüklenemiyor", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Eğer daha önce Riot'un daha yeni bir versiyonunu kullandıysanız , oturumunuz bu sürümle uyumsuz olabilir . Bu pencereyi kapatın ve daha yeni sürüme geri dönün.", - "Continue anyway": "Her halükarda devam et", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Şu anda doğrulanmamış cihazları kara listeye alıyorsunuz , bu cihazlara mesaj göndermek için onları doğrulamanız gerekir.", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Her cihazın yasal sahiplerine ait olduklarını doğrulamak için doğrulama işlemini gerçekleştirmenizi öneririz, ancak tercih edip onaylamadan iletiyi tekrar gönderebilirsiniz.", "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" daha önce görmediğiniz cihazları içeriyor.", @@ -601,8 +598,6 @@ "What does this mean?": "Bu ne anlama geliyor ?", "Error decrypting audio": "Ses şifre çözme hatası", "Error decrypting image": "Resim şifre çözme hatası", - "Image '%(Body)s' cannot be displayed.": "'%(Body)s' Resmi görüntülenemiyor.", - "This image cannot be displayed.": "Bu görüntü görüntülenemiyor.", "Error decrypting video": "Video şifre çözme hatası", "Add an Integration": "Entegrasyon ekleyin", "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?": "Hesabınızı %(integrationsUrl)s ile kullanmak üzere doğrulayabilmeniz için üçüncü taraf bir siteye götürülmek üzeresiniz. Devam etmek istiyor musunuz ?", diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index cb7809814a..bed499adc3 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -208,7 +208,6 @@ "What's new?": "Що нового?", "Notify me for anything else": "Сповіщати мене про будь-що інше", "View Source": "Переглянути джерело", - "Click here to create a GitHub issue.": "Нажміть тут для створення запитання по проблемі на GitHub.", "Can't update user notification settings": "Неможливо оновити налаштування користувацьких сповіщень", "Notify for all other messages/rooms": "Сповіщати щодо всіх повідомлень/кімнат", "Unable to look up room ID from server": "Неможливо знайти ID кімнати на сервері", diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 2bbb5b1cc8..3f474cd337 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -303,7 +303,6 @@ "No more results": "没有更多结果", "olm version:": "olm 版本:", "Only people who have been invited": "只有被邀请的人", - "Otherwise, click here to send a bug report.": "否则,点击这里发送一个错误报告。", "Privacy warning": "隐私警告", "Private Chat": "私聊", "Privileged Users": "特权用户", @@ -360,7 +359,6 @@ "Verify device": "验证设备", "I verify that the keys match": "我验证密钥匹配", "Unable to restore session": "无法恢复会话", - "Continue anyway": "无论如何都继续", "Blacklist": "列入黑名单", "Unverify": "取消验证", "ex. @bob:example.com": "例如 @bob:example.com", @@ -595,7 +593,6 @@ "Confirm Removal": "确认移除", "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "这将会导致您的账户永远无法使用。你将无法重新注册同样的用户 ID。", "Verifies a user, device, and pubkey tuple": "验证一个用户、设备和密钥元组", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "我们在尝试恢复你之前的会话时遇到了一个错误。如果你继续,你将需要重新登录,加密的聊天历史将会不可读。", "Unknown devices": "未知设备", "Unknown Address": "未知地址", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s 删除了他们的昵称 (%(oldDisplayName)s).", @@ -613,8 +610,6 @@ "Home server URL": "主服务器 URL", "Identity server URL": "身份认证服务器 URL", "What does this mean?": "这是什么意思?", - "Image '%(Body)s' cannot be displayed.": "图像 '%(Body)s' 无法显示。", - "This image cannot be displayed.": "图像无法显示。", "Add an Integration": "添加一个集成", "Removed or unknown message type": "被移除或未知的消息类型", "Ongoing conference call%(supportedText)s.": "正在进行的会议通话 %(supportedText)s.", @@ -809,7 +804,6 @@ "Disable Community Filter Panel": "停用社区面板", "Opt out of analytics": "退出统计分析服务", "Stickerpack": "贴图集", - "Sticker Messages": "贴图消息", "You don't currently have any stickerpacks enabled": "您目前没有启用任何贴纸包", "Add a stickerpack": "添加贴图集", "Your key share request has been sent - please check your other devices for key share requests.": "已请求共享密钥 - 请在您的其他设备上进行确认。", @@ -1082,7 +1076,6 @@ "What's new?": "有什么新闻?", "Notify me for anything else": "通知所有消息", "When I'm invited to a room": "当我被邀请进入聊天室", - "Click here to create a GitHub issue.": "点击这里 创建一个 GitHub issue.", "Can't update user notification settings": "不能更新用户通知设置", "Notify for all other messages/rooms": "为所有其他消息/聊天室显示通知", "Unable to look up room ID from server": "无法在服务器上找到聊天室 ID", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 6f5ef68735..053031c677 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -221,8 +221,6 @@ "What does this mean?": "它代表什麼意思?", "Error decrypting audio": "解密音檔出錯", "Error decrypting image": "解密圖片出錯", - "Image '%(Body)s' cannot be displayed.": "圖片 '%(Body)s' 無法顯示。", - "This image cannot be displayed.": "這張圖片無法顯示。", "Error decrypting video": "解密影片出錯", "Add an Integration": "新增整合器", "Ongoing conference call%(supportedText)s.": "%(supportedText)s 正在進行會議通話。", @@ -360,7 +358,6 @@ "olm version:": "olm 版本:", "Once encryption is enabled for a room it cannot be turned off again (for now)": "這個房間只要啟用加密就不能再關掉了(從現在開始)", "Only people who have been invited": "僅有被邀請的夥伴", - "Otherwise, click here to send a bug report.": "否則,請點選此處來傳送錯誤報告。", "Password": "密碼", "Password:": "密碼:", "Passwords can't be empty": "密碼不能為空", @@ -590,10 +587,8 @@ "In future this verification process will be more sophisticated.": "在未來,這個過程會更加複雜。", "Verify device": "驗證裝置", "I verify that the keys match": "我驗證金鑰相符", - "We encountered an error trying to restore your previous session. If you continue, you will need to log in again, and encrypted chat history will be unreadable.": "我們在嘗試復原您的前一個工作階段中遇到了錯誤。若您繼續,您將會需要再次登入,而加密的聊天歷史也將會無法讀取。", "Unable to restore session": "無法復原工作階段", "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "若您先前使用過較新版本的 Riot,您的工作階段可能與此版本不相容。關閉此視窗並回到較新的版本。", - "Continue anyway": "無論如何都繼續", "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "您目前正把未驗證的裝置列入黑名單;要傳送訊息到這些裝置,您必須先驗證它們。", "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "我們建議您對每一個裝置執行驗證過程以確認它們屬於其合法擁有者,但若您想要的話,您也可以重新傳送訊息而不必驗證它們。", "\"%(RoomName)s\" contains devices that you haven't seen before.": "「%(RoomName)s」包含了您先前沒看過的裝置。", @@ -996,7 +991,6 @@ "Join this community": "加入此社群", "Leave this community": "離開此社群", "Stickerpack": "貼圖包", - "Sticker Messages": "貼圖訊息", "You don't currently have any stickerpacks enabled": "您目前未啟用任何貼圖包", "Add a stickerpack": "新增貼圖包", "Hide Stickers": "隱藏貼圖", @@ -1110,7 +1104,6 @@ "Notify me for anything else": "所有消息都通知我", "View Source": "檢視來源", "Keywords": "關鍵字", - "Click here to create a GitHub issue.": "點選這裡來建立 GitHub 問題回報。", "Can't update user notification settings": "無法更新使用者的通知設定", "Notify for all other messages/rooms": "通知其他所有的訊息/聊天室", "Unable to look up room ID from server": "無法從伺服器找到聊天室 ID", From a88cbef331c89d21bc878e31c0e2976d27ce5d81 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 14 May 2018 16:22:28 +0100 Subject: [PATCH 003/480] tidy and switch to lexicographic sorting Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/rooms/RoomSettings.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/RoomSettings.js b/src/components/views/rooms/RoomSettings.js index f1aba322e2..059e07ffdb 100644 --- a/src/components/views/rooms/RoomSettings.js +++ b/src/components/views/rooms/RoomSettings.js @@ -719,8 +719,14 @@ module.exports = React.createClass({ } }); - privilegedUsers.sort((a, b) => userLevels[b.key] - userLevels[a.key]); - mutedUsers.sort((a, b) => userLevels[a.key] - userLevels[b.key]); + // comparator for sorting PL users lexicographically on PL descending, MXID ascending. (case-insensitive) + const comparator = (a, b) => { + const plDiff = userLevels[b.key] - userLevels[a.key]; + return plDiff !== 0 ? plDiff : a.key.toLocaleLowerCase().localeCompare(b.key.toLocaleLowerCase()); + }; + + privilegedUsers.sort(comparator); + mutedUsers.sort(comparator); if (privilegedUsers.length) { privilegedUsersSection = From f5c67229a46648268aefd3b3206c54c8227818a3 Mon Sep 17 00:00:00 2001 From: Kenneth Larsson Date: Mon, 14 May 2018 23:41:38 +0000 Subject: [PATCH 004/480] Translated using Weblate (Swedish) Currently translated at 69.0% (811 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 95 ++++++++++++++++++++++++++++++++-------- 1 file changed, 77 insertions(+), 18 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index e987ed29e2..a35509e1b4 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -135,7 +135,7 @@ "Failed to save settings": "Det gick inte att spara inställningarna", "Failed to send email": "Det gick inte att skicka epost", "Failed to send request.": "Det gick inte att sända begäran.", - "Failed to set avatar.": "Det gick inte att sätta profilbilden.", + "Failed to set avatar.": "Misslyckades med att ange avatar.", "Failed to set display name": "Det gick inte att sätta namnet", "Failed to set up conference call": "Det gick inte att starta konferenssamtalet", "Failed to toggle moderator status": "Det gick inte att växla moderator-status", @@ -181,7 +181,7 @@ "Guest access is disabled on this Home Server.": "Gäståtkomst är inte aktiverat på den här hemservern.", "Guests cannot join this room even if explicitly invited.": "Gäster kan inte gå med i det här rummet fastän de är uttryckligen inbjudna.", "Hangup": "Lägg på", - "Hide read receipts": "Göm kvitteringar", + "Hide read receipts": "Dölj läskvitton", "Hide Text Formatting Toolbar": "Göm textformatteringsverktygsfältet", "Historical": "Historiska", "Home": "Hem", @@ -293,7 +293,7 @@ "Reject invitation": "Avvisa inbjudan", "Rejoin": "Gå med tillbaka", "Remote addresses for this room:": "Fjärradresser för det här rummet:", - "Remove Contact Information?": "Ta bort kontaktinformation?", + "Remove Contact Information?": "Ta bort kontaktuppgifter?", "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s tog bort sitt visningsnamn (%(oldDisplayName)s).", "%(senderName)s removed their profile picture.": "%(senderName)s tog bort sin profilbild.", "Remove": "Ta bort", @@ -403,18 +403,18 @@ "Thu": "Tors", "Fri": "Fre", "Sat": "Lör", - "Jan": "Jan", - "Feb": "Feb", - "Mar": "Mar", - "Apr": "Apr", - "May": "Maj", - "Jun": "Jun", - "Jul": "Juli", - "Aug": "Aug", - "Sep": "Sep", - "Oct": "Okt", - "Nov": "Nov", - "Dec": "Dec", + "Jan": "jan", + "Feb": "feb", + "Mar": "mar", + "Apr": "apr", + "May": "maj", + "Jun": "jun", + "Jul": "jul", + "Aug": "aug", + "Sep": "sep", + "Oct": "okt", + "Nov": "nov", + "Dec": "dec", "Name or matrix ID": "Namn eller matrix ID", "Invite to Community": "", "Unable to enable Notifications": "Det går inte att aktivera Notifieringar", @@ -647,8 +647,8 @@ "Offline": "Offline", "(~%(count)s results)|other": "(~%(count)s resultat)", "(~%(count)s results)|one": "(~%(count)s resultat)", - "Upload avatar": "Ladda upp profilbild", - "Remove avatar": "Ta bort profilbild", + "Upload avatar": "Ladda upp avatar", + "Remove avatar": "Ta bort avatar", "This invitation was sent to an email address which is not associated with this account:": "Den här inbjudan skickades till en epostadress som inte är kopplad till detta konto:", "To link to a room it must have an address.": "För att länka till ett rum behöver det en adress.", "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivå %(powerLevelNumber)s)", @@ -752,5 +752,64 @@ "This will allow you to reset your password and receive notifications.": "Det här låter dig återställa lösenordet och ta emot aviseringar.", "You have no visible notifications": "Du har inga synliga aviseringar", "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Ditt lösenord har ändrats. Du kommer inte att få push-aviseringar på andra enheter förrän du har loggat in på dem igen", - "Failed to upload image": "Det gick inte att ladda upp bild" + "Failed to upload image": "Det gick inte att ladda upp bild", + "New Password": "Nytt lösenord", + "Do you want to set an email address?": "Vill du ange en epostadress?", + "Your home server does not support device management.": "Din hemserver stöder inte enhetshantering.", + "Unable to load device list": "Det gick inte att ladda enhetslista", + "Delete %(count)s devices|other": "Ta bort %(count)s enheter", + "Delete %(count)s devices|one": "Ta bort enhet", + "Device Name": "Enhetsnamn", + "Select devices": "Välj enheter", + "Disable Emoji suggestions while typing": "Inaktivera Emoji-förslag medan du skriver", + "Use compact timeline layout": "Använd kompakt chattlayout", + "Not a valid Riot keyfile": "Inte en giltig Riot-nyckelfil", + "Authentication check failed: incorrect password?": "Autentiseringskontroll misslyckades: felaktigt lösenord?", + "Always show encryption icons": "Visa alltid krypteringsikoner", + "Disable big emoji in chat": "Inaktivera stor emoji i chatt", + "Hide avatars in user and room mentions": "Dölj avatarer i användar- och rumsnämningar", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s bytte avatar för %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s tog bort rummets avatar.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s ändrade rummets avatar till ", + "Automatically replace plain text Emoji": "Ersätt text-emojis automatiskt", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "You seem to be uploading files, are you sure you want to quit?": "Du verkar ladda upp filer, är du säker på att du vill avsluta?", + "You seem to be in a call, are you sure you want to quit?": "Du verkar vara i ett samtal, är du säker på att du vill avsluta?", + "Active call": "Aktivt samtal", + "Show devices, send anyway or cancel.": "Visa enheter, skicka ändå eller avbryt.", + "%(count)s of your messages have not been sent.|one": "Ditt meddelande skickades inte.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|other": "Skicka om alla eller ångra alla nu. Du kan även välja enskilda meddelanden för att skicka om eller ångra.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.|one": "Skicka om meddelande eller ångra meddelande nu.", + "Connectivity to the server has been lost.": "Anslutning till servern har brutits.", + "Sent messages will be stored until your connection has returned.": "Skickade meddelanden kommer att lagras tills anslutningen är tillbaka.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Det är ingen annan här! Vill du bjuda in någon eller sluta varna om det tomma rummet?", + "Unknown room %(roomId)s": "Okänt rum %(roomId)s", + "Room": "Rum", + "Clear filter": "Töm filter", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Försökte ladda en viss punkt i det här rummets tidslinje, men du har inte behörighet att visa det aktuella meddelandet.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Försökte ladda en specifik punkt i det här rummets tidslinje, men kunde inte hitta den.", + "Success": "Det lyckades", + "Unable to remove contact information": "Det gick inte att ta bort kontaktuppgifter", + "Autocomplete Delay (ms):": "Autokompletteringsfördröjning (ms):", + "Ignored Users": "Ignorerade användare", + "These are experimental features that may break in unexpected ways": "Detta är experimentell funktionalitet som kan sluta fungera helt oväntat", + "Use with caution": "Använd med försiktighet", + "To return to your account in future you need to set a password": "För att återvända till ditt konto i framtiden måste du ange ett lösenord", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ett epostmeddelande har skickats till %(emailAddress)s. När du har öppnat länken i det, klicka nedan.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Observera att du loggar in på %(hs)s-servern, inte matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Denna hemserver erbjuder inga inloggningsflöden som stöds av den här klienten.", + "Upload new:": "Ladda upp ny:", + "Copied!": "Kopierat!", + "Failed to copy": "Det gick inte att kopiera", + "Removed or unknown message type": "Borttagen eller okänd meddelandetyp", + "Message removed by %(userId)s": "Meddelande borttaget av %(userId)s", + "Message removed": "Meddelande borttaget", + "Robot check is currently unavailable on desktop - please use a web browser": "Robotkontrollen är för närvarande inte tillgänglig för skrivbordsversionen - vänligen använd en webbläsare", + "This Home Server would like to make sure you are not a robot": "Den här hemservern vill bekräfta att du inte är en robot", + "Sign in with CAS": "Logga in med CAS", + "Unknown devices": "Okända enheter", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" innehåller enheter som du inte har sett tidigare." } From 05c469399d10927509640f84c42f97d27083dc8c Mon Sep 17 00:00:00 2001 From: Osoitz Date: Tue, 8 May 2018 09:26:45 +0000 Subject: [PATCH 005/480] Translated using Weblate (Basque) Currently translated at 100.0% (1172 of 1172 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/eu/ --- src/i18n/strings/eu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json index e478c3270b..93acd5fbc2 100644 --- a/src/i18n/strings/eu.json +++ b/src/i18n/strings/eu.json @@ -1176,5 +1176,6 @@ "Unable to reply": "Ezin erantzun", "At this time it is not possible to reply with an emote.": "Une honetan ezin da irriabartxo batekin erantzun.", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Ezin izan da erantzundako gertaera kargatu, edo ez dago edo ez duzu ikusteko baimenik.", - "Collapse Reply Thread": "Tolestu erantzun-haria" + "Collapse Reply Thread": "Tolestu erantzun-haria", + "Enable widget screenshots on supported widgets": "Gaitu trepeten pantaila-argazkiak onartzen duten trepetetan" } From 5b26a56b9ab7c7afc4af918f9d912fc1bee9e096 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Wed, 16 May 2018 09:42:07 +0000 Subject: [PATCH 006/480] Translated using Weblate (Bulgarian) Currently translated at 100.0% (1172 of 1172 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/bg/ --- src/i18n/strings/bg.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json index 2a2b90f59f..9322865c7a 100644 --- a/src/i18n/strings/bg.json +++ b/src/i18n/strings/bg.json @@ -1167,5 +1167,15 @@ "At this time it is not possible to reply with a file so this will be sent without being a reply.": "В момента не може да се отговаря с файл, така че това ще се изпрати без да бъде отговор.", "Unable to reply": "Не може да се отговори", "At this time it is not possible to reply with an emote.": "В момента не може да се отговори с емотикона.", - "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не може да се зареди събитието, на което е отговорено. Или не съществува или нямате достъп да го видите." + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не може да се зареди събитието, на което е отговорено. Или не съществува или нямате достъп да го видите.", + "Popout widget": "Изкарай в нов прозорец", + "Log out and remove encryption keys?": "Изход и изтриване на ключовете за шифроване?", + "Clear Storage and Sign Out": "Изчисти запазените данни и излез", + "Send Logs": "Изпрати логове", + "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.": "Изчистване на запазените данни в браузъра може да поправи проблема, но ще Ви изкара от профила и ще направи шифрованите съобщения нечетими.", + "Collapse Reply Thread": "Свий отговорите", + "Enable widget screenshots on supported widgets": "Включи скрийншоти за поддържащи ги приспособления", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Бъговете по Riot се следят в GitHub: създайте проблем в GitHub." } From c5c3c51cf0bd9908ff9fc3ad6b50c55572f94492 Mon Sep 17 00:00:00 2001 From: Kenneth Larsson Date: Wed, 16 May 2018 09:55:27 +0000 Subject: [PATCH 007/480] Translated using Weblate (Swedish) Currently translated at 69.9% (820 of 1172 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index a35509e1b4..edb7f4b065 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -347,7 +347,7 @@ "Start authentication": "Starta autentisering", "Start Chat": "Starta en chatt", "Cancel": "Avbryt", - "Create new room": "Nytt rum", + "Create new room": "Skapa nytt rum", "Custom Server Options": "Egna serverinställningar", "Dismiss": "Avvisa", "powered by Matrix": "drivs av Matrix", @@ -361,7 +361,7 @@ "Delete widget": "Ta bort widget", "Define the power level of a user": "Definiera anseende för en användare", "Do you want to load widget from URL:": "Vill du ladda widgeten från URL:", - "Edit": "Editera", + "Edit": "Ändra", "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering", "Integrations Error": "Integrationsfel", "Publish this room to the public in %(domain)s's room directory?": "Publicera rummet i den offentliga rumskatalogen på %(domain)s?", @@ -417,14 +417,14 @@ "Dec": "dec", "Name or matrix ID": "Namn eller matrix ID", "Invite to Community": "", - "Unable to enable Notifications": "Det går inte att aktivera Notifieringar", - "Failed to invite user": "Misslyckades med att bjuda in användaren", + "Unable to enable Notifications": "Det går inte att aktivera aviseringar", + "Failed to invite user": "Det gick inte att bjuda in användaren", "The information being sent to us to help make Riot.im better includes:": "Informationen som skickas till oss för att hjälpa Riot.im att bli bättre inkluderar:", "Review Devices": "Granska enheter", "Answer Anyway": "Svara ändå", "VoIP is unsupported": "VoIP stöds ej", "Who would you like to add to this room?": "Vem vill du lägga till i det här rummet?", - "Failed to invite": "Misslyckades med att bjuda in", + "Failed to invite": "Inbjudan misslyckades", "You need to be logged in.": "Du måste vara inloggad.", "You need to be able to invite users to do that.": "Du måste kunna bjuda in användare för att göra det.", "You are not in this room.": "Du är inte i det här rummet.", @@ -791,7 +791,7 @@ "Clear filter": "Töm filter", "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Försökte ladda en viss punkt i det här rummets tidslinje, men du har inte behörighet att visa det aktuella meddelandet.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Försökte ladda en specifik punkt i det här rummets tidslinje, men kunde inte hitta den.", - "Success": "Det lyckades", + "Success": "Slutfört", "Unable to remove contact information": "Det gick inte att ta bort kontaktuppgifter", "Autocomplete Delay (ms):": "Autokompletteringsfördröjning (ms):", "Ignored Users": "Ignorerade användare", @@ -811,5 +811,14 @@ "This Home Server would like to make sure you are not a robot": "Den här hemservern vill bekräfta att du inte är en robot", "Sign in with CAS": "Logga in med CAS", "Unknown devices": "Okända enheter", - "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" innehåller enheter som du inte har sett tidigare." + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" innehåller enheter som du inte har sett tidigare.", + "Delete Widget": "Ta bort widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Widget tas bort för alla användare i rummet. Är du säker på att du vill ta bort den?", + "Minimize apps": "Minimera appar", + "Picture": "Bild", + "Blacklist": "Svartlista", + "Unblacklist": "Ta bort svartlistning", + "Failed to invite the following users to %(groupId)s:": "Det gick inte att bjuda in följande användare till %(groupId)s:", + "Failed to invite users to %(groupId)s": "Det gick inte att bjuda in användare till %(groupId)s", + "This room is not public. You will not be able to rejoin without an invite.": "Detta rum är inte offentligt. Du kommer inte kunna gå med igen utan en inbjudan." } From 123c4d0f6c027c6b74db273486d4d230c3217908 Mon Sep 17 00:00:00 2001 From: random Date: Wed, 16 May 2018 15:51:37 +0000 Subject: [PATCH 008/480] Translated using Weblate (Italian) Currently translated at 99.1% (1162 of 1172 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/ --- src/i18n/strings/it.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index ba7417bcc8..82382a3967 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1151,5 +1151,21 @@ "Collapse panel": "Riduci pannello", "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!": "Con il tuo attuale browser, l'aspetto e la sensazione generale dell'applicazione potrebbero essere completamente sbagliati e alcune delle funzionalità potrebbero non funzionare. Se vuoi provare comunque puoi continuare, ma non riceverai aiuto per qualsiasi problema tu possa riscontrare!", "Checking for an update...": "Controllo aggiornamenti...", - "There are advanced notifications which are not shown here": "Ci sono notifiche avanzate che non sono mostrate qui" + "There are advanced notifications which are not shown here": "Ci sono notifiche avanzate che non sono mostrate qui", + "Every page you use in the app": "Ogni pagina che usi nell'app", + "e.g. ": "es. ", + "Your User Agent": "Il tuo User Agent", + "Your device resolution": "La risoluzione del dispositivo", + "Missing roomId.": "ID stanza mancante.", + "Always show encryption icons": "Mostra sempre icone di cifratura", + "Enable widget screenshots on supported widgets": "Attiva le schermate dei widget sui widget supportati", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Al momento non è possibile rispondere con un file quindi verrà inviato senza essere una risposta.", + "Unable to reply": "Impossibile rispondere", + "At this time it is not possible to reply with an emote.": "Al momento non è possibile rispondere con una emoticon.", + "Picture": "Immagine", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Impossibile caricare l'evento a cui si è risposto, o non esiste o non hai il permesso di visualizzarlo.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Gli errori di Riot sono monitorati su GitHub: segnala un problema su GitHub.", + "Log out and remove encryption keys?": "Disconnettere e rimuovere le chiavi di cifratura?", + "Refresh": "Aggiorna", + "We encountered an error trying to restore your previous session.": "Abbiamo riscontrato un errore tentando di ripristinare la tua sessione precedente." } From d9236a58487beaa6ac7a814663e0f01b84009330 Mon Sep 17 00:00:00 2001 From: strix aluco Date: Wed, 16 May 2018 16:09:18 +0000 Subject: [PATCH 009/480] Translated using Weblate (Ukrainian) Currently translated at 23.1% (271 of 1172 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/uk/ --- src/i18n/strings/uk.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index cb7809814a..c3ff95b938 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -265,5 +265,11 @@ "To return to your account in future you need to set a password": "Щоб мати змогу користуватись обліковкою у майбутньому, треба зазначити пароль", "Logged in as:": "Ви зайшли як:", "click to reveal": "натисніть щоб побачити", - "Homeserver is": "Домашній сервер —" + "Homeserver is": "Домашній сервер —", + "The version of Riot.im": "Версія Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Чи увійшли ви, чи ні (ми не зберігаємо ваше ім'я користувача)", + "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": "Чи використовуєте ви режим Richtext у редакторі Rich Text Editor", + "Your homeserver's URL": "URL адреса вашого домашнього серверу" } From b28ed6075bbf65fdb78bd09e4773ab2a6f25a936 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 17 May 2018 18:15:34 +0100 Subject: [PATCH 010/480] Implement slightly hacky CSS soln. to thumbnail sizing As the slightly nicer alternative to fixupHeight being applied once we actually have a timelineWidth. The niceness comes from not needing timelineWidth, which means we can implement at render time with CSS. (Despite still calculating aspect ratios when we render.) --- res/css/views/messages/_MImageBody.scss | 13 +++- src/components/views/messages/MImageBody.js | 66 ++++++--------------- 2 files changed, 29 insertions(+), 50 deletions(-) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 1c809f0743..9f0e77f765 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -20,5 +20,14 @@ limitations under the License. } .mx_MImageBody_thumbnail { - max-width: 100%; -} \ No newline at end of file + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; +} + +.mx_MImageBody_thumbnail_container { + overflow: hidden; + position: relative; +} diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 6cc492acf8..87fe8d906c 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -21,15 +21,15 @@ import PropTypes from 'prop-types'; import { MatrixClient } from 'matrix-js-sdk'; import MFileBody from './MFileBody'; -import ImageUtils from '../../../ImageUtils'; import Modal from '../../../Modal'; import sdk from '../../../index'; -import dis from '../../../dispatcher'; import { decryptFile } from '../../../utils/DecryptFile'; import Promise from 'bluebird'; import { _t } from '../../../languageHandler'; import SettingsStore from "../../../settings/SettingsStore"; +const THUMBNAIL_MAX_HEIGHT = 600; + export default class extends React.Component { displayName: 'MImageBody' @@ -48,14 +48,12 @@ export default class extends React.Component { constructor(props) { super(props); - this.onAction = this.onAction.bind(this); this.onImageError = this.onImageError.bind(this); this.onImageLoad = this.onImageLoad.bind(this); this.onImageEnter = this.onImageEnter.bind(this); this.onImageLeave = this.onImageLeave.bind(this); this.onClientSync = this.onClientSync.bind(this); this.onClick = this.onClick.bind(this); - this.fixupHeight = this.fixupHeight.bind(this); this._isGif = this._isGif.bind(this); this.state = { @@ -140,7 +138,6 @@ export default class extends React.Component { } onImageLoad() { - this.fixupHeight(); this.props.onWidgetLoad(); } @@ -176,7 +173,6 @@ export default class extends React.Component { } componentDidMount() { - this.dispatcherRef = dis.register(this.onAction); const content = this.props.mxEvent.getContent(); if (content.file !== undefined && this.state.decryptedUrl === null) { let thumbnailPromise = Promise.resolve(null); @@ -217,7 +213,6 @@ export default class extends React.Component { componentWillUnmount() { this.unmounted = true; - dis.unregister(this.dispatcherRef); this.context.matrixClient.removeListener('sync', this.onClientSync); this._afterComponentWillUnmount(); @@ -234,50 +229,25 @@ export default class extends React.Component { _afterComponentWillUnmount() { } - onAction(payload) { - if (payload.action === "timeline_resize") { - this.fixupHeight(); - } - } - - fixupHeight() { - if (!this.refs.image) { - console.warn(`Refusing to fix up height on ${this.displayName} with no image element`); - return; - } - - const content = this.props.mxEvent.getContent(); - const timelineWidth = this.refs.body.offsetWidth; - const maxHeight = 600; // let images take up as much width as they can so long as the height doesn't exceed 600px. - // the alternative here would be 600*timelineWidth/800; to scale them down to fit inside a 4:3 bounding box - - // FIXME: this will break on clientside generated thumbnails (as per e2e rooms) - // which may well be much smaller than the 800x600 bounding box. - - // FIXME: It will also break really badly for images with broken or missing thumbnails - - // FIXME: Because we don't know what size of thumbnail the server's actually going to send - // us, we can't even really layout the page nicely for it. Instead we have to assume - // it'll target 800x600 and we'll downsize if needed to make things fit. - - // console.log("trying to fit image into timelineWidth of " + this.refs.body.offsetWidth + " or " + this.refs.body.clientWidth); - let thumbHeight = null; - if (content.info) { - thumbHeight = ImageUtils.thumbHeight(content.info.w, content.info.h, timelineWidth, maxHeight); - } - this.refs.image.style.height = thumbHeight + "px"; - // console.log("Image height now", thumbHeight); - } - _messageContent(contentUrl, thumbUrl, content) { + const maxHeight = Math.min(THUMBNAIL_MAX_HEIGHT, content.info.h); + const maxWidth = content.info.w * maxHeight / content.info.h; const thumbnail = ( - {content.body} +
    + { /* Calculate aspect ratio, using %padding will size _container correctly */ } +
    + + { /* Thumbnail CSS class resizes to exactly container size with inline CSS + to restrict width */ } + {content.body} +
    ); From bbcf2fea53d81cb344e36e21221c298be46e30d5 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 18 May 2018 09:47:49 +0100 Subject: [PATCH 011/480] Fix e2e image thumbnail spinner containing box correct size --- src/components/views/messages/MImageBody.js | 55 ++++++++++----------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 87fe8d906c..f1454d1ac5 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -232,7 +232,29 @@ export default class extends React.Component { _messageContent(contentUrl, thumbUrl, content) { const maxHeight = Math.min(THUMBNAIL_MAX_HEIGHT, content.info.h); const maxWidth = content.info.w * maxHeight / content.info.h; - const thumbnail = ( + + let img = null; + // e2e image hasn't been decrypted yet + if (content.file !== undefined && this.state.decryptedUrl === null) { + img =
    + {content.body} +
    ; + } else if (thumbUrl && !this.state.imgError) { + img = {content.body}; + } + const thumbnail = img ?
    { /* Calculate aspect ratio, using %padding will size _container correctly */ } @@ -240,20 +262,13 @@ export default class extends React.Component { { /* Thumbnail CSS class resizes to exactly container size with inline CSS to restrict width */ } - {content.body} + { img }
    -
    - ); + : null; return ( - { thumbUrl && !this.state.imgError ? thumbnail : '' } + { thumbnail } ); @@ -271,24 +286,6 @@ export default class extends React.Component { ); } - if (content.file !== undefined && this.state.decryptedUrl === null) { - // Need to decrypt the attachment - // The attachment is decrypted in componentDidMount. - // For now add an img tag with a spinner. - return ( - -
    - {content.body} -
    -
    - ); - } const contentUrl = this._getContentUrl(); let thumbUrl; From b41b9aa4facd2e4767d993f1d173ec9fdbc03c37 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 18 May 2018 09:58:52 +0100 Subject: [PATCH 012/480] Remove fixupHeight call from MStickerBody --- src/components/views/messages/MStickerBody.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/views/messages/MStickerBody.js b/src/components/views/messages/MStickerBody.js index 3a412fc2e2..cdb60f0074 100644 --- a/src/components/views/messages/MStickerBody.js +++ b/src/components/views/messages/MStickerBody.js @@ -40,7 +40,6 @@ export default class MStickerBody extends MImageBody { } _onImageLoad() { - this.fixupHeight(); this.setState({ placeholderClasses: 'mx_MStickerBody_placeholder_invisible', }); @@ -110,8 +109,6 @@ export default class MStickerBody extends MImageBody { // The pixel size of sticker images is generally larger than their intended display // size so they render at native reolution on HiDPI displays. We therefore need to // explicity set the size so they render at the intended size. - // XXX: This will be clobberred when we run fixupHeight(), but we need to do it - // here otherwise the stickers are momentarily displayed at the pixel size. const imageStyle = { height: content.info.h, // leave the browser the calculate the width automatically From d11442de0434282c70052327420ab359de9bd161 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 18 May 2018 10:15:59 +0100 Subject: [PATCH 013/480] Adjust comment --- src/components/views/messages/MImageBody.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index f1454d1ac5..f98432a166 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -260,8 +260,7 @@ export default class extends React.Component { { /* Calculate aspect ratio, using %padding will size _container correctly */ }
    - { /* Thumbnail CSS class resizes to exactly container size with inline CSS - to restrict width */ } + { /* mx_MImageBody_thumbnail resizes img to exactly container size */ } { img } : null; From 7e7e2a747313d2d9d45d67bb5019b1fc0b7ef20a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 18 May 2018 10:27:22 +0100 Subject: [PATCH 014/480] Add more comments to explain thumbnail sizing --- res/css/views/messages/_MImageBody.scss | 4 ++++ src/components/views/messages/MImageBody.js | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 9f0e77f765..9667337f5a 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -28,6 +28,10 @@ limitations under the License. } .mx_MImageBody_thumbnail_container { + // Prevent the padding-bottom (added inline in MImageBody.js) from + // effecting elements below the container. overflow: hidden; + + // Make sure the _thumbnail is positioned relative to the _container position: relative; } diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index f98432a166..656bd02840 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -230,7 +230,10 @@ export default class extends React.Component { } _messageContent(contentUrl, thumbUrl, content) { + // The maximum height of the thumbnail as it is rendered as an const maxHeight = Math.min(THUMBNAIL_MAX_HEIGHT, content.info.h); + // The maximum width of the thumbnail, as dictated by it's natural + // maximum height. const maxWidth = content.info.w * maxHeight / content.info.h; let img = null; @@ -246,6 +249,8 @@ export default class extends React.Component { }} /> ; } else if (thumbUrl && !this.state.imgError) { + // Restrict the width of the thumbnail here, otherwise it will fill the container + // which has the same width as the timeline img = {content.body} Date: Thu, 17 May 2018 18:41:24 +0000 Subject: [PATCH 015/480] Translated using Weblate (Russian) Currently translated at 99.8% (1170 of 1172 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 50 ++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index f766069b16..24e9750698 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1,6 +1,6 @@ { "Account": "Аккаунт", - "Add email address": "Добавить адрес email", + "Add email address": "Добавить email", "Add phone number": "Добавить номер телефона", "Admin": "Администратор", "Advanced": "Подробности", @@ -39,7 +39,7 @@ "Display name": "Отображаемое имя", "Displays action": "Отображение действий", "Ed25519 fingerprint": "Ed25519 отпечаток", - "Email, name or matrix ID": "Email-адрес, имя или идентификатор", + "Email, name or matrix ID": "Email, имя или matrix ID", "Emoji": "Смайлы", "Encrypted messages will not be visible on clients that do not yet implement encryption": "Зашифрованные сообщения не будут видны в клиентах, еще не поддерживающих сквозное шифрование", "Encrypted room": "Зашифрованная комната", @@ -47,7 +47,7 @@ "End-to-end encryption is in beta and may not be reliable": "Сквозное шифрование сейчас в бета-тестировании и может не работать", "Error": "Ошибка", "Event information": "Информация о событии", - "Export E2E room keys": "Экспорт ключей сквозного шифрования", + "Export E2E room keys": "Экспорт ключей шифрования", "Failed to change password. Is your password correct?": "Не удалось сменить пароль. Вы правильно ввели текущий пароль?", "Failed to leave room": "Не удалось выйти из комнаты", "Failed to reject invitation": "Не удалось отклонить приглашение", @@ -64,9 +64,9 @@ "Historical": "Архив", "Homeserver is": "Домашний сервер это", "Identity Server is": "Сервер идентификации это", - "I have verified my email address": "Я подтвердил свой адрес email", - "Import E2E room keys": "Импорт ключей сквозного шифрования", - "Invalid Email Address": "Недопустимый адрес email", + "I have verified my email address": "Я подтвердил свой email", + "Import E2E room keys": "Импорт ключей шифрования", + "Invalid Email Address": "Недопустимый email", "Invite new room members": "Пригласить в комнату новых участников", "Invites": "Приглашения", "Invites user with given id to current room": "Приглашает пользователя с заданным ID в текущую комнату", @@ -103,9 +103,9 @@ "Settings": "Настройки", "Start a chat": "Начать разговор", "Start Chat": "Начать разговор", - "Unable to add email address": "Не удается добавить адрес email", + "Unable to add email address": "Не удается добавить email", "Unable to remove contact information": "Не удалось удалить контактную информацию", - "Unable to verify email address.": "Не удалось проверить адрес email.", + "Unable to verify email address.": "Не удалось проверить email.", "Unban": "Разблокировать", "Unencrypted room": "Нешифрованная комната", "unencrypted": "без шифрования", @@ -159,7 +159,7 @@ "Failed to lookup current room": "Не удалось найти текущую комнату", "Failed to send request.": "Не удалось отправить запрос.", "Failed to set up conference call": "Не удалось сделать конференц-звонок", - "Failed to verify email address: make sure you clicked the link in the email": "Не удалось проверить email-адрес: убедитесь, что вы перешли по ссылке в письме", + "Failed to verify email address: make sure you clicked the link in the email": "Не удалось проверить email: убедитесь, что вы перешли по ссылке в письме", "Failure to create room": "Не удалось создать комнату", "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "для %(userId)s с %(fromPowerLevel)s на %(toPowerLevel)s", "click to reveal": "нажмите для открытия", @@ -185,7 +185,7 @@ "Set a display name:": "Введите отображаемое имя:", "Passwords don't match.": "Пароли не совпадают.", "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Пароль слишком короткий (мин. %(MIN_PASSWORD_LENGTH)s).", - "This doesn't look like a valid email address.": "Это не похоже на допустимый адрес email.", + "This doesn't look like a valid email address.": "Это не похоже на допустимый email.", "This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию с помощью номера телефона.", "User names may only contain letters, numbers, dots, hyphens and underscores.": "Имена пользователей могут содержать только буквы, цифры, точки, дефисы и символы подчеркивания.", "An unknown error occurred.": "Произошла неизвестная ошибка.", @@ -224,7 +224,7 @@ "Thu": "Чт", "Fri": "Пт", "Sat": "Сб", - "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ваш email-адрес не связан ни с одним пользователем на этом сервере.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ваш email не связан ни с одним пользователем на этом сервере.", "To use it, just wait for autocomplete results to load and tab through them.": "Чтобы воспользоваться этой функцией, дождитесь загрузки результатов в окне автодополнения, а затем используйте Tab для прокрутки.", "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s включил(а) в комнате сквозное шифрование (алгоритм %(algorithm)s).", "%(senderName)s unbanned %(targetName)s.": "%(senderName)s разблокировал(а) %(targetName)s.", @@ -337,7 +337,7 @@ "Success": "Успех", "The default role for new room members is": "Права по умолчанию для новых участников комнаты", "The main address for this room is": "Основной адрес этой комнаты", - "This email address is already in use": "Этот email-адрес уже используется", + "This email address is already in use": "Этот email уже используется", "This email address was not found": "Этот адрес электронной почты не найден", "The email address linked to your account must be entered.": "Необходимо ввести адрес электронной почты, связанный с вашей учетной записью.", "The file '%(fileName)s' failed to upload": "Не удалось отправить файл '%(fileName)s'", @@ -404,8 +404,8 @@ "Device ID:": "ID устройства:", "device id: ": "ID устройства: ", "Device key:": "Ключ устройства:", - "Email address": "Email-адрес", - "Email address (optional)": "Email-адрес (необязательно)", + "Email address": "Email", + "Email address (optional)": "Email (необязательно)", "Error decrypting attachment": "Ошибка расшифровки вложения", "Export": "Экспорт", "Failed to set avatar.": "Не удалось установить аватар.", @@ -510,11 +510,11 @@ "Sign in with CAS": "Войти с помощью CAS", "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Вы можете войти на другой сервер Matrix, указав его URL-адрес.", "This allows you to use this app with an existing Matrix account on a different home server.": "Это позволяет использовать приложение с учетной записью Matrix на другом сервере.", - "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Кроме того, можно выбрать другой сервер идентификации, однако в таком случае вы, скорее всего, не сможете взаимодействовать с пользователями посредством их email-адресов.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Кроме того, можно выбрать другой сервер идентификации, однако в таком случае вы, скорее всего, не сможете взаимодействовать с пользователями посредством их emailов.", "Please check your email to continue registration.": "Чтобы продолжить регистрацию, проверьте электронную почту.", "Token incorrect": "Неверный код проверки", "Please enter the code it contains:": "Введите полученный код:", - "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Если не указать email-адрес, вы не сможете при необходимости сбросить свой пароль. Уверены?", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Если не указать email, вы не сможете при необходимости сбросить свой пароль. Уверены?", "You are registering with %(SelectedTeamName)s": "Вы регистрируетесь в %(SelectedTeamName)s", "Default server": "Сервер по умолчанию", "Custom server": "Другой сервер", @@ -603,7 +603,7 @@ "Seen by %(userName)s at %(dateTime)s": "Прочитано %(userName)s в %(dateTime)s", "Send anyway": "Отправить в любом случае", "Show Text Formatting Toolbar": "Показать инструменты форматирования текста", - "This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на email-адрес, не связанный с вашей учетной записью:", + "This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на email, не связанный с вашей учетной записью:", "To link to a room it must have an address.": "Чтобы иметь возможность ссылаться на комнату, ей нужно присвоить адрес.", "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не удалось установить, что адрес в этом приглашении соответствует вашей учетной записи.", "Undecryptable": "Невозможно расшифровать", @@ -619,7 +619,7 @@ "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-сертификат домашнего сервера является доверенным и что расширение браузера не блокирует запросы.", "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s заблокировал(а) вас в %(roomName)s.", "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал(а) вас из %(roomName)s.", - "You may wish to login with a different account, or add this email to this account.": "При желании вы можете войти в систему под другим именем или привязать этот email-адрес к вашей учетной записи.", + "You may wish to login with a different account, or add this email to this account.": "При желании вы можете войти в систему под другим именем или привязать этот email к вашей учетной записи.", "Your home server does not support device management.": "Ваш сервер не поддерживает управление устройствами.", "(could not connect media)": "(сбой подключения)", "(no answer)": "(нет ответа)", @@ -628,7 +628,7 @@ "Not a valid Riot keyfile": "Недействительный файл ключей Riot", "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые криптографические расширения", "Authentication check failed: incorrect password?": "Ошибка аутентификации: возможно, неправильный пароль?", - "Do you want to set an email address?": "Хотите указать email-адрес?", + "Do you want to set an email address?": "Хотите указать email?", "This will allow you to reset your password and receive notifications.": "Это позволит при необходимости сбросить пароль и получать уведомления.", "Press to start a chat with someone": "Нажмите , чтобы начать разговор с кем-либо", "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не вошли ни в одну из комнат! Нажмите , чтобы создать комнату, или , чтобы посмотреть каталог комнат", @@ -745,7 +745,7 @@ "Failed to add the following rooms to %(groupId)s:": "Не удалось добавить эти комнаты в %(groupId)s:", "Matrix ID": "Matrix ID", "Matrix Room ID": "Matrix ID комнаты", - "email address": "адрес email", + "email address": "email", "Try using one of the following valid address types: %(validTypesList)s.": "Попробуйте использовать один из следующих допустимых типов адресов: %(validTypesList)s.", "You have entered an invalid address.": "Введен неправильный адрес.", "Unpin Message": "Открепить сообщение", @@ -953,7 +953,7 @@ "Send a message (unencrypted)…": "Отправить сообщение (нешифрованное)…", "Replying": "Отвечает", "Minimize apps": "Свернуть приложения", - "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Конфиденциальность важна для нас, поэтому мы не собираем никаких личных или идентифицируемых данных для нашей аналитики.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Конфиденциальность важна для нас, поэтому мы не собираем никаких личных или идентифицирующих данных для нашей аналитики.", "Learn more about how we use analytics.": "Подробнее о том, как мы используем аналитику.", "The information being sent to us to help make Riot.im better includes:": "Информация, отправляемая нам, чтобы помочь нам сделать Riot.im лучше, включает в себя:", "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Если на этой странице встречаются сведения личного характера, например имя комнаты, имя пользователя или группы, они удаляются перед отправкой на сервер.", @@ -1017,7 +1017,7 @@ "Friday": "Пятница", "Update": "Обновить", "What's New": "Что изменилось", - "Add an email address above to configure email notifications": "Добавьте email-адрес выше для настройки email-уведомлений", + "Add an email address above to configure email notifications": "Добавьте email выше для настройки уведомлений", "Expand panel": "Развернуть панель", "On": "Включить", "%(count)s Members|other": "%(count)s членов", @@ -1073,7 +1073,7 @@ "Tuesday": "Вторник", "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:", "Search…": "Поиск…", - "You have successfully set a password and an email address!": "Вы успешно установили пароль и адрес email!", + "You have successfully set a password and an email address!": "Вы успешно установили пароль и email!", "Remove %(name)s from the directory?": "Удалить %(name)s из каталога?", "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot использует многие передовые возможности браузера, некоторые из которых недоступны или являются экспериментальным в вашем текущем браузере.", "Developer Tools": "Инструменты разработчика", @@ -1082,7 +1082,7 @@ "Explore Account Data": "Просмотр данных аккаунта", "All messages (noisy)": "Все сообщения (со звуком)", "Saturday": "Суббота", - "Remember, you can always set an email address in user settings if you change your mind.": "Помните, что вы всегда сможете задать адрес email в настройках пользователя, если передумаете.", + "Remember, you can always set an email address in user settings if you change your mind.": "Помните, что вы всегда сможете задать email в настройках пользователя, если передумаете.", "Direct Chat": "Прямой чат", "The server may be unavailable or overloaded": "Сервер, вероятно, недоступен или перегружен", "Reject": "Отклонить", @@ -1141,7 +1141,7 @@ "Mentions only": "Только при упоминаниях", "Wednesday": "Среда", "You can now return to your account after signing out, and sign in on other devices.": "Теперь вы сможете вернуться к своей учетной записи после выхода из системы и войти на других устройствах.", - "Enable email notifications": "Включить уведомления по email", + "Enable email notifications": "Включить уведомления на email", "Event Type": "Тип мероприятия", "Download this file": "Скачать файл", "Pin Message": "Закрепить сообщение", From 40e9091724d0cfb41823db2b180f95a41d1bfc54 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Fri, 18 May 2018 09:46:58 +0000 Subject: [PATCH 016/480] Translated using Weblate (Hungarian) Currently translated at 99.7% (1172 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index b7d0561c34..c27f76737f 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1177,5 +1177,6 @@ "At this time it is not possible to reply with an emote.": "Jelenleg nem lehet emodzsival válaszolni.", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Nem lehet betölteni azt az eseményt amire válaszoltál, mert vagy nem létezik, vagy nincs jogod megnézni.", "Collapse Reply Thread": "Beszélgetés szál becsukása", - "Enable widget screenshots on supported widgets": "Ahol az a kisalkalmazásban támogatott ott képernyőkép készítés engedélyezése" + "Enable widget screenshots on supported widgets": "Ahol az a kisalkalmazásban támogatott ott képernyőkép készítés engedélyezése", + "Send analytics data": "Analitikai adatok küldése" } From 23ea8ca91743241d67ca7257e667597d762f5eee Mon Sep 17 00:00:00 2001 From: Szimszon Date: Fri, 18 May 2018 09:51:16 +0000 Subject: [PATCH 017/480] Translated using Weblate (Hungarian) Currently translated at 100.0% (1175 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-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 c27f76737f..096989f514 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1178,5 +1178,8 @@ "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Nem lehet betölteni azt az eseményt amire válaszoltál, mert vagy nem létezik, vagy nincs jogod megnézni.", "Collapse Reply Thread": "Beszélgetés szál becsukása", "Enable widget screenshots on supported widgets": "Ahol az a kisalkalmazásban támogatott ott képernyőkép készítés engedélyezése", - "Send analytics data": "Analitikai adatok küldése" + "Send analytics data": "Analitikai adatok küldése", + "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Szeretnél segíteni a Riot javításában analitikai adatok elküldésével? Ez sütit (cookie) használ. (Nézd meg a sütikről és titoktartási irányelvekről szóló leírást).", + "Help improve Riot by sending usage data? This will use a cookie.": "Szeretnél segíteni a Riot javításában analitikai adatok elküldésével? Ez sütit (cookie) használ.", + "Yes please": "Igen, kérlek" } From 6699c4faed2cb5e9bf43afecfac8b34f86b20a52 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 18 May 2018 11:29:30 +0100 Subject: [PATCH 018/480] Spelling/grammar --- res/css/views/messages/_MImageBody.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 9667337f5a..5eef236b26 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -29,7 +29,7 @@ limitations under the License. .mx_MImageBody_thumbnail_container { // Prevent the padding-bottom (added inline in MImageBody.js) from - // effecting elements below the container. + // affecting elements below the container. overflow: hidden; // Make sure the _thumbnail is positioned relative to the _container From 015093b371074c1318fa140c166585c4c68b6778 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 18 May 2018 11:33:33 +0100 Subject: [PATCH 019/480] Move inline style to stylesheet --- res/css/views/messages/_MImageBody.scss | 10 ++++++++++ src/components/views/messages/MImageBody.js | 10 ++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 5eef236b26..64821434dd 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -35,3 +35,13 @@ limitations under the License. // Make sure the _thumbnail is positioned relative to the _container position: relative; } + +.mx_MImageBody_thumbnail_spinner { + display: flex; + align-items: center; + width: 100%; +} + +.mx_MImageBody_thumbnail_spinner img { + margin: auto; +} diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 656bd02840..d9108a2fe1 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -239,14 +239,8 @@ export default class extends React.Component { let img = null; // e2e image hasn't been decrypted yet if (content.file !== undefined && this.state.decryptedUrl === null) { - img =
    - {content.body} + img =
    + {content.body}
    ; } else if (thumbUrl && !this.state.imgError) { // Restrict the width of the thumbnail here, otherwise it will fill the container From f79a8f5a5342aa7e2a23bb62caaad21d3fb054af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Fri, 18 May 2018 12:37:28 +0000 Subject: [PATCH 020/480] Translated using Weblate (French) Currently translated at 100.0% (1175 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 4ff8900965..c9d8fcae69 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1177,5 +1177,9 @@ "At this time it is not possible to reply with an emote.": "Pour le moment il n'est pas possible de répondre avec un émoji.", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Impossible de charger l'événement auquel il a été répondu, soit il n'existe pas, soit vous n'avez pas l'autorisation de le voir.", "Collapse Reply Thread": "Dévoiler le fil de réponse", - "Enable widget screenshots on supported widgets": "Activer les captures d'écran des widgets pris en charge" + "Enable widget screenshots on supported widgets": "Activer les captures d'écran des widgets pris en charge", + "Send analytics data": "Envoyer les données analytiques", + "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Aider Riot à s'améliorer en envoyant des données d'utilisation ? Ceci utilisera un cookie. (Voir nos politiques de cookie et de confidentialité).", + "Help improve Riot by sending usage data? This will use a cookie.": "Aider Riot à s'améliorer en envoyant des données d'utilisation ? Ceci utilisera un cookie.", + "Yes please": "Oui, s'il vous plaît" } From b19a9969fe2965e99cfc593eb751fba4d05bd634 Mon Sep 17 00:00:00 2001 From: Klaus Marx Date: Fri, 18 May 2018 10:27:30 +0000 Subject: [PATCH 021/480] Translated using Weblate (German) Currently translated at 99.7% (1172 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 4464940c69..66dc3a7b81 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -1177,5 +1177,6 @@ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Den Browser-Speicher zu löschen kann das Problem lösen, wird dich aber abmelden und verschlüsselte Chats unlesbar machen.", "Collapse Reply Thread": "Antwort-Thread zusammenklappen", "At this time it is not possible to reply with an emote.": "An dieser Stelle ist es nicht möglich mit einer Umschreibung zu antworten.", - "Enable widget screenshots on supported widgets": "Widget-Screenshots bei unterstützten Widgets aktivieren" + "Enable widget screenshots on supported widgets": "Widget-Screenshots bei unterstützten Widgets aktivieren", + "Send analytics data": "Analysedaten senden" } From bd10768c9e6dc2cf99f020f071cb2d4a66044230 Mon Sep 17 00:00:00 2001 From: Krombel Date: Fri, 18 May 2018 13:47:07 +0000 Subject: [PATCH 022/480] Translated using Weblate (German) Currently translated at 100.0% (1175 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/de/ --- src/i18n/strings/de_DE.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 66dc3a7b81..a8f72e7fa1 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -977,7 +977,7 @@ "Did you know: you can use communities to filter your Riot.im experience!": "Wusstest du: Du kannst Communities nutzen um deine Riot.im-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, siehe einen 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", - "Disable Community Filter Panel": "Deaktivere Community-Filter-Panel", + "Disable Community Filter Panel": "Deaktiviere Community-Filter-Panel", "Your key share request has been sent - please check your other devices for key share requests.": "Deine Schlüssel-Teil-Anfragen wurden gesendet. Bitte prüfe deine anderen Geräte auf die Schlüssel-Teil-Anfragen.", "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Schlüssel-Anfragen wurden automatisch zu den anderen Geräten gesendet. Wenn du diese Anfragen auf deinen anderen Geräten abgelehnt oder verpasst hast, klicke hier um die Schlüssel für diese Sitzung erneut anzufragen.", "If your other devices do not have the key for this message you will not be able to decrypt them.": "Wenn deine anderen Geräte keine Schlüssel für diese Nachricht haben, wirst du diese nicht entschlüsseln können.", @@ -1178,5 +1178,8 @@ "Collapse Reply Thread": "Antwort-Thread zusammenklappen", "At this time it is not possible to reply with an emote.": "An dieser Stelle ist es nicht möglich mit einer Umschreibung zu antworten.", "Enable widget screenshots on supported widgets": "Widget-Screenshots bei unterstützten Widgets aktivieren", - "Send analytics data": "Analysedaten senden" + "Send analytics data": "Analysedaten senden", + "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Möchtest du Riot helfen indem du Nutzungsdaten sendest? Dies wird ein Cookie verwenden. (Siehe unsere Datenschutzerklärung).", + "Help improve Riot by sending usage data? This will use a cookie.": "Möchtest du Riot helfen indem du Nutzungsdaten sendest? Dies wird ein Cookie verwenden.", + "Yes please": "Ja, bitte" } From 35ab573bc54c56911a6f566ce6227289658e6e22 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Mon, 21 May 2018 18:44:00 +0900 Subject: [PATCH 023/480] Update sinon to 5.0.7 --- package-lock.json | 2353 +++++++++-------- package.json | 2 +- .../structures/TimelinePanel-test.js | 2 +- 3 files changed, 1210 insertions(+), 1147 deletions(-) diff --git a/package-lock.json b/package-lock.json index f183f1635d..97ed7b5dea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,25 @@ { "name": "matrix-react-sdk", - "version": "0.12.2", + "version": "0.12.4", "lockfileVersion": 1, "requires": true, "dependencies": { + "@sinonjs/formatio": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", + "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "dev": true, + "requires": { + "samsam": "1.3.0" + } + }, "accepts": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "dev": true, "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.11", "negotiator": "0.6.1" } }, @@ -26,7 +35,7 @@ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { - "acorn": "3.3.0" + "acorn": "^3.0.4" }, "dependencies": { "acorn": { @@ -44,14 +53,14 @@ "dev": true }, "ajv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.3.tgz", - "integrity": "sha1-wG9Zh3jETGsWGrr+NGa4GtGBTtI=", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -66,9 +75,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -106,8 +115,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "argparse": { @@ -116,7 +125,7 @@ "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" }, "dependencies": { "sprintf-js": { @@ -133,7 +142,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -148,8 +157,8 @@ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, "array-slice": { @@ -164,7 +173,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -238,9 +247,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" }, "babel-cli": { "version": "6.26.0", @@ -248,21 +257,21 @@ "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-polyfill": "6.26.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "chokidar": "1.7.0", - "commander": "2.11.0", - "convert-source-map": "1.5.0", - "fs-readdir-recursive": "1.0.0", - "glob": "7.1.2", - "lodash": "4.17.4", - "output-file-sync": "1.1.2", - "path-is-absolute": "1.0.1", - "slash": "1.0.0", - "source-map": "0.5.7", - "v8flags": "2.1.1" + "babel-core": "^6.26.0", + "babel-polyfill": "^6.26.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "chokidar": "^1.6.1", + "commander": "^2.11.0", + "convert-source-map": "^1.5.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "output-file-sync": "^1.1.2", + "path-is-absolute": "^1.0.1", + "slash": "^1.0.0", + "source-map": "^0.5.6", + "v8flags": "^2.1.1" }, "dependencies": { "glob": { @@ -271,12 +280,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -287,9 +296,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "babel-core": { @@ -298,25 +307,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-generator": "6.26.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "convert-source-map": "1.5.0", - "debug": "2.6.9", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" } }, "babel-eslint": { @@ -325,11 +334,11 @@ "integrity": "sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8=", "dev": true, "requires": { - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash.assign": "4.2.0", - "lodash.pickby": "4.6.0" + "babel-traverse": "^6.0.20", + "babel-types": "^6.0.19", + "babylon": "^6.0.18", + "lodash.assign": "^4.0.0", + "lodash.pickby": "^4.0.0" } }, "babel-generator": { @@ -338,14 +347,14 @@ "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.6", + "trim-right": "^1.0.1" } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -354,9 +363,9 @@ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-builder-react-jsx": { @@ -365,9 +374,9 @@ "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "esutils": "2.0.2" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" } }, "babel-helper-call-delegate": { @@ -376,10 +385,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-define-map": { @@ -388,10 +397,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-explode-assignable-expression": { @@ -400,9 +409,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-function-name": { @@ -411,11 +420,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -424,8 +433,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -434,8 +443,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-optimise-call-expression": { @@ -444,8 +453,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-regex": { @@ -454,9 +463,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-remap-async-to-generator": { @@ -465,11 +474,11 @@ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-replace-supers": { @@ -478,12 +487,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helpers": { @@ -492,8 +501,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-loader": { @@ -502,10 +511,10 @@ "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", "dev": true, "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" + "find-cache-dir": "^0.1.1", + "loader-utils": "^0.2.16", + "mkdirp": "^0.5.1", + "object-assign": "^4.0.1" } }, "babel-messages": { @@ -514,7 +523,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-add-module-exports": { @@ -529,7 +538,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-syntax-async-functions": { @@ -580,10 +589,10 @@ "integrity": "sha1-Ruo+fFr2KXgqyfHtG3zTj4Qlr9Q=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0" + "babel-helper-function-name": "^6.8.0", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-template": "^6.9.0", + "babel-traverse": "^6.10.4" } }, "babel-plugin-transform-async-to-generator": { @@ -592,9 +601,9 @@ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-class-properties": { @@ -603,10 +612,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -615,7 +624,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -624,7 +633,7 @@ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -633,11 +642,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-plugin-transform-es2015-classes": { @@ -646,15 +655,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -663,8 +672,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-destructuring": { @@ -673,7 +682,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -682,8 +691,8 @@ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-for-of": { @@ -692,7 +701,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -701,9 +710,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-literals": { @@ -712,7 +721,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-amd": { @@ -721,9 +730,9 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -732,10 +741,10 @@ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -744,9 +753,9 @@ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-umd": { @@ -755,9 +764,9 @@ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-object-super": { @@ -766,8 +775,8 @@ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -776,12 +785,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -790,8 +799,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -800,7 +809,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -809,9 +818,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-template-literals": { @@ -820,7 +829,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -829,7 +838,7 @@ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -838,9 +847,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -849,9 +858,9 @@ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-flow-strip-types": { @@ -860,8 +869,8 @@ "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -870,8 +879,8 @@ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, "babel-plugin-transform-react-display-name": { @@ -880,7 +889,7 @@ "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx": { @@ -889,9 +898,9 @@ "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "dev": true, "requires": { - "babel-helper-builder-react-jsx": "6.26.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx-self": { @@ -900,8 +909,8 @@ "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-react-jsx-source": { @@ -910,8 +919,8 @@ "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-regenerator": { @@ -920,7 +929,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "0.10.1" + "regenerator-transform": "^0.10.0" } }, "babel-plugin-transform-runtime": { @@ -929,7 +938,7 @@ "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-strict-mode": { @@ -938,8 +947,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-polyfill": { @@ -948,9 +957,9 @@ "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "regenerator-runtime": "0.10.5" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" }, "dependencies": { "regenerator-runtime": { @@ -967,30 +976,30 @@ "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" } }, "babel-preset-es2016": { @@ -999,7 +1008,7 @@ "integrity": "sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s=", "dev": true, "requires": { - "babel-plugin-transform-exponentiation-operator": "6.24.1" + "babel-plugin-transform-exponentiation-operator": "^6.24.1" } }, "babel-preset-es2017": { @@ -1008,8 +1017,8 @@ "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", "dev": true, "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1" + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.24.1" } }, "babel-preset-flow": { @@ -1018,7 +1027,7 @@ "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", "dev": true, "requires": { - "babel-plugin-transform-flow-strip-types": "6.22.0" + "babel-plugin-transform-flow-strip-types": "^6.22.0" } }, "babel-preset-react": { @@ -1027,12 +1036,12 @@ "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", "dev": true, "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-plugin-transform-react-display-name": "6.25.0", - "babel-plugin-transform-react-jsx": "6.24.1", - "babel-plugin-transform-react-jsx-self": "6.22.0", - "babel-plugin-transform-react-jsx-source": "6.22.0", - "babel-preset-flow": "6.23.0" + "babel-plugin-syntax-jsx": "^6.3.13", + "babel-plugin-transform-react-display-name": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "babel-plugin-transform-react-jsx-self": "^6.22.0", + "babel-plugin-transform-react-jsx-source": "^6.22.0", + "babel-preset-flow": "^6.23.0" } }, "babel-register": { @@ -1041,13 +1050,13 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" } }, "babel-runtime": { @@ -1055,8 +1064,8 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -1065,11 +1074,11 @@ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -1078,15 +1087,15 @@ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -1095,10 +1104,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -1142,7 +1151,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "better-assert": { @@ -1189,28 +1198,23 @@ "dev": true, "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.1", - "http-errors": "1.6.2", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.15" + "type-is": "~1.6.15" } }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=" - }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1220,9 +1224,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-encrypt-attachment": { @@ -1247,7 +1251,7 @@ "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "browserify-zlib": { @@ -1256,7 +1260,7 @@ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", "dev": true, "requires": { - "pako": "0.2.9" + "pako": "~0.2.0" }, "dependencies": { "pako": { @@ -1273,9 +1277,9 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, "builtin-status-codes": { @@ -1296,7 +1300,7 @@ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { - "callsites": "0.2.0" + "callsites": "^0.2.0" } }, "callsite": { @@ -1328,8 +1332,8 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -1338,11 +1342,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "chokidar": { @@ -1351,15 +1355,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "circular-json": { @@ -1379,7 +1383,7 @@ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "requires": { - "restore-cursor": "1.0.1" + "restore-cursor": "^1.0.1" } }, "cli-width": { @@ -1394,8 +1398,8 @@ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -1436,15 +1440,15 @@ "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.5.0" } }, "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -1464,10 +1468,10 @@ "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", "integrity": "sha1-Buq41SM4uDn6Gi11rwCF7tGxvq4=", "requires": { - "entities": "1.1.1", - "mdurl": "1.0.1", - "minimist": "1.2.0", - "string.prototype.repeat": "0.2.0" + "entities": "~ 1.1.1", + "mdurl": "~ 1.0.1", + "minimist": "~ 1.2.0", + "string.prototype.repeat": "^0.2.0" } }, "component-bind": { @@ -1499,9 +1503,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "connect": { @@ -1512,7 +1516,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.0.6", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" } }, @@ -1522,7 +1526,7 @@ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "constants-browserify": { @@ -1563,11 +1567,11 @@ "resolved": "https://registry.npmjs.org/counterpart/-/counterpart-0.18.3.tgz", "integrity": "sha512-tli4qPAFeYB34LvvCc/1xYRLCWjf4WsUt6sXfpggDfGDKoI8rhnabz0SljDoBpAK8z1u8GBCg0YDkbvWb16uUQ==", "requires": { - "date-names": "0.1.10", - "except": "0.1.3", - "extend": "3.0.1", - "pluralizers": "0.1.6", - "sprintf-js": "1.1.1" + "date-names": "^0.1.9", + "except": "^0.1.3", + "extend": "^3.0.0", + "pluralizers": "^0.1.6", + "sprintf-js": "^1.0.3" } }, "create-react-class": { @@ -1575,24 +1579,9 @@ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.2.tgz", "integrity": "sha1-zx7RXxKq1/FO9fLf4F5sQvke8Co=", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==" - } + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" } }, "crypto-browserify": { @@ -1619,7 +1608,7 @@ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", "dev": true, "requires": { - "es5-ext": "0.10.35" + "es5-ext": "^0.10.9" } }, "dashdash": { @@ -1627,7 +1616,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "date-names": { @@ -1668,8 +1657,8 @@ "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" + "foreach": "^2.0.5", + "object-keys": "^1.0.8" } }, "del": { @@ -1678,13 +1667,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -1704,7 +1693,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "di": { @@ -1713,14 +1702,20 @@ "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", "dev": true }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, "doctrine": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" } }, "dom-serialize": { @@ -1729,10 +1724,10 @@ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" } }, "dom-serializer": { @@ -1740,8 +1735,8 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -1767,7 +1762,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -1775,8 +1770,8 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "draft-js": { @@ -1784,9 +1779,9 @@ "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.0-alpha.tgz", "integrity": "sha1-MtshCPkn6bhEbaH3nkR1wrf4aK4=", "requires": { - "fbjs": "0.8.16", - "immutable": "3.7.6", - "object-assign": "4.1.1" + "fbjs": "^0.8.12", + "immutable": "~3.7.4", + "object-assign": "^4.1.0" } }, "draft-js-export-html": { @@ -1794,7 +1789,7 @@ "resolved": "https://registry.npmjs.org/draft-js-export-html/-/draft-js-export-html-0.6.0.tgz", "integrity": "sha1-zIDwVExD0Kf+28U8DLCRToCQ92k=", "requires": { - "draft-js-utils": "1.2.0" + "draft-js-utils": ">=0.2.0" } }, "draft-js-export-markdown": { @@ -1802,7 +1797,7 @@ "resolved": "https://registry.npmjs.org/draft-js-export-markdown/-/draft-js-export-markdown-0.3.0.tgz", "integrity": "sha1-hjkOA86vHTR/xhaGerf1Net2v0I=", "requires": { - "draft-js-utils": "1.2.0" + "draft-js-utils": ">=0.2.0" } }, "draft-js-utils": { @@ -1816,7 +1811,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -1847,7 +1842,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "engine.io": { @@ -1944,9 +1939,9 @@ "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" }, "dependencies": { "memory-fs": { @@ -1974,7 +1969,7 @@ "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", "dev": true, "requires": { - "prr": "0.0.0" + "prr": "~0.0.0" } }, "es-abstract": { @@ -1983,11 +1978,11 @@ "integrity": "sha512-kk3IJoKo7A3pWJc0OV8yZ/VEX2oSUytfekrJiqoxBlKJMFAJVJVpGdHClCCTdv+Fn2zHfpDHHIelMFhZVfef3Q==", "dev": true, "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, "es-to-primitive": { @@ -1996,9 +1991,9 @@ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", "dev": true, "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" + "is-callable": "^1.1.1", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.1" } }, "es5-ext": { @@ -2007,8 +2002,8 @@ "integrity": "sha1-GO6FjOajxFx9eekcFfzKnsVoSU8=", "dev": true, "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "es6-iterator": "~2.0.1", + "es6-symbol": "~3.1.1" } }, "es6-iterator": { @@ -2017,9 +2012,9 @@ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, "es6-map": { @@ -2028,12 +2023,12 @@ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, "es6-set": { @@ -2042,11 +2037,11 @@ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" + "event-emitter": "~0.3.5" } }, "es6-symbol": { @@ -2055,8 +2050,8 @@ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" + "d": "1", + "es5-ext": "~0.10.14" } }, "es6-weak-map": { @@ -2065,10 +2060,10 @@ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, "escape-html": { @@ -2089,10 +2084,10 @@ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "dev": true, "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint": { @@ -2101,41 +2096,41 @@ "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.6.9", - "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.5.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" }, "dependencies": { "glob": { @@ -2144,12 +2139,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "user-home": { @@ -2158,7 +2153,7 @@ "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } } } @@ -2181,7 +2176,7 @@ "integrity": "sha512-RiQv+7Z9QDJuzt+NO8sYgkLGT+h+WeCrxP7y8lI7wpU41x3x/2o3PGtHk9ck8QnA9/mlbNcy/hG0eKvmd7npaA==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.15.0" } }, "eslint-plugin-react": { @@ -2190,10 +2185,10 @@ "integrity": "sha512-KC7Snr4YsWZD5flu6A5c0AcIZidzW3Exbqp7OT67OaD2AppJtlBr/GuPrW/vaQM/yfZotEvKAdrxrO+v8vwYJA==", "dev": true, "requires": { - "doctrine": "2.1.0", - "has": "1.0.1", - "jsx-ast-utils": "2.0.1", - "prop-types": "15.6.0" + "doctrine": "^2.0.2", + "has": "^1.0.1", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.0" }, "dependencies": { "doctrine": { @@ -2202,7 +2197,7 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.2" + "esutils": "^2.0.2" } } } @@ -2213,8 +2208,8 @@ "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", "dev": true, "requires": { - "acorn": "5.1.2", - "acorn-jsx": "3.0.1" + "acorn": "^5.1.1", + "acorn-jsx": "^3.0.0" } }, "esprima": { @@ -2229,7 +2224,7 @@ "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", "dev": true, "requires": { - "estraverse": "4.2.0" + "estraverse": "^4.0.0" } }, "esrecurse": { @@ -2238,8 +2233,8 @@ "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", "dev": true, "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" + "estraverse": "^4.1.0", + "object-assign": "^4.0.1" } }, "estraverse": { @@ -2266,8 +2261,8 @@ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "dev": true, "requires": { - "d": "1.0.0", - "es5-ext": "0.10.35" + "d": "1", + "es5-ext": "~0.10.14" } }, "eventemitter3": { @@ -2302,9 +2297,9 @@ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" }, "dependencies": { "braces": { @@ -2313,7 +2308,7 @@ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", "dev": true, "requires": { - "expand-range": "0.1.1" + "expand-range": "^0.1.0" } }, "expand-range": { @@ -2322,8 +2317,8 @@ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", "dev": true, "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" } }, "is-number": { @@ -2346,7 +2341,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -2355,7 +2350,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" } }, "expect": { @@ -2364,13 +2359,13 @@ "integrity": "sha1-1Fj+TFYAQDa64yMkFqP2Nh8E+WU=", "dev": true, "requires": { - "define-properties": "1.1.2", - "has": "1.0.1", - "is-equal": "1.5.5", - "is-regex": "1.0.4", - "object-inspect": "1.3.0", - "object-keys": "1.0.11", - "tmatch": "2.0.1" + "define-properties": "~1.1.2", + "has": "^1.0.1", + "is-equal": "^1.5.1", + "is-regex": "^1.0.3", + "object-inspect": "^1.1.0", + "object-keys": "^1.0.9", + "tmatch": "^2.0.1" } }, "extend": { @@ -2384,7 +2379,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extsprintf": { @@ -2393,9 +2388,14 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "fast-levenshtein": { "version": "2.0.6", @@ -2408,7 +2408,7 @@ "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-2.1.1.tgz", "integrity": "sha1-Uj4U/a9SSIBbsC9i78M75wP1GGU=", "requires": { - "fbjs": "0.8.16" + "fbjs": "^0.8.4" } }, "fbjs": { @@ -2416,13 +2416,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.17" + "core-js": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.9" }, "dependencies": { "core-js": { @@ -2438,8 +2438,8 @@ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" } }, "file-entry-cache": { @@ -2448,8 +2448,8 @@ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { - "flat-cache": "1.3.0", - "object-assign": "4.1.1" + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" } }, "file-saver": { @@ -2474,11 +2474,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "finalhandler": { @@ -2488,12 +2488,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" } }, "find-cache-dir": { @@ -2502,9 +2502,9 @@ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", "dev": true, "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" } }, "find-up": { @@ -2513,8 +2513,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "flat-cache": { @@ -2523,10 +2523,10 @@ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", "dev": true, "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" + "circular-json": "^0.3.1", + "del": "^2.0.2", + "graceful-fs": "^4.1.2", + "write": "^0.2.1" } }, "flow-parser": { @@ -2540,9 +2540,9 @@ "resolved": "https://registry.npmjs.org/flux/-/flux-2.1.1.tgz", "integrity": "sha1-LGrGUtQzdIiWhInGWG86/yajjqQ=", "requires": { - "fbemitter": "2.1.1", + "fbemitter": "^2.0.0", "fbjs": "0.1.0-alpha.7", - "immutable": "3.7.6" + "immutable": "^3.7.4" }, "dependencies": { "core-js": { @@ -2555,9 +2555,9 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.1.0-alpha.7.tgz", "integrity": "sha1-rUMIuPIy+zxzYDNJ6nJdHpw5Mjw=", "requires": { - "core-js": "1.2.7", - "promise": "7.3.1", - "whatwg-fetch": "0.9.0" + "core-js": "^1.0.0", + "promise": "^7.0.3", + "whatwg-fetch": "^0.9.0" } }, "whatwg-fetch": { @@ -2572,7 +2572,7 @@ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-2.4.3.tgz", "integrity": "sha512-sT5Ip9nyAIxWq8Apt1Fdv6yTci5GotaOtO5Ro1/+F3PizttNBcCYz8j/Qze54PPFK73KUbOqh++HUCiyNPqvhA==", "requires": { - "tabbable": "1.1.2" + "tabbable": "^1.0.3" } }, "focus-trap-react": { @@ -2580,7 +2580,7 @@ "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-3.1.2.tgz", "integrity": "sha512-MoQmONoy9gRPyrC5DGezkcOMGgx7MtIOAQDHe098UtL2sA2vmucJwEmQisb+8LRXNYFHxuw5zJ1oLFeKu4Mteg==", "requires": { - "focus-trap": "2.4.3" + "focus-trap": "^2.0.1" } }, "for-in": { @@ -2595,7 +2595,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "foreach": { @@ -2616,22 +2616,13 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", - "dev": true, - "requires": { - "samsam": "1.1.2" + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" } }, "fs-access": { @@ -2640,7 +2631,7 @@ "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", "dev": true, "requires": { - "null-check": "1.0.0" + "null-check": "^1.0.0" } }, "fs-readdir-recursive": { @@ -2662,8 +2653,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.36" }, "dependencies": { "abbrev": { @@ -2699,8 +2690,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -2744,7 +2735,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { @@ -2752,15 +2743,16 @@ "bundled": true, "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { "version": "2.10.1", "bundled": true, "dev": true, + "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { @@ -2768,7 +2760,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, @@ -2799,7 +2791,7 @@ "bundled": true, "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { @@ -2823,7 +2815,7 @@ "dev": true, "optional": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -2832,7 +2824,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -2875,7 +2867,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -2916,10 +2908,10 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -2928,9 +2920,9 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, "gauge": { @@ -2939,14 +2931,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "getpass": { @@ -2955,7 +2947,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -2971,12 +2963,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "graceful-fs": { @@ -3021,7 +3013,8 @@ "hoek": { "version": "2.16.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "http-signature": { "version": "1.1.1", @@ -3029,9 +3022,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { @@ -3039,8 +3032,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3085,7 +3078,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -3106,7 +3099,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -3187,15 +3180,15 @@ "dev": true, "optional": true, "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "request": "^2.81.0", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" } }, "nopt": { @@ -3214,10 +3207,10 @@ "dev": true, "optional": true, "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "number-is-nan": { @@ -3242,7 +3235,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -3320,13 +3313,13 @@ "bundled": true, "dev": true, "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "request": { @@ -3335,28 +3328,28 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "rimraf": { @@ -3364,7 +3357,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -3405,15 +3398,15 @@ "dev": true, "optional": true, "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -3467,9 +3460,9 @@ "bundled": true, "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -3478,14 +3471,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tough-cookie": { @@ -3544,7 +3537,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { @@ -3566,7 +3559,8 @@ "integrity": "sha1-luQg/efvARrEnCWKYhMU/ldlNvk=" }, "gemini-scrollbar": { - "version": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" + "version": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b", + "from": "gemini-scrollbar@github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" }, "generate-function": { "version": "2.0.0", @@ -3580,7 +3574,7 @@ "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { - "is-property": "1.0.2" + "is-property": "^1.0.0" } }, "getpass": { @@ -3588,7 +3582,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "gfm.css": { @@ -3601,11 +3595,11 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -3614,8 +3608,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -3624,7 +3618,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "globals": { @@ -3639,12 +3633,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "glob": { @@ -3653,12 +3647,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -3679,8 +3673,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.2.3", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has": { @@ -3689,7 +3683,7 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "has-ansi": { @@ -3698,7 +3692,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-binary": { @@ -3730,16 +3724,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "sntp": "2.0.2" - } - }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", @@ -3762,8 +3746,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "htmlparser2": { @@ -3771,12 +3755,12 @@ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.6.2", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, "http-errors": { @@ -3788,7 +3772,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": ">= 1.3.1 < 2" } }, "http-proxy": { @@ -3797,8 +3781,8 @@ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", "dev": true, "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" } }, "http-signature": { @@ -3806,9 +3790,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-browserify": { @@ -3855,8 +3839,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -3870,19 +3854,19 @@ "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "dev": true, "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" } }, "interpret": { @@ -3896,7 +3880,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "is-arrow-function": { @@ -3905,7 +3889,7 @@ "integrity": "sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI=", "dev": true, "requires": { - "is-callable": "1.1.3" + "is-callable": "^1.0.4" } }, "is-binary-path": { @@ -3914,7 +3898,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.10.0" + "binary-extensions": "^1.0.0" } }, "is-boolean-object": { @@ -3953,17 +3937,17 @@ "integrity": "sha1-XoXxlX4FKIMkf+s4aWWju6Ffuz0=", "dev": true, "requires": { - "has": "1.0.1", - "is-arrow-function": "2.0.3", - "is-boolean-object": "1.0.0", - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-generator-function": "1.0.6", - "is-number-object": "1.0.3", - "is-regex": "1.0.4", - "is-string": "1.0.4", - "is-symbol": "1.0.1", - "object.entries": "1.0.4" + "has": "^1.0.1", + "is-arrow-function": "^2.0.3", + "is-boolean-object": "^1.0.0", + "is-callable": "^1.1.3", + "is-date-object": "^1.0.1", + "is-generator-function": "^1.0.6", + "is-number-object": "^1.0.3", + "is-regex": "^1.0.3", + "is-string": "^1.0.4", + "is-symbol": "^1.0.1", + "object.entries": "^1.0.4" } }, "is-equal-shallow": { @@ -3972,7 +3956,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -3993,7 +3977,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -4002,7 +3986,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-generator-function": { @@ -4017,7 +4001,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-my-json-valid": { @@ -4026,10 +4010,10 @@ "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "dev": true, "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" } }, "is-number": { @@ -4038,7 +4022,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-number-object": { @@ -4059,7 +4043,7 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -4068,7 +4052,7 @@ "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-posix-bracket": { @@ -4095,7 +4079,7 @@ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "has": "1.0.1" + "has": "^1.0.1" } }, "is-resolvable": { @@ -4104,7 +4088,7 @@ "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", "dev": true, "requires": { - "tryit": "1.0.3" + "tryit": "^1.0.1" } }, "is-stream": { @@ -4160,8 +4144,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "1.1.1" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" } }, "isstream": { @@ -4185,8 +4169,8 @@ "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -4221,8 +4205,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -4245,7 +4230,8 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true }, "jsonpointer": { "version": "4.0.1", @@ -4270,42 +4256,48 @@ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", "dev": true, "requires": { - "array-includes": "3.0.3" + "array-includes": "^3.0.3" } }, + "just-extend": { + "version": "1.1.27", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", + "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "dev": true + }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", "dev": true, "requires": { - "bluebird": "3.5.1", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.5", - "core-js": "2.5.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", "socket.io": "1.7.3", - "source-map": "0.5.7", + "source-map": "^0.5.3", "tmp": "0.0.31", - "useragent": "2.2.1" + "useragent": "^2.1.12" }, "dependencies": { "glob": { @@ -4314,12 +4306,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "lodash": { @@ -4336,8 +4328,8 @@ "integrity": "sha1-TG1wDRY6nTTGGO/YeRi+SeekqMk=", "dev": true, "requires": { - "fs-access": "1.0.1", - "which": "1.3.0" + "fs-access": "^1.0.0", + "which": "^1.2.1" } }, "karma-cli": { @@ -4346,7 +4338,7 @@ "integrity": "sha1-ys6oQ3Hs4Zh2JlyPoQLru5/uSow=", "dev": true, "requires": { - "resolve": "1.4.0" + "resolve": "^1.1.6" } }, "karma-junit-reporter": { @@ -4355,7 +4347,7 @@ "integrity": "sha1-SSojZyj+TJKqz0GfzQEQpDJ+nX8=", "dev": true, "requires": { - "path-is-absolute": "1.0.1", + "path-is-absolute": "^1.0.0", "xmlbuilder": "3.1.0" } }, @@ -4377,7 +4369,7 @@ "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.2" } }, "karma-spec-reporter": { @@ -4386,7 +4378,7 @@ "integrity": "sha1-SDDccUihVcfXoYbmMjOaDYD63sM=", "dev": true, "requires": { - "colors": "1.1.2" + "colors": "^1.1.2" } }, "karma-summary-reporter": { @@ -4395,7 +4387,7 @@ "integrity": "sha1-nHQKJLYL+RNes59acylsTM0Q2Zs=", "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "^1.1.3" } }, "karma-webpack": { @@ -4404,11 +4396,11 @@ "integrity": "sha1-OdX9Lt7qPMPvW0BZibN9Ww5qO04=", "dev": true, "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "lodash": "3.10.1", - "source-map": "0.1.43", - "webpack-dev-middleware": "1.12.0" + "async": "~0.9.0", + "loader-utils": "^0.2.5", + "lodash": "^3.8.0", + "source-map": "^0.1.41", + "webpack-dev-middleware": "^1.0.11" }, "dependencies": { "lodash": { @@ -4423,7 +4415,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -4434,7 +4426,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -4449,8 +4441,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "linkifyjs": { @@ -4458,9 +4450,9 @@ "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-2.1.5.tgz", "integrity": "sha512-8FqxPXQDLjI2nNHlM7eGewxE6DHvMbtiW0AiXzm0s4RkTwVZYRDTeVXkiRxLHTd4CuRBQY/JPtvtqJWdS7gHyA==", "requires": { - "jquery": "3.2.1", - "react": "15.6.2", - "react-dom": "15.6.2" + "jquery": ">=1.9.0", + "react": ">=0.14.0", + "react-dom": ">=0.14.0" } }, "loader-utils": { @@ -4469,10 +4461,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } }, "lodash": { @@ -4491,6 +4483,12 @@ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, "lodash.pickby": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", @@ -4503,8 +4501,8 @@ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" + "readable-stream": "~1.0.2", + "semver": "~4.3.3" }, "dependencies": { "isarray": { @@ -4519,10 +4517,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -4534,10 +4532,9 @@ } }, "lolex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", - "dev": true + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==" }, "longest": { "version": "1.0.1", @@ -4550,7 +4547,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lru-cache": { @@ -4560,16 +4557,16 @@ "dev": true }, "matrix-js-sdk": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.10.1.tgz", - "integrity": "sha512-BLo+Okn2o///TyWBKtjFXvhlD32vGfr10eTE51hHx/jwaXO82VyGMzMi+IDPS4SDYUbvXI7PpamECeh9TXnV2w==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.10.2.tgz", + "integrity": "sha512-7o9a+4wWmxoW4cfdGVLGjZgTFLpWf/I0UqyicIzdV73qotYIO/q6k1bLf1+G0hgwZ/umwke4CB7GemxvvvxMcA==", "requires": { - "another-json": "0.2.0", - "babel-runtime": "6.26.0", - "bluebird": "3.5.1", - "browser-request": "0.3.3", - "content-type": "1.0.4", - "request": "2.83.0" + "another-json": "^0.2.0", + "babel-runtime": "^6.26.0", + "bluebird": "^3.5.0", + "browser-request": "^0.3.3", + "content-type": "^1.0.2", + "request": "^2.53.0" } }, "matrix-mock-request": { @@ -4578,8 +4575,8 @@ "integrity": "sha1-2aWrqNPYJG6I/3YyWYuZwUE/QjI=", "dev": true, "requires": { - "bluebird": "3.5.1", - "expect": "1.20.2" + "bluebird": "^3.5.0", + "expect": "^1.20.2" } }, "matrix-react-test-utils": { @@ -4588,8 +4585,8 @@ "integrity": "sha1-tUiETQ6+M46hucjxZHTDDRfDvfQ=", "dev": true, "requires": { - "react": "15.6.2", - "react-dom": "15.6.2" + "react": "^15.6.1", + "react-dom": "^15.6.1" } }, "mdurl": { @@ -4614,8 +4611,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "micromatch": { @@ -4624,19 +4621,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime": { @@ -4655,7 +4652,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "minimatch": { @@ -4663,7 +4660,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -4728,12 +4725,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "growl": { @@ -4754,7 +4751,7 @@ "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } } } @@ -4790,13 +4787,34 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "nise": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.3.tgz", + "integrity": "sha512-v1J/FLUB9PfGqZLGDBhQqODkbLotP0WtLo9R4EJY2PPu5f5Xg4o0rA8FDlmrjFSv9vBBKcfnOSpfYYuu5RTHqg==", + "dev": true, + "requires": { + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" + }, + "dependencies": { + "lolex": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.6.0.tgz", + "integrity": "sha512-e1UtIo1pbrIqEXib/yMjHciyqkng5lc0rrIbytgjmRgDR9+2ceNIAcwOWSgylRjoEP9VdVguCSRwnNmlbnOUwA==", + "dev": true + } + } + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-libs-browser": { @@ -4805,28 +4823,28 @@ "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", "dev": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", + "assert": "^1.1.1", + "browserify-zlib": "^0.1.4", + "buffer": "^4.9.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", "crypto-browserify": "3.3.0", - "domain-browser": "1.1.7", - "events": "1.1.1", + "domain-browser": "^1.1.1", + "events": "^1.0.0", "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "os-browserify": "^0.2.0", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", + "process": "^0.11.0", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.0.5", + "stream-browserify": "^2.0.1", + "stream-http": "^2.3.1", + "string_decoder": "^0.10.25", + "timers-browserify": "^2.0.2", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" }, "dependencies": { @@ -4844,7 +4862,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "null-check": { @@ -4893,10 +4911,10 @@ "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", "dev": true, "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0", - "function-bind": "1.1.1", - "has": "1.0.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.6.1", + "function-bind": "^1.1.0", + "has": "^1.0.1" } }, "object.omit": { @@ -4905,8 +4923,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "on-finished": { @@ -4923,7 +4941,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -4937,8 +4955,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -4954,12 +4972,12 @@ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -5000,9 +5018,9 @@ "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" + "graceful-fs": "^4.1.4", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.0" } }, "pako": { @@ -5022,10 +5040,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parsejson": { @@ -5034,7 +5052,7 @@ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseqs": { @@ -5043,7 +5061,7 @@ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseuri": { @@ -5052,7 +5070,7 @@ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseurl": { @@ -5073,7 +5091,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -5093,6 +5111,23 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, "pbkdf2-compat": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", @@ -5122,7 +5157,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -5131,7 +5166,7 @@ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" } }, "pluralize": { @@ -5185,7 +5220,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "prop-types": { @@ -5193,9 +5228,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" + "fbjs": "^0.8.16", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" } }, "prr": { @@ -5236,7 +5271,7 @@ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", "requires": { - "performance-now": "2.1.0" + "performance-now": "^2.1.0" } }, "raf-schd": { @@ -5250,8 +5285,8 @@ "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -5260,7 +5295,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5269,7 +5304,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -5280,7 +5315,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } } } @@ -5308,11 +5343,11 @@ "resolved": "https://registry.npmjs.org/react/-/react-15.6.2.tgz", "integrity": "sha1-26BDSrQ5z+gvEI8PURZjkIF5qnI=", "requires": { - "create-react-class": "15.6.2", - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" + "create-react-class": "^15.6.0", + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" } }, "react-addons-css-transition-group": { @@ -5331,16 +5366,16 @@ "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-4.0.1.tgz", "integrity": "sha512-d73RMu4QOFCyjUELLWFyY/EuclnfqulI9pECx+2gIuJvV0ycf1uR88o+1x0RSB9ILD70inHMzCBKNkWVbbt+vA==", "requires": { - "babel-runtime": "6.26.0", - "invariant": "2.2.2", - "memoize-one": "3.1.1", - "prop-types": "15.6.0", - "raf-schd": "2.1.1", - "react-motion": "0.5.2", - "react-redux": "5.0.7", - "redux": "3.7.2", - "redux-thunk": "2.2.0", - "reselect": "3.0.1" + "babel-runtime": "^6.26.0", + "invariant": "^2.2.2", + "memoize-one": "^3.0.1", + "prop-types": "^15.6.0", + "raf-schd": "^2.1.0", + "react-motion": "^0.5.2", + "react-redux": "^5.0.6", + "redux": "^3.7.2", + "redux-thunk": "^2.2.0", + "reselect": "^3.0.1" } }, "react-dom": { @@ -5348,14 +5383,15 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz", "integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=", "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "prop-types": "15.6.0" + "fbjs": "^0.8.9", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.0", + "prop-types": "^15.5.10" } }, "react-gemini-scrollbar": { "version": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", + "from": "react-gemini-scrollbar@github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", "requires": { "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" } @@ -5365,9 +5401,9 @@ "resolved": "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz", "integrity": "sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ==", "requires": { - "performance-now": "0.2.0", - "prop-types": "15.6.0", - "raf": "3.4.0" + "performance-now": "^0.2.0", + "prop-types": "^15.5.8", + "raf": "^3.1.0" }, "dependencies": { "performance-now": { @@ -5382,12 +5418,12 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz", "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==", "requires": { - "hoist-non-react-statics": "2.5.0", - "invariant": "2.2.2", - "lodash": "4.17.10", - "lodash-es": "4.17.10", - "loose-envify": "1.3.1", - "prop-types": "15.6.0" + "hoist-non-react-statics": "^2.5.0", + "invariant": "^2.0.0", + "lodash": "^4.17.5", + "lodash-es": "^4.17.5", + "loose-envify": "^1.1.0", + "prop-types": "^15.6.0" }, "dependencies": { "lodash": { @@ -5402,13 +5438,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -5417,10 +5453,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "readline2": { @@ -5429,8 +5465,8 @@ "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", "mute-stream": "0.0.5" } }, @@ -5440,7 +5476,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.4.0" + "resolve": "^1.1.6" } }, "redux": { @@ -5448,10 +5484,10 @@ "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { - "lodash": "4.17.4", - "lodash-es": "4.17.10", - "loose-envify": "1.3.1", - "symbol-observable": "1.2.0" + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" } }, "redux-thunk": { @@ -5476,9 +5512,9 @@ "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.8" + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" } }, "regex-cache": { @@ -5487,7 +5523,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regexp-quote": { @@ -5501,9 +5537,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "regjsgen": { @@ -5518,7 +5554,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { @@ -5553,36 +5589,34 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "require-json": { @@ -5597,8 +5631,8 @@ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" } }, "requires-port": { @@ -5618,7 +5652,7 @@ "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-from": { @@ -5633,8 +5667,8 @@ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" } }, "right-align": { @@ -5643,7 +5677,7 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -5652,7 +5686,7 @@ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" }, "dependencies": { "glob": { @@ -5661,12 +5695,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } @@ -5683,7 +5717,7 @@ "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.3.0" } }, "rx-lite": { @@ -5698,9 +5732,9 @@ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "samsam": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", - "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", + "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", "dev": true }, "sanitize-html": { @@ -5708,9 +5742,9 @@ "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.14.1.tgz", "integrity": "sha1-cw/6Ikm98YMz7/5FsoYXPJxa0Lg=", "requires": { - "htmlparser2": "3.9.2", + "htmlparser2": "^3.9.0", "regexp-quote": "0.0.0", - "xtend": "4.0.1" + "xtend": "^4.0.0" } }, "semver": { @@ -5748,9 +5782,9 @@ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", "dev": true, "requires": { - "glob": "7.1.2", - "interpret": "1.0.4", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, "dependencies": { "glob": { @@ -5759,26 +5793,52 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } } } }, "sinon": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", - "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.0.7.tgz", + "integrity": "sha512-GvNLrwpvLZ8jIMZBUhHGUZDq5wlUdceJWyHvZDmqBxnjazpxY1L0FNbGBX6VpcOEoQ8Q4XMWFzm2myJMvx+VjA==", "dev": true, "requires": { - "formatio": "1.1.1", - "lolex": "1.3.2", - "samsam": "1.1.2", - "util": "0.10.3" + "@sinonjs/formatio": "^2.0.0", + "diff": "^3.1.0", + "lodash.get": "^4.4.2", + "lolex": "^2.2.0", + "nise": "^1.2.0", + "supports-color": "^5.1.0", + "type-detect": "^4.0.5" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "lolex": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.6.0.tgz", + "integrity": "sha512-e1UtIo1pbrIqEXib/yMjHciyqkng5lc0rrIbytgjmRgDR9+2ceNIAcwOWSgylRjoEP9VdVguCSRwnNmlbnOUwA==", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "slash": { @@ -5793,11 +5853,6 @@ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", "dev": true }, - "sntp": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", - "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=" - }, "socket.io": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", @@ -5958,9 +6013,9 @@ "integrity": "sha512-MYbFX9DYxmTQFfy2v8FC1XZwpwHKYxg3SK8Wb7VPBKuhDjz8gi9re2819MsG4p49HDyiOSUKlmZ+nQBArW5CGw==", "dev": true, "requires": { - "async": "2.6.0", - "loader-utils": "0.2.17", - "source-map": "0.6.1" + "async": "^2.5.0", + "loader-utils": "~0.2.2", + "source-map": "~0.6.1" }, "dependencies": { "async": { @@ -5969,7 +6024,7 @@ "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { - "lodash": "4.17.4" + "lodash": "^4.14.0" } }, "source-map": { @@ -5986,7 +6041,7 @@ "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } }, "sprintf-js": { @@ -5995,18 +6050,18 @@ "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "statuses": { @@ -6021,8 +6076,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-http": { @@ -6031,11 +6086,11 @@ "integrity": "sha1-QKBQ7I3DtTsz2ZCUFcAsC/Gr+60=", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.2.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, "string-width": { @@ -6044,9 +6099,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string.prototype.repeat": { @@ -6059,21 +6114,16 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -6110,12 +6160,12 @@ "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", "slice-ansi": "0.0.4", - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ajv": { @@ -6124,8 +6174,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { @@ -6146,8 +6196,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -6156,7 +6206,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -6167,6 +6217,12 @@ "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", "dev": true }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, "text-encoding-utf-8": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz", @@ -6196,7 +6252,7 @@ "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", "dev": true, "requires": { - "setimmediate": "1.0.5" + "setimmediate": "^1.0.4" } }, "tmatch": { @@ -6211,7 +6267,7 @@ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } }, "to-array": { @@ -6233,11 +6289,11 @@ "dev": true }, "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "trim-right": { @@ -6263,7 +6319,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -6278,9 +6334,15 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", @@ -6288,7 +6350,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "~2.1.15" } }, "typedarray": { @@ -6308,10 +6370,10 @@ "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", "dev": true, "requires": { - "async": "0.2.10", - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "async": "~0.2.6", + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "async": { @@ -6368,8 +6430,8 @@ "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", "dev": true, "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.31" + "lru-cache": "2.2.x", + "tmp": "0.0.x" } }, "util": { @@ -6401,9 +6463,9 @@ "dev": true }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, "v8flags": { "version": "2.1.1", @@ -6411,13 +6473,14 @@ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { - "user-home": "1.1.1" + "user-home": "^1.1.1" } }, "velocity-vector": { "version": "github:vector-im/velocity#059e3b2348f1110888d033974d3109fd5a3af00f", + "from": "velocity-vector@github:vector-im/velocity#059e3b2348f1110888d033974d3109fd5a3af00f", "requires": { - "jquery": "3.2.1" + "jquery": ">= 1.4.3" } }, "verror": { @@ -6425,9 +6488,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "vm-browserify": { @@ -6451,7 +6514,7 @@ "integrity": "sha1-MbTbZnjyrgHDnqn7hyWpAx5Vins=", "dev": true, "requires": { - "foreachasync": "3.0.0" + "foreachasync": "^3.0.0" } }, "watchpack": { @@ -6460,9 +6523,9 @@ "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", "dev": true, "requires": { - "async": "0.9.2", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" + "async": "^0.9.0", + "chokidar": "^1.0.0", + "graceful-fs": "^4.1.2" } }, "webpack": { @@ -6471,21 +6534,21 @@ "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", "dev": true, "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.2", - "enhanced-resolve": "0.9.1", - "interpret": "0.6.6", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", - "mkdirp": "0.5.1", - "node-libs-browser": "0.7.0", - "optimist": "0.6.1", - "supports-color": "3.2.3", - "tapable": "0.1.10", - "uglify-js": "2.7.5", - "watchpack": "0.2.9", - "webpack-core": "0.6.9" + "acorn": "^3.0.0", + "async": "^1.3.0", + "clone": "^1.0.2", + "enhanced-resolve": "~0.9.0", + "interpret": "^0.6.4", + "loader-utils": "^0.2.11", + "memory-fs": "~0.3.0", + "mkdirp": "~0.5.0", + "node-libs-browser": "^0.7.0", + "optimist": "~0.6.0", + "supports-color": "^3.1.0", + "tapable": "~0.1.8", + "uglify-js": "~2.7.3", + "watchpack": "^0.2.1", + "webpack-core": "~0.6.9" }, "dependencies": { "acorn": { @@ -6512,8 +6575,8 @@ "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", "dev": true, "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "supports-color": { @@ -6522,7 +6585,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -6533,8 +6596,8 @@ "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", "dev": true, "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" }, "dependencies": { "source-map": { @@ -6543,7 +6606,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -6554,11 +6617,11 @@ "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=", "dev": true, "requires": { - "memory-fs": "0.4.1", - "mime": "1.4.1", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" + "memory-fs": "~0.4.1", + "mime": "^1.3.4", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" } }, "whatwg-fetch": { @@ -6572,7 +6635,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "window-size": { @@ -6597,7 +6660,7 @@ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "ws": { @@ -6606,8 +6669,8 @@ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", "dev": true, "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "options": ">=0.0.5", + "ultron": "1.0.x" } }, "wtf-8": { @@ -6622,7 +6685,7 @@ "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=", "dev": true, "requires": { - "lodash": "3.10.1" + "lodash": "^3.5.0" }, "dependencies": { "lodash": { @@ -6650,9 +6713,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } }, diff --git a/package.json b/package.json index 60f65f4c39..5864b35fc4 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "react-addons-test-utils": "^15.4.0", "require-json": "0.0.1", "rimraf": "^2.4.3", - "sinon": "^1.17.3", + "sinon": "^5.0.7", "source-map-loader": "^0.2.3", "walk": "^2.3.9", "webpack": "^1.12.14" diff --git a/test/components/structures/TimelinePanel-test.js b/test/components/structures/TimelinePanel-test.js index 74037d2926..ea62d427bc 100644 --- a/test/components/structures/TimelinePanel-test.js +++ b/test/components/structures/TimelinePanel-test.js @@ -235,7 +235,7 @@ describe('TimelinePanel', function() { // now, if we update the events, there shouldn't be any // more requests. - client.paginateEventTimeline.reset(); + client.paginateEventTimeline.resetHistory(); panel.forceUpdate(); expect(messagePanel.props.backPaginating).toBe(false); setTimeout(() => { From 836dc8b0ef2b3d086747c85fbcdd885d7102304c Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 21 May 2018 16:59:13 +0100 Subject: [PATCH 024/480] Factor out all shared logic between MStickerBody and MImageBody The benefits of this: - One code path for determining spinner/placeholder and it's position for loading images/stickers. This includes spinner used in e2e decryption of images. - Very small definition for MStickerBody, only overriding the minimal differences is has from MImageBody. The disadvantages: - Slightly more complicated MImageBody, but hopefully not less readable. --- res/css/views/messages/_MImageBody.scss | 11 +- res/css/views/messages/_MStickerBody.scss | 32 +--- src/components/views/messages/MImageBody.js | 89 ++++++++-- src/components/views/messages/MStickerBody.js | 162 ++++-------------- 4 files changed, 111 insertions(+), 183 deletions(-) diff --git a/res/css/views/messages/_MImageBody.scss b/res/css/views/messages/_MImageBody.scss index 64821434dd..4c763c5991 100644 --- a/res/css/views/messages/_MImageBody.scss +++ b/res/css/views/messages/_MImageBody.scss @@ -37,11 +37,12 @@ limitations under the License. } .mx_MImageBody_thumbnail_spinner { - display: flex; - align-items: center; - width: 100%; + position: absolute; + left: 50%; + top: 50%; } -.mx_MImageBody_thumbnail_spinner img { - margin: auto; +// Inner img and TintableSvg should be centered around 0, 0 +.mx_MImageBody_thumbnail_spinner > * { + transform: translate(-50%, -50%); } diff --git a/res/css/views/messages/_MStickerBody.scss b/res/css/views/messages/_MStickerBody.scss index 3e6bbe5aa4..e4977bcc34 100644 --- a/res/css/views/messages/_MStickerBody.scss +++ b/res/css/views/messages/_MStickerBody.scss @@ -14,33 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -.mx_MStickerBody { - display: block; - margin-right: 34px; - min-height: 110px; - padding: 20px 0; +.mx_MStickerBody_wrapper { + padding: 20px 0px; } -.mx_MStickerBody_image_container { - display: inline-block; - position: relative; -} - -.mx_MStickerBody_image { - max-width: 100%; - opacity: 0; -} - -.mx_MStickerBody_image_visible { - opacity: 1; -} - -.mx_MStickerBody_placeholder { - position: absolute; - opacity: 1; -} - -.mx_MStickerBody_placeholder_invisible { - transition: 500ms; - opacity: 0; +.mx_MStickerBody_tooltip { + position: absolute; + top: 50%; } diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index d9108a2fe1..03dad5e439 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -62,6 +62,8 @@ export default class extends React.Component { decryptedBlob: null, error: null, imgError: false, + imgLoaded: false, + hover: false, }; } @@ -116,6 +118,8 @@ export default class extends React.Component { } onImageEnter(e) { + this.setState({ hover: true }); + if (!this._isGif() || SettingsStore.getValue("autoplayGifsAndVideos")) { return; } @@ -124,6 +128,8 @@ export default class extends React.Component { } onImageLeave(e) { + this.setState({ hover: false }); + if (!this._isGif() || SettingsStore.getValue("autoplayGifsAndVideos")) { return; } @@ -139,6 +145,7 @@ export default class extends React.Component { onImageLoad() { this.props.onWidgetLoad(); + this.setState({ imgLoaded: true }); } _getContentUrl() { @@ -237,14 +244,22 @@ export default class extends React.Component { const maxWidth = content.info.w * maxHeight / content.info.h; let img = null; + let placeholder = null; + // e2e image hasn't been decrypted yet if (content.file !== undefined && this.state.decryptedUrl === null) { - img =
    - {content.body} -
    ; - } else if (thumbUrl && !this.state.imgError) { + placeholder = {content.body}; + } else if (!this.state.imgLoaded) { + // Deliberately, getSpinner is left unimplemented here, MStickerBody overides + placeholder = this.getPlaceholder(); + } + + const showPlaceholder = Boolean(placeholder); + + if (thumbUrl && !this.state.imgError) { // Restrict the width of the thumbnail here, otherwise it will fill the container // which has the same width as the timeline + // mx_MImageBody_thumbnail resizes img to exactly container size img = {content.body}; } - const thumbnail = img ? - -
    - { /* Calculate aspect ratio, using %padding will size _container correctly */ } -
    - { /* mx_MImageBody_thumbnail resizes img to exactly container size */ } + const thumbnail = ( +
    + { /* Calculate aspect ratio, using %padding will size _container correctly */ } +
    + +
    +
    + { placeholder } +
    +
    + +
    { img }
    -
    : null; - return ( - - { thumbnail } - - - ); + { this.state.hover && this.getTooltip() } +
    + ); + + return this.wrapImage(contentUrl, thumbnail); + } + + // Overidden by MStickerBody + wrapImage(contentUrl, children) { + return + {children} + ; + } + + // Overidden by MStickerBody + getPlaceholder() { + // MImageBody doesn't show a placeholder whilst the image loads, (but it could do) + return null; + } + + // Overidden by MStickerBody + getTooltip() { + return null; + } + + // Overidden by MStickerBody + getFileBody() { + return ; } render() { @@ -284,7 +330,6 @@ export default class extends React.Component { ); } - const contentUrl = this._getContentUrl(); let thumbUrl; if (this._isGif() && SettingsStore.getValue("autoplayGifsAndVideos")) { @@ -293,6 +338,12 @@ export default class extends React.Component { thumbUrl = this._getThumbUrl(); } - return this._messageContent(contentUrl, thumbUrl, content); + const thumbnail = this._messageContent(contentUrl, thumbUrl, content); + const fileBody = this.getFileBody(); + + return + { thumbnail } + { fileBody } + ; } } diff --git a/src/components/views/messages/MStickerBody.js b/src/components/views/messages/MStickerBody.js index cdb60f0074..d9ed668e42 100644 --- a/src/components/views/messages/MStickerBody.js +++ b/src/components/views/messages/MStickerBody.js @@ -18,141 +18,39 @@ limitations under the License. import MImageBody from './MImageBody'; import sdk from '../../../index'; -import TintableSVG from '../elements/TintableSvg'; export default class MStickerBody extends MImageBody { - displayName: 'MStickerBody' - - constructor(props) { - super(props); - - this._onMouseEnter = this._onMouseEnter.bind(this); - this._onMouseLeave = this._onMouseLeave.bind(this); - this._onImageLoad = this._onImageLoad.bind(this); - } - - _onMouseEnter() { - this.setState({showTooltip: true}); - } - - _onMouseLeave() { - this.setState({showTooltip: false}); - } - - _onImageLoad() { - this.setState({ - placeholderClasses: 'mx_MStickerBody_placeholder_invisible', - }); - const hidePlaceholderTimer = setTimeout(() => { - this.setState({ - placeholderVisible: false, - imageClasses: 'mx_MStickerBody_image_visible', - }); - }, 500); - this.setState({hidePlaceholderTimer}); - if (this.props.onWidgetLoad) { - this.props.onWidgetLoad(); - } - } - - _afterComponentDidMount() { - if (this.refs.image.complete) { - // Image already loaded - this.setState({ - placeholderVisible: false, - placeholderClasses: '.mx_MStickerBody_placeholder_invisible', - imageClasses: 'mx_MStickerBody_image_visible', - }); - } else { - // Image not already loaded - this.setState({ - placeholderVisible: true, - placeholderClasses: '', - imageClasses: '', - }); - } - } - - _afterComponentWillUnmount() { - if (this.state.hidePlaceholderTimer) { - clearTimeout(this.state.hidePlaceholderTimer); - this.setState({hidePlaceholderTimer: null}); - } - } - - _messageContent(contentUrl, thumbUrl, content) { - let tooltip; - const tooltipBody = ( - this.props.mxEvent && - this.props.mxEvent.getContent() && - this.props.mxEvent.getContent().body) ? - this.props.mxEvent.getContent().body : null; - if (this.state.showTooltip && tooltipBody) { - const RoomTooltip = sdk.getComponent('rooms.RoomTooltip'); - tooltip = ; - } - - const gutterSize = 0; - let placeholderSize = 75; - let placeholderFixupHeight = '100px'; - let placeholderTop = 0; - let placeholderLeft = 0; - - if (content.info) { - placeholderTop = Math.floor((content.info.h/2) - (placeholderSize/2)) + 'px'; - placeholderLeft = Math.floor((content.info.w/2) - (placeholderSize/2) + gutterSize) + 'px'; - placeholderFixupHeight = content.info.h + 'px'; - } - - // The pixel size of sticker images is generally larger than their intended display - // size so they render at native reolution on HiDPI displays. We therefore need to - // explicity set the size so they render at the intended size. - const imageStyle = { - height: content.info.h, - // leave the browser the calculate the width automatically - }; - - placeholderSize = placeholderSize + 'px'; - - // Body 'ref' required by MImageBody - return ( - -
    - { this.state.placeholderVisible && -
    - -
    } - {content.body} - { tooltip } -
    -
    - ); - } - // Empty to prevent default behaviour of MImageBody onClick() { } + + // MStickerBody doesn't need a wrapping ``, but it does need extra padding + // which is added by mx_MStickerBody_wrapper + wrapImage(contentUrl, children) { + return
    { children }
    ; + } + + // Placeholder to show in place of the sticker image if + // img onLoad hasn't fired yet. + getPlaceholder() { + const TintableSVG = sdk.getComponent('elements.TintableSvg'); + return ; + } + + // Tooltip to show on mouse over + getTooltip() { + const content = this.props.mxEvent && this.props.mxEvent.getContent(); + + if (!content || !content.body || !content.info || !content.info.w) return null; + + const RoomTooltip = sdk.getComponent('rooms.RoomTooltip'); + return
    + +
    ; + } + + // Don't show "Download this_file.png ..." + getFileBody() { + return null; + } } From ae10491f95c7411a3a74c5271df5c1a066a71f8e Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 22 May 2018 09:28:41 +0100 Subject: [PATCH 025/480] Space between sentences in 'leave room' warning --- src/components/structures/MatrixChat.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 051b9ed10b..91d5ee8970 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -957,6 +957,7 @@ export default React.createClass({ if (rule !== "public") { warnings.push(( + {' '/* Whitespace, otherwise the sentences get smashed together */ } { _t("This room is not public. You will not be able to rejoin without an invite.") } )); From a0bc681052c38f9d3529bc29d8874926dbe14621 Mon Sep 17 00:00:00 2001 From: random Date: Fri, 18 May 2018 10:16:41 +0000 Subject: [PATCH 026/480] Translated using Weblate (Italian) Currently translated at 99.4% (1169 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/it/ --- src/i18n/strings/it.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 82382a3967..b8b8cd7394 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1167,5 +1167,13 @@ "Riot bugs are tracked on GitHub:
    create a GitHub issue.": "Gli errori di Riot sono monitorati su GitHub: segnala un problema su GitHub.", "Log out and remove encryption keys?": "Disconnettere e rimuovere le chiavi di cifratura?", "Refresh": "Aggiorna", - "We encountered an error trying to restore your previous session.": "Abbiamo riscontrato un errore tentando di ripristinare la tua sessione precedente." + "We encountered an error trying to restore your previous session.": "Abbiamo riscontrato un errore tentando di ripristinare la tua sessione precedente.", + "Send analytics data": "Invia dati statistici", + "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Aiutare a migliorare Riot inviando statistiche d'uso? Verrà usato un cookie. (Vedi la nostra politica sui cookie e sulla privacy).", + "Help improve Riot by sending usage data? This will use a cookie.": "Aiutare a migliorare Riot inviando statistiche d'uso? Verrà usato un cookie.", + "Yes please": "Sì grazie", + "Clear Storage and Sign Out": "Elimina lo storage e disconnetti", + "Send Logs": "Invia i log", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Eliminare lo storage del browser potrebbe risolvere il problema, ma verrai disconnesso e la cronologia delle chat criptate sarà illeggibile.", + "Collapse Reply Thread": "Riduci finestra di risposta" } From 38f446a364f1be9def92e0ee6a1dd81ebf665c52 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 18 May 2018 12:27:59 +0000 Subject: [PATCH 027/480] Translated using Weblate (Russian) Currently translated at 99.8% (1173 of 1175 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/ru/ --- src/i18n/strings/ru.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 24e9750698..87fb79108e 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1175,5 +1175,9 @@ "Unable to reply": "Не удается ответить", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не удается загрузить событие, на которое был дан ответ, либо оно не существует, либо у вас нет разрешения на его просмотр.", "Enable widget screenshots on supported widgets": "Включить скриншоты виджета в поддерживаемых виджетах", - "Collapse Reply Thread": "Ответить с цитированием" + "Collapse Reply Thread": "Ответить с цитированием", + "Send analytics data": "Отправить данные аналитики", + "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Помогите улучшить Riot, отправляя данные об использовании? Будут использоваться файлы cookie. (См. наши политики cookie и конфиденциальности).", + "Help improve Riot by sending usage data? This will use a cookie.": "Помогите улучшить Riot, отправляя данные об использовании? Будут использоваться файлы cookie.", + "Yes please": "Да, пожалуйста" } From e4f8c09c32d9a03567de9a1e9a1954928915e29b Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 10:43:16 +0100 Subject: [PATCH 028/480] Only include placeholder in DOM when necessary --- src/components/views/messages/MImageBody.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index f27124238e..e2316b2fcc 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -276,15 +276,16 @@ export default class extends React.Component { { /* Calculate aspect ratio, using %padding will size _container correctly */ }
    -
    -
    - { placeholder } + { showPlaceholder && +
    +
    + { placeholder } +
    -
    + }
    { img } From fb5dd4a410e25e8ea145d9f6cd7ebae74e67f3d9 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 10:46:10 +0100 Subject: [PATCH 029/480] Remove spurious fixupHeight --- src/components/views/messages/MImageBody.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index e2316b2fcc..083dc342db 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -211,7 +211,6 @@ export default class extends React.Component { }); }).done(); } - this.fixupHeight(); this._afterComponentDidMount(); } From 31dcd85c08c3f625b4950a353909c80347104114 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 15:45:58 +0100 Subject: [PATCH 030/480] Add customisable cancel button to QuestionDialog --- src/components/views/dialogs/QuestionDialog.js | 1 + src/components/views/elements/DialogButtons.js | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/views/dialogs/QuestionDialog.js b/src/components/views/dialogs/QuestionDialog.js index 7e11677310..21d3a54bc2 100644 --- a/src/components/views/dialogs/QuestionDialog.js +++ b/src/components/views/dialogs/QuestionDialog.js @@ -67,6 +67,7 @@ export default React.createClass({ { this.props.description }
    - { _t("Cancel") } + { this.props.cancelButton || _t("Cancel") } ; } return ( From e602213806980f775e941a1b458fceb7212e962b Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 15:47:05 +0100 Subject: [PATCH 031/480] Add concept of priority modal to modal manager --- src/Modal.js | 44 +++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/src/Modal.js b/src/Modal.js index 2565d5c73b..06a96824a7 100644 --- a/src/Modal.js +++ b/src/Modal.js @@ -81,7 +81,11 @@ class ModalManager { constructor() { this._counter = 0; - /** list of the modals we have stacked up, with the most recent at [0] */ + // The modal to prioritise over all others. If this is set, only show + // this modal. Remove all other modals from the stack when this modal + // is closed. + this._priorityModal = null; + // A list of the modals we have stacked up, with the most recent at [0] this._modals = [ /* { elem: React component for this dialog @@ -105,18 +109,18 @@ class ModalManager { return container; } - createTrackedDialog(analyticsAction, analyticsInfo, Element, props, className) { + createTrackedDialog(analyticsAction, analyticsInfo, ...rest) { Analytics.trackEvent('Modal', analyticsAction, analyticsInfo); - return this.createDialog(Element, props, className); + return this.createDialog(...rest); } - createDialog(Element, props, className) { - return this.createDialogAsync((cb) => {cb(Element);}, props, className); + createDialog(Element, ...rest) { + return this.createDialogAsync((cb) => {cb(Element);}, ...rest); } - createTrackedDialogAsync(analyticsAction, analyticsInfo, loader, props, className) { + createTrackedDialogAsync(analyticsAction, analyticsInfo, ...rest) { Analytics.trackEvent('Modal', analyticsAction, analyticsInfo); - return this.createDialogAsync(loader, props, className); + return this.createDialogAsync(...rest); } /** @@ -137,8 +141,13 @@ class ModalManager { * component. (We will also pass an 'onFinished' property.) * * @param {String} className CSS class to apply to the modal wrapper + * + * @param {boolean} isPriorityModal if true, this modal will be displayed regardless + * of other modals that are currently in the stack. + * Also, when closed, all modals will be removed + * from the stack. */ - createDialogAsync(loader, props, className) { + createDialogAsync(loader, props, className, isPriorityModal) { const self = this; const modal = {}; @@ -151,6 +160,14 @@ class ModalManager { if (i >= 0) { self._modals.splice(i, 1); } + + if (self._priorityModal === modal) { + self._priorityModal = null; + + // XXX: This is destructive + self._modals = []; + } + self._reRender(); }; @@ -167,7 +184,12 @@ class ModalManager { modal.onFinished = props ? props.onFinished : null; modal.className = className; - this._modals.unshift(modal); + if (isPriorityModal) { + // XXX: This is destructive + this._priorityModal = modal; + } else { + this._modals.unshift(modal); + } this._reRender(); return {close: closeDialog}; @@ -188,7 +210,7 @@ class ModalManager { } _reRender() { - if (this._modals.length == 0) { + if (this._modals.length == 0 && !this._priorityModal) { // If there is no modal to render, make all of Riot available // to screen reader users again dis.dispatch({ @@ -205,7 +227,7 @@ class ModalManager { action: 'aria_hide_main_app', }); - const modal = this._modals[0]; + const modal = this._priorityModal ? this._priorityModal : this._modals[0]; const dialog = (
    From c249bee9b53f4718319f7bcc9128059709e55260 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 16:09:54 +0100 Subject: [PATCH 032/480] Grammar --- src/components/views/messages/MImageBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 083dc342db..c210c64318 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -240,7 +240,7 @@ export default class extends React.Component { _messageContent(contentUrl, thumbUrl, content) { // The maximum height of the thumbnail as it is rendered as an const maxHeight = Math.min(THUMBNAIL_MAX_HEIGHT, content.info.h); - // The maximum width of the thumbnail, as dictated by it's natural + // The maximum width of the thumbnail, as dictated by its natural // maximum height. const maxWidth = content.info.w * maxHeight / content.info.h; From 538979a4ee7b6f9e4d92e57749e35a2bcc5d8689 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 17:13:45 +0100 Subject: [PATCH 033/480] Fix MVideoBody spinner --- src/components/views/messages/MVideoBody.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/components/views/messages/MVideoBody.js b/src/components/views/messages/MVideoBody.js index 5365daee03..37fc94d1ed 100644 --- a/src/components/views/messages/MVideoBody.js +++ b/src/components/views/messages/MVideoBody.js @@ -147,12 +147,7 @@ module.exports = React.createClass({ // For now add an img tag with a spinner. return ( -
    +
    {content.body}
    From 658e88c30f5521c087f63be5b1e132522e92fdab Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 22 May 2018 15:47:31 +0100 Subject: [PATCH 034/480] Implement consent/terms and conditions dialog for /_matrix/consent flow --- src/components/structures/MatrixChat.js | 22 ++++++++++++++++++++++ src/i18n/strings/en_EN.json | 3 +++ 2 files changed, 25 insertions(+) diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index 91d5ee8970..96e721f7ca 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -1232,6 +1232,28 @@ export default React.createClass({ action: 'logout', }); }); + cli.on('no_consent', function(message, consentUri) { + const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); + Modal.createTrackedDialog('No Consent Dialog', '', QuestionDialog, { + title: _t('Terms and Conditions'), + description:
    +

    { _t( + 'To continue using the %(homeserverDomain)s homeserver ' + + 'you must review and agree to our terms and conditions.', + { homeserverDomain: cli.getDomain() }, + ) } +

    +
    , + button: _t('Review terms and conditions'), + cancelButton: _t('Dismiss'), + onFinished: (confirmed) => { + if (confirmed) { + window.open(consentUri, '_blank'); + } + }, + }, null, true); + }); + cli.on("accountData", function(ev) { if (ev.getType() === 'im.vector.web.settings') { if (ev.getContent() && ev.getContent().theme) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 239b45c32e..f3e3d6b097 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -943,6 +943,9 @@ "Failed to leave room": "Failed to leave room", "Signed Out": "Signed Out", "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", + "Terms and Conditions": "Terms and Conditions", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.", + "Review terms and conditions": "Review terms and conditions", "Old cryptography data detected": "Old cryptography data detected", "Data from an older version of Riot 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.": "Data from an older version of Riot 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.", "Logout": "Logout", From c9c3cf55dea03f97c00239821b50d899c7acdfb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Tue, 22 May 2018 17:08:52 +0000 Subject: [PATCH 035/480] Translated using Weblate (French) Currently translated at 100.0% (1176 of 1176 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 88c5e0ab07..048dcd9d81 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1174,5 +1174,6 @@ "Send analytics data": "Envoyer les données analytiques", "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Aider Riot à s'améliorer en envoyant des données d'utilisation ? Ceci utilisera un cookie. (Voir nos politiques de cookie et de confidentialité).", "Help improve Riot by sending usage data? This will use a cookie.": "Aider Riot à s'améliorer en envoyant des données d'utilisation ? Ceci utilisera un cookie.", - "Yes please": "Oui, s'il vous plaît" + "Yes please": "Oui, s'il vous plaît", + "Muted Users": "Utilisateurs ignorés" } From 6df3371c6c562fa006bb2cddbd6b3cdb4cb8e8cc Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 22 May 2018 19:14:54 +0100 Subject: [PATCH 036/480] Add a "reload widget" button. --- res/img/button-refresh.svg | 12 ++++++++++++ src/components/views/elements/AppTile.js | 23 +++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 res/img/button-refresh.svg diff --git a/res/img/button-refresh.svg b/res/img/button-refresh.svg new file mode 100644 index 0000000000..b4990a2147 --- /dev/null +++ b/res/img/button-refresh.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/src/components/views/elements/AppTile.js b/src/components/views/elements/AppTile.js index 0895ede636..4f7a3e298d 100644 --- a/src/components/views/elements/AppTile.js +++ b/src/components/views/elements/AppTile.js @@ -55,6 +55,7 @@ export default class AppTile extends React.Component { this._grantWidgetPermission = this._grantWidgetPermission.bind(this); this._revokeWidgetPermission = this._revokeWidgetPermission.bind(this); this._onPopoutWidgetClick = this._onPopoutWidgetClick.bind(this); + this._onReloadWidgetClick = this._onReloadWidgetClick.bind(this); } /** @@ -519,6 +520,11 @@ export default class AppTile extends React.Component { { target: '_blank', href: this._getSafeUrl(), rel: 'noopener noreferrer'}).click(); } + _onReloadWidgetClick(e) { + // Reload iframe in this way to avoid cross-origin restrictions + this.refs.appFrame.src = this.refs.appFrame.src; + } + render() { let appTileBody; @@ -606,6 +612,7 @@ export default class AppTile extends React.Component { const showPictureSnapshotButton = this._hasCapability('m.capability.screenshot') && this.props.show; const showPictureSnapshotIcon = 'img/camera_green.svg'; const popoutWidgetIcon = 'img/button-new-window.svg'; + const reloadWidgetIcon = 'img/button-refresh.svg'; const windowStateIcon = (this.props.show ? 'img/minimize.svg' : 'img/maximize.svg'); return ( @@ -624,6 +631,16 @@ export default class AppTile extends React.Component { { this.props.showTitle && this._getTileTitle() } + { /* Reload widget */ } + { this.props.showReload && } + { /* Popout widget */ } { this.props.showPopout && Date: Fri, 18 May 2018 09:51:44 +0000 Subject: [PATCH 037/480] Translated using Weblate (Hungarian) Currently translated at 100.0% (1176 of 1176 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 44324384af..6341b4468e 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1174,5 +1174,6 @@ "Send analytics data": "Analitikai adatok küldése", "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Szeretnél segíteni a Riot javításában analitikai adatok elküldésével? Ez sütit (cookie) használ. (Nézd meg a sütikről és titoktartási irányelvekről szóló leírást).", "Help improve Riot by sending usage data? This will use a cookie.": "Szeretnél segíteni a Riot javításában analitikai adatok elküldésével? Ez sütit (cookie) használ.", - "Yes please": "Igen, kérlek" + "Yes please": "Igen, kérlek", + "Muted Users": "Elnémított felhasználók" } From 975332633b1b4bec108f3a3535d8f4546e4bc098 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 23 May 2018 00:26:55 +0100 Subject: [PATCH 038/480] Translation. --- src/i18n/strings/en_EN.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 239b45c32e..ea2749b404 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -103,6 +103,7 @@ "You need to be logged in.": "You need to be logged in.", "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", "Unable to create widget.": "Unable to create widget.", + "Reload widget": "Reload widget", "Missing roomId.": "Missing roomId.", "Failed to send request.": "Failed to send request.", "This room is not recognised.": "This room is not recognised.", From ab5a4f58a259e6d98b81c33130686b1a27926452 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Tue, 22 May 2018 23:56:17 +0000 Subject: [PATCH 039/480] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (1176 of 1176 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/zh_Hant/ --- src/i18n/strings/zh_Hant.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index a2e8d669c9..649caefd35 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -1170,5 +1170,10 @@ "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.": "清除您瀏覽器的儲存的東西也許可以修復問題,但會將您登出並造成任何已加密的聊天都無法讀取。", "Collapse Reply Thread": "摺疊回覆討論串", - "Enable widget screenshots on supported widgets": "在支援的小工具上啟用小工具螢幕快照" + "Enable widget screenshots on supported widgets": "在支援的小工具上啟用小工具螢幕快照", + "Send analytics data": "傳送分析資料", + "Muted Users": "已靜音的使用者", + "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "透過傳送使用情形資料來協助改善 Riot?這會使用 cookie。(參見我們的 cookie 與隱私政策)。", + "Help improve Riot by sending usage data? This will use a cookie.": "透過傳送使用情形資料來協助改善 Riot?這會使用 cookie。", + "Yes please": "好的,請" } From 424dea1d4aeafa6267d971050a87d880a77f9a53 Mon Sep 17 00:00:00 2001 From: Kenneth Larsson Date: Wed, 23 May 2018 08:57:55 +0000 Subject: [PATCH 040/480] Translated using Weblate (Swedish) Currently translated at 77.2% (909 of 1176 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 97 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 93 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index f583dfd271..6a0bd10025 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -74,7 +74,7 @@ "Continue": "Fortsätt", "Could not connect to the integration server": "Det gick inte att ansluta till integrationsservern", "Create an account": "Skapa ett konto", - "Create Room": "Skapa ett rum", + "Create Room": "Skapa rum", "Cryptography": "Kryptografi", "Current password": "Nuvarande lösenord", "Curve25519 identity key": "Curve25519 -identitetsnyckel", @@ -107,7 +107,7 @@ "Email address (optional)": "Epostadress (valfri)", "Email, name or matrix ID": "Epostadress, namn, eller Matrix-ID", "Emoji": "Emoji", - "Enable encryption": "Sätt på kryptering", + "Enable encryption": "Aktivera kryptering", "Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterade meddelanden syns inte på klienter som inte ännu stöder kryptering", "Encrypted room": "Krypterat rum", "%(senderName)s ended the call.": "%(senderName)s avslutade samtalet.", @@ -307,7 +307,7 @@ "Room %(roomId)s not visible": "Rummet %(roomId)s är inte synligt", "Room Colour": "Rumsfärg", "Room contains unknown devices": "Det finns okända enheter i rummet", - "Room name (optional)": "Rummets namn (valfri)", + "Room name (optional)": "Rumsnamn (valfri)", "%(roomName)s does not exist.": "%(roomName)s finns inte.", "%(roomName)s is not accessible at this time.": "%(roomName)s är inte tillgängligt för tillfället.", "Rooms": "Rum", @@ -819,5 +819,94 @@ "Unblacklist": "Ta bort svartlistning", "Failed to invite the following users to %(groupId)s:": "Det gick inte att bjuda in följande användare till %(groupId)s:", "Failed to invite users to %(groupId)s": "Det gick inte att bjuda in användare till %(groupId)s", - "This room is not public. You will not be able to rejoin without an invite.": "Detta rum är inte offentligt. Du kommer inte kunna gå med igen utan en inbjudan." + "This room is not public. You will not be able to rejoin without an invite.": "Detta rum är inte offentligt. Du kommer inte kunna gå med igen utan en inbjudan.", + "Ignores a user, hiding their messages from you": "Ignorerar en användare och döljer dess meddelanden för dig", + "Stops ignoring a user, showing their messages going forward": "Slutar ignorera en användare och visar dess meddelanden för framöver", + "Opens the Developer Tools dialog": "Öppna dialogrutan Utvecklarverktyg", + "Notify the whole room": "Meddela hela rummet", + "Room Notification": "Rumsavisering", + "Users": "Användare", + "unknown device": "okänd enhet", + "verified": "verifierad", + "Verification": "Verifiering", + "User ID": "Användar-ID", + "unencrypted": "okrypterad", + "Export room keys": "Exportera rumsnycklar", + "Import room keys": "Importera rumsnycklar", + "File to import": "Fil att importera", + "Which officially provided instance you are using, if any": "Vilken officiellt tillhandahållen instans du använder, om någon", + "(unknown failure: %(reason)s)": "(okänt fel: %(reason)s)", + "(could not connect media)": "(det gick inte ansluta media)", + " (unsupported)": " (stöds ej)", + "Drop file here to upload": "Släpp fil här för att ladda upp", + "Ongoing conference call%(supportedText)s.": "Pågående konferenssamtal%(supportedText)s.", + "%(senderName)s sent an image": "%(senderName)s skickade en bild", + "%(senderName)s sent a video": "%(senderName)s skickade en video", + "%(senderName)s uploaded a file": "%(senderName)s laddade upp en fil", + "Options": "Alternativ", + "Unencrypted message": "Okrypterat meddelande", + "Verified": "Verifierad", + "Unverified": "Overifierad", + "Replying": "Svarar", + "Drop here to favourite": "Släpp här för att favorisera", + "Drop here to tag direct chat": "Släpp här för att göra till direkt-chatt", + "Drop here to restore": "Släpp här för att återställa", + "Drop here to demote": "Släpp här för att göra till låg prioritet", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du är inte i något rum ännu! Tryck för att skapa ett rum eller för att bläddra i katalogen", + "Would you like to accept or decline this invitation?": "Vill du acceptera eller avböja denna inbjudan?", + "You have been invited to join this room by %(inviterName)s": "Du har blivit inbjuden att gå med i rummet av %(inviterName)s", + "Kick this user?": "Kicka användaren?", + "To send messages, you must be a": "För att skicka meddelanden, måste du vara", + "To invite users into the room, you must be a": "För att bjuda in användare i rummet, måste du vara", + "To configure the room, you must be a": "För att konfigurera rummet, måste du vara", + "To kick users, you must be a": "För att kicka användare, måste du vara", + "To ban users, you must be a": "För att banna användare, måste du vara", + "To remove other users' messages, you must be a": "För att ta bort andra användares meddelanden, måste du vara", + "%(user)s is a %(userRole)s": "%(user)s är %(userRole)s", + "You have been kicked from %(roomName)s by %(userName)s.": "Du har blivit kickad från %(roomName)s av %(userName)s.", + "You have been kicked from this room by %(userName)s.": "Du har blivit kickad från detta rum av %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Du har blivit bannad från %(roomName)s av %(userName)s.", + "You have been banned from this room by %(userName)s.": "Du har blivit bannad från detta rum av %(userName)s.", + "This room": "Detta rum", + "You are trying to access %(roomName)s.": "Du försöker komma åt %(roomName)s.", + "You are trying to access a room.": "Du försöker komma åt ett rum.", + "This is a preview of this room. Room interactions have been disabled": "Detta är en förhandsvisning av rummet. Rumsinteraktioner har inaktiverats", + "To change the room's avatar, you must be a": "För att ändra rummets avatar, måste du vara", + "To change the room's name, you must be a": "För att ändra rummets namn, måste du vara", + "To change the room's main address, you must be a": "För att ändra rummets huvudadress, måste du vara", + "To change the room's history visibility, you must be a": "För att ändra visning av rummets historik, måste du vara", + "To change the permissions in the room, you must be a": "För att ändra behörigheter i rummet, måste du vara", + "To change the topic, you must be a": "För att ändra ämnet, måste du vara", + "To modify widgets in the room, you must be a": "För att ändra widgets i rummet, måste du vara", + "Banned by %(displayName)s": "Bannad av %(displayName)s", + "The visibility of existing history will be unchanged": "Synlighet av befintlig historik förblir oförändrad", + "You should not yet trust it to secure data": "Du bör ännu inte lita på att den säkrar data", + "(warning: cannot be disabled again!)": "(varning: kan inte inaktiveras igen!)", + "Muted Users": "Dämpade användare", + "This room is not accessible by remote Matrix servers": "Detta rum är inte tillgängligt för externa Matrix-servrar", + "To send events of type , you must be a": "För att skicka händelser av typen , måste du vara", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Det gick inte att ladda händelsen som svarades på, antingen finns den inte eller så har du inte behörighet att se den.", + "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.": "Är du säker på att du vill ta bort den här händelsen? Observera att om du tar bort en rumsnamns- eller ämnesändring kan det ångra ändringen.", + "Send Custom Event": "Skicka anpassad händelse", + "You must specify an event type!": "Du måste ange en händelsetyp!", + "Event sent!": "Händelse skickad!", + "Failed to send custom event.": "Det gick inte att skicka anpassad händelse.", + "Event Type": "Händelsetyp", + "Event Content": "Händelseinnehåll", + "Example": "Exempel", + "example": "exempel", + "Create": "Skapa", + "Advanced options": "Avancerade alternativ", + "Block users on other matrix homeservers from joining this room": "Blockera användare på andra Matrix-hemservrar från att gå med i detta rum", + "This setting cannot be changed later!": "Den här inställningen kan inte ändras senare!", + "Unknown error": "Okänt fel", + "Incorrect password": "Felaktigt lösenord", + "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "Detta kommer att göra ditt konto permanent oanvändbart. Du kommer inte att kunna registrera samma användar-ID igen.", + "This action is irreversible.": "Denna åtgärd går inte att ångra.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "För att verifiera att denna enhet kan litas på, vänligen kontakta ägaren på annat sätt (t ex personligen eller med ett telefonsamtal) och fråga om nyckeln ägaren har i sina användarinställningar för enheten matchar nyckeln nedan:", + "Device name": "Enhetsnamn", + "Device key": "Enhetsnyckel", + "Verify device": "Verifiera enhet", + "I verify that the keys match": "Jag verifierar att nycklarna matchar", + "In future this verification process will be more sophisticated.": "I framtiden kommer denna verifieringsprocess att bli mer sofistikerad." } From ef686a966d5c57d74b55c3a1a13a0e9747d56532 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 23 May 2018 10:46:32 +0100 Subject: [PATCH 041/480] Add cookie warning to widget warning (AppPermission) --- src/components/views/elements/AppPermission.js | 5 +++++ src/i18n/strings/en_EN.json | 1 + 2 files changed, 6 insertions(+) diff --git a/src/components/views/elements/AppPermission.js b/src/components/views/elements/AppPermission.js index ef08c8355b..c45006be3a 100644 --- a/src/components/views/elements/AppPermission.js +++ b/src/components/views/elements/AppPermission.js @@ -52,6 +52,10 @@ export default class AppPermission extends React.Component { e2eWarningText = { _t('NOTE: Apps are not end-to-end encrypted') }; } + const cookieWarning = + + { _t('Warning: This widget might use cookies.') } + ; return (
    @@ -60,6 +64,7 @@ export default class AppPermission extends React.Component {
    { _t('Do you want to load widget from URL:') } { this.state.curlBase } { e2eWarningText } + { cookieWarning }
    Date: Wed, 23 May 2018 09:42:21 +0000 Subject: [PATCH 042/480] Translated using Weblate (Swedish) Currently translated at 78.2% (923 of 1179 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/sv/ --- src/i18n/strings/sv.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 6a0bd10025..0247b5c080 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -908,5 +908,19 @@ "Device key": "Enhetsnyckel", "Verify device": "Verifiera enhet", "I verify that the keys match": "Jag verifierar att nycklarna matchar", - "In future this verification process will be more sophisticated.": "I framtiden kommer denna verifieringsprocess att bli mer sofistikerad." + "In future this verification process will be more sophisticated.": "I framtiden kommer denna verifieringsprocess att bli mer sofistikerad.", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Om det matchar, tryck på verifieringsknappen nedan. Om inte så är det risk att någon annan försöker avlyssna enheten och då vill du förmodligen trycka på svartlistsknappen istället.", + "State Key": "Lägesnyckel", + "Send Account Data": "Skicka kontodata", + "Explore Account Data": "Utforska kontodata", + "Toolbox": "Verktygslåda", + "Developer Tools": "Utvecklarverktyg", + "Unverify": "Ta bort verifiering", + "Verify...": "Verifiera...", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du har lagt till en ny enhet '%(displayName)s', som begär krypteringsnycklar.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Din overifierade enhet '%(displayName)s' begär krypteringsnycklar.", + "Start verification": "Starta verifiering", + "Share without verifying": "Dela utan att verifiera", + "Ignore request": "Ignorera begäran", + "Loading device info...": "Laddar enhetsinfo..." } From b9f597b75f1a816deece2e955bd68e0cda62f4be Mon Sep 17 00:00:00 2001 From: Szimszon Date: Wed, 23 May 2018 10:15:48 +0000 Subject: [PATCH 043/480] Translated using Weblate (Hungarian) Currently translated at 100.0% (1180 of 1180 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/hu/ --- src/i18n/strings/hu.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 6341b4468e..27363baf0f 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1175,5 +1175,9 @@ "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Szeretnél segíteni a Riot javításában analitikai adatok elküldésével? Ez sütit (cookie) használ. (Nézd meg a sütikről és titoktartási irányelvekről szóló leírást).", "Help improve Riot by sending usage data? This will use a cookie.": "Szeretnél segíteni a Riot javításában analitikai adatok elküldésével? Ez sütit (cookie) használ.", "Yes please": "Igen, kérlek", - "Muted Users": "Elnémított felhasználók" + "Muted Users": "Elnémított felhasználók", + "Warning: This widget might use cookies.": "Figyelmeztetés: Ez a kisalkalmazás sütiket (cookies) használhat.", + "Terms and Conditions": "Általános Szerződési Feltételek", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "A %(homeserverDomain)s szerver használatának folytatásához el kell olvasnod és el kell fogadnod az általános szerződési feltételeket.", + "Review terms and conditions": "Általános Szerződési Feltételek elolvasása" } From 94f7d1b2246613412af71d0f0da182de6512584b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20C?= Date: Wed, 23 May 2018 10:42:04 +0000 Subject: [PATCH 044/480] Translated using Weblate (French) Currently translated at 100.0% (1180 of 1180 strings) Translation: Riot Web/matrix-react-sdk Translate-URL: https://translate.riot.im/projects/riot-web/matrix-react-sdk/fr/ --- src/i18n/strings/fr.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 048dcd9d81..a08e5ee250 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1175,5 +1175,9 @@ "Help improve Riot by sending usage data? This will use a cookie. (See our cookie and privacy policies).": "Aider Riot à s'améliorer en envoyant des données d'utilisation ? Ceci utilisera un cookie. (Voir nos politiques de cookie et de confidentialité).", "Help improve Riot by sending usage data? This will use a cookie.": "Aider Riot à s'améliorer en envoyant des données d'utilisation ? Ceci utilisera un cookie.", "Yes please": "Oui, s'il vous plaît", - "Muted Users": "Utilisateurs ignorés" + "Muted Users": "Utilisateurs ignorés", + "Warning: This widget might use cookies.": "Avertissement : ce widget utilise peut-être des cookies.", + "Terms and Conditions": "Conditions générales", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Pour continuer à utiliser le serveur d'accueil %(homeserverDomain)s, vous devez lire et accepter nos conditions générales.", + "Review terms and conditions": "Voir les conditions générales" } From ba3dd0c87ad34433bcb5e9bfe59eca0bcb8bd865 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 23 May 2018 13:35:42 +0100 Subject: [PATCH 045/480] Refactor onOk to async function --- .../views/dialogs/DeactivateAccountDialog.js | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/components/views/dialogs/DeactivateAccountDialog.js b/src/components/views/dialogs/DeactivateAccountDialog.js index 87228b4733..f41f37e075 100644 --- a/src/components/views/dialogs/DeactivateAccountDialog.js +++ b/src/components/views/dialogs/DeactivateAccountDialog.js @@ -47,19 +47,17 @@ export default class DeactivateAccountDialog extends React.Component { }); } - _onOk() { + async _onOk() { // This assumes that the HS requires password UI auth // for this endpoint. In reality it could be any UI auth. this.setState({busy: true}); - MatrixClientPeg.get().deactivateAccount({ - type: 'm.login.password', - user: MatrixClientPeg.get().credentials.userId, - password: this._passwordField.value, - }).done(() => { - Analytics.trackEvent('Account', 'Deactivate Account'); - Lifecycle.onLoggedOut(); - this.props.onFinished(false); - }, (err) => { + try { + await MatrixClientPeg.get().deactivateAccount({ + type: 'm.login.password', + user: MatrixClientPeg.get().credentials.userId, + password: this._passwordField.value, + }); + } catch (err) { let errStr = _t('Unknown error'); // https://matrix.org/jira/browse/SYN-744 if (err.httpStatus == 401 || err.httpStatus == 403) { @@ -70,7 +68,11 @@ export default class DeactivateAccountDialog extends React.Component { busy: false, errStr: errStr, }); - }); + return; + } + Analytics.trackEvent('Account', 'Deactivate Account'); + Lifecycle.onLoggedOut(); + this.props.onFinished(false); } _onCancel() { From b1249899680f57448e94ca2df83d834a4c6e5a15 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 23 May 2018 16:33:32 +0100 Subject: [PATCH 046/480] Implement erasure option upon deactivation --- .../views/dialogs/DeactivateAccountDialog.js | 103 ++++++++++++++++-- src/i18n/strings/en_EN.json | 9 +- 2 files changed, 101 insertions(+), 11 deletions(-) diff --git a/src/components/views/dialogs/DeactivateAccountDialog.js b/src/components/views/dialogs/DeactivateAccountDialog.js index f41f37e075..104419f2ef 100644 --- a/src/components/views/dialogs/DeactivateAccountDialog.js +++ b/src/components/views/dialogs/DeactivateAccountDialog.js @@ -33,10 +33,21 @@ export default class DeactivateAccountDialog extends React.Component { this._onOk = this._onOk.bind(this); this._onCancel = this._onCancel.bind(this); this._onPasswordFieldChange = this._onPasswordFieldChange.bind(this); + this._onEraseFieldChange = this._onEraseFieldChange.bind(this); + + const deactivationPreferences = + MatrixClientPeg.get().getAccountData('im.riot.account_deactivation_preferences'); + + const shouldErase = ( + deactivationPreferences && + deactivationPreferences.getContent() && + deactivationPreferences.getContent().shouldErase + ) || false; this.state = { confirmButtonEnabled: false, busy: false, + shouldErase, errStr: null, }; } @@ -47,16 +58,54 @@ export default class DeactivateAccountDialog extends React.Component { }); } + _onEraseFieldChange(ev) { + this.setState({ + shouldErase: ev.target.checked, + }); + } + async _onOk() { - // This assumes that the HS requires password UI auth - // for this endpoint. In reality it could be any UI auth. this.setState({busy: true}); + + // Before we deactivate the account insert an event into + // the user's account data indicating that they wish to be + // erased from the homeserver. + // + // We do this because the API for erasing after deactivation + // might not be supported by the connected homeserver. Leaving + // an indication in account data is only best-effort, and + // in the worse case, the HS maintainer would have to run a + // script to erase deactivated accounts that have shouldErase + // set to true in im.riot.account_deactivation_preferences. + // + // Note: The preferences are scoped to Riot, hence the + // "im.riot..." event type. + // + // Note: This may have already been set on previous attempts + // where, for example, the user entered the wrong password. + // This is fine because the UI always indicates the preference + // prior to us calling `deactivateAccount`. try { - await MatrixClientPeg.get().deactivateAccount({ + await MatrixClientPeg.get().setAccountData('im.riot.account_deactivation_preferences', { + shouldErase: this.state.shouldErase, + }); + } catch (err) { + this.setState({ + busy: false, + errStr: _t('Failed to indicate account erasure'), + }); + return; + } + + try { + // This assumes that the HS requires password UI auth + // for this endpoint. In reality it could be any UI auth. + const auth = { type: 'm.login.password', user: MatrixClientPeg.get().credentials.userId, password: this._passwordField.value, - }); + }; + await MatrixClientPeg.get().deactivateAccount(auth, this.state.shouldErase); } catch (err) { let errStr = _t('Unknown error'); // https://matrix.org/jira/browse/SYN-744 @@ -70,6 +119,7 @@ export default class DeactivateAccountDialog extends React.Component { }); return; } + Analytics.trackEvent('Account', 'Deactivate Account'); Lifecycle.onLoggedOut(); this.props.onFinished(false); @@ -107,21 +157,56 @@ export default class DeactivateAccountDialog extends React.Component { onFinished={this.props.onFinished} onEnterPressed={this.onOk} titleClass="danger" - title={_t("Deactivate Account")}> + title={_t("Deactivate Account")} + >
    -

    { _t("This will make your account permanently unusable. You will not be able to re-register the same user ID.") }

    +

    { _t( + "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 action is irreversible.", + {}, + { b: (sub) => { sub } }, + ) }

    -

    { _t("This action is irreversible.") }

    +

    { _t( + "Deactivating your account does not by default erase messages you have sent. " + + "If you would like to erase your messages, please tick the box below.", + {}, + { b: (sub) => { sub } }, + ) }

    -

    { _t("To continue, please enter your password.") }

    +

    { _t( + "Message visibility in Matrix is similar to email. " + + "Erasing your messages means that messages have you sent will not be shared with " + + "any new or unregistered users, but registered users who already had access to " + + "these messages will still have access to their copy.", + ) }

    -

    { _t("Password") }:

    +

    { _t("To continue, please enter your password:") }

    {this._passwordField = e;}} className={passwordBoxClass} /> + +

    + +

    + { error }
    diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 7df8ae2161..a384a7c212 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -781,11 +781,16 @@ "Advanced options": "Advanced options", "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", "This setting cannot be changed later!": "This setting cannot be changed later!", + "Failed to indicate account erasure": "Failed to indicate account erasure", "Unknown error": "Unknown error", "Incorrect password": "Incorrect password", "Deactivate Account": "Deactivate Account", - "This will make your account permanently unusable. You will not be able to re-register the same user ID.": "This will make your account permanently unusable. You will not be able to re-register the same user ID.", - "This action is irreversible.": "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 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 action is irreversible.", + "Deactivating your account does not by default erase messages you have sent. If you would like to erase your messages, please tick the box below.": "Deactivating your account does not by default erase messages you have sent. If you would like to erase your messages, please tick the box below.", + "Message visibility in Matrix is similar to email. Erasing your messages means that messages have you sent will not be shared with any new or unregistered users, but registered users who already had access to these messages will still have access to their copy.": "Message visibility in Matrix is similar to email. Erasing your messages means that messages have you sent will not be shared with any new or unregistered users, but registered users who already had access to these messages will still have access to their copy.", + "To continue, please enter your password:": "To continue, please enter your password:", + "password": "password", + "Please erase all messages I have sent when my account is deactivated. (Warning: this will cause future users to see an incomplete view of conversations, which is a bad experience).": "Please erase all messages I have sent when my account is deactivated. (Warning: this will cause future users to see an incomplete view of conversations, which is a bad experience).", "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", "Device name": "Device name", "Device key": "Device key", From 9f9cde12cead6ca442a480a694417655c389e8ec Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 23 May 2018 17:18:33 +0100 Subject: [PATCH 047/480] Make devTools styling more consistent and easier to edit event data. --- res/css/views/dialogs/_DevtoolsDialog.scss | 18 ++++++++++++++++-- src/components/views/dialogs/DevtoolsDialog.js | 10 +++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/res/css/views/dialogs/_DevtoolsDialog.scss b/res/css/views/dialogs/_DevtoolsDialog.scss index 8918373ecf..a8e25bb08b 100644 --- a/res/css/views/dialogs/_DevtoolsDialog.scss +++ b/res/css/views/dialogs/_DevtoolsDialog.scss @@ -14,8 +14,18 @@ See the License for the specific language governing permissions and limitations under the License. */ +.mx_DevTools_content { + margin: 10px 0; +} + .mx_DevTools_RoomStateExplorer_button, .mx_DevTools_RoomStateExplorer_query { margin-bottom: 10px; + max-width: 684px; + width: 100%; +} + +.mx_DevTools_LabalCell { + font-weight: bold; } .mx_DevTools_label_left { @@ -38,7 +48,6 @@ limitations under the License. .mx_DevTools_inputLabelCell { - padding-bottom: 21px; display: table-cell; font-weight: bold; padding-right: 24px; @@ -46,7 +55,6 @@ limitations under the License. .mx_DevTools_inputCell { display: table-cell; - padding-bottom: 21px; width: 240px; } @@ -62,6 +70,12 @@ limitations under the License. font-size: 16px; } +.mx_DevTools_textarea { + font-size: 12px; + min-height: 250px; + width: 100%; +} + .mx_DevTools_tgl { display: none; diff --git a/src/components/views/dialogs/DevtoolsDialog.js b/src/components/views/dialogs/DevtoolsDialog.js index 1d3c8ecc09..f2a969ef41 100644 --- a/src/components/views/dialogs/DevtoolsDialog.js +++ b/src/components/views/dialogs/DevtoolsDialog.js @@ -132,17 +132,17 @@ class SendCustomEvent extends GenericEditor { } return
    -
    +
    { this.textInput('eventType', _t('Event Type')) } { this.state.isStateEvent && this.textInput('stateKey', _t('State Key')) }
    -
    +
    -