Compare commits
40 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 70febe3109 | |||
| 9ed26c66a6 | |||
| 6d124e6c28 | |||
| c8a0d94b61 | |||
| cf448f1f0a | |||
| ff2fe80537 | |||
| 2ad02e4feb | |||
| fcdda7a956 | |||
| eaa46d1794 | |||
| 0f633d922e | |||
| 5a5be814b6 | |||
| bbfbef7f24 | |||
| da0afeda9b | |||
| 7018a498a7 | |||
| 579650a1dd | |||
| a7abd8599e | |||
| 3309b2ec55 | |||
| 151dd5709c | |||
| 21c862fe2b | |||
| 3b434a70d2 | |||
| acfd7252bd | |||
| 4164df647c | |||
| 2205f0611e | |||
| 0410a6b3be | |||
| 8534328921 | |||
| 5108697ac8 | |||
| e608c92506 | |||
| e5a4092adc | |||
| 3ed750a9ab | |||
| 7f8326e245 | |||
| c71b8d61c4 | |||
| 7bdb8104dc | |||
| ae8595690d | |||
| 23622db74b | |||
| cbe0cd12af | |||
| cb94a89411 | |||
| 4ad02dc202 | |||
| 5be2df1fb2 | |||
| e6d4f09099 | |||
| bc1cad01c4 |
+1
-1
@@ -8,7 +8,7 @@ module.exports = {
|
||||
"quotes": "off",
|
||||
},
|
||||
"overrides": [{
|
||||
"files": ["src/**/*.{ts, tsx}"],
|
||||
"files": ["src/**/*.{ts,tsx}"],
|
||||
"extends": ["matrix-org/ts", "matrix-org/react"],
|
||||
"env": {
|
||||
"browser": true,
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
Changes in [1.7.6](https://github.com/vector-im/element-web/releases/tag/v1.7.6) (2020-09-14)
|
||||
=============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.6-rc.1...v1.7.6)
|
||||
|
||||
* Upgrade to React SDK 3.4.0 and JS SDK 8.3.0
|
||||
|
||||
Changes in [1.7.6-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.6-rc.1) (2020-09-09)
|
||||
=======================================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.5...v1.7.6-rc.1)
|
||||
|
||||
* Upgrade to React SDK 3.4.0-rc.1 and JS SDK 8.3.0-rc.1
|
||||
* Update from Weblate
|
||||
[\#15125](https://github.com/vector-im/element-web/pull/15125)
|
||||
* Support usage of Jitsi widgets with "openidtoken-jwt" auth
|
||||
[\#15114](https://github.com/vector-im/element-web/pull/15114)
|
||||
* Fix eslint ts override tsx matching and delint
|
||||
[\#15064](https://github.com/vector-im/element-web/pull/15064)
|
||||
* Add testing to review guidelines
|
||||
[\#15050](https://github.com/vector-im/element-web/pull/15050)
|
||||
|
||||
Changes in [1.7.5](https://github.com/vector-im/element-web/releases/tag/v1.7.5) (2020-09-01)
|
||||
=============================================================================================
|
||||
[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.5-rc.1...v1.7.5)
|
||||
|
||||
@@ -14,6 +14,7 @@ When reviewing code, here are some things we look for and also things we avoid:
|
||||
* Performance
|
||||
* Accessibility
|
||||
* Security
|
||||
* Quality via automated and manual testing
|
||||
* Comments and documentation where needed
|
||||
* Sharing knowledge of different areas among the team
|
||||
* Ensuring it's something we're comfortable maintaining for the long term
|
||||
@@ -34,6 +35,7 @@ When reviewing code, here are some things we look for and also things we avoid:
|
||||
* Reviewers should be explicit about required versus optional changes
|
||||
* Reviews are conversations and the PR author should feel comfortable
|
||||
discussing and pushing back on changes before making them
|
||||
* Reviewers are encouraged to ask for tests where they believe it is reasonable
|
||||
* Core team should lead by example through their tone and language
|
||||
* Take the time to thank and point out good code changes
|
||||
* Using softer language like "please" and "what do you think?" goes a long way
|
||||
|
||||
+4
-3
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "riot-web",
|
||||
"productName": "Riot",
|
||||
"version": "1.7.5",
|
||||
"version": "1.7.6",
|
||||
"description": "A feature-rich client for Matrix.org",
|
||||
"author": "New Vector Ltd.",
|
||||
"repository": {
|
||||
@@ -59,8 +59,9 @@
|
||||
"browser-request": "^0.3.3",
|
||||
"gfm.css": "^1.1.2",
|
||||
"highlight.js": "^9.13.1",
|
||||
"matrix-js-sdk": "8.2.0",
|
||||
"matrix-react-sdk": "3.3.0",
|
||||
"jsrsasign": "^9.1.5",
|
||||
"matrix-js-sdk": "8.3.0",
|
||||
"matrix-react-sdk": "3.4.0",
|
||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
|
||||
"prop-types": "^15.7.2",
|
||||
"react": "^16.9.0",
|
||||
|
||||
@@ -78,17 +78,26 @@ const CompatibilityView: React.FC<IProps> = ({ onAccept }) => {
|
||||
<div>
|
||||
<h2 id="step2_heading">Use Element on mobile</h2>
|
||||
<p><strong>iOS</strong> (iPhone or iPad)</p>
|
||||
<a href="https://apps.apple.com/app/vector/id1083446067" target="_blank"
|
||||
className="mx_ClearDecoration">
|
||||
<a
|
||||
href="https://apps.apple.com/app/vector/id1083446067"
|
||||
target="_blank"
|
||||
className="mx_ClearDecoration"
|
||||
>
|
||||
<img height="48" src="themes/element/img/download/apple.svg" alt="Apple App Store" />
|
||||
</a>
|
||||
<p className="mx_Spacer"><strong>Android</strong></p>
|
||||
<a href="https://play.google.com/store/apps/details?id=im.vector.app" target="_blank"
|
||||
className="mx_ClearDecoration">
|
||||
<a
|
||||
href="https://play.google.com/store/apps/details?id=im.vector.app"
|
||||
target="_blank"
|
||||
className="mx_ClearDecoration"
|
||||
>
|
||||
<img height="48" src="themes/element/img/download/google.svg" alt="Google Play Store" />
|
||||
</a>
|
||||
<a href="https://f-droid.org/repository/browse/?fdid=im.vector.app" target="_blank"
|
||||
className="mx_ClearDecoration">
|
||||
<a
|
||||
href="https://f-droid.org/repository/browse/?fdid=im.vector.app"
|
||||
target="_blank"
|
||||
className="mx_ClearDecoration"
|
||||
>
|
||||
<img height="48" src="themes/element/img/download/fdroid.svg" alt="F-Droid" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"Invalid JSON": "Ungültiges JSON",
|
||||
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen",
|
||||
"Open user settings": "Öffne Nutzer-Einstellungen",
|
||||
"Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisieren Sie die Seite, um es erneut zu versuchen.",
|
||||
"Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisiere die Seite, um es erneut zu versuchen.",
|
||||
"Missing indexeddb worker script!": "Fehlendes indexeddb Worker-Skript!",
|
||||
"Previous/next recently visited room or community": "Vorheriger/nächster kürzlich besuchter Raum oder Community",
|
||||
"Unsupported browser": "Nicht unterstützter Browser",
|
||||
@@ -32,5 +32,5 @@
|
||||
"Open": "Öffnen",
|
||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s verwendet erweiterte Browserfunktionen, die von Ihrem aktuellen Browser nicht unterstützt werden.",
|
||||
"Your browser can't run %(brand)s": "Dein Browser kann %(brand)s nicht ausführen",
|
||||
"Powered by Matrix": "Betrieben von Matrix"
|
||||
"Powered by Matrix": "Betrieben mit Matrix"
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"powered by Matrix": "con el poder de Matrix",
|
||||
"You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.",
|
||||
"Welcome to Element": "Bienvenido a Element",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas y colaboración con el poder de [matrix]",
|
||||
"Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas & colaboración impulsada por [matrix]",
|
||||
"Sign In": "Iniciar sesión",
|
||||
"Create Account": "Crear cuenta",
|
||||
"Explore rooms": "Explorar salas",
|
||||
@@ -15,10 +15,10 @@
|
||||
"Invalid JSON": "JSON inválido",
|
||||
"Open user settings": "Abrir opciones de usuario",
|
||||
"Go to your browser to complete Sign In": "Abre tu navegador web para completar el registro",
|
||||
"Missing indexeddb worker script!": "¡Worker script “indexeddb” faltante!",
|
||||
"Missing indexeddb worker script!": "Falta el script de trabajo indexeddb!",
|
||||
"Unable to load config file: please refresh the page to try again.": "No se ha podido cargar el archivo de configuración. Recarga la página para intentar nuevamente.",
|
||||
"Previous/next recently visited room or community": "Anterior/siguiente sala o comunidad visitada recientemente",
|
||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)",
|
||||
"%(brand)s Desktop (%(platformName)s)": "%(brand)s Escritorio (%(platformName)s)",
|
||||
"%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)",
|
||||
"Unsupported browser": "Navegador no soportado",
|
||||
"Please install <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, or <safariLink>Safari</safariLink> for the best experience.": "Por favor, instale <chromeLink>Chrome</chromeLink>, <firefoxLink>Firefox</firefoxLink>, o <safariLink>Safari</safariLink> para la mejor experiencia.",
|
||||
@@ -26,10 +26,11 @@
|
||||
"I understand the risks and wish to continue": "Entiendo los riesgos y deseo continuar",
|
||||
"Go to element.io": "Ir a element.io",
|
||||
"Failed to start": "Fallo al iniciar",
|
||||
"Your Element is misconfigured": "Su Element está mal configurado",
|
||||
"Your Element is misconfigured": "Tu elemento está mal configurado",
|
||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Su configuración de Element contiene JSON inválido. Por favor corríjalo e inténtelo de nuevo.",
|
||||
"Download Completed": "Descarga completada",
|
||||
"Open": "Abrir",
|
||||
"Your browser can't run %(brand)s": "Su navegador es compatible con %(brand)s",
|
||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza funciones avanzadas no soportadas por su navegador."
|
||||
"Your browser can't run %(brand)s": "Su navegador es incompatible con %(brand)s",
|
||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funciones avanzadas que su navegador actual no soporta.",
|
||||
"Powered by Matrix": "Desarrollado por Matrix"
|
||||
}
|
||||
|
||||
@@ -31,5 +31,6 @@
|
||||
"Your Element is misconfigured": "Votre Element est mal configuré",
|
||||
"Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuration de votre Element contient du JSON invalide. Veuillez corriger le problème et recharger la page.",
|
||||
"Your browser can't run %(brand)s": "Votre navigateur ne peut pas exécuter %(brand)s",
|
||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne supporte pas."
|
||||
"%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne supporte pas.",
|
||||
"Powered by Matrix": "Propulsé par Matrix"
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
import olmWasmPath from "olm/olm.wasm";
|
||||
import Olm from 'olm';
|
||||
@@ -127,6 +128,7 @@ export async function loadSkin() {
|
||||
import(
|
||||
/* webpackChunkName: "riot-web-component-index" */
|
||||
/* webpackPreload: true */
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore - this module is generated so may fail lint
|
||||
"../component-index"),
|
||||
]);
|
||||
|
||||
@@ -11,7 +11,9 @@
|
||||
<div class="joinConferencePrompt">
|
||||
<!-- TODO: i18n -->
|
||||
<h2>Jitsi Video Conference</h2>
|
||||
<button type="button" id="joinButton">Join Conference</button>
|
||||
<div id="widgetActionContainer">
|
||||
<button type="button" id="joinButton">Join Conference</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+102
-13
@@ -18,7 +18,10 @@ limitations under the License.
|
||||
require("./index.scss");
|
||||
|
||||
import * as qs from 'querystring';
|
||||
import { Capability, WidgetApi } from "matrix-react-sdk/src/widgets/WidgetApi";
|
||||
import {Capability, WidgetApi} from 'matrix-react-sdk/src/widgets/WidgetApi';
|
||||
import {KJUR} from 'jsrsasign';
|
||||
|
||||
const JITSI_OPENIDTOKEN_JWT_AUTH = 'openidtoken-jwt';
|
||||
|
||||
// Dev note: we use raw JS without many dependencies to reduce bundle size.
|
||||
// We do not need all of React to render a Jitsi conference.
|
||||
@@ -33,6 +36,8 @@ let conferenceId: string;
|
||||
let displayName: string;
|
||||
let avatarUrl: string;
|
||||
let userId: string;
|
||||
let jitsiAuth: string;
|
||||
let roomId: string;
|
||||
|
||||
let widgetApi: WidgetApi;
|
||||
|
||||
@@ -69,40 +74,118 @@ let widgetApi: WidgetApi;
|
||||
displayName = qsParam('displayName', true);
|
||||
avatarUrl = qsParam('avatarUrl', true); // http not mxc
|
||||
userId = qsParam('userId');
|
||||
jitsiAuth = qsParam('auth', true);
|
||||
roomId = qsParam('roomId', true);
|
||||
|
||||
if (widgetApi) {
|
||||
await widgetApi.waitReady();
|
||||
await widgetApi.setAlwaysOnScreen(false); // start off as detachable from the screen
|
||||
|
||||
// See https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification
|
||||
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
|
||||
// Request credentials, give callback to continue when received
|
||||
widgetApi.requestOpenIDCredentials(credentialsResponseCallback);
|
||||
} else {
|
||||
enableJoinButton();
|
||||
}
|
||||
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/riot-web/issues/12795)
|
||||
} else {
|
||||
enableJoinButton();
|
||||
}
|
||||
|
||||
// TODO: register widgetApi listeners for PTT controls (https://github.com/vector-im/riot-web/issues/12795)
|
||||
|
||||
document.getElementById("joinButton").onclick = () => joinConference();
|
||||
} catch (e) {
|
||||
console.error("Error setting up Jitsi widget", e);
|
||||
document.getElementById("jitsiContainer").innerText = "Failed to load Jitsi widget";
|
||||
switchVisibleContainers();
|
||||
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
|
||||
}
|
||||
})();
|
||||
|
||||
/**
|
||||
* Enable or show error depending on what the credentials response is.
|
||||
*/
|
||||
function credentialsResponseCallback() {
|
||||
if (widgetApi.openIDCredentials) {
|
||||
console.info('Successfully got OpenID credentials.');
|
||||
enableJoinButton();
|
||||
} else {
|
||||
console.warn('OpenID credentials request was blocked by user.');
|
||||
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
|
||||
}
|
||||
}
|
||||
|
||||
function enableJoinButton() {
|
||||
document.getElementById("joinButton").onclick = () => joinConference();
|
||||
}
|
||||
|
||||
function switchVisibleContainers() {
|
||||
inConference = !inConference;
|
||||
document.getElementById("jitsiContainer").style.visibility = inConference ? 'unset' : 'hidden';
|
||||
document.getElementById("joinButtonContainer").style.visibility = inConference ? 'hidden' : 'unset';
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a JWT token fot jitsi openidtoken-jwt auth
|
||||
*
|
||||
* See https://github.com/matrix-org/prosody-mod-auth-matrix-user-verification
|
||||
*/
|
||||
function createJWTToken() {
|
||||
// Header
|
||||
const header = {alg: 'HS256', typ: 'JWT'};
|
||||
// Payload
|
||||
const payload = {
|
||||
// As per Jitsi token auth, `iss` needs to be set to something agreed between
|
||||
// JWT generating side and Prosody config. Since we have no configuration for
|
||||
// the widgets, we can't set one anywhere. Using the Jitsi domain here probably makes sense.
|
||||
iss: jitsiDomain,
|
||||
sub: jitsiDomain,
|
||||
aud: `https://${jitsiDomain}`,
|
||||
room: "*",
|
||||
context: {
|
||||
matrix: {
|
||||
token: widgetApi.openIDCredentials.accessToken,
|
||||
room_id: roomId,
|
||||
},
|
||||
user: {
|
||||
avatar: avatarUrl,
|
||||
name: displayName,
|
||||
},
|
||||
},
|
||||
};
|
||||
// Sign JWT
|
||||
// The secret string here is irrelevant, we're only using the JWT
|
||||
// to transport data to Prosody in the Jitsi stack.
|
||||
return KJUR.jws.JWS.sign(
|
||||
'HS256',
|
||||
JSON.stringify(header),
|
||||
JSON.stringify(payload),
|
||||
'notused',
|
||||
);
|
||||
}
|
||||
|
||||
function joinConference() { // event handler bound in HTML
|
||||
let jwt;
|
||||
if (jitsiAuth === JITSI_OPENIDTOKEN_JWT_AUTH) {
|
||||
if (!widgetApi.openIDCredentials || !widgetApi.openIDCredentials.accessToken) {
|
||||
// We've failing to get a token, don't try to init conference
|
||||
console.warn('Expected to have an OpenID credential, cannot initialize widget.');
|
||||
document.getElementById("widgetActionContainer").innerText = "Failed to load Jitsi widget";
|
||||
return;
|
||||
}
|
||||
jwt = createJWTToken();
|
||||
}
|
||||
|
||||
switchVisibleContainers();
|
||||
|
||||
// noinspection JSIgnoredPromiseFromCall
|
||||
if (widgetApi) widgetApi.setAlwaysOnScreen(true); // ignored promise because we don't care if it works
|
||||
if (widgetApi) {
|
||||
// ignored promise because we don't care if it works
|
||||
// noinspection JSIgnoredPromiseFromCall
|
||||
widgetApi.setAlwaysOnScreen(true);
|
||||
}
|
||||
|
||||
console.warn(
|
||||
"[Jitsi Widget] The next few errors about failing to parse URL parameters are fine if " +
|
||||
"they mention 'external_api' or 'jitsi' in the stack. They're just Jitsi Meet trying to parse " +
|
||||
"our fragment values and not recognizing the options.",
|
||||
);
|
||||
const meetApi = new JitsiMeetExternalAPI(jitsiDomain, {
|
||||
const options = {
|
||||
width: "100%",
|
||||
height: "100%",
|
||||
parentNode: document.querySelector("#jitsiContainer"),
|
||||
@@ -113,7 +196,10 @@ function joinConference() { // event handler bound in HTML
|
||||
MAIN_TOOLBAR_BUTTONS: [],
|
||||
VIDEO_LAYOUT_FIT: "height",
|
||||
},
|
||||
});
|
||||
jwt: jwt,
|
||||
};
|
||||
|
||||
const meetApi = new JitsiMeetExternalAPI(jitsiDomain, options);
|
||||
if (displayName) meetApi.executeCommand("displayName", displayName);
|
||||
if (avatarUrl) meetApi.executeCommand("avatarUrl", avatarUrl);
|
||||
if (userId) meetApi.executeCommand("email", userId);
|
||||
@@ -121,8 +207,11 @@ function joinConference() { // event handler bound in HTML
|
||||
meetApi.on("readyToClose", () => {
|
||||
switchVisibleContainers();
|
||||
|
||||
// noinspection JSIgnoredPromiseFromCall
|
||||
if (widgetApi) widgetApi.setAlwaysOnScreen(false); // ignored promise because we don't care if it works
|
||||
if (widgetApi) {
|
||||
// ignored promise because we don't care if it works
|
||||
// noinspection JSIgnoredPromiseFromCall
|
||||
widgetApi.setAlwaysOnScreen(false);
|
||||
}
|
||||
|
||||
document.getElementById("jitsiContainer").innerHTML = "";
|
||||
});
|
||||
|
||||
@@ -27,7 +27,7 @@ import BaseEventIndexManager, {
|
||||
MatrixEvent,
|
||||
MatrixProfile,
|
||||
SearchArgs,
|
||||
SearchResult
|
||||
SearchResult,
|
||||
} from 'matrix-react-sdk/src/indexing/BaseEventIndexManager';
|
||||
import dis from 'matrix-react-sdk/src/dispatcher/dispatcher';
|
||||
import {_t, _td} from 'matrix-react-sdk/src/languageHandler';
|
||||
@@ -99,7 +99,7 @@ interface IPCPayload {
|
||||
|
||||
class SeshatIndexManager extends BaseEventIndexManager {
|
||||
private pendingIpcCalls: Record<number, { resolve, reject }> = {};
|
||||
private nextIpcCallId: number = 0;
|
||||
private nextIpcCallId = 0;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
@@ -216,7 +216,7 @@ class SeshatIndexManager extends BaseEventIndexManager {
|
||||
export default class ElectronPlatform extends VectorBasePlatform {
|
||||
private eventIndexManager: BaseEventIndexManager = new SeshatIndexManager();
|
||||
private pendingIpcCalls: Record<number, { resolve, reject }> = {};
|
||||
private nextIpcCallId: number = 0;
|
||||
private nextIpcCallId = 0;
|
||||
// this is the opaque token we pass to the HS which when we get it in our callback we can resolve to a profile
|
||||
private ssoID: string = randomString(32);
|
||||
|
||||
|
||||
@@ -3160,15 +3160,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
|
||||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
|
||||
create-react-class@^15.6.3:
|
||||
version "15.6.3"
|
||||
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
|
||||
integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
|
||||
dependencies:
|
||||
fbjs "^0.8.9"
|
||||
loose-envify "^1.3.1"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
|
||||
version "6.0.5"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||
@@ -4688,7 +4679,7 @@ fbjs@0.1.0-alpha.7:
|
||||
promise "^7.0.3"
|
||||
whatwg-fetch "^0.9.0"
|
||||
|
||||
fbjs@^0.8.4, fbjs@^0.8.9:
|
||||
fbjs@^0.8.4:
|
||||
version "0.8.17"
|
||||
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
|
||||
integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
|
||||
@@ -6914,6 +6905,11 @@ jsprim@^1.2.2:
|
||||
json-schema "0.2.3"
|
||||
verror "1.10.0"
|
||||
|
||||
jsrsasign@^9.1.5:
|
||||
version "9.1.5"
|
||||
resolved "https://registry.yarnpkg.com/jsrsasign/-/jsrsasign-9.1.5.tgz#fe286425d2c05b2d0865d24ded53e34b12abd2ca"
|
||||
integrity sha512-iJLF8FvZHlwyQudrRtQomHj1HdPAcM8QSRTt0FJo8a6iFgaGCpKUrE7lWyELpAjrFs8jUC/Azc0vfhlj3yqHPQ==
|
||||
|
||||
jsx-ast-utils@^2.2.3:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.3.0.tgz#edd727794ea284d7fda575015ed1b0cde0289ab6"
|
||||
@@ -7186,7 +7182,7 @@ longest-streak@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
|
||||
integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
|
||||
|
||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
|
||||
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
|
||||
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
||||
@@ -7312,10 +7308,10 @@ mathml-tag-names@^2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
|
||||
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
||||
|
||||
matrix-js-sdk@8.2.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.2.0.tgz#6fbdadcdc563e41671d407d772a4d52ec8adc480"
|
||||
integrity sha512-yKF/H1Matgf4b7bfa/gOPNcgMEujogC1r89Au8ZYKfv3dmNdJupE9ktdGJ28QVeKIyF5Ew1stLI4MdGWT1gYPw==
|
||||
matrix-js-sdk@8.3.0:
|
||||
version "8.3.0"
|
||||
resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-8.3.0.tgz#a57a6d071619c24b6e8501ae21fa4d21f6bbd052"
|
||||
integrity sha512-ndKedUtZt72/4KWjlMevNwNDGfhPTOn/i4U6Iv1ZEfm7uZfbp5u3hVIyr8tyOiVuvMIxmcTajRdwSlRsNtYFkA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.8.3"
|
||||
another-json "^0.2.0"
|
||||
@@ -7335,10 +7331,10 @@ matrix-mock-request@^1.2.3:
|
||||
bluebird "^3.5.0"
|
||||
expect "^1.20.2"
|
||||
|
||||
matrix-react-sdk@3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.3.0.tgz#42749f59151a1fbd8be81d917b7f2dfc406a4ad5"
|
||||
integrity sha512-042QFASwbYYX69TQTzzSnRyaD4NXiME/Unn+GmUfWJBnGieuNaYb7ZFxVdUuPpks2UfHJF6xswsr1LpKWi92IQ==
|
||||
matrix-react-sdk@3.4.0:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/matrix-react-sdk/-/matrix-react-sdk-3.4.0.tgz#418cd8f0f6c2e884189272e5813136a2ab90ce4c"
|
||||
integrity sha512-rSKRxo1NmgXKEsGUfU2vmAqQvvKbRHd8hcY6WVh/5YydiGuXdKf7w8cdpzv8LMU+Le9QUf+3hWOdZ8p++gOymA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.10.5"
|
||||
await-lock "^2.0.1"
|
||||
@@ -7348,7 +7344,6 @@ matrix-react-sdk@3.3.0:
|
||||
classnames "^2.2.6"
|
||||
commonmark "^0.29.1"
|
||||
counterpart "^0.18.6"
|
||||
create-react-class "^15.6.3"
|
||||
diff-dom "^4.1.6"
|
||||
diff-match-patch "^1.0.5"
|
||||
emojibase-data "^5.0.1"
|
||||
@@ -7366,7 +7361,7 @@ matrix-react-sdk@3.3.0:
|
||||
is-ip "^2.0.0"
|
||||
linkifyjs "^2.1.9"
|
||||
lodash "^4.17.19"
|
||||
matrix-js-sdk "8.2.0"
|
||||
matrix-js-sdk "8.3.0"
|
||||
minimist "^1.2.5"
|
||||
pako "^1.0.11"
|
||||
parse5 "^5.1.1"
|
||||
@@ -7382,6 +7377,7 @@ matrix-react-sdk@3.3.0:
|
||||
react-focus-lock "^2.4.1"
|
||||
react-transition-group "^4.4.1"
|
||||
resize-observer-polyfill "^1.5.1"
|
||||
rfc4648 "^1.4.0"
|
||||
sanitize-html "^1.27.1"
|
||||
tar-js "^0.3.0"
|
||||
text-encoding-utf-8 "^1.0.2"
|
||||
@@ -10291,6 +10287,11 @@ retry@^0.12.0:
|
||||
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
|
||||
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
|
||||
|
||||
rfc4648@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rfc4648/-/rfc4648-1.4.0.tgz#c75b2856ad2e2d588b6ddb985d556f1f7f2a2abd"
|
||||
integrity sha512-3qIzGhHlMHA6PoT6+cdPKZ+ZqtxkIvg8DZGKA5z6PQ33/uuhoJ+Ws/D/J9rXW6gXodgH8QYlz2UCl+sdUDmNIg==
|
||||
|
||||
rgb-regex@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
|
||||
|
||||
Reference in New Issue
Block a user