+ {
+ _t('The signing key you provided matches the signing key you received ' +
+ 'from %(userId)s\'s device %(deviceId)s. Device marked as verified.',
+ {userId, deviceId})
+ }
+
+
,
+ });
+ })());
}
}
return reject(this.getUsage());
diff --git a/src/SlateComposerHistoryManager.js b/src/SlateComposerHistoryManager.js
deleted file mode 100644
index 948dcf64ff..0000000000
--- a/src/SlateComposerHistoryManager.js
+++ /dev/null
@@ -1,86 +0,0 @@
-//@flow
-/*
-Copyright 2017 Aviral Dasgupta
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-import {Value} from 'slate';
-
-import _clamp from 'lodash/clamp';
-
-type MessageFormat = 'rich' | 'markdown';
-
-class HistoryItem {
- // We store history items in their native format to ensure history is accurate
- // and then convert them if our RTE has subsequently changed format.
- value: Value;
- format: MessageFormat = 'rich';
-
- constructor(value: ?Value, format: ?MessageFormat) {
- this.value = value;
- this.format = format;
- }
-
- static fromJSON(obj: Object): HistoryItem {
- return new HistoryItem(
- Value.fromJSON(obj.value),
- obj.format,
- );
- }
-
- toJSON(): Object {
- return {
- value: this.value.toJSON(),
- format: this.format,
- };
- }
-}
-
-export default class SlateComposerHistoryManager {
- history: Array = [];
- prefix: string;
- lastIndex: number = 0; // used for indexing the storage
- currentIndex: number = 0; // used for indexing the loaded validated history Array
-
- constructor(roomId: string, prefix: string = 'mx_composer_history_') {
- this.prefix = prefix + roomId;
-
- // TODO: Performance issues?
- let item;
- for (; item = sessionStorage.getItem(`${this.prefix}[${this.currentIndex}]`); this.currentIndex++) {
- try {
- this.history.push(
- HistoryItem.fromJSON(JSON.parse(item)),
- );
- } catch (e) {
- console.warn("Throwing away unserialisable history", e);
- }
- }
- this.lastIndex = this.currentIndex;
- // reset currentIndex to account for any unserialisable history
- this.currentIndex = this.history.length;
- }
-
- save(value: Value, format: MessageFormat) {
- const item = new HistoryItem(value, format);
- this.history.push(item);
- this.currentIndex = this.history.length;
- sessionStorage.setItem(`${this.prefix}[${this.lastIndex++}]`, JSON.stringify(item.toJSON()));
- }
-
- getItem(offset: number): ?HistoryItem {
- this.currentIndex = _clamp(this.currentIndex + offset, 0, this.history.length - 1);
- return this.history[this.currentIndex];
- }
-}
diff --git a/src/Terms.js b/src/Terms.js
index 14a7ccb65e..6ae89f9a2c 100644
--- a/src/Terms.js
+++ b/src/Terms.js
@@ -16,8 +16,8 @@ limitations under the License.
import classNames from 'classnames';
-import MatrixClientPeg from './MatrixClientPeg';
-import sdk from './';
+import {MatrixClientPeg} from './MatrixClientPeg';
+import * as sdk from './';
import Modal from './Modal';
export class TermsNotSignedError extends Error {}
diff --git a/src/TextForEvent.js b/src/TextForEvent.js
index c3c8396e26..a0d088affb 100644
--- a/src/TextForEvent.js
+++ b/src/TextForEvent.js
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from './MatrixClientPeg';
+import {MatrixClientPeg} from './MatrixClientPeg';
import CallHandler from './CallHandler';
import { _t } from './languageHandler';
import * as Roles from './Roles';
@@ -473,7 +473,7 @@ function textForPowerEvent(event) {
}
function textForPinnedEvent(event) {
- const senderName = event.getSender();
+ const senderName = event.sender ? event.sender.name : event.getSender();
return _t("%(senderName)s changed the pinned messages for the room.", {senderName});
}
@@ -620,10 +620,8 @@ for (const evType of ALL_RULE_TYPES) {
stateHandlers[evType] = textForMjolnirEvent;
}
-module.exports = {
- textForEvent: function(ev) {
- const handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];
- if (handler) return handler(ev);
- return '';
- },
-};
+export function textForEvent(ev) {
+ const handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];
+ if (handler) return handler(ev);
+ return '';
+}
diff --git a/src/Tinter.js b/src/Tinter.js
index de9ae94097..24a4d25a00 100644
--- a/src/Tinter.js
+++ b/src/Tinter.js
@@ -143,10 +143,14 @@ class Tinter {
* over time then the best bet is to register a single callback for the
* entire set.
*
+ * To ensure the tintable work happens at least once, it is also called as
+ * part of registration.
+ *
* @param {Function} tintable Function to call when the tint changes.
*/
registerTintable(tintable) {
this.tintables.push(tintable);
+ tintable();
}
getKeyRgb() {
diff --git a/src/Unread.js b/src/Unread.js
index d5c5993974..ca713b05e4 100644
--- a/src/Unread.js
+++ b/src/Unread.js
@@ -14,80 +14,78 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-const MatrixClientPeg = require('./MatrixClientPeg');
+import {MatrixClientPeg} from "./MatrixClientPeg";
import shouldHideEvent from './shouldHideEvent';
-const sdk = require('./index');
+import * as sdk from "./index";
+import {haveTileForEvent} from "./components/views/rooms/EventTile";
-module.exports = {
- /**
- * Returns true iff this event arriving in a room should affect the room's
- * count of unread messages
- */
- eventTriggersUnreadCount: function(ev) {
- if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) {
- return false;
- } else if (ev.getType() == 'm.room.member') {
- return false;
- } else if (ev.getType() == 'm.room.third_party_invite') {
- return false;
- } else if (ev.getType() == 'm.call.answer' || ev.getType() == 'm.call.hangup') {
- return false;
- } else if (ev.getType() == 'm.room.message' && ev.getContent().msgtype == 'm.notify') {
- return false;
- } else if (ev.getType() == 'm.room.aliases' || ev.getType() == 'm.room.canonical_alias') {
- return false;
- } else if (ev.getType() == 'm.room.server_acl') {
+/**
+ * Returns true iff this event arriving in a room should affect the room's
+ * count of unread messages
+ */
+export function eventTriggersUnreadCount(ev) {
+ if (ev.sender && ev.sender.userId == MatrixClientPeg.get().credentials.userId) {
+ return false;
+ } else if (ev.getType() == 'm.room.member') {
+ return false;
+ } else if (ev.getType() == 'm.room.third_party_invite') {
+ return false;
+ } else if (ev.getType() == 'm.call.answer' || ev.getType() == 'm.call.hangup') {
+ return false;
+ } else if (ev.getType() == 'm.room.message' && ev.getContent().msgtype == 'm.notify') {
+ return false;
+ } else if (ev.getType() == 'm.room.aliases' || ev.getType() == 'm.room.canonical_alias') {
+ return false;
+ } else if (ev.getType() == 'm.room.server_acl') {
+ return false;
+ }
+ return haveTileForEvent(ev);
+}
+
+export function doesRoomHaveUnreadMessages(room) {
+ const myUserId = MatrixClientPeg.get().credentials.userId;
+
+ // get the most recent read receipt sent by our account.
+ // N.B. this is NOT a read marker (RM, aka "read up to marker"),
+ // despite the name of the method :((
+ const readUpToId = room.getEventReadUpTo(myUserId);
+
+ // as we don't send RRs for our own messages, make sure we special case that
+ // if *we* sent the last message into the room, we consider it not unread!
+ // Should fix: https://github.com/vector-im/riot-web/issues/3263
+ // https://github.com/vector-im/riot-web/issues/2427
+ // ...and possibly some of the others at
+ // https://github.com/vector-im/riot-web/issues/3363
+ if (room.timeline.length &&
+ room.timeline[room.timeline.length - 1].sender &&
+ room.timeline[room.timeline.length - 1].sender.userId === myUserId) {
+ return false;
+ }
+
+ // this just looks at whatever history we have, which if we've only just started
+ // up probably won't be very much, so if the last couple of events are ones that
+ // don't count, we don't know if there are any events that do count between where
+ // we have and the read receipt. We could fetch more history to try & find out,
+ // but currently we just guess.
+
+ // Loop through messages, starting with the most recent...
+ for (let i = room.timeline.length - 1; i >= 0; --i) {
+ const ev = room.timeline[i];
+
+ if (ev.getId() == readUpToId) {
+ // If we've read up to this event, there's nothing more recent
+ // that counts and we can stop looking because the user's read
+ // this and everything before.
return false;
+ } else if (!shouldHideEvent(ev) && eventTriggersUnreadCount(ev)) {
+ // We've found a message that counts before we hit
+ // the user's read receipt, so this room is definitely unread.
+ return true;
}
- const EventTile = sdk.getComponent('rooms.EventTile');
- return EventTile.haveTileForEvent(ev);
- },
-
- doesRoomHaveUnreadMessages: function(room) {
- const myUserId = MatrixClientPeg.get().credentials.userId;
-
- // get the most recent read receipt sent by our account.
- // N.B. this is NOT a read marker (RM, aka "read up to marker"),
- // despite the name of the method :((
- const readUpToId = room.getEventReadUpTo(myUserId);
-
- // as we don't send RRs for our own messages, make sure we special case that
- // if *we* sent the last message into the room, we consider it not unread!
- // Should fix: https://github.com/vector-im/riot-web/issues/3263
- // https://github.com/vector-im/riot-web/issues/2427
- // ...and possibly some of the others at
- // https://github.com/vector-im/riot-web/issues/3363
- if (room.timeline.length &&
- room.timeline[room.timeline.length - 1].sender &&
- room.timeline[room.timeline.length - 1].sender.userId === myUserId) {
- return false;
- }
-
- // this just looks at whatever history we have, which if we've only just started
- // up probably won't be very much, so if the last couple of events are ones that
- // don't count, we don't know if there are any events that do count between where
- // we have and the read receipt. We could fetch more history to try & find out,
- // but currently we just guess.
-
- // Loop through messages, starting with the most recent...
- for (let i = room.timeline.length - 1; i >= 0; --i) {
- const ev = room.timeline[i];
-
- if (ev.getId() == readUpToId) {
- // If we've read up to this event, there's nothing more recent
- // that counts and we can stop looking because the user's read
- // this and everything before.
- return false;
- } else if (!shouldHideEvent(ev) && this.eventTriggersUnreadCount(ev)) {
- // We've found a message that counts before we hit
- // the user's read receipt, so this room is definitely unread.
- return true;
- }
- }
- // If we got here, we didn't find a message that counted but didn't find
- // the user's read receipt either, so we guess and say that the room is
- // unread on the theory that false positives are better than false
- // negatives here.
- return true;
- },
-};
+ }
+ // If we got here, we didn't find a message that counted but didn't find
+ // the user's read receipt either, so we guess and say that the room is
+ // unread on the theory that false positives are better than false
+ // negatives here.
+ return true;
+}
diff --git a/src/VectorConferenceHandler.js b/src/VectorConferenceHandler.js
index e0e333a371..180dad876b 100644
--- a/src/VectorConferenceHandler.js
+++ b/src/VectorConferenceHandler.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,9 +15,9 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import {createNewMatrixCall, Room} from "matrix-js-sdk";
+import {createNewMatrixCall as jsCreateNewMatrixCall, Room} from "matrix-js-sdk";
import CallHandler from './CallHandler';
-import MatrixClientPeg from "./MatrixClientPeg";
+import {MatrixClientPeg} from "./MatrixClientPeg";
// FIXME: this is Riot (Vector) specific code, but will be removed shortly when
// we switch over to jitsi entirely for video conferencing.
@@ -28,10 +29,10 @@ import MatrixClientPeg from "./MatrixClientPeg";
const USER_PREFIX = "fs_";
const DOMAIN = "matrix.org";
-function ConferenceCall(matrixClient, groupChatRoomId) {
+export function ConferenceCall(matrixClient, groupChatRoomId) {
this.client = matrixClient;
this.groupRoomId = groupChatRoomId;
- this.confUserId = module.exports.getConferenceUserIdForRoom(this.groupRoomId);
+ this.confUserId = getConferenceUserIdForRoom(this.groupRoomId);
}
ConferenceCall.prototype.setup = function() {
@@ -42,7 +43,7 @@ ConferenceCall.prototype.setup = function() {
// return a call for *this* room to be placed. We also tack on
// confUserId to speed up lookups (else we'd need to loop every room
// looking for a 1:1 room with this conf user ID!)
- const call = createNewMatrixCall(self.client, room.roomId);
+ const call = jsCreateNewMatrixCall(self.client, room.roomId);
call.confUserId = self.confUserId;
call.groupRoomId = self.groupRoomId;
return call;
@@ -90,7 +91,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
* @param {string} userId The user ID to check.
* @return {boolean} True if it is a conference bot.
*/
-module.exports.isConferenceUser = function(userId) {
+export function isConferenceUser(userId) {
if (userId.indexOf("@" + USER_PREFIX) !== 0) {
return false;
}
@@ -101,26 +102,26 @@ module.exports.isConferenceUser = function(userId) {
return /^!.+:.+/.test(decoded);
}
return false;
-};
+}
-module.exports.getConferenceUserIdForRoom = function(roomId) {
+export function getConferenceUserIdForRoom(roomId) {
// abuse browserify's core node Buffer support (strip padding ='s)
const base64RoomId = new Buffer(roomId).toString("base64").replace(/=/g, "");
return "@" + USER_PREFIX + base64RoomId + ":" + DOMAIN;
-};
+}
-module.exports.createNewMatrixCall = function(client, roomId) {
+export function createNewMatrixCall(client, roomId) {
const confCall = new ConferenceCall(
client, roomId,
);
return confCall.setup();
-};
+}
-module.exports.getConferenceCallForRoom = function(roomId) {
+export function getConferenceCallForRoom(roomId) {
// search for a conference 1:1 call for this group chat room ID
const activeCall = CallHandler.getAnyActiveCall();
if (activeCall && activeCall.confUserId) {
- const thisRoomConfUserId = module.exports.getConferenceUserIdForRoom(
+ const thisRoomConfUserId = getConferenceUserIdForRoom(
roomId,
);
if (thisRoomConfUserId === activeCall.confUserId) {
@@ -128,8 +129,7 @@ module.exports.getConferenceCallForRoom = function(roomId) {
}
}
return null;
-};
+}
-module.exports.ConferenceCall = ConferenceCall;
-
-module.exports.slot = 'conference';
+// TODO: Document this.
+export const slot = 'conference';
diff --git a/src/Velociraptor.js b/src/Velociraptor.js
index 245ca6648b..ce52f60dbd 100644
--- a/src/Velociraptor.js
+++ b/src/Velociraptor.js
@@ -1,7 +1,7 @@
-const React = require('react');
-const ReactDom = require('react-dom');
+import React from "react";
+import ReactDom from "react-dom";
+import Velocity from "velocity-animate";
import PropTypes from 'prop-types';
-const Velocity = require('velocity-animate');
/**
* The Velociraptor contains components and animates transitions with velocity.
diff --git a/src/VelocityBounce.js b/src/VelocityBounce.js
index db216f81fb..ffbf7de829 100644
--- a/src/VelocityBounce.js
+++ b/src/VelocityBounce.js
@@ -1,4 +1,4 @@
-const Velocity = require('velocity-animate');
+import Velocity from "velocity-animate";
// courtesy of https://github.com/julianshapiro/velocity/issues/283
// We only use easeOutBounce (easeInBounce is just sort of nonsensical)
diff --git a/src/WhoIsTyping.js b/src/WhoIsTyping.js
index eb09685cbe..d11cddf487 100644
--- a/src/WhoIsTyping.js
+++ b/src/WhoIsTyping.js
@@ -14,71 +14,69 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from "./MatrixClientPeg";
+import {MatrixClientPeg} from "./MatrixClientPeg";
import { _t } from './languageHandler';
-module.exports = {
- usersTypingApartFromMeAndIgnored: function(room) {
- return this.usersTyping(
- room, [MatrixClientPeg.get().credentials.userId].concat(MatrixClientPeg.get().getIgnoredUsers()),
- );
- },
+export function usersTypingApartFromMeAndIgnored(room) {
+ return usersTyping(
+ room, [MatrixClientPeg.get().credentials.userId].concat(MatrixClientPeg.get().getIgnoredUsers()),
+ );
+}
- usersTypingApartFromMe: function(room) {
- return this.usersTyping(
- room, [MatrixClientPeg.get().credentials.userId],
- );
- },
+export function usersTypingApartFromMe(room) {
+ return usersTyping(
+ room, [MatrixClientPeg.get().credentials.userId],
+ );
+}
- /**
- * Given a Room object and, optionally, a list of userID strings
- * to exclude, return a list of user objects who are typing.
- * @param {Room} room: room object to get users from.
- * @param {string[]} exclude: list of user mxids to exclude.
- * @returns {string[]} list of user objects who are typing.
- */
- usersTyping: function(room, exclude) {
- const whoIsTyping = [];
+/**
+ * Given a Room object and, optionally, a list of userID strings
+ * to exclude, return a list of user objects who are typing.
+ * @param {Room} room: room object to get users from.
+ * @param {string[]} exclude: list of user mxids to exclude.
+ * @returns {string[]} list of user objects who are typing.
+ */
+export function usersTyping(room, exclude) {
+ const whoIsTyping = [];
- if (exclude === undefined) {
- exclude = [];
- }
+ if (exclude === undefined) {
+ exclude = [];
+ }
- const memberKeys = Object.keys(room.currentState.members);
- for (let i = 0; i < memberKeys.length; ++i) {
- const userId = memberKeys[i];
+ const memberKeys = Object.keys(room.currentState.members);
+ for (let i = 0; i < memberKeys.length; ++i) {
+ const userId = memberKeys[i];
- if (room.currentState.members[userId].typing) {
- if (exclude.indexOf(userId) === -1) {
- whoIsTyping.push(room.currentState.members[userId]);
- }
+ if (room.currentState.members[userId].typing) {
+ if (exclude.indexOf(userId) === -1) {
+ whoIsTyping.push(room.currentState.members[userId]);
}
}
+ }
- return whoIsTyping;
- },
+ return whoIsTyping;
+}
- whoIsTypingString: function(whoIsTyping, limit) {
- let othersCount = 0;
- if (whoIsTyping.length > limit) {
- othersCount = whoIsTyping.length - limit + 1;
- }
- if (whoIsTyping.length === 0) {
- return '';
- } else if (whoIsTyping.length === 1) {
- return _t('%(displayName)s is typing …', {displayName: whoIsTyping[0].name});
- }
- const names = whoIsTyping.map(function(m) {
- return m.name;
+export function whoIsTypingString(whoIsTyping, limit) {
+ let othersCount = 0;
+ if (whoIsTyping.length > limit) {
+ othersCount = whoIsTyping.length - limit + 1;
+ }
+ if (whoIsTyping.length === 0) {
+ return '';
+ } else if (whoIsTyping.length === 1) {
+ return _t('%(displayName)s is typing …', {displayName: whoIsTyping[0].name});
+ }
+ const names = whoIsTyping.map(function(m) {
+ return m.name;
+ });
+ if (othersCount>=1) {
+ return _t('%(names)s and %(count)s others are typing …', {
+ names: names.slice(0, limit - 1).join(', '),
+ count: othersCount,
});
- if (othersCount>=1) {
- return _t('%(names)s and %(count)s others are typing …', {
- names: names.slice(0, limit - 1).join(', '),
- count: othersCount,
- });
- } else {
- const lastPerson = names.pop();
- return _t('%(names)s and %(lastPerson)s are typing …', {names: names.join(', '), lastPerson: lastPerson});
- }
- },
-};
+ } else {
+ const lastPerson = names.pop();
+ return _t('%(names)s and %(lastPerson)s are typing …', {names: names.join(', '), lastPerson: lastPerson});
+ }
+}
diff --git a/src/WidgetMessaging.js b/src/WidgetMessaging.js
index 1d8e1b9cd3..d40a8ab637 100644
--- a/src/WidgetMessaging.js
+++ b/src/WidgetMessaging.js
@@ -23,7 +23,7 @@ limitations under the License.
import FromWidgetPostMessageApi from './FromWidgetPostMessageApi';
import ToWidgetPostMessageApi from './ToWidgetPostMessageApi';
import Modal from "./Modal";
-import MatrixClientPeg from "./MatrixClientPeg";
+import {MatrixClientPeg} from "./MatrixClientPeg";
import SettingsStore from "./settings/SettingsStore";
import WidgetOpenIDPermissionsDialog from "./components/views/dialogs/WidgetOpenIDPermissionsDialog";
import WidgetUtils from "./utils/WidgetUtils";
diff --git a/src/actions/RoomListActions.js b/src/actions/RoomListActions.js
index e5911c4e32..d534fe5d1d 100644
--- a/src/actions/RoomListActions.js
+++ b/src/actions/RoomListActions.js
@@ -16,11 +16,10 @@ limitations under the License.
import { asyncAction } from './actionCreators';
import RoomListStore from '../stores/RoomListStore';
-
import Modal from '../Modal';
import * as Rooms from '../Rooms';
import { _t } from '../languageHandler';
-import sdk from '../index';
+import * as sdk from '../index';
const RoomListActions = {};
diff --git a/src/async-components/views/dialogs/EncryptedEventDialog.js b/src/async-components/views/dialogs/EncryptedEventDialog.js
index 15bb1e046b..f6e17b1c84 100644
--- a/src/async-components/views/dialogs/EncryptedEventDialog.js
+++ b/src/async-components/views/dialogs/EncryptedEventDialog.js
@@ -14,16 +14,18 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import {Key} from "../../../Keyboard";
-
-const React = require("react");
+import React from "react";
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import { _t } from '../../../languageHandler';
-const sdk = require('../../../index');
-const MatrixClientPeg = require("../../../MatrixClientPeg");
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
+import {Key} from "../../../Keyboard";
+import * as sdk from "../../../index";
-module.exports = createReactClass({
+// XXX: This component is not cross-signing aware.
+// https://github.com/vector-im/riot-web/issues/11752 tracks either updating this
+// component or taking it out to pasture.
+export default createReactClass({
displayName: 'EncryptedEventDialog',
propTypes: {
diff --git a/src/async-components/views/dialogs/ExportE2eKeysDialog.js b/src/async-components/views/dialogs/ExportE2eKeysDialog.js
index ba2e985889..481075d0fa 100644
--- a/src/async-components/views/dialogs/ExportE2eKeysDialog.js
+++ b/src/async-components/views/dialogs/ExportE2eKeysDialog.js
@@ -22,7 +22,7 @@ import { _t } from '../../../languageHandler';
import { MatrixClient } from 'matrix-js-sdk';
import * as MegolmExportEncryption from '../../../utils/MegolmExportEncryption';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
const PHASE_EDIT = 1;
const PHASE_EXPORTING = 2;
diff --git a/src/async-components/views/dialogs/ImportE2eKeysDialog.js b/src/async-components/views/dialogs/ImportE2eKeysDialog.js
index de9e819f5a..591c84f5d3 100644
--- a/src/async-components/views/dialogs/ImportE2eKeysDialog.js
+++ b/src/async-components/views/dialogs/ImportE2eKeysDialog.js
@@ -20,7 +20,7 @@ import createReactClass from 'create-react-class';
import { MatrixClient } from 'matrix-js-sdk';
import * as MegolmExportEncryption from '../../../utils/MegolmExportEncryption';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import { _t } from '../../../languageHandler';
function readFileAsArrayBuffer(file) {
diff --git a/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js b/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js
index 3fac00c1b3..8940239cfd 100644
--- a/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js
+++ b/src/async-components/views/dialogs/keybackup/CreateKeyBackupDialog.js
@@ -1,6 +1,6 @@
/*
Copyright 2018, 2019 New Vector Ltd
-Copyright 2019 The Matrix.org Foundation C.I.C.
+Copyright 2019, 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,11 +17,13 @@ limitations under the License.
import React from 'react';
import FileSaver from 'file-saver';
-
-import sdk from '../../../../index';
-import MatrixClientPeg from '../../../../MatrixClientPeg';
+import * as sdk from '../../../../index';
+import {MatrixClientPeg} from '../../../../MatrixClientPeg';
+import PropTypes from 'prop-types';
import { scorePassword } from '../../../../utils/PasswordScorer';
import { _t } from '../../../../languageHandler';
+import { accessSecretStorage } from '../../../../CrossSigningManager';
+import SettingsStore from '../../../../settings/SettingsStore';
const PHASE_PASSPHRASE = 0;
const PHASE_PASSPHRASE_CONFIRM = 1;
@@ -49,10 +51,20 @@ function selectText(target) {
* on the server.
*/
export default class CreateKeyBackupDialog extends React.PureComponent {
+ static propTypes = {
+ secureSecretStorage: PropTypes.bool,
+ onFinished: PropTypes.func.isRequired,
+ }
+
constructor(props) {
super(props);
+ this._recoveryKeyNode = null;
+ this._keyBackupInfo = null;
+ this._setZxcvbnResultTimeout = null;
+
this.state = {
+ secureSecretStorage: props.secureSecretStorage,
phase: PHASE_PASSPHRASE,
passPhrase: '',
passPhraseConfirm: '',
@@ -61,12 +73,25 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
zxcvbnResult: null,
setPassPhrase: false,
};
+
+ if (this.state.secureSecretStorage === undefined) {
+ this.state.secureSecretStorage =
+ SettingsStore.isFeatureEnabled("feature_cross_signing");
+ }
+
+ // If we're using secret storage, skip ahead to the backing up step, as
+ // `accessSecretStorage` will handle passphrases as needed.
+ if (this.state.secureSecretStorage) {
+ this.state.phase = PHASE_BACKINGUP;
+ }
}
- componentWillMount() {
- this._recoveryKeyNode = null;
- this._keyBackupInfo = null;
- this._setZxcvbnResultTimeout = null;
+ componentDidMount() {
+ // If we're using secret storage, skip ahead to the backing up step, as
+ // `accessSecretStorage` will handle passphrases as needed.
+ if (this.state.secureSecretStorage) {
+ this._createBackup();
+ }
}
componentWillUnmount() {
@@ -103,15 +128,26 @@ export default class CreateKeyBackupDialog extends React.PureComponent {
}
_createBackup = async () => {
+ const { secureSecretStorage } = this.state;
this.setState({
phase: PHASE_BACKINGUP,
error: null,
});
let info;
try {
- info = await MatrixClientPeg.get().createKeyBackupVersion(
- this._keyBackupInfo,
- );
+ if (secureSecretStorage) {
+ await accessSecretStorage(async () => {
+ info = await MatrixClientPeg.get().prepareKeyBackupVersion(
+ null /* random key */,
+ { secureSecretStorage: true },
+ );
+ info = await MatrixClientPeg.get().createKeyBackupVersion(info);
+ });
+ } else {
+ info = await MatrixClientPeg.get().createKeyBackupVersion(
+ this._keyBackupInfo,
+ );
+ }
await MatrixClientPeg.get().scheduleAllGroupSessionsForBackup();
this.setState({
phase: PHASE_DONE,
diff --git a/src/async-components/views/dialogs/keybackup/IgnoreRecoveryReminderDialog.js b/src/async-components/views/dialogs/keybackup/IgnoreRecoveryReminderDialog.js
index a9df3cca6e..b79911c66e 100644
--- a/src/async-components/views/dialogs/keybackup/IgnoreRecoveryReminderDialog.js
+++ b/src/async-components/views/dialogs/keybackup/IgnoreRecoveryReminderDialog.js
@@ -16,7 +16,7 @@ limitations under the License.
import React from "react";
import PropTypes from "prop-types";
-import sdk from "../../../../index";
+import * as sdk from "../../../../index";
import { _t } from "../../../../languageHandler";
export default class IgnoreRecoveryReminderDialog extends React.PureComponent {
diff --git a/src/async-components/views/dialogs/keybackup/NewRecoveryMethodDialog.js b/src/async-components/views/dialogs/keybackup/NewRecoveryMethodDialog.js
index 28281af771..559d972f24 100644
--- a/src/async-components/views/dialogs/keybackup/NewRecoveryMethodDialog.js
+++ b/src/async-components/views/dialogs/keybackup/NewRecoveryMethodDialog.js
@@ -1,5 +1,6 @@
/*
-Copyright 2018-2019 New Vector Ltd
+Copyright 2018, 2019 New Vector Ltd
+Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,8 +17,8 @@ limitations under the License.
import React from "react";
import PropTypes from "prop-types";
-import sdk from "../../../../index";
-import MatrixClientPeg from '../../../../MatrixClientPeg';
+import * as sdk from "../../../../index";
+import {MatrixClientPeg} from '../../../../MatrixClientPeg';
import dis from "../../../../dispatcher";
import { _t } from "../../../../languageHandler";
import Modal from "../../../../Modal";
@@ -40,9 +41,11 @@ export default class NewRecoveryMethodDialog extends React.PureComponent {
onSetupClick = async () => {
const RestoreKeyBackupDialog = sdk.getComponent('dialogs.keybackup.RestoreKeyBackupDialog');
- Modal.createTrackedDialog('Restore Backup', '', RestoreKeyBackupDialog, {
- onFinished: this.props.onFinished,
- });
+ Modal.createTrackedDialog(
+ 'Restore Backup', '', RestoreKeyBackupDialog, {
+ onFinished: this.props.onFinished,
+ }, null, /* priority = */ false, /* static = */ true,
+ );
}
render() {
diff --git a/src/async-components/views/dialogs/keybackup/RecoveryMethodRemovedDialog.js b/src/async-components/views/dialogs/keybackup/RecoveryMethodRemovedDialog.js
index 1975fbe6d6..9dfc3e73ed 100644
--- a/src/async-components/views/dialogs/keybackup/RecoveryMethodRemovedDialog.js
+++ b/src/async-components/views/dialogs/keybackup/RecoveryMethodRemovedDialog.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,7 +17,7 @@ limitations under the License.
import React from "react";
import PropTypes from "prop-types";
-import sdk from "../../../../index";
+import * as sdk from "../../../../index";
import dis from "../../../../dispatcher";
import { _t } from "../../../../languageHandler";
import Modal from "../../../../Modal";
@@ -35,6 +36,7 @@ export default class RecoveryMethodRemovedDialog extends React.PureComponent {
this.props.onFinished();
Modal.createTrackedDialogAsync("Key Backup", "Key Backup",
import("./CreateKeyBackupDialog"),
+ null, null, /* priority = */ false, /* static = */ true,
);
}
diff --git a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js
index 25bc8cdfda..01b9c9c7c8 100644
--- a/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js
+++ b/src/async-components/views/dialogs/secretstorage/CreateSecretStorageDialog.js
@@ -16,22 +16,23 @@ limitations under the License.
*/
import React from 'react';
-import sdk from '../../../../index';
-import MatrixClientPeg from '../../../../MatrixClientPeg';
+import * as sdk from '../../../../index';
+import {MatrixClientPeg} from '../../../../MatrixClientPeg';
import { scorePassword } from '../../../../utils/PasswordScorer';
import FileSaver from 'file-saver';
import { _t } from '../../../../languageHandler';
import Modal from '../../../../Modal';
const PHASE_LOADING = 0;
-const PHASE_MIGRATE = 1;
-const PHASE_PASSPHRASE = 2;
-const PHASE_PASSPHRASE_CONFIRM = 3;
-const PHASE_SHOWKEY = 4;
-const PHASE_KEEPITSAFE = 5;
-const PHASE_STORING = 6;
-const PHASE_DONE = 7;
-const PHASE_OPTOUT_CONFIRM = 8;
+const PHASE_RESTORE_KEY_BACKUP = 1;
+const PHASE_MIGRATE = 2;
+const PHASE_PASSPHRASE = 3;
+const PHASE_PASSPHRASE_CONFIRM = 4;
+const PHASE_SHOWKEY = 5;
+const PHASE_KEEPITSAFE = 6;
+const PHASE_STORING = 7;
+const PHASE_DONE = 8;
+const PHASE_OPTOUT_CONFIRM = 9;
const PASSWORD_MIN_SCORE = 4; // So secure, many characters, much complex, wow, etc, etc.
const PASSPHRASE_FEEDBACK_DELAY = 500; // How long after keystroke to offer passphrase feedback, ms.
@@ -67,6 +68,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
downloaded: false,
zxcvbnResult: null,
setPassPhrase: false,
+ backupInfo: null,
+ backupSigStatus: null,
};
this._fetchBackupInfo();
@@ -80,10 +83,16 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
async _fetchBackupInfo() {
const backupInfo = await MatrixClientPeg.get().getKeyBackupVersion();
+ const backupSigStatus = await MatrixClientPeg.get().isKeyBackupTrusted(backupInfo);
+
+ const phase = backupInfo ?
+ (backupSigStatus.usable ? PHASE_MIGRATE : PHASE_RESTORE_KEY_BACKUP) :
+ PHASE_PASSPHRASE;
this.setState({
- phase: backupInfo ? PHASE_MIGRATE: PHASE_PASSPHRASE,
+ phase,
backupInfo,
+ backupSigStatus,
});
}
@@ -161,6 +170,14 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
this.props.onFinished(true);
}
+ _onRestoreKeyBackupClick = () => {
+ const RestoreKeyBackupDialog = sdk.getComponent('dialogs.keybackup.RestoreKeyBackupDialog');
+ Modal.createTrackedDialog(
+ 'Restore Backup', '', RestoreKeyBackupDialog, null, null,
+ /* priority = */ false, /* static = */ true,
+ );
+ }
+
_onOptOutClick = () => {
this.setState({phase: PHASE_OPTOUT_CONFIRM});
}
@@ -268,6 +285,23 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
return this.state.zxcvbnResult && this.state.zxcvbnResult.score >= PASSWORD_MIN_SCORE;
}
+ _renderPhaseRestoreKeyBackup() {
+ const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
+ return
+
{_t(
+ "Key Backup is enabled on your account but has not been set " +
+ "up from this session. To set up secret storage, " +
+ "restore your key backup.",
+ )}
+
+
+
;
+ }
+
_renderPhaseMigrate() {
// TODO: This is a temporary screen so people who have the labs flag turned on and
// click the button are aware they're making a change to their account.
@@ -277,9 +311,9 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
return
{_t(
- "Secret Storage will be set up using your existing key backup details." +
+ "Secret Storage will be set up using your existing key backup details. " +
"Your secret storage passphrase and recovery key will be the same as " +
- " they were for your key backup",
+ "they were for your key backup.",
)}
{
+ async getCompletions(query: string, selection: SelectionRange, force: boolean = false): Array {
const BaseAvatar = sdk.getComponent('views.avatars.BaseAvatar');
// Disable autocompletions when composing commands because of various issues
diff --git a/src/autocomplete/DuckDuckGoProvider.js b/src/autocomplete/DuckDuckGoProvider.js
index 49ef7dfb43..ca1b1478cc 100644
--- a/src/autocomplete/DuckDuckGoProvider.js
+++ b/src/autocomplete/DuckDuckGoProvider.js
@@ -37,7 +37,7 @@ export default class DuckDuckGoProvider extends AutocompleteProvider {
+ `&format=json&no_redirect=1&no_html=1&t=${encodeURIComponent(REFERRER)}`;
}
- async getCompletions(query: string, selection: SelectionRange, force?: boolean = false) {
+ async getCompletions(query: string, selection: SelectionRange, force: boolean = false) {
const {command, range} = this.getCurrentCommand(query, selection);
if (!query || !command) {
return [];
diff --git a/src/autocomplete/NotifProvider.js b/src/autocomplete/NotifProvider.js
index 95cfb34616..e7c8f6f70d 100644
--- a/src/autocomplete/NotifProvider.js
+++ b/src/autocomplete/NotifProvider.js
@@ -17,9 +17,9 @@ limitations under the License.
import React from 'react';
import AutocompleteProvider from './AutocompleteProvider';
import { _t } from '../languageHandler';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import {PillCompletion} from './Components';
-import sdk from '../index';
+import * as sdk from '../index';
import type {Completion, SelectionRange} from "./Autocompleter";
const AT_ROOM_REGEX = /@\S*/g;
@@ -30,7 +30,7 @@ export default class NotifProvider extends AutocompleteProvider {
this.room = room;
}
- async getCompletions(query: string, selection: SelectionRange, force?:boolean = false): Array {
+ async getCompletions(query: string, selection: SelectionRange, force:boolean = false): Array {
const RoomAvatar = sdk.getComponent('views.avatars.RoomAvatar');
const client = MatrixClientPeg.get();
diff --git a/src/autocomplete/PlainWithPillsSerializer.js b/src/autocomplete/PlainWithPillsSerializer.js
deleted file mode 100644
index 09bb3772ac..0000000000
--- a/src/autocomplete/PlainWithPillsSerializer.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-Copyright 2018 New Vector Ltd
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Based originally on slate-plain-serializer
-
-import { Block } from 'slate';
-
-/**
- * Plain text serializer, which converts a Slate `value` to a plain text string,
- * serializing pills into various different formats as required.
- *
- * @type {PlainWithPillsSerializer}
- */
-
-class PlainWithPillsSerializer {
- /*
- * @param {String} options.pillFormat - either 'md', 'plain', 'id'
- */
- constructor(options = {}) {
- const {
- pillFormat = 'plain',
- } = options;
- this.pillFormat = pillFormat;
- }
-
- /**
- * Serialize a Slate `value` to a plain text string,
- * serializing pills as either MD links, plain text representations or
- * ID representations as required.
- *
- * @param {Value} value
- * @return {String}
- */
- serialize = value => {
- return this._serializeNode(value.document);
- }
-
- /**
- * Serialize a `node` to plain text.
- *
- * @param {Node} node
- * @return {String}
- */
- _serializeNode = node => {
- if (
- node.object == 'document' ||
- (node.object == 'block' && Block.isBlockList(node.nodes))
- ) {
- return node.nodes.map(this._serializeNode).join('\n');
- } else if (node.type == 'emoji') {
- return node.data.get('emojiUnicode');
- } else if (node.type == 'pill') {
- const completion = node.data.get('completion');
- // over the wire the @room pill is just plaintext
- if (completion === '@room') return completion;
-
- switch (this.pillFormat) {
- case 'plain':
- return completion;
- case 'md':
- return `[${ completion }](${ node.data.get('href') })`;
- case 'id':
- return node.data.get('completionId') || completion;
- }
- } else if (node.nodes) {
- return node.nodes.map(this._serializeNode).join('');
- } else {
- return node.text;
- }
- }
-}
-
-/**
- * Export.
- *
- * @type {PlainWithPillsSerializer}
- */
-
-export default PlainWithPillsSerializer;
diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js
index b67abc388e..b28c79ac54 100644
--- a/src/autocomplete/RoomProvider.js
+++ b/src/autocomplete/RoomProvider.js
@@ -20,11 +20,11 @@ limitations under the License.
import React from 'react';
import { _t } from '../languageHandler';
import AutocompleteProvider from './AutocompleteProvider';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import QueryMatcher from './QueryMatcher';
import {PillCompletion} from './Components';
import {getDisplayAliasForRoom} from '../Rooms';
-import sdk from '../index';
+import * as sdk from '../index';
import _sortBy from 'lodash/sortBy';
import {makeRoomPermalink} from "../utils/permalinks/Permalinks";
import type {Completion, SelectionRange} from "./Autocompleter";
@@ -48,7 +48,7 @@ export default class RoomProvider extends AutocompleteProvider {
});
}
- async getCompletions(query: string, selection: SelectionRange, force?: boolean = false): Array {
+ async getCompletions(query: string, selection: SelectionRange, force: boolean = false): Array {
const RoomAvatar = sdk.getComponent('views.avatars.RoomAvatar');
const client = MatrixClientPeg.get();
diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js
index ac159c8213..7fd600b136 100644
--- a/src/autocomplete/UserProvider.js
+++ b/src/autocomplete/UserProvider.js
@@ -22,10 +22,10 @@ import React from 'react';
import { _t } from '../languageHandler';
import AutocompleteProvider from './AutocompleteProvider';
import {PillCompletion} from './Components';
-import sdk from '../index';
+import * as sdk from '../index';
import QueryMatcher from './QueryMatcher';
import _sortBy from 'lodash/sortBy';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import type {MatrixEvent, Room, RoomMember, RoomState} from 'matrix-js-sdk';
import {makeUserPermalink} from "../utils/permalinks/Permalinks";
@@ -91,7 +91,7 @@ export default class UserProvider extends AutocompleteProvider {
this.users = null;
}
- async getCompletions(query: string, selection: SelectionRange, force?: boolean = false): Array {
+ async getCompletions(query: string, selection: SelectionRange, force: boolean = false): Array {
const MemberAvatar = sdk.getComponent('views.avatars.MemberAvatar');
// lazy-load user list into matcher
diff --git a/src/components/structures/CompatibilityPage.js b/src/components/structures/CompatibilityPage.js
index 28c86f8dd8..9a3fdb5f39 100644
--- a/src/components/structures/CompatibilityPage.js
+++ b/src/components/structures/CompatibilityPage.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,7 +21,7 @@ import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import { _t } from '../../languageHandler';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'CompatibilityPage',
propTypes: {
onAccept: PropTypes.func,
diff --git a/src/components/structures/ContextMenu.js b/src/components/structures/ContextMenu.js
index 662972ee37..b4b1b80163 100644
--- a/src/components/structures/ContextMenu.js
+++ b/src/components/structures/ContextMenu.js
@@ -21,7 +21,7 @@ import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import {Key} from "../../Keyboard";
-import sdk from "../../index";
+import * as sdk from "../../index";
import AccessibleButton from "../views/elements/AccessibleButton";
// Shamelessly ripped off Modal.js. There's probably a better way
diff --git a/src/components/structures/CustomRoomTagPanel.js b/src/components/structures/CustomRoomTagPanel.js
index f1b548d72f..e8ff6e814e 100644
--- a/src/components/structures/CustomRoomTagPanel.js
+++ b/src/components/structures/CustomRoomTagPanel.js
@@ -17,7 +17,7 @@ limitations under the License.
import React from 'react';
import CustomRoomTagStore from '../../stores/CustomRoomTagStore';
import AutoHideScrollbar from './AutoHideScrollbar';
-import sdk from '../../index';
+import * as sdk from '../../index';
import dis from '../../dispatcher';
import classNames from 'classnames';
import * as FormattingUtils from '../../utils/FormattingUtils';
diff --git a/src/components/structures/EmbeddedPage.js b/src/components/structures/EmbeddedPage.js
index 63767255e2..6d734c3838 100644
--- a/src/components/structures/EmbeddedPage.js
+++ b/src/components/structures/EmbeddedPage.js
@@ -23,9 +23,9 @@ import PropTypes from 'prop-types';
import request from 'browser-request';
import { _t } from '../../languageHandler';
import sanitizeHtml from 'sanitize-html';
-import sdk from '../../index';
+import * as sdk from '../../index';
import dis from '../../dispatcher';
-import MatrixClientPeg from '../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
import classnames from 'classnames';
import MatrixClientContext from "../../contexts/MatrixClientContext";
diff --git a/src/components/structures/FilePanel.js b/src/components/structures/FilePanel.js
index f5a5912dd5..61b3d2d4b9 100644
--- a/src/components/structures/FilePanel.js
+++ b/src/components/structures/FilePanel.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -19,8 +20,8 @@ import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import Matrix from 'matrix-js-sdk';
-import sdk from '../../index';
-import MatrixClientPeg from '../../MatrixClientPeg';
+import * as sdk from '../../index';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
import { _t } from '../../languageHandler';
/*
@@ -126,4 +127,4 @@ const FilePanel = createReactClass({
},
});
-module.exports = FilePanel;
+export default FilePanel;
diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js
index 9df4630136..5ae0699a2f 100644
--- a/src/components/structures/GroupView.js
+++ b/src/components/structures/GroupView.js
@@ -19,8 +19,8 @@ limitations under the License.
import React from 'react';
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
-import MatrixClientPeg from '../../MatrixClientPeg';
-import sdk from '../../index';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
+import * as sdk from '../../index';
import dis from '../../dispatcher';
import { getHostingLink } from '../../utils/HostingLink';
import { sanitizedHtmlNode } from '../../HtmlUtils';
@@ -1299,7 +1299,7 @@ export default createReactClass({
);
}
- const rightPanel = !RightPanelStore.getSharedInstance().isOpenForGroup
+ const rightPanel = RightPanelStore.getSharedInstance().isOpenForGroup
?
: undefined;
diff --git a/src/components/structures/InteractiveAuth.js b/src/components/structures/InteractiveAuth.js
index 1981310a2f..53bb990e26 100644
--- a/src/components/structures/InteractiveAuth.js
+++ b/src/components/structures/InteractiveAuth.js
@@ -15,16 +15,14 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import Matrix from 'matrix-js-sdk';
-const InteractiveAuth = Matrix.InteractiveAuth;
-
+import {InteractiveAuth} from "matrix-js-sdk";
import React, {createRef} from 'react';
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import {getEntryComponentForLoginType} from '../views/auth/InteractiveAuthEntryComponents';
-import sdk from '../../index';
+import * as sdk from '../../index';
export default createReactClass({
displayName: 'InteractiveAuth',
diff --git a/src/components/structures/LeftPanel.js b/src/components/structures/LeftPanel.js
index 796840a625..8a7d10e5b5 100644
--- a/src/components/structures/LeftPanel.js
+++ b/src/components/structures/LeftPanel.js
@@ -20,9 +20,9 @@ import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { Key } from '../../Keyboard';
-import sdk from '../../index';
+import * as sdk from '../../index';
import dis from '../../dispatcher';
-import VectorConferenceHandler from '../../VectorConferenceHandler';
+import * as VectorConferenceHandler from '../../VectorConferenceHandler';
import SettingsStore from '../../settings/SettingsStore';
import {_t} from "../../languageHandler";
import Analytics from "../../Analytics";
@@ -301,4 +301,4 @@ const LeftPanel = createReactClass({
},
});
-module.exports = LeftPanel;
+export default LeftPanel;
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 7261af3bf0..9597f99cd2 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -26,10 +26,10 @@ import { Key, isOnlyCtrlOrCmdKeyEvent } from '../../Keyboard';
import PageTypes from '../../PageTypes';
import CallMediaHandler from '../../CallMediaHandler';
import { fixupColorFonts } from '../../utils/FontManager';
-import sdk from '../../index';
+import * as sdk from '../../index';
import dis from '../../dispatcher';
import sessionStore from '../../stores/SessionStore';
-import MatrixClientPeg from '../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
import SettingsStore from "../../settings/SettingsStore";
import RoomListStore from "../../stores/RoomListStore";
import { getHomePageUrl } from '../../utils/pages';
@@ -393,13 +393,6 @@ const LoggedInView = createReactClass({
return;
}
- // XXX: Remove after CIDER replaces Slate completely: https://github.com/vector-im/riot-web/issues/11036
- // If using Slate, consume the Backspace without first focusing as it causes an implosion
- if (ev.key === Key.BACKSPACE && !SettingsStore.getValue("useCiderComposer")) {
- ev.stopPropagation();
- return;
- }
-
if (!isClickShortcut && ev.key !== Key.TAB && !canElementReceiveInput(ev.target)) {
// synchronous dispatch so we focus before key generates input
dis.dispatch({action: 'focus_composer'}, true);
diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js
index 0449c2b4fd..0361cdaeb9 100644
--- a/src/components/structures/MatrixChat.js
+++ b/src/components/structures/MatrixChat.js
@@ -2,7 +2,7 @@
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2017-2019 New Vector Ltd
-Copyright 2019 The Matrix.org Foundation C.I.C.
+Copyright 2019, 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,7 +20,8 @@ limitations under the License.
import React from 'react';
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
-import Matrix from "matrix-js-sdk";
+import * as Matrix from "matrix-js-sdk";
+import { isCryptoAvailable } from 'matrix-js-sdk/src/crypto';
// focus-visible is a Polyfill for the :focus-visible CSS pseudo-attribute used by _AccessibleButton.scss
import 'focus-visible';
@@ -29,7 +30,7 @@ import 'what-input';
import Analytics from "../../Analytics";
import { DecryptionFailureTracker } from "../../DecryptionFailureTracker";
-import MatrixClientPeg from "../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../MatrixClientPeg";
import PlatformPeg from "../../PlatformPeg";
import SdkConfig from "../../SdkConfig";
import * as RoomListSorter from "../../RoomListSorter";
@@ -38,7 +39,7 @@ import Notifier from '../../Notifier';
import Modal from "../../Modal";
import Tinter from "../../Tinter";
-import sdk from '../../index';
+import * as sdk from '../../index';
import { showStartChatInviteDialog, showRoomInviteDialog } from '../../RoomInvite';
import * as Rooms from '../../Rooms';
import linkifyMatrix from "../../linkify-matrix";
@@ -64,7 +65,7 @@ import { storeRoomAliasInCache } from '../../RoomAliasCache';
import { defer } from "../../utils/promise";
/** constants for MatrixChat.state.view */
-const VIEWS = {
+export const VIEWS = {
// a special initial state which is only used at startup, while we are
// trying to re-animate a matrix client or register as a guest.
LOADING: 0,
@@ -78,18 +79,14 @@ const VIEWS = {
// we are showing the registration view
REGISTER: 3,
- // completeing the registration flow
+ // completing the registration flow
POST_REGISTRATION: 4,
// showing the 'forgot password' view
FORGOT_PASSWORD: 5,
- // we have valid matrix credentials (either via an explicit login, via the
- // initial re-animation/guest registration, or via a registration), and are
- // now setting up a matrixclient to talk to it. This isn't an instant
- // process because we need to clear out indexeddb. While it is going on we
- // show a big spinner.
- LOGGING_IN: 6,
+ // showing flow to trust this new device with cross-signing
+ COMPLETE_SECURITY: 6,
// we are logged in with an active matrix client.
LOGGED_IN: 7,
@@ -655,16 +652,12 @@ export default createReactClass({
});
break;
}
- case 'on_logging_in':
- // We are now logging in, so set the state to reflect that
- // NB. This does not touch 'ready' since if our dispatches
- // are delayed, the sync could already have completed
- this.setStateForNewView({
- view: VIEWS.LOGGING_IN,
- });
- break;
case 'on_logged_in':
- if (!Lifecycle.isSoftLogout()) {
+ if (
+ !Lifecycle.isSoftLogout() &&
+ this.state.view !== VIEWS.LOGIN &&
+ this.state.view !== VIEWS.COMPLETE_SECURITY
+ ) {
this._onLoggedIn();
}
break;
@@ -1168,7 +1161,7 @@ export default createReactClass({
if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) {
const welcomeUserRoom = await this._startWelcomeUserChat();
if (welcomeUserRoom === null) {
- // We didn't rediret to the welcome user room, so show
+ // We didn't redirect to the welcome user room, so show
// the homepage.
dis.dispatch({action: 'view_home_page'});
}
@@ -1500,6 +1493,15 @@ export default createReactClass({
"blacklistUnverifiedDevices",
);
cli.setGlobalBlacklistUnverifiedDevices(blacklistEnabled);
+
+ // With cross-signing enabled, we send to unknown devices
+ // without prompting. Any bad-device status the user should
+ // be aware of will be signalled through the room shield
+ // changing colour. More advanced behaviour will come once
+ // we implement more settings.
+ cli.setGlobalErrorOnUnknownDevices(
+ !SettingsStore.isFeatureEnabled("feature_cross_signing"),
+ );
}
},
@@ -1559,6 +1561,10 @@ export default createReactClass({
dis.dispatch({
action: 'view_my_groups',
});
+ } else if (screen === 'complete_security') {
+ dis.dispatch({
+ action: 'start_complete_security',
+ });
} else if (screen == 'post_registration') {
dis.dispatch({
action: 'start_post_registration',
@@ -1808,21 +1814,69 @@ export default createReactClass({
this._loggedInView = ref;
},
+ async onUserCompletedLoginFlow(credentials) {
+ // Wait for the client to be logged in (but not started)
+ // which is enough to ask the server about account data.
+ const loggedIn = new Promise(resolve => {
+ const actionHandlerRef = dis.register(payload => {
+ if (payload.action !== "on_logged_in") {
+ return;
+ }
+ dis.unregister(actionHandlerRef);
+ resolve();
+ });
+ });
+
+ // Create and start the client in the background
+ Lifecycle.setLoggedIn(credentials);
+ await loggedIn;
+
+ const cli = MatrixClientPeg.get();
+ // We're checking `isCryptoAvailable` here instead of `isCryptoEnabled`
+ // because the client hasn't been started yet.
+ if (!isCryptoAvailable()) {
+ this._onLoggedIn();
+ }
+
+ // Test for the master cross-signing key in SSSS as a quick proxy for
+ // whether cross-signing has been set up on the account.
+ let masterKeyInStorage = false;
+ try {
+ masterKeyInStorage = !!await cli.getAccountDataFromServer("m.cross_signing.master");
+ } catch (e) {
+ if (e.errcode !== "M_NOT_FOUND") throw e;
+ }
+
+ if (masterKeyInStorage) {
+ this.setStateForNewView({ view: VIEWS.COMPLETE_SECURITY });
+ } else {
+ this._onLoggedIn();
+ }
+ },
+
+ onCompleteSecurityFinished() {
+ this._onLoggedIn();
+ },
+
render: function() {
// console.log(`Rendering MatrixChat with view ${this.state.view}`);
let view;
- if (
- this.state.view === VIEWS.LOADING ||
- this.state.view === VIEWS.LOGGING_IN
- ) {
+ if (this.state.view === VIEWS.LOADING) {
const Spinner = sdk.getComponent('elements.Spinner');
view = (
);
+ } else if (this.state.view === VIEWS.COMPLETE_SECURITY) {
+ const CompleteSecurity = sdk.getComponent('structures.auth.CompleteSecurity');
+ view = (
+
+ );
} else if (this.state.view === VIEWS.POST_REGISTRATION) {
// needs to be before normal PageTypes as you are logged in technically
const PostRegistration = sdk.getComponent('structures.auth.PostRegistration');
@@ -1907,7 +1961,7 @@ export default createReactClass({
const Login = sdk.getComponent('structures.auth.Login');
view = (
;
- } else {
- const SlateMessageComposer = sdk.getComponent('rooms.SlateMessageComposer');
- messageComposer =
- ;
- }
+ const MessageComposer = sdk.getComponent('rooms.MessageComposer');
+ messageComposer =
+ ;
}
// TODO: Why aren't we storing the term/scope/count in this format
@@ -2013,5 +1992,3 @@ module.exports = createReactClass({
);
},
});
-
-module.exports.RoomContext = RoomContext;
diff --git a/src/components/structures/ScrollPanel.js b/src/components/structures/ScrollPanel.js
index f289720542..bc7c400949 100644
--- a/src/components/structures/ScrollPanel.js
+++ b/src/components/structures/ScrollPanel.js
@@ -84,7 +84,7 @@ if (DEBUG_SCROLL) {
* offset as normal.
*/
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'ScrollPanel',
propTypes: {
diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js
index 9090152de8..3be2f65dc5 100644
--- a/src/components/structures/SearchBox.js
+++ b/src/components/structures/SearchBox.js
@@ -24,7 +24,7 @@ import { throttle } from 'lodash';
import AccessibleButton from '../../components/views/elements/AccessibleButton';
import classNames from 'classnames';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'SearchBox',
propTypes: {
diff --git a/src/components/structures/TabbedView.js b/src/components/structures/TabbedView.js
index 01c68fad62..20af183af8 100644
--- a/src/components/structures/TabbedView.js
+++ b/src/components/structures/TabbedView.js
@@ -19,7 +19,7 @@ limitations under the License.
import * as React from "react";
import {_t} from '../../languageHandler';
import PropTypes from "prop-types";
-import sdk from "../../index";
+import * as sdk from "../../index";
/**
* Represents a tab for the TabbedView.
@@ -38,7 +38,7 @@ export class Tab {
}
}
-export class TabbedView extends React.Component {
+export default class TabbedView extends React.Component {
static propTypes = {
// The tabs to show
tabs: PropTypes.arrayOf(PropTypes.instanceOf(Tab)).isRequired,
diff --git a/src/components/structures/TagPanel.js b/src/components/structures/TagPanel.js
index c32da7193e..cefb60653f 100644
--- a/src/components/structures/TagPanel.js
+++ b/src/components/structures/TagPanel.js
@@ -20,7 +20,7 @@ import TagOrderStore from '../../stores/TagOrderStore';
import GroupActions from '../../actions/GroupActions';
-import sdk from '../../index';
+import * as sdk from '../../index';
import dis from '../../dispatcher';
import { _t } from '../../languageHandler';
diff --git a/src/components/structures/TagPanelButtons.js b/src/components/structures/TagPanelButtons.js
new file mode 100644
index 0000000000..93a596baa3
--- /dev/null
+++ b/src/components/structures/TagPanelButtons.js
@@ -0,0 +1,59 @@
+/*
+Copyright 2019 New Vector Ltd.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import createReactClass from 'create-react-class';
+import * as sdk from '../../index';
+import dis from '../../dispatcher';
+import Modal from '../../Modal';
+import { _t } from '../../languageHandler';
+
+const TagPanelButtons = createReactClass({
+ displayName: 'TagPanelButtons',
+
+
+ componentDidMount: function() {
+ this._dispatcherRef = dis.register(this._onAction);
+ },
+
+ componentWillUnmount() {
+ if (this._dispatcherRef) {
+ dis.unregister(this._dispatcherRef);
+ this._dispatcherRef = null;
+ }
+ },
+
+ _onAction(payload) {
+ if (payload.action === "show_redesign_feedback_dialog") {
+ const RedesignFeedbackDialog =
+ sdk.getComponent("views.dialogs.RedesignFeedbackDialog");
+ Modal.createTrackedDialog('Report bugs & give feedback', '', RedesignFeedbackDialog);
+ }
+ },
+
+ render() {
+ const GroupsButton = sdk.getComponent('elements.GroupsButton');
+ const ActionButton = sdk.getComponent("elements.ActionButton");
+
+ return (
+
+
+
);
+ },
+});
+export default TagPanelButtons;
diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js
index 53ae240653..a3ebd31d61 100644
--- a/src/components/structures/TimelinePanel.js
+++ b/src/components/structures/TimelinePanel.js
@@ -18,26 +18,24 @@ limitations under the License.
*/
import SettingsStore from "../../settings/SettingsStore";
-
import React, {createRef} from 'react';
import createReactClass from 'create-react-class';
import ReactDOM from "react-dom";
import PropTypes from 'prop-types';
-
-const Matrix = require("matrix-js-sdk");
-const EventTimeline = Matrix.EventTimeline;
-
-const sdk = require('../../index');
+import {EventTimeline} from "matrix-js-sdk";
+import * as Matrix from "matrix-js-sdk";
import { _t } from '../../languageHandler';
-const MatrixClientPeg = require("../../MatrixClientPeg");
-const dis = require("../../dispatcher");
-const ObjectUtils = require('../../ObjectUtils');
-const Modal = require("../../Modal");
-const UserActivity = require("../../UserActivity");
-import {Key} from '../../Keyboard';
+import {MatrixClientPeg} from "../../MatrixClientPeg";
+import * as ObjectUtils from "../../ObjectUtils";
+import UserActivity from "../../UserActivity";
+import Modal from "../../Modal";
+import dis from "../../dispatcher";
+import * as sdk from "../../index";
+import { Key } from '../../Keyboard';
import Timer from '../../utils/Timer';
import shouldHideEvent from '../../shouldHideEvent';
import EditorStateTransfer from '../../utils/EditorStateTransfer';
+import {haveTileForEvent} from "../views/rooms/EventTile";
const PAGINATE_SIZE = 20;
const INITIAL_SIZE = 20;
@@ -1138,8 +1136,6 @@ const TimelinePanel = createReactClass({
const messagePanel = this._messagePanel.current;
if (!messagePanel) return null;
- const EventTile = sdk.getComponent('rooms.EventTile');
-
const wrapperRect = ReactDOM.findDOMNode(messagePanel).getBoundingClientRect();
const myUserId = MatrixClientPeg.get().credentials.userId;
@@ -1181,7 +1177,7 @@ const TimelinePanel = createReactClass({
const shouldIgnore = !!ev.status || // local echo
(ignoreOwn && ev.sender && ev.sender.userId == myUserId); // own message
- const isWithoutTile = !EventTile.haveTileForEvent(ev) || shouldHideEvent(ev);
+ const isWithoutTile = !haveTileForEvent(ev) || shouldHideEvent(ev);
if (isWithoutTile || !node) {
// don't start counting if the event should be ignored,
@@ -1346,4 +1342,4 @@ const TimelinePanel = createReactClass({
},
});
-module.exports = TimelinePanel;
+export default TimelinePanel;
diff --git a/src/components/structures/TopLeftMenuButton.js b/src/components/structures/TopLeftMenuButton.js
index e7928ab4d7..967805d099 100644
--- a/src/components/structures/TopLeftMenuButton.js
+++ b/src/components/structures/TopLeftMenuButton.js
@@ -19,8 +19,8 @@ import React from 'react';
import PropTypes from 'prop-types';
import {TopLeftMenu} from '../views/context_menus/TopLeftMenu';
import BaseAvatar from '../views/avatars/BaseAvatar';
-import MatrixClientPeg from '../../MatrixClientPeg';
-import Avatar from '../../Avatar';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
+import * as Avatar from '../../Avatar';
import { _t } from '../../languageHandler';
import dis from "../../dispatcher";
import {ContextMenu, ContextMenuButton} from "./ContextMenu";
diff --git a/src/components/structures/UploadBar.js b/src/components/structures/UploadBar.js
index da0ca7fe99..1aec63f04e 100644
--- a/src/components/structures/UploadBar.js
+++ b/src/components/structures/UploadBar.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,11 +19,11 @@ import React from 'react';
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import ContentMessages from '../../ContentMessages';
-const dis = require('../../dispatcher');
-const filesize = require('filesize');
+import dis from "../../dispatcher";
+import filesize from "filesize";
import { _t } from '../../languageHandler';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'UploadBar',
propTypes: {
room: PropTypes.object,
diff --git a/src/components/structures/UserView.js b/src/components/structures/UserView.js
index 26d0ff5044..94159a1da4 100644
--- a/src/components/structures/UserView.js
+++ b/src/components/structures/UserView.js
@@ -18,8 +18,8 @@ limitations under the License.
import React from "react";
import PropTypes from "prop-types";
import Matrix from "matrix-js-sdk";
-import MatrixClientPeg from "../../MatrixClientPeg";
-import sdk from "../../index";
+import {MatrixClientPeg} from "../../MatrixClientPeg";
+import * as sdk from "../../index";
import Modal from '../../Modal';
import { _t } from '../../languageHandler';
diff --git a/src/components/structures/ViewSource.js b/src/components/structures/ViewSource.js
index ef4ede517a..326ba2c22f 100644
--- a/src/components/structures/ViewSource.js
+++ b/src/components/structures/ViewSource.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,10 +21,10 @@ import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
import SyntaxHighlight from '../views/elements/SyntaxHighlight';
import {_t} from "../../languageHandler";
-import sdk from "../../index";
+import * as sdk from "../../index";
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'ViewSource',
propTypes: {
diff --git a/src/components/structures/auth/CompleteSecurity.js b/src/components/structures/auth/CompleteSecurity.js
new file mode 100644
index 0000000000..77f7fe26e4
--- /dev/null
+++ b/src/components/structures/auth/CompleteSecurity.js
@@ -0,0 +1,173 @@
+/*
+Copyright 2020 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import { _t } from '../../../languageHandler';
+import * as sdk from '../../../index';
+import { MatrixClientPeg } from '../../../MatrixClientPeg';
+import { accessSecretStorage } from '../../../CrossSigningManager';
+
+const PHASE_INTRO = 0;
+const PHASE_DONE = 1;
+const PHASE_CONFIRM_SKIP = 2;
+
+export default class CompleteSecurity extends React.Component {
+ static propTypes = {
+ onFinished: PropTypes.func.isRequired,
+ };
+
+ constructor() {
+ super();
+
+ this.state = {
+ phase: PHASE_INTRO,
+ };
+ }
+
+ onStartClick = async () => {
+ const cli = MatrixClientPeg.get();
+ await accessSecretStorage(async () => {
+ await cli.checkOwnCrossSigningTrust();
+ });
+ this.setState({
+ phase: PHASE_DONE,
+ });
+ }
+
+ onSkipClick = () => {
+ this.setState({
+ phase: PHASE_CONFIRM_SKIP,
+ });
+ }
+
+ onSkipConfirmClick = () => {
+ this.props.onFinished();
+ }
+
+ onSkipBackClick = () => {
+ this.setState({
+ phase: PHASE_INTRO,
+ });
+ }
+
+ onDoneClick = () => {
+ this.props.onFinished();
+ }
+
+ render() {
+ const AuthPage = sdk.getComponent("auth.AuthPage");
+ const AuthHeader = sdk.getComponent("auth.AuthHeader");
+ const AuthBody = sdk.getComponent("auth.AuthBody");
+ const AccessibleButton = sdk.getComponent("elements.AccessibleButton");
+
+ const {
+ phase,
+ } = this.state;
+
+ let icon;
+ let title;
+ let body;
+ if (phase === PHASE_INTRO) {
+ icon = ;
+ title = _t("Complete security");
+ body = (
+
+
{_t(
+ "Verify this session to grant it access to encrypted messages.",
+ )}
+
+
+ {_t("Skip")}
+
+
+ {_t("Start")}
+
+
+
+ );
+ } else if (phase === PHASE_DONE) {
+ icon = ;
+ title = _t("Session verified");
+ body = (
+
+
+
{_t(
+ "Your new session is now verified. It has access to your " +
+ "encrypted messages, and other users will see it as trusted.",
+ )}
+
+
+ {_t("Done")}
+
+
+
+ );
+ } else if (phase === PHASE_CONFIRM_SKIP) {
+ icon = ;
+ title = _t("Are you sure?");
+ body = (
+
+
{_t(
+ "Without completing security on this device, it won’t have " +
+ "access to encrypted messages.",
+ )}
- );
- }
-}
diff --git a/src/components/views/rooms/PinnedEventTile.js b/src/components/views/rooms/PinnedEventTile.js
index 1279c01049..28fc8fc338 100644
--- a/src/components/views/rooms/PinnedEventTile.js
+++ b/src/components/views/rooms/PinnedEventTile.js
@@ -17,7 +17,7 @@ limitations under the License.
import React from "react";
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-import MatrixClientPeg from "../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
import dis from "../../../dispatcher";
import AccessibleButton from "../elements/AccessibleButton";
import MessageEvent from "../messages/MessageEvent";
@@ -25,7 +25,7 @@ import MemberAvatar from "../avatars/MemberAvatar";
import { _t } from '../../../languageHandler';
import {formatFullDate} from '../../../DateUtils';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'PinnedEventTile',
propTypes: {
mxRoom: PropTypes.object.isRequired,
diff --git a/src/components/views/rooms/PinnedEventsPanel.js b/src/components/views/rooms/PinnedEventsPanel.js
index dd2febdf39..8630c0340e 100644
--- a/src/components/views/rooms/PinnedEventsPanel.js
+++ b/src/components/views/rooms/PinnedEventsPanel.js
@@ -1,5 +1,6 @@
/*
Copyright 2017 Travis Ralston
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,13 +18,13 @@ limitations under the License.
import React from "react";
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-import MatrixClientPeg from "../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
import AccessibleButton from "../elements/AccessibleButton";
import PinnedEventTile from "./PinnedEventTile";
import { _t } from '../../../languageHandler';
import PinningUtils from "../../../utils/PinningUtils";
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'PinnedEventsPanel',
propTypes: {
// The Room from the js-sdk we're going to show pinned events for
diff --git a/src/components/views/rooms/PresenceLabel.js b/src/components/views/rooms/PresenceLabel.js
index 5cb34b473f..f9dcd7e89d 100644
--- a/src/components/views/rooms/PresenceLabel.js
+++ b/src/components/views/rooms/PresenceLabel.js
@@ -21,7 +21,7 @@ import createReactClass from 'create-react-class';
import { _t } from '../../../languageHandler';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'PresenceLabel',
propTypes: {
diff --git a/src/components/views/rooms/ReadReceiptMarker.js b/src/components/views/rooms/ReadReceiptMarker.js
index 35d745ae5a..7704291631 100644
--- a/src/components/views/rooms/ReadReceiptMarker.js
+++ b/src/components/views/rooms/ReadReceiptMarker.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,14 +18,11 @@ limitations under the License.
import React, {createRef} from 'react';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-
-const sdk = require('../../../index');
-
-const Velociraptor = require('../../../Velociraptor');
-require('../../../VelocityBounce');
+import('../../../VelocityBounce');
import { _t } from '../../../languageHandler';
-
import {formatDate} from '../../../DateUtils';
+import Velociraptor from "../../../Velociraptor";
+import * as sdk from "../../../index";
let bounce = false;
try {
@@ -34,7 +32,7 @@ try {
} catch (e) {
}
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'ReadReceiptMarker',
propTypes: {
diff --git a/src/components/views/rooms/ReplyPreview.js b/src/components/views/rooms/ReplyPreview.js
index af2ea640f5..b28494c65a 100644
--- a/src/components/views/rooms/ReplyPreview.js
+++ b/src/components/views/rooms/ReplyPreview.js
@@ -16,7 +16,7 @@ limitations under the License.
import React from 'react';
import dis from '../../../dispatcher';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import { _t } from '../../../languageHandler';
import RoomViewStore from '../../../stores/RoomViewStore';
import SettingsStore from "../../../settings/SettingsStore";
diff --git a/src/components/views/rooms/RoomBreadcrumbs.js b/src/components/views/rooms/RoomBreadcrumbs.js
index 79e9f5c862..5a15a7518b 100644
--- a/src/components/views/rooms/RoomBreadcrumbs.js
+++ b/src/components/views/rooms/RoomBreadcrumbs.js
@@ -16,12 +16,12 @@ limitations under the License.
import React, {createRef} from "react";
import dis from "../../../dispatcher";
-import MatrixClientPeg from "../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
import AccessibleButton from '../elements/AccessibleButton';
import RoomAvatar from '../avatars/RoomAvatar';
import classNames from 'classnames';
-import sdk from "../../../index";
+import * as sdk from "../../../index";
import Analytics from "../../../Analytics";
import * as RoomNotifs from '../../../RoomNotifs';
import * as FormattingUtils from "../../../utils/FormattingUtils";
diff --git a/src/components/views/rooms/RoomDetailList.js b/src/components/views/rooms/RoomDetailList.js
index 19cd24b6e5..db7b86da4f 100644
--- a/src/components/views/rooms/RoomDetailList.js
+++ b/src/components/views/rooms/RoomDetailList.js
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import dis from '../../../dispatcher';
import React from 'react';
import { _t } from '../../../languageHandler';
diff --git a/src/components/views/rooms/RoomDetailRow.js b/src/components/views/rooms/RoomDetailRow.js
index 26a4697337..2210406c18 100644
--- a/src/components/views/rooms/RoomDetailRow.js
+++ b/src/components/views/rooms/RoomDetailRow.js
@@ -14,14 +14,14 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import React, {createRef} from 'react';
import { _t } from '../../../languageHandler';
import { linkifyElement } from '../../../HtmlUtils';
-import { ContentRepo } from 'matrix-js-sdk';
-import MatrixClientPeg from '../../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../../MatrixClientPeg';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
+import {getHttpUriForMxc} from "matrix-js-sdk/src/content-repo";
export function getDisplayAliasForRoom(room) {
return room.canonicalAlias || (room.aliases ? room.aliases[0] : "");
@@ -101,7 +101,7 @@ export default createReactClass({
diff --git a/src/components/views/rooms/RoomDropTarget.js b/src/components/views/rooms/RoomDropTarget.js
index 1012b23105..61b7ca6d59 100644
--- a/src/components/views/rooms/RoomDropTarget.js
+++ b/src/components/views/rooms/RoomDropTarget.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@ limitations under the License.
import React from 'react';
import createReactClass from 'create-react-class';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'RoomDropTarget',
render: function() {
diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js
index eaf2e733ca..09f3fd489f 100644
--- a/src/components/views/rooms/RoomHeader.js
+++ b/src/components/views/rooms/RoomHeader.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,9 +19,9 @@ import React, {createRef} from 'react';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
import classNames from 'classnames';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import { _t } from '../../../languageHandler';
-import MatrixClientPeg from '../../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../../MatrixClientPeg';
import Modal from "../../../Modal";
import RateLimitedFunc from '../../../ratelimitedfunc';
@@ -32,7 +33,7 @@ import SettingsStore from "../../../settings/SettingsStore";
import RoomHeaderButtons from '../right_panel/RoomHeaderButtons';
import E2EIcon from './E2EIcon';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'RoomHeader',
propTypes: {
@@ -159,6 +160,14 @@ module.exports = createReactClass({
:
undefined;
+ const joinRules = this.props.room && this.props.room.currentState.getStateEvents("m.room.join_rules", "");
+ const joinRule = joinRules && joinRules.getContent().join_rule;
+ const joinRuleClass = classNames("mx_RoomHeader_PrivateIcon",
+ {"mx_RoomHeader_isPrivate": joinRule === "invite"});
+ const privateIcon = SettingsStore.isFeatureEnabled("feature_cross_signing") ?
+ :
+ undefined;
+
if (this.props.onCancelClick) {
cancelButton = ;
}
@@ -303,6 +312,7 @@ module.exports = createReactClass({
{ roomAvatar }
{ e2eIcon }
+ { privateIcon }
{ name }
{ topicElement }
{ cancelButton }
diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js
index 35a5ca9e66..5c12b027a4 100644
--- a/src/components/views/rooms/RoomList.js
+++ b/src/components/views/rooms/RoomList.js
@@ -17,30 +17,29 @@ limitations under the License.
import SettingsStore from "../../../settings/SettingsStore";
import Timer from "../../../utils/Timer";
-
import React from "react";
import ReactDOM from "react-dom";
import createReactClass from 'create-react-class';
import PropTypes from 'prop-types';
-import utils from "matrix-js-sdk/lib/utils";
+import * as utils from "matrix-js-sdk/src/utils";
import { _t } from '../../../languageHandler';
-const MatrixClientPeg = require("../../../MatrixClientPeg");
-const CallHandler = require('../../../CallHandler');
-const dis = require("../../../dispatcher");
-const sdk = require('../../../index');
-const rate_limited_func = require('../../../ratelimitedfunc');
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
+import rate_limited_func from "../../../ratelimitedfunc";
import * as Rooms from '../../../Rooms';
import DMRoomMap from '../../../utils/DMRoomMap';
-const Receipt = require('../../../utils/Receipt');
import TagOrderStore from '../../../stores/TagOrderStore';
import RoomListStore from '../../../stores/RoomListStore';
import CustomRoomTagStore from '../../../stores/CustomRoomTagStore';
import GroupStore from '../../../stores/GroupStore';
import RoomSubList from '../../structures/RoomSubList';
import ResizeHandle from '../elements/ResizeHandle';
-
+import CallHandler from "../../../CallHandler";
+import dis from "../../../dispatcher";
+import * as sdk from "../../../index";
+import * as Receipt from "../../../utils/Receipt";
import {Resizer} from '../../../resizer';
import {Layout, Distributor} from '../../../resizer/distributors/roomsublist2';
+
const HIDE_CONFERENCE_CHANS = true;
const STANDARD_TAGS_REGEX = /^(m\.(favourite|lowpriority|server_notice)|im\.vector\.fake\.(invite|recent|direct|archived))$/;
const HOVER_MOVE_TIMEOUT = 1000;
@@ -50,7 +49,7 @@ function labelForTagName(tagName) {
return tagName;
}
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'RoomList',
propTypes: {
@@ -385,7 +384,7 @@ module.exports = createReactClass({
this._delayedRefreshRoomList();
},
- _delayedRefreshRoomList: new rate_limited_func(function() {
+ _delayedRefreshRoomList: rate_limited_func(function() {
this.refreshRoomList();
}, 500),
diff --git a/src/components/views/rooms/RoomNameEditor.js b/src/components/views/rooms/RoomNameEditor.js
index 375a4b42b1..b65d89ee6f 100644
--- a/src/components/views/rooms/RoomNameEditor.js
+++ b/src/components/views/rooms/RoomNameEditor.js
@@ -17,11 +17,11 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-const sdk = require('../../../index');
-const MatrixClientPeg = require('../../../MatrixClientPeg');
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
+import * as sdk from "../../../index";
import { _t } from '../../../languageHandler';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'RoomNameEditor',
propTypes: {
diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js
index a43a4df158..cbc992d67f 100644
--- a/src/components/views/rooms/RoomPreviewBar.js
+++ b/src/components/views/rooms/RoomPreviewBar.js
@@ -19,8 +19,8 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-import sdk from '../../../index';
-import MatrixClientPeg from '../../../MatrixClientPeg';
+import * as sdk from '../../../index';
+import {MatrixClientPeg} from '../../../MatrixClientPeg';
import dis from '../../../dispatcher';
import classNames from 'classnames';
import { _t } from '../../../languageHandler';
@@ -43,7 +43,7 @@ const MessageCase = Object.freeze({
OtherError: "OtherError",
});
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'RoomPreviewBar',
propTypes: {
diff --git a/src/components/views/rooms/RoomRecoveryReminder.js b/src/components/views/rooms/RoomRecoveryReminder.js
index 6b7366bc4f..6ce5e8153a 100644
--- a/src/components/views/rooms/RoomRecoveryReminder.js
+++ b/src/components/views/rooms/RoomRecoveryReminder.js
@@ -1,5 +1,6 @@
/*
Copyright 2018, 2019 New Vector Ltd
+Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,10 +17,10 @@ limitations under the License.
import React from "react";
import PropTypes from "prop-types";
-import sdk from "../../../index";
+import * as sdk from "../../../index";
import { _t } from "../../../languageHandler";
import Modal from "../../../Modal";
-import MatrixClientPeg from "../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../MatrixClientPeg";
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
export default class RoomRecoveryReminder extends React.PureComponent {
@@ -70,10 +71,14 @@ export default class RoomRecoveryReminder extends React.PureComponent {
// verified, so restore the backup which will give us the keys from it and
// allow us to trust it (ie. upload keys to it)
const RestoreKeyBackupDialog = sdk.getComponent('dialogs.keybackup.RestoreKeyBackupDialog');
- Modal.createTrackedDialog('Restore Backup', '', RestoreKeyBackupDialog, {});
+ Modal.createTrackedDialog(
+ 'Restore Backup', '', RestoreKeyBackupDialog, null, null,
+ /* priority = */ false, /* static = */ true,
+ );
} else {
Modal.createTrackedDialogAsync("Key Backup", "Key Backup",
import("../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog"),
+ null, null, /* priority = */ false, /* static = */ true,
);
}
}
@@ -150,14 +155,14 @@ export default class RoomRecoveryReminder extends React.PureComponent {
onClick={this.onSetupClick}>
{setupCaption}
-
+ );
+ }
+}
diff --git a/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.js b/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.js
index 2e718b0b69..b65f8d49a4 100644
--- a/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.js
+++ b/src/components/views/settings/tabs/room/GeneralRoomSettingsTab.js
@@ -18,7 +18,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import {_t} from "../../../../../languageHandler";
import RoomProfileSettings from "../../../room_settings/RoomProfileSettings";
-import sdk from "../../../../..";
+import * as sdk from "../../../../..";
import AccessibleButton from "../../../elements/AccessibleButton";
import dis from "../../../../../dispatcher";
import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
diff --git a/src/components/views/settings/tabs/room/NotificationSettingsTab.js b/src/components/views/settings/tabs/room/NotificationSettingsTab.js
index 448963dacf..9db27651c0 100644
--- a/src/components/views/settings/tabs/room/NotificationSettingsTab.js
+++ b/src/components/views/settings/tabs/room/NotificationSettingsTab.js
@@ -17,7 +17,7 @@ limitations under the License.
import React, {createRef} from 'react';
import PropTypes from 'prop-types';
import {_t} from "../../../../../languageHandler";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
import AccessibleButton from "../../../elements/AccessibleButton";
import Notifier from "../../../../../Notifier";
import SettingsStore from '../../../../../settings/SettingsStore';
diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js
index c826f89916..42947d1fb2 100644
--- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js
+++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.js
@@ -17,8 +17,8 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import {_t, _td} from "../../../../../languageHandler";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
-import sdk from "../../../../..";
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
+import * as sdk from "../../../../..";
import AccessibleButton from "../../../elements/AccessibleButton";
import Modal from "../../../../../Modal";
diff --git a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js
index b44d7b019d..0c66503c43 100644
--- a/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js
+++ b/src/components/views/settings/tabs/room/SecurityRoomSettingsTab.js
@@ -17,8 +17,8 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import {_t} from "../../../../../languageHandler";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
-import sdk from "../../../../..";
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
+import * as sdk from "../../../../..";
import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
import {SettingLevel} from "../../../../../settings/SettingsStore";
import Modal from "../../../../../Modal";
diff --git a/src/components/views/settings/tabs/user/GeneralUserSettingsTab.js b/src/components/views/settings/tabs/user/GeneralUserSettingsTab.js
index cae4b19891..908968b051 100644
--- a/src/components/views/settings/tabs/user/GeneralUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/GeneralUserSettingsTab.js
@@ -29,8 +29,8 @@ import DeactivateAccountDialog from "../../../dialogs/DeactivateAccountDialog";
import PropTypes from "prop-types";
import {enumerateThemes, ThemeWatcher} from "../../../../../theme";
import PlatformPeg from "../../../../../PlatformPeg";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
-import sdk from "../../../../..";
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
+import * as sdk from "../../../../..";
import Modal from "../../../../../Modal";
import dis from "../../../../../dispatcher";
import {Service, startTermsFlow} from "../../../../../Terms";
diff --git a/src/components/views/settings/tabs/user/HelpUserSettingsTab.js b/src/components/views/settings/tabs/user/HelpUserSettingsTab.js
index 875f0bfc10..ab71de86b9 100644
--- a/src/components/views/settings/tabs/user/HelpUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/HelpUserSettingsTab.js
@@ -17,14 +17,14 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import {_t, getCurrentLanguage} from "../../../../../languageHandler";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
import AccessibleButton from "../../../elements/AccessibleButton";
import SdkConfig from "../../../../../SdkConfig";
import createRoom from "../../../../../createRoom";
-const packageJson = require('../../../../../../package.json');
-const Modal = require("../../../../../Modal");
-const sdk = require("../../../../..");
-const PlatformPeg = require("../../../../../PlatformPeg");
+import packageJson from "../../../../../../package.json";
+import Modal from "../../../../../Modal";
+import * as sdk from "../../../../../";
+import PlatformPeg from "../../../../../PlatformPeg";
// if this looks like a release, use the 'version' from package.json; else use
// the git sha. Prepend version with v, to look like riot-web version
diff --git a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js
index 5f7d75c5c3..ec5f984d46 100644
--- a/src/components/views/settings/tabs/user/LabsUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/LabsUserSettingsTab.js
@@ -19,7 +19,7 @@ import {_t} from "../../../../../languageHandler";
import PropTypes from "prop-types";
import SettingsStore, {SettingLevel} from "../../../../../settings/SettingsStore";
import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
-const sdk = require("../../../../..");
+import * as sdk from "../../../../../index";
export class LabsSettingToggle extends React.Component {
static propTypes = {
diff --git a/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.js b/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.js
index 608be0b129..7f3a2c401d 100644
--- a/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/MjolnirUserSettingsTab.js
@@ -20,9 +20,8 @@ import {Mjolnir} from "../../../../../mjolnir/Mjolnir";
import {ListRule} from "../../../../../mjolnir/ListRule";
import {BanList, RULE_SERVER, RULE_USER} from "../../../../../mjolnir/BanList";
import Modal from "../../../../../Modal";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
-
-const sdk = require("../../../../..");
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
+import * as sdk from "../../../../../index";
export default class MjolnirUserSettingsTab extends React.Component {
constructor() {
diff --git a/src/components/views/settings/tabs/user/NotificationUserSettingsTab.js b/src/components/views/settings/tabs/user/NotificationUserSettingsTab.js
index 970659af6e..2e649cb7f8 100644
--- a/src/components/views/settings/tabs/user/NotificationUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/NotificationUserSettingsTab.js
@@ -16,7 +16,7 @@ limitations under the License.
import React from 'react';
import {_t} from "../../../../../languageHandler";
-const sdk = require("../../../../..");
+import * as sdk from "../../../../../index";
export default class NotificationUserSettingsTab extends React.Component {
constructor() {
diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js
index 6fc854c155..db5b95cb4c 100644
--- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js
@@ -21,12 +21,11 @@ import {SettingLevel} from "../../../../../settings/SettingsStore";
import LabelledToggleSwitch from "../../../elements/LabelledToggleSwitch";
import SettingsStore from "../../../../../settings/SettingsStore";
import Field from "../../../elements/Field";
-import sdk from "../../../../..";
+import * as sdk from "../../../../..";
import PlatformPeg from "../../../../../PlatformPeg";
export default class PreferencesUserSettingsTab extends React.Component {
static COMPOSER_SETTINGS = [
- 'useCiderComposer',
'MessageComposerInput.autoReplaceEmoji',
'MessageComposerInput.suggestEmoji',
'sendTypingNotifications',
diff --git a/src/components/views/settings/tabs/user/SecurityUserSettingsTab.js b/src/components/views/settings/tabs/user/SecurityUserSettingsTab.js
index 8f4e909d9d..5eadfc234a 100644
--- a/src/components/views/settings/tabs/user/SecurityUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/SecurityUserSettingsTab.js
@@ -18,12 +18,12 @@ import React from 'react';
import PropTypes from 'prop-types';
import {_t} from "../../../../../languageHandler";
import SettingsStore, {SettingLevel} from "../../../../../settings/SettingsStore";
-import MatrixClientPeg from "../../../../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
import * as FormattingUtils from "../../../../../utils/FormattingUtils";
import AccessibleButton from "../../../elements/AccessibleButton";
import Analytics from "../../../../../Analytics";
import Modal from "../../../../../Modal";
-import sdk from "../../../../..";
+import * as sdk from "../../../../..";
import {sleep} from "../../../../../utils/promise";
export class IgnoredUser extends React.Component {
diff --git a/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js b/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js
index 18ea5a82be..f4fbcada3a 100644
--- a/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/VoiceUserSettingsTab.js
@@ -20,9 +20,9 @@ import CallMediaHandler from "../../../../../CallMediaHandler";
import Field from "../../../elements/Field";
import AccessibleButton from "../../../elements/AccessibleButton";
import {SettingLevel} from "../../../../../settings/SettingsStore";
-const Modal = require("../../../../../Modal");
-const sdk = require("../../../../..");
-const MatrixClientPeg = require("../../../../../MatrixClientPeg");
+import {MatrixClientPeg} from "../../../../../MatrixClientPeg";
+import * as sdk from "../../../../../index";
+import Modal from "../../../../../Modal";
export default class VoiceUserSettingsTab extends React.Component {
constructor() {
diff --git a/src/components/views/terms/InlineTermsAgreement.js b/src/components/views/terms/InlineTermsAgreement.js
index 836b34c585..75e8eccea3 100644
--- a/src/components/views/terms/InlineTermsAgreement.js
+++ b/src/components/views/terms/InlineTermsAgreement.js
@@ -17,7 +17,7 @@ limitations under the License.
import React from "react";
import PropTypes from "prop-types";
import {_t, pickBestLanguage} from "../../../languageHandler";
-import sdk from "../../..";
+import * as sdk from "../../..";
export default class InlineTermsAgreement extends React.Component {
static propTypes = {
diff --git a/src/components/views/toasts/VerificationRequestToast.js b/src/components/views/toasts/VerificationRequestToast.js
index f616575973..8d75f84a55 100644
--- a/src/components/views/toasts/VerificationRequestToast.js
+++ b/src/components/views/toasts/VerificationRequestToast.js
@@ -16,9 +16,9 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
-import sdk from "../../../index";
+import * as sdk from "../../../index";
import { _t } from '../../../languageHandler';
-import MatrixClientPeg from '../../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../../MatrixClientPeg';
import {RIGHT_PANEL_PHASES} from "../../../stores/RightPanelStorePhases";
import {userLabelForEventRoom} from "../../../utils/KeyVerificationStateObserver";
import dis from "../../../dispatcher";
diff --git a/src/components/views/verification/VerificationCancelled.js b/src/components/views/verification/VerificationCancelled.js
index baace2ca1e..fc2a287359 100644
--- a/src/components/views/verification/VerificationCancelled.js
+++ b/src/components/views/verification/VerificationCancelled.js
@@ -16,7 +16,7 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import { _t } from '../../../languageHandler';
export default class VerificationCancelled extends React.Component {
diff --git a/src/components/views/verification/VerificationComplete.js b/src/components/views/verification/VerificationComplete.js
index 59f7ff924a..2214711b1f 100644
--- a/src/components/views/verification/VerificationComplete.js
+++ b/src/components/views/verification/VerificationComplete.js
@@ -16,7 +16,7 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import { _t } from '../../../languageHandler';
export default class VerificationComplete extends React.Component {
diff --git a/src/components/views/verification/VerificationShowSas.js b/src/components/views/verification/VerificationShowSas.js
index e7846a0199..8f39457689 100644
--- a/src/components/views/verification/VerificationShowSas.js
+++ b/src/components/views/verification/VerificationShowSas.js
@@ -16,7 +16,7 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import { _t, _td } from '../../../languageHandler';
function capFirst(s) {
@@ -140,7 +140,7 @@ _td("Book");
_td("Pencil");
_td("Paperclip");
_td("Scissors");
-_td("Padlock");
+_td("Lock");
_td("Key");
_td("Hammer");
_td("Telephone");
diff --git a/src/components/views/voip/CallPreview.js b/src/components/views/voip/CallPreview.js
index 15c30dcb5b..57bf35a719 100644
--- a/src/components/views/voip/CallPreview.js
+++ b/src/components/views/voip/CallPreview.js
@@ -1,5 +1,6 @@
/*
Copyright 2017, 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,9 +21,9 @@ import createReactClass from 'create-react-class';
import RoomViewStore from '../../../stores/RoomViewStore';
import CallHandler from '../../../CallHandler';
import dis from '../../../dispatcher';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'CallPreview',
propTypes: {
diff --git a/src/components/views/voip/CallView.js b/src/components/views/voip/CallView.js
index 3a62ffbac2..70d7963bcb 100644
--- a/src/components/views/voip/CallView.js
+++ b/src/components/views/voip/CallView.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,11 +19,11 @@ import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
import dis from '../../../dispatcher';
import CallHandler from '../../../CallHandler';
-import sdk from '../../../index';
-import MatrixClientPeg from '../../../MatrixClientPeg';
+import * as sdk from '../../../index';
+import {MatrixClientPeg} from '../../../MatrixClientPeg';
import { _t } from '../../../languageHandler';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'CallView',
propTypes: {
diff --git a/src/components/views/voip/IncomingCallBox.js b/src/components/views/voip/IncomingCallBox.js
index 2a2839d103..53e829b784 100644
--- a/src/components/views/voip/IncomingCallBox.js
+++ b/src/components/views/voip/IncomingCallBox.js
@@ -1,6 +1,7 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,12 +18,12 @@ limitations under the License.
import React from 'react';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-import MatrixClientPeg from '../../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../../MatrixClientPeg';
import dis from '../../../dispatcher';
import { _t } from '../../../languageHandler';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'IncomingCallBox',
propTypes: {
diff --git a/src/components/views/voip/VideoFeed.js b/src/components/views/voip/VideoFeed.js
index 0faa227088..4210c60177 100644
--- a/src/components/views/voip/VideoFeed.js
+++ b/src/components/views/voip/VideoFeed.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -18,7 +19,7 @@ import React, {createRef} from 'react';
import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'VideoFeed',
propTypes: {
diff --git a/src/components/views/voip/VideoView.js b/src/components/views/voip/VideoView.js
index 83584bcc68..eabf29813a 100644
--- a/src/components/views/voip/VideoView.js
+++ b/src/components/views/voip/VideoView.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -20,7 +21,7 @@ import PropTypes from 'prop-types';
import createReactClass from 'create-react-class';
import classNames from 'classnames';
-import sdk from '../../../index';
+import * as sdk from '../../../index';
import dis from '../../../dispatcher';
import SettingsStore from "../../../settings/SettingsStore";
@@ -34,7 +35,7 @@ function getFullScreenElement() {
);
}
-module.exports = createReactClass({
+export default createReactClass({
displayName: 'VideoView',
propTypes: {
diff --git a/src/createRoom.js b/src/createRoom.js
index 766c9b0c8f..cde9e8b03e 100644
--- a/src/createRoom.js
+++ b/src/createRoom.js
@@ -15,9 +15,9 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from './MatrixClientPeg';
+import {MatrixClientPeg} from './MatrixClientPeg';
import Modal from './Modal';
-import sdk from './index';
+import * as sdk from './index';
import { _t } from './languageHandler';
import dis from "./dispatcher";
import * as Rooms from "./Rooms";
diff --git a/src/cryptodevices.js b/src/cryptodevices.js
index 161787fcbb..f56a80e1e4 100644
--- a/src/cryptodevices.js
+++ b/src/cryptodevices.js
@@ -15,7 +15,7 @@ limitations under the License.
*/
import Resend from './Resend';
-import sdk from './index';
+import * as sdk from './index';
import dis from './dispatcher';
import Modal from './Modal';
import { _t } from './languageHandler';
diff --git a/src/dispatcher.js b/src/dispatcher.js
index 48c8dc86e9..5dfaa11345 100644
--- a/src/dispatcher.js
+++ b/src/dispatcher.js
@@ -17,7 +17,7 @@ limitations under the License.
'use strict';
-const flux = require("flux");
+import flux from "flux";
class MatrixDispatcher extends flux.Dispatcher {
/**
@@ -55,4 +55,4 @@ class MatrixDispatcher extends flux.Dispatcher {
if (global.mxDispatcher === undefined) {
global.mxDispatcher = new MatrixDispatcher();
}
-module.exports = global.mxDispatcher;
+export default global.mxDispatcher;
diff --git a/src/editor/parts.js b/src/editor/parts.js
index f0b713beb6..137018d7e9 100644
--- a/src/editor/parts.js
+++ b/src/editor/parts.js
@@ -16,7 +16,7 @@ limitations under the License.
*/
import AutocompleteWrapperModel from "./autocomplete";
-import Avatar from "../Avatar";
+import * as Avatar from "../Avatar";
class BasePart {
constructor(text = "") {
diff --git a/src/email.js b/src/email.js
index 3fd535c849..6e2ed69bb7 100644
--- a/src/email.js
+++ b/src/email.js
@@ -16,8 +16,6 @@ limitations under the License.
const EMAIL_ADDRESS_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;
-module.exports = {
- looksValid: function(email) {
- return EMAIL_ADDRESS_REGEX.test(email);
- },
-};
+export function looksValid(email) {
+ return EMAIL_ADDRESS_REGEX.test(email);
+}
diff --git a/src/emoji.js b/src/emoji.js
index 7b7a9c1bfe..125864e381 100644
--- a/src/emoji.js
+++ b/src/emoji.js
@@ -16,14 +16,12 @@ limitations under the License.
import EMOJIBASE from 'emojibase-data/en/compact.json';
-export const VARIATION_SELECTOR = String.fromCharCode(0xFE0F);
-
// The unicode is stored without the variant selector
const UNICODE_TO_EMOJI = new Map(); // not exported as gets for it are handled by getEmojiFromUnicode
export const EMOTICON_TO_EMOJI = new Map();
export const SHORTCODE_TO_EMOJI = new Map();
-export const getEmojiFromUnicode = unicode => UNICODE_TO_EMOJI.get(unicode.replace(VARIATION_SELECTOR, ""));
+export const getEmojiFromUnicode = unicode => UNICODE_TO_EMOJI.get(stripVariation(unicode));
const EMOJIBASE_GROUP_ID_TO_CATEGORY = [
"people", // smileys
@@ -51,13 +49,6 @@ export const DATA_BY_CATEGORY = {
// Store various mappings from unicode/emoticon/shortcode to the Emoji objects
EMOJIBASE.forEach(emoji => {
- if (emoji.unicode.includes(VARIATION_SELECTOR)) {
- // Clone data into variation-less version
- emoji = Object.assign({}, emoji, {
- unicode: emoji.unicode.replace(VARIATION_SELECTOR, ""),
- });
- }
-
const categoryId = EMOJIBASE_GROUP_ID_TO_CATEGORY[emoji.group];
if (DATA_BY_CATEGORY.hasOwnProperty(categoryId)) {
DATA_BY_CATEGORY[categoryId].push(emoji);
@@ -66,7 +57,13 @@ EMOJIBASE.forEach(emoji => {
emoji.filterString = `${emoji.annotation}\n${emoji.shortcodes.join('\n')}}\n${emoji.emoticon || ''}`.toLowerCase();
// Add mapping from unicode to Emoji object
- UNICODE_TO_EMOJI.set(emoji.unicode, emoji);
+ // The 'unicode' field that we use in emojibase has either
+ // VS15 or VS16 appended to any characters that can take
+ // variation selectors. Which one it appends depends
+ // on whether emojibase considers their type to be 'text' or
+ // 'emoji'. We therefore strip any variation chars from strings
+ // both when building the map and when looking up.
+ UNICODE_TO_EMOJI.set(stripVariation(emoji.unicode), emoji);
if (emoji.emoticon) {
// Add mapping from emoticon to Emoji object
@@ -80,3 +77,15 @@ EMOJIBASE.forEach(emoji => {
});
}
});
+
+/**
+ * Strips variation selectors from a string
+ * NB. Skin tone modifers are not variation selectors:
+ * this function does not touch them. (Should it?)
+ *
+ * @param {string} str string to strip
+ * @returns {string} stripped string
+ */
+function stripVariation(str) {
+ return str.replace(/[\uFE00-\uFE0F]/, "");
+}
diff --git a/src/extend.js b/src/extend.js
index 4b3f028a94..263d802ab6 100644
--- a/src/extend.js
+++ b/src/extend.js
@@ -16,11 +16,11 @@ limitations under the License.
'use strict';
-module.exports = function(dest, src) {
+export default function(dest, src) {
for (const i in src) {
if (src.hasOwnProperty(i)) {
dest[i] = src[i];
}
}
return dest;
-};
+}
diff --git a/src/i18n/strings/az.json b/src/i18n/strings/az.json
index c53258a28f..538403f164 100644
--- a/src/i18n/strings/az.json
+++ b/src/i18n/strings/az.json
@@ -70,7 +70,7 @@
"%(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",
"Unable to enable Notifications": "Xəbərdarlıqları daxil qoşmağı bacarmadı",
- "Default": "Default",
+ "Default": "Varsayılan olaraq",
"Moderator": "Moderator",
"Admin": "Administrator",
"Start a chat": "Danışığa başlamaq",
@@ -350,7 +350,7 @@
"Failed to invite users to community": "İstifadəçiləri cəmiyyətə dəvət etmək alınmadı",
"Unnamed Room": "Adı açıqlanmayan otaq",
"Unable to load! Check your network connectivity and try again.": "Yükləmək olmur! Şəbəkə bağlantınızı yoxlayın və yenidən cəhd edin.",
- "Dismiss": "Rədd et",
+ "Dismiss": "Nəzərə almayın",
"Riot does not have permission to send you notifications - please check your browser settings": "Riot-un sizə bildiriş göndərmək icazəsi yoxdur - brauzerinizin parametrlərini yoxlayın",
"Riot was not given permission to send notifications - please try again": "Riot bildiriş göndərmək üçün icazə verilmədi - lütfən yenidən cəhd edin",
"This email address was not found": "Bu e-poçt ünvanı tapılmadı",
@@ -389,5 +389,64 @@
"Verified key": "Təsdiqlənmiş açar",
"Sends the given message coloured as a rainbow": "Verilən mesajı göy qurşağı kimi rəngli göndərir",
"Sends the given emote coloured as a rainbow": "Göndərilmiş emote rəngini göy qurşağı kimi göndərir",
- "Unrecognised command:": "Tanınmayan əmr:"
+ "Unrecognised command:": "Tanınmayan əmr:",
+ "Add Email Address": "Emal ünvan əlavə etmək",
+ "Add Phone Number": "Telefon nömrəsi əlavə etmək",
+ "e.g. %(exampleValue)s": "e.g. %(exampleValue)s",
+ "Call failed due to misconfigured server": "Düzgün qurulmamış server səbəbindən zəng alınmadı",
+ "Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.": "Xahiş edirik, baş serverin administratoruna müraciət edin (%(homeserverDomain)s) ki zənglərin etibarlı işləməsi üçün dönüş serverini konfiqurasiya etsin.",
+ "Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Alternativ olaraq, ümumi serveri turn.matrix.org istifadə etməyə cəhd edə bilərsiniz, lakin bu qədər etibarlı olmayacaq və IP ünvanınızı bu serverlə bölüşəcəkdir. Bunu Ayarlarda da idarə edə bilərsiniz.",
+ "Try using turn.matrix.org": "Turn.matrix.org istifadə edin",
+ "The file '%(fileName)s' failed to upload.": "'%(fileName)s' faylı yüklənə bilmədi.",
+ "The file '%(fileName)s' exceeds this homeserver's size limit for uploads": "'%(fileName)s' faylı yükləmə üçün bu server ölçü həddini aşmışdır",
+ "Send cross-signing keys to homeserver": "Ev serveri üçün çarpaz imzalı açarları göndərin",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
+ "Add rooms to the community": "Icmaya otaqlar əlavə edin",
+ "Failed to invite the following users to %(groupId)s:": "Aşağıdakı istifadəçiləri %(groupId)s - ə dəvət etmək alınmadı:",
+ "Failed to invite users to %(groupId)s": "İstifadəçiləri %(groupId)s - a dəvət etmək alınmadı",
+ "Failed to add the following rooms to %(groupId)s:": "Aşağıdakı otaqları %(groupId)s - a əlavə etmək alınmadı:",
+ "Identity server has no terms of service": "Şəxsiyyət serverinin xidmət şərtləri yoxdur",
+ "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Bu hərəkət e-poçt ünvanı və ya telefon nömrəsini təsdiqləmək üçün standart şəxsiyyət serverinə girməyi tələb edir, lakin serverdə heç bir xidmət şəraiti yoxdur.",
+ "Only continue if you trust the owner of the server.": "Yalnız server sahibinə etibar etsəniz davam edin.",
+ "Trust": "Etibar",
+ "Custom (%(level)s)": "Xüsusi (%(level)s)",
+ "Failed to start chat": "Söhbətə başlamaq olmur",
+ "Failed to invite the following users to the %(roomName)s room:": "Aşağıdakı istifadəçiləri %(roomName)s otağına dəvət etmək alınmadı:",
+ "Room %(roomId)s not visible": "Otaq %(roomId)s görünmür",
+ "Messages": "Mesajlar",
+ "Actions": "Tədbirlər",
+ "Other": "Digər",
+ "Sends a message as plain text, without interpreting it as markdown": "Bir mesajı qeyd kimi şərh etmədən, düz mətn şəklində göndərir",
+ "You do not have the required permissions to use this command.": "Bu komandadan (əmrdən) istifadə etmək üçün tələb olunan icazəniz yoxdur.",
+ "Error upgrading room": "Otaq yeniləmə xətası",
+ "Double check that your server supports the room version chosen and try again.": "Serverinizin seçilmiş otaq versiyasını dəstəklədiyini bir daha yoxlayın və yenidən cəhd edin.",
+ "Changes the avatar of the current room": "Cari otağın avatarını dəyişdirir",
+ "Use an identity server": "Şəxsiyyət serverindən istifadə edin",
+ "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "E-poçtla dəvət etmək üçün şəxsiyyət serverindən istifadə edin. Defolt şəxsiyyət serverini (%(defaultIdentityServerName)s) istifadə etməyə və ya Parametrlərdə idarə etməyə davam edin.",
+ "Use an identity server to invite by email. Manage in Settings.": "E-poçtla dəvət etmək üçün şəxsiyyət serverindən istifadə edin. Parametrlərdə idarə edin.",
+ "Please supply a https:// or http:// widget URL": "Zəhmət olmasa https:// və ya http:// widget URL təmin edin",
+ "Device already verified!": "Cihaz artıq təsdiqləndi!",
+ "WARNING: Device already verified, but keys do NOT MATCH!": "XƏBƏRDARLIQ: Cihaz artıq təsdiqləndi, lakin açarlar uyğun gəlmir!",
+ "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "XƏBƏRDARLIQ: ƏSAS VERIFİKASİYA VERİLİR! %(userId)s və cihaz %(deviceId)s üçün imza açarı \"%(fprint)s\" ilə təmin olunmayan \"%(fingerprint)s\". Bu, ünsiyyətlərinizin tutulduğunu ifadə edə bilər!",
+ "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Təqdim etdiyiniz imza açarı %(userId)s cihazının %(deviceId)s cihazından aldığınız imza açarına uyğundur. Cihaz təsdiqlənmiş kimi qeyd edildi.",
+ "Forces the current outbound group session in an encrypted room to be discarded": "Şifrəli bir otaqda mövcud qrup sessiyasını ləğv etməyə məcbur edir",
+ "Displays list of commands with usages and descriptions": "İstifadə qaydaları və təsvirləri ilə komanda siyahısını göstərir",
+ "%(senderName)s requested a VoIP conference.": "%(senderName)s VoIP konfrans istədi.",
+ "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s göstərilən adlarını %(displayName)s olaraq dəyişdirdi.",
+ "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s öz adlarını %(displayName)s olaraq təyin etdilər.",
+ "%(senderName)s set a profile picture.": "%(senderName)s profil şəkli təyin etdi.",
+ "%(senderName)s made no change.": "%(senderName)s dəyişiklik etməyib.",
+ "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s otaq otağını sildi.",
+ "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s bu otağı təkmilləşdirdi.",
+ "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s linki olanlara otağı açıq etdi.",
+ "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s otağı yalnız dəvətlə açıq etdi.",
+ "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s qoşulma qaydasını %(rule)s olaraq dəyişdirdi",
+ "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s qonaq otağa qoşulmasına icazə verdi.",
+ "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s qonaqların otağa daxil olmasının qarşısını aldı.",
+ "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s %(rule)s-a qonaq girişi dəyişdirildi.",
+ "%(senderDisplayName)s enabled flair for %(groups)s in this room.": "Bu otaqda %(qruplar)s üçün %(senderDisplayName)s aktiv oldu.",
+ "%(senderDisplayName)s disabled flair for %(groups)s in this room.": "Bu otaqda %(groups)s üçün %(senderDisplayName)s aktiv oldu.",
+ "powered by Matrix": "Matrix tərəfindən təchiz edilmişdir",
+ "Custom Server Options": "Fərdi Server Seçimləri",
+ "%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.": "Bu otaqda %(newGroups)s üçün aktiv və %(oldGroups)s üçün %(senderDisplayName)s deaktiv oldu."
}
diff --git a/src/i18n/strings/bg.json b/src/i18n/strings/bg.json
index 3115ca140a..108eb8ffb7 100644
--- a/src/i18n/strings/bg.json
+++ b/src/i18n/strings/bg.json
@@ -1851,5 +1851,186 @@
"Connecting to integration manager...": "Свързане с мениджъра на интеграции...",
"Cannot connect to integration manager": "Неуспешна връзка с мениджъра на интеграции",
"The integration manager is offline or it cannot reach your homeserver.": "Мениджъра на интеграции е офлайн или не може да се свърже със сървъра ви.",
- "Clear notifications": "Изчисти уведомленията"
+ "Clear notifications": "Изчисти уведомленията",
+ "Send cross-signing keys to homeserver": "Изпрати ключове за кръстосано-подписване към сървъра",
+ "Error upgrading room": "Грешка при обновяване на стаята",
+ "Double check that your server supports the room version chosen and try again.": "Проверете дали сървъра поддържа тази версия на стаята и опитайте пак.",
+ "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s премахна правилото блокиращо достъпа на потребители отговарящи на %(glob)s",
+ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s премахна правилото блокиращо достъпа до стаи отговарящи на %(glob)s",
+ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s премахна правилото блокиращо достъпа до сървъри отговарящи на %(glob)s",
+ "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s премахна правилото блокиращо достъпа неща отговарящи на %(glob)s",
+ "%(senderName)s updated an invalid ban rule": "%(senderName)s обнови невалидно правило за блокиране",
+ "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s премахна правилото блокиращо достъпа на потребители отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s премахна правилото блокиращо достъпа до стаи отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s премахна правилото блокиращо достъпа до сървъри отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s премахна правилото блокиращо достъпа неща отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s създаде правило блокиращо достъпа на потребители отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s създаде правило блокиращо достъпа до стаи отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s създаде правило блокиращо достъпа до сървъри отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s създаде правило блокиращо достъпа до неща отговарящи на %(glob)s поради %(reason)s",
+ "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s промени правило блокиращо достъпа на потребители отговарящи на %(oldGlob)s към отговарящи на %(newGlob)s поради %(reason)s",
+ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s промени правило блокиращо достъпа до стаи отговарящи на %(oldGlob)s към отговарящи на %(newGlob)s поради %(reason)s",
+ "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s промени правило блокиращо достъпа до сървъри отговарящи на %(oldGlob)s към отговарящи на %(newGlob)s поради %(reason)s",
+ "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s промени правило блокиращо достъпа до неща отговарящи на %(oldGlob)s към отговарящи на %(newGlob)s поради %(reason)s",
+ "The message you are trying to send is too large.": "Съобщението, което се опитвате да изпратите е прекалено голямо.",
+ "Cross-signing and secret storage are enabled.": "Кръстосано-подписване и секретно складиране са включени.",
+ "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this device.": "За вашия профил има самоличност за кръстосано-подписване в секретно складиране, но все още не е доверена от това устройство.",
+ "Cross-signing and secret storage are not yet set up.": "Кръстосаното-подписване и секретно складиране все още не са настроени.",
+ "Bootstrap cross-signing and secret storage": "Инициализирай кръстосано-подписване и секретно складиране",
+ "Cross-signing public keys:": "Публични ключове за кръстосано-подписване:",
+ "on device": "на устройството",
+ "not found": "не са намерени",
+ "Cross-signing private keys:": "Private ключове за кръстосано подписване:",
+ "in secret storage": "в секретно складиране",
+ "Secret storage public key:": "Публичен ключ за секретно складиране:",
+ "in account data": "в данни за акаунта",
+ "not stored": "не е складиран",
+ "Backup has a valid signature from this user": "Резервното копие има валиден подпис за този потребител",
+ "Backup has a invalid signature from this user": "Резервното копие има невалиден подпис за този потребител",
+ "Backup has a signature from unknown user with ID %(deviceId)s": "Резервното копие има подпис от непознат потребител с идентификатор %(deviceId)s",
+ "Backup has a signature from unknown device with ID %(deviceId)s": "Резервното копие има подпис от непознато устройство с идентификатор %(deviceId)s",
+ "Backup key stored in secret storage, but this feature is not enabled on this device. Please enable cross-signing in Labs to modify key backup state.": "Резервния ключ е съхранен в секретно складиране, но тази функция не е включена на това устройство. Включете кръстосано-подписване от Labs за да промените състоянието на резервното копие на ключа.",
+ "Backup key stored: ": "Резервният ключ е съхранен: ",
+ "Start using Key Backup with Secure Secret Storage": "Започни използване на резервно копие на ключ в защитено секретно складиране",
+ "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Използвай мениджър на интеграции %(serverName)s за управление на ботове, приспособления и стикери.",
+ "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Използвай мениджър на интеграции за управление на ботове, приспособления и стикери.",
+ "Manage integrations": "Управление на интеграциите",
+ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Мениджърът на интеграции получава конфигурационни данни, може да модифицира приспособления, да изпраща покани за стаи и да настройва нива на достъп от ваше име.",
+ "Customise your experience with experimental labs features. Learn more.": "Настройте изживяването си с експериментални функции. Научи повече.",
+ "Ignored/Blocked": "Игнорирани/блокирани",
+ "Error adding ignored user/server": "Грешка при добавяне на игнориран потребител/сървър",
+ "Something went wrong. Please try again or view your console for hints.": "Нещо се обърка. Опитайте пак или вижте конзолата за информация какво не е наред.",
+ "Error subscribing to list": "Грешка при абониране за списък",
+ "Please verify the room ID or alias and try again.": "Потвърдете идентификатора или адреса на стаята и опитайте пак.",
+ "Error removing ignored user/server": "Грешка при премахване на игнориран потребител/сървър",
+ "Error unsubscribing from list": "Грешка при отписването от списък",
+ "Please try again or view your console for hints.": "Опитайте пак или вижте конзолата за информация какво не е наред.",
+ "None": "Няма нищо",
+ "Ban list rules - %(roomName)s": "Списък с правила за блокиране - %(roomName)s",
+ "Server rules": "Сървърни правила",
+ "User rules": "Потребителски правила",
+ "You have not ignored anyone.": "Не сте игнорирали никой.",
+ "You are currently ignoring:": "В момента игнорирате:",
+ "You are not subscribed to any lists": "Не сте абонирани към списъци",
+ "Unsubscribe": "Отпиши",
+ "View rules": "Виж правилата",
+ "You are currently subscribed to:": "В момента сте абонирани към:",
+ "⚠ These settings are meant for advanced users.": "⚠ Тези настройки са за напреднали потребители.",
+ "Add users and servers you want to ignore here. Use asterisks to have Riot match any characters. For example, @bot:* would ignore all users that have the name 'bot' on any server.": "Добавете тук потребители или сървъри, които искате да игнорирате. Използвайте звездички за да кажете на Riot да търси съвпадения с всеки символ. Например: @bot:* ще игнорира всички потребители с име 'bot' на кой да е сървър.",
+ "Ignoring people is done through ban lists which contain rules for who to ban. Subscribing to a ban list means the users/servers blocked by that list will be hidden from you.": "Игнорирането на хора става чрез списъци за блокиране, които съдържат правила кой да бъде блокиран. Абонирането към списък за блокиране означава, че сървърите/потребителите блокирани от този списък ще бъдат скрити от вас.",
+ "Personal ban list": "Персонален списък за блокиране",
+ "Your personal ban list holds all the users/servers you personally don't want to see messages from. After ignoring your first user/server, a new room will show up in your room list named 'My Ban List' - stay in this room to keep the ban list in effect.": "Персоналния ви списък за блокиране съдържа потребители/сървъри, от които не искате да виждате съобщения. След игнориране на първия потребител/сървър, ще се появи нова стая в списъка със стаи, наречена 'My Ban List' - останете в тази стая за да работи списъкът с блокиране.",
+ "Server or user ID to ignore": "Сървър или потребителски идентификатор за игнориране",
+ "eg: @bot:* or example.org": "напр.: @bot:* или example.org",
+ "Subscribed lists": "Абонирани списъци",
+ "Subscribing to a ban list will cause you to join it!": "Абонирането към списък ще направи така, че да се присъедините към него!",
+ "If this isn't what you want, please use a different tool to ignore users.": "Ако това не е каквото искате, използвайте друг инструмент за игнориране на потребители.",
+ "Room ID or alias of ban list": "Идентификатор или име на стая списък за блокиране",
+ "Subscribe": "Абонирай ме",
+ "Cross-signing": "Кръстосано-подписване",
+ "This user has not verified all of their devices.": "Този потребител не е потвърдил всичките си устройства.",
+ "You have not verified this user. This user has verified all of their devices.": "Не сте потвърдили този потребител. Потребителят е потвърдил всичките си устройства.",
+ "You have verified this user. This user has verified all of their devices.": "Потвърдили сте този потребител. Потребителят е потвърдил всичките си устройства.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Някои потребители в тази стая не са потвърдени от вас или не са потвърдили собствените си устройства.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Всички потребители в тази стая са потвърдени от вас и са потвърдили всичките си устройства.",
+ "This message cannot be decrypted": "Съобщението не може да бъде дешифровано",
+ "Unencrypted": "Нешифровано",
+ "Close preview": "Затвори прегледа",
+ " wants to chat": " иска да чати",
+ "Start chatting": "Започни чат",
+ "Failed to connect to integration manager": "Неуспешна връзка с мениджъра на интеграции",
+ "Trusted": "Доверени",
+ "Not trusted": "Недоверени",
+ "Hide verified sessions": "Скрий потвърдените сесии",
+ "%(count)s verified sessions|other": "%(count)s потвърдени сесии",
+ "%(count)s verified sessions|one": "1 потвърдена сесия",
+ "Direct message": "Директно съобщение",
+ "Unverify user": "Отпотвърди потребители",
+ "%(role)s in %(roomName)s": "%(role)s в%(roomName)s",
+ "Messages in this room are end-to-end encrypted.": "Съобщенията в тази стая са шифровани от край-до-край.",
+ "Verify": "Потвърди",
+ "Security": "Сигурност",
+ "You have ignored this user, so their message is hidden. Show anyways.": "Игнорирали сте този потребител, така че съобщението им е скрито. Покажи така или иначе.",
+ "Reactions": "Реакции",
+ " reacted with %(content)s": " реагира с %(content)s",
+ "Any of the following data may be shared:": "Следните данни може да бъдат споделени:",
+ "Your display name": "Вашето име",
+ "Your avatar URL": "Адреса на профилната ви снимка",
+ "Your user ID": "Потребителския ви идентификатор",
+ "Your theme": "Вашата тема",
+ "Riot URL": "Riot URL адрес",
+ "Room ID": "Идентификатор на стаята",
+ "Widget ID": "Идентификатор на приспособлението",
+ "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Използването на това приспособление може да сподели данни с %(widgetDomain)s и с мениджъра на интеграции.",
+ "Using this widget may share data with %(widgetDomain)s.": "Използването на това приспособление може да сподели данни с %(widgetDomain)s.",
+ "Widgets do not use message encryption.": "Приспособленията не използваш шифроване на съобщенията.",
+ "Widget added by": "Приспособлението е добавено от",
+ "This widget may use cookies.": "Това приспособление може да използва бисквитки.",
+ "More options": "Още опции",
+ "Language Dropdown": "Падащо меню за избор на език",
+ "Integrations are disabled": "Интеграциите са изключени",
+ "Enable 'Manage Integrations' in Settings to do this.": "Включете 'Управление на интеграции' от настройките за направите това.",
+ "Integrations not allowed": "Интеграциите не са разрешени",
+ "Your Riot doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Вашият Riot не позволява да използвате мениджъра на интеграции за да направите това. Свържете се с администратор.",
+ "Automatically invite users": "Автоматично кани потребители",
+ "Upgrade private room": "Обнови лична стая",
+ "Upgrade public room": "Обнови публична стая",
+ "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Обновяването на стая е действие за напреднали и обикновено се препоръчва когато стаята е нестабилна поради бъгове, липсващи функции или проблеми със сигурността.",
+ "This usually only affects how the room is processed on the server. If you're having problems with your Riot, please report a bug.": "Това обикновено влия само на това как стаята се обработва на сървъра. Ако имате проблеми с Riot, съобщете за проблем.",
+ "You'll upgrade this room from to .": "Ще обновите стаята от до .",
+ "Upgrade": "Обнови",
+ "Enter secret storage passphrase": "Въведете парола за секретно складиране",
+ "Unable to access secret storage. Please verify that you entered the correct passphrase.": "Неуспешен достъп до секретно складиране. Уверете се, че сте въвели правилната парола.",
+ "Warning: You should only access secret storage from a trusted computer.": "Внимание: Трябва да достъпвате секретно складиране само от доверен компютър.",
+ "Access your secure message history and your cross-signing identity for verifying other devices by entering your passphrase.": "Въведете парола за да достъпите защитената история на съобщенията и самоличността за кръстосано-подписване и потвърждение на други устройства.",
+ "If you've forgotten your passphrase you can use your recovery key or set up new recovery options.": "Ако сте забравили паролата си, може да използвате ключ за възстановяване или да настройте опции за възстановяване.",
+ "Enter secret storage recovery key": "Въведете ключ за възстановяване на секретно складиране",
+ "Unable to access secret storage. Please verify that you entered the correct recovery key.": "Неуспешен достъп до секретно складиране. Подсигурете се, че сте въвели правилния ключ за възстановяване.",
+ "Access your secure message history and your cross-signing identity for verifying other devices by entering your recovery key.": "Въведете ключа за възстановяване за да достъпите защитената история на съобщенията и самоличността за кръстосано-подписване и потвърждение на други устройства.",
+ "If you've forgotten your recovery key you can .": "Ако сте забравили ключа си за възстановяване, може да .",
+ "Warning: You should only set up key backup from a trusted computer.": "Внимание: Трябва да настройвате резервно копие на ключове само от доверен компютър.",
+ "If you've forgotten your recovery key you can ": "Ако сте забравили ключа за възстановяване, може да ",
+ "Notification settings": "Настройки на уведомленията",
+ "Help": "Помощ",
+ "Reload": "Презареди",
+ "Take picture": "Направи снимка",
+ "Remove for everyone": "Премахни за всички",
+ "Remove for me": "Премахни за мен",
+ "User Status": "Потребителски статус",
+ "Country Dropdown": "Падащо меню за избор на държава",
+ "Verification Request": "Заявка за потвърждение",
+ " (1/%(totalCount)s)": " (1/%(totalCount)s)",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "Секретно Складиране ще бъде настроено със съществуващия ви резервен ключ. Паролата и ключа за секретно складиране ще бъдат същите каквито са за резервно складиране",
+ "Warning: You should only set up secret storage from a trusted computer.": "Внимание: Желателно е да настройвате секретно складиране само от доверен компютър.",
+ "We'll use secret storage to optionally store an encrypted copy of your cross-signing identity for verifying other devices and message keys on our server. Protect your access to encrypted messages with a passphrase to keep it secure.": "Ще използваме секретно складиране за да предоставим опцията да се съхрани шифровано копие на идентичността ви за кръстосано-подписване, за потвърждаване на други устройства и ключове. Защитете достъпа си до шифровани съобщения с парола за да е защитено.",
+ "Set up with a recovery key": "Настрой с ключ за възстановяване",
+ "As a safety net, you can use it to restore your access to encrypted messages if you forget your passphrase.": "Като предпазна мярка, ако забравите паролата, може да го използвате за да възстановите достъпа до шифрованите съобщения.",
+ "As a safety net, you can use it to restore your access to encrypted messages.": "Като предпазна мярка, може да го използвате за да възстановите достъпа до шифрованите съобщения.",
+ "Keep your recovery key somewhere very secure, like a password manager (or a safe).": "Съхранявайте ключа за възстановяване на сигурно място, като в password manager (или сейф).",
+ "Your recovery key has been copied to your clipboard, paste it to:": "Ключа за възстановяване беше копиран в клиборд, поставете го в:",
+ "Your recovery key is in your Downloads folder.": "Ключа за възстановяване е във вашата папка Изтегляния.",
+ "Your access to encrypted messages is now protected.": "Достъпът ви до шифровани съобщения вече е защитен.",
+ "Without setting up secret storage, you won't be able to restore your access to encrypted messages or your cross-signing identity for verifying other devices if you log out or use another device.": "Без настройка на секретно складиране, ако излезе от профила или използвате друго устройство, няма да можете да възстановите достъпа до шифровани съобщения или идентичността за кръстосано-подписване за потвърждаване на други устройства.",
+ "Set up secret storage": "Настрой секретно складиране",
+ "Migrate from Key Backup": "Мигрирай от резервно копие на ключове",
+ "Secure your encrypted messages with a passphrase": "Защитете шифрованите съобщения с парола",
+ "Storing secrets...": "Складиране на тайни...",
+ "Unable to set up secret storage": "Неуспешна настройка на секретно складиране",
+ "New DM invite dialog (under development)": "Нов процес за канене чрез директни съобщения (все още се разработва)",
+ "Show info about bridges in room settings": "Показвай информация за връзки с други мрежи в настройките на стаята",
+ "This bridge was provisioned by ": "Тази връзка с друга мрежа е била настроена от ",
+ "This bridge is managed by .": "Тази връзка с друга мрежа се управлява от .",
+ "Bridged into , on ": "Свързано с , посредством ",
+ "Connected to on ": "Свързано с посредством ",
+ "Connected via %(protocolName)s": "Свързано посредством %(protocolName)s",
+ "Bridge Info": "Информация за връзката с друга мрежа",
+ "Below is a list of bridges connected to this room.": "По-долу е списък на връзки с други мрежи свързани с тази стая.",
+ "Recent Conversations": "Скорошни разговори",
+ "Suggestions": "Предложения",
+ "Show more": "Покажи повече",
+ "Direct Messages": "Директни съобщения",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Ако не можете да намерите някой, питайте за потребителското им име, или споделете своето (%(userId)s) или връзка към профила.",
+ "Go": "Давай",
+ "Failed to find the following users": "Неуспешно откриване на следните потребители",
+ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Следните потребители не съществуват или са невалидни и не могат да бъдат поканени: %(csvNames)s"
}
diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json
index 4b69e2da82..5aacb27c80 100644
--- a/src/i18n/strings/cs.json
+++ b/src/i18n/strings/cs.json
@@ -1976,5 +1976,23 @@
"Set up secret storage": "Nastavit bezpečné úložiště",
"Secure your encrypted messages with a passphrase": "Zabezpečte vaše šifrované zprávy heslem",
"Storing secrets...": "Ukládám tajná data...",
- "Unable to set up secret storage": "Nepovedlo se nastavit bezpečné úložiště"
+ "Unable to set up secret storage": "Nepovedlo se nastavit bezpečné úložiště",
+ "The message you are trying to send is too large.": "Zpráva kterou se snažíte odeslat je příliš velká.",
+ "not found": "nenalezeno",
+ "Backup has a valid signature from this user": "Záloha má platný podpis od tohoto uživatele",
+ "Backup has a invalid signature from this user": "Záloha má neplatný podpis od tohoto uživatele",
+ "Backup has a signature from unknown user with ID %(deviceId)s": "Záloha je podepsaná neznámým uživatelem %(deviceId)s",
+ "Backup has a signature from unknown device with ID %(deviceId)s": "Záloha je podepsaná neznámým zařízením %(deviceId)s",
+ "This user has not verified all of their devices.": "Uživatel neověřil všechna svá zařízení.",
+ "You have not verified this user. This user has verified all of their devices.": "Tohoto uživatele jste neověřili. Uživatel má ověřená všechna svá zařízení.",
+ "You have verified this user. This user has verified all of their devices.": "Tohoto uživatele jste ověřili. Uživatel má ověřená všechna svá zařízení.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Někteřé uživatele v této šifrované místnosti jste neověřili nebo nemají ověřená některá svá zařízení.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Všichni uživatelé v této šifrované místnosti jsou ověření a mají ověřená všechna svá zařízení.",
+ "Close preview": "Zavřít náhled",
+ "Hide verified sessions": "Schovat ověřené relace",
+ "%(count)s verified sessions|other": "%(count)s ověřených relací",
+ "%(count)s verified sessions|one": "1 ověřená relace",
+ "Language Dropdown": "Menu jazyků",
+ "Help": "Pomoc",
+ "Country Dropdown": "Menu států"
}
diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json
index 4eb038ec33..1e75c59a21 100644
--- a/src/i18n/strings/de_DE.json
+++ b/src/i18n/strings/de_DE.json
@@ -1238,7 +1238,7 @@
"Banana": "Banane",
"Apple": "Apfel",
"Strawberry": "Erdbeere",
- "Corn": "Weizen",
+ "Corn": "Mais",
"Pizza": "Pizza",
"Cake": "Kuchen",
"Heart": "Herz",
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 59c1684076..975d045915 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -309,6 +309,20 @@
"%(items)s and %(count)s others|other": "%(items)s and %(count)s others",
"%(items)s and %(count)s others|one": "%(items)s and one other",
"%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s",
+ "a few seconds ago": "a few seconds ago",
+ "about a minute ago": "about a minute ago",
+ "%(num)s minutes ago": "%(num)s minutes ago",
+ "about an hour ago": "about an hour ago",
+ "%(num)s hours ago": "%(num)s hours ago",
+ "about a day ago": "about a day ago",
+ "%(num)s days ago": "%(num)s days ago",
+ "a few seconds from now": "a few seconds from now",
+ "about a minute from now": "about a minute from now",
+ "%(num)s minutes from now": "%(num)s minutes from now",
+ "about an hour from now": "about an hour from now",
+ "%(num)s hours from now": "%(num)s hours from now",
+ "about a day from now": "about a day from now",
+ "%(num)s days from now": "%(num)s days from now",
"%(name)s (%(userId)s)": "%(name)s (%(userId)s)",
"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",
@@ -358,9 +372,11 @@
"Render simple counters in room header": "Render simple counters in room header",
"Multiple integration managers": "Multiple integration managers",
"Try out new ways to ignore people (experimental)": "Try out new ways to ignore people (experimental)",
+ "New DM invite dialog (under development)": "New DM invite dialog (under development)",
+ "Show a presence dot next to DMs in the room list": "Show a presence dot next to DMs in the room list",
"Enable cross-signing to verify per-user instead of per-device (in development)": "Enable cross-signing to verify per-user instead of per-device (in development)",
"Enable local event indexing and E2EE search (requires restart)": "Enable local event indexing and E2EE search (requires restart)",
- "Use the new, faster, composer for writing messages": "Use the new, faster, composer for writing messages",
+ "Show info about bridges in room settings": "Show info about bridges in room settings",
"Enable Emoji suggestions while typing": "Enable Emoji suggestions while typing",
"Use compact timeline layout": "Use compact timeline layout",
"Show a placeholder for removed messages": "Show a placeholder for removed messages",
@@ -479,7 +495,7 @@
"Pencil": "Pencil",
"Paperclip": "Paperclip",
"Scissors": "Scissors",
- "Padlock": "Padlock",
+ "Lock": "Lock",
"Key": "Key",
"Hammer": "Hammer",
"Telephone": "Telephone",
@@ -762,6 +778,13 @@
"Room version:": "Room version:",
"Developer options": "Developer options",
"Open Devtools": "Open Devtools",
+ "This bridge was provisioned by ": "This bridge was provisioned by ",
+ "This bridge is managed by .": "This bridge is managed by .",
+ "Bridged into , on ": "Bridged into , on ",
+ "Connected to on ": "Connected to on ",
+ "Connected via %(protocolName)s": "Connected via %(protocolName)s",
+ "Bridge Info": "Bridge Info",
+ "Below is a list of bridges connected to this room.": "Below is a list of bridges connected to this room.",
"Room Addresses": "Room Addresses",
"Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?",
"URL Previews": "URL Previews",
@@ -947,13 +970,6 @@
"Strikethrough": "Strikethrough",
"Code block": "Code block",
"Quote": "Quote",
- "Server error": "Server error",
- "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.",
- "Command error": "Command error",
- "Unable to reply": "Unable to reply",
- "At this time it is not possible to reply with an emote.": "At this time it is not possible to reply with an emote.",
- "Markdown is disabled": "Markdown is disabled",
- "Markdown is enabled": "Markdown is enabled",
"No pinned messages.": "No pinned messages.",
"Loading...": "Loading...",
"Pinned Messages": "Pinned Messages",
@@ -1055,16 +1071,9 @@
"This Room": "This Room",
"All Rooms": "All Rooms",
"Search…": "Search…",
- "bold": "bold",
- "italic": "italic",
- "deleted": "deleted",
- "underlined": "underlined",
- "inline-code": "inline-code",
- "block-quote": "block-quote",
- "bulleted-list": "bulleted-list",
- "numbered-list": "numbered-list",
- "Show Text Formatting Toolbar": "Show Text Formatting Toolbar",
- "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar",
+ "Server error": "Server error",
+ "Command error": "Command error",
+ "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.",
"Failed to connect to integration manager": "Failed to connect to integration manager",
"You don't currently have any stickerpacks enabled": "You don't currently have any stickerpacks enabled",
"Add some now": "Add some now",
@@ -1080,8 +1089,6 @@
"There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.": "There was an error updating the room's main address. It may not be allowed by the server or a temporary failure occurred.",
"Error creating alias": "Error creating alias",
"There was an error creating that alias. It may not be allowed by the server or a temporary failure occurred.": "There was an error creating that alias. It may not be allowed by the server or a temporary failure occurred.",
- "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",
"Error removing alias": "Error removing alias",
"There was an error removing that alias. It may no longer exist or a temporary error occurred.": "There was an error removing that alias. It may no longer exist or a temporary error occurred.",
"Main address": "Main address",
@@ -1118,7 +1125,6 @@
"%(count)s verified sessions|other": "%(count)s verified sessions",
"%(count)s verified sessions|one": "1 verified session",
"Direct message": "Direct message",
- "Unverify user": "Unverify user",
"Remove from community": "Remove from community",
"Disinvite this user from community?": "Disinvite this user from community?",
"Remove this user from community?": "Remove this user from community?",
@@ -1262,6 +1268,7 @@
"Please create a new issue on GitHub so that we can investigate this bug.": "Please create a new issue on GitHub so that we can investigate this bug.",
"collapse": "collapse",
"expand": "expand",
+ "Communities": "Communities",
"You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)",
"Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s",
"Rotate Left": "Rotate Left",
@@ -1435,6 +1442,14 @@
"View Servers in Room": "View Servers in Room",
"Toolbox": "Toolbox",
"Developer Tools": "Developer Tools",
+ "Failed to find the following users": "Failed to find the following users",
+ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s",
+ "Recent Conversations": "Recent Conversations",
+ "Suggestions": "Suggestions",
+ "Show more": "Show more",
+ "Direct Messages": "Direct Messages",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.",
+ "Go": "Go",
"An error has occurred.": "An error has occurred.",
"Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.": "Verify this user to mark them as trusted. Trusting users gives you extra peace of mind when using end-to-end encrypted messages.",
"Verifying this user will mark their device as trusted, and also mark your device as trusted to them.": "Verifying this user will mark their device as trusted, and also mark your device as trusted to them.",
@@ -1771,7 +1786,6 @@
"Did you know: you can use communities to filter your Riot.im experience!": "Did you know: you can use communities to filter your Riot.im experience!",
"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.": "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.",
"Error whilst fetching joined communities": "Error whilst fetching joined communities",
- "Communities": "Communities",
"Create a new community": "Create a new community",
"Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.",
"You have no visible notifications": "You have no visible notifications",
@@ -1838,6 +1852,14 @@
"Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
"Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
"Could not load user profile": "Could not load user profile",
+ "Complete security": "Complete security",
+ "Verify this session to grant it access to encrypted messages.": "Verify this session to grant it access to encrypted messages.",
+ "Start": "Start",
+ "Session verified": "Session verified",
+ "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.": "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted.",
+ "Done": "Done",
+ "Without completing security on this device, it won’t have access to encrypted messages.": "Without completing security on this device, it won’t have access to encrypted messages.",
+ "Go Back": "Go Back",
"Failed to send email": "Failed to send email",
"The email address linked to your account must be entered.": "The email address linked to your account must be entered.",
"A new password must be entered.": "A new password must be entered.",
@@ -1940,7 +1962,9 @@
"The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.",
"File to import": "File to import",
"Import": "Import",
- "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup",
+ "Key Backup is enabled on your account but has not been set up from this session. To set up secret storage, restore your key backup.": "Key Backup is enabled on your account but has not been set up from this session. To set up secret storage, restore your key backup.",
+ "Restore": "Restore",
+ "Secret Storage will be set up using your existing key backup details. Your secret storage passphrase and recovery key will be the same as they were for your key backup.": "Secret Storage will be set up using your existing key backup details. Your secret storage passphrase and recovery key will be the same as they were for your key backup.",
"Great! This passphrase looks strong enough.": "Great! This passphrase looks strong enough.",
"Warning: You should only set up secret storage from a trusted computer.": "Warning: You should only set up secret storage from a trusted computer.",
"We'll use secret storage to optionally store an encrypted copy of your cross-signing identity for verifying other devices and message keys on our server. Protect your access to encrypted messages with a passphrase to keep it secure.": "We'll use secret storage to optionally store an encrypted copy of your cross-signing identity for verifying other devices and message keys on our server. Protect your access to encrypted messages with a passphrase to keep it secure.",
@@ -1967,6 +1991,7 @@
"Your access to encrypted messages is now protected.": "Your access to encrypted messages is now protected.",
"Without setting up secret storage, you won't be able to restore your access to encrypted messages or your cross-signing identity for verifying other devices if you log out or use another device.": "Without setting up secret storage, you won't be able to restore your access to encrypted messages or your cross-signing identity for verifying other devices if you log out or use another device.",
"Set up secret storage": "Set up secret storage",
+ "Restore your Key Backup": "Restore your Key Backup",
"Migrate from Key Backup": "Migrate from Key Backup",
"Secure your encrypted messages with a passphrase": "Secure your encrypted messages with a passphrase",
"Confirm your passphrase": "Confirm your passphrase",
diff --git a/src/i18n/strings/eu.json b/src/i18n/strings/eu.json
index b3e9a731ee..11904a95f0 100644
--- a/src/i18n/strings/eu.json
+++ b/src/i18n/strings/eu.json
@@ -2007,5 +2007,33 @@
"Set up secret storage": "Ezarri biltegi sekretua",
"Secure your encrypted messages with a passphrase": "Babestu zure zifratutako mezuak pasa-esaldi batekin",
"Storing secrets...": "Sekretuak gordetzen...",
- "Unable to set up secret storage": "Ezin izan da biltegi sekretua ezarri"
+ "Unable to set up secret storage": "Ezin izan da biltegi sekretua ezarri",
+ "The message you are trying to send is too large.": "Bidali nahi duzun mezua handiegia da.",
+ "This user has not verified all of their devices.": "Erabiltzaileak ez ditu bere gailu guztiak egiaztatu.",
+ "You have not verified this user. This user has verified all of their devices.": "Ez duzu erabiltzaile hau egiaztatu. Erabiltzaile honek bere gailu guztiak egiaztatu ditu.",
+ "You have verified this user. This user has verified all of their devices.": "Erabiltzaile hau egiaztatu duzu. Erabiltzaile honek bere gailu guztiak egiaztatu ditu.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Ez dituzu zifratutako gela honetako erabiltzaile batzuk egiaztatu, edo hauek ez dituzte bere gailu guztiak egiaztatu.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Zifratutako gela honetako erabiltzaile guztiak egiaztatu dituzu, eta hauek bere gailu guztiak egiaztatu dituzte.",
+ "Language Dropdown": "Hizkuntza menua",
+ "Help": "Laguntza",
+ "Country Dropdown": "Herrialde menua",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "Biltegi sekretua zure oraingo gakoen babes-kopiaren xehetasunak erabiliz ezarriko da. Zure biltegi sekretuaren pasa-esaldia eta berreskuratze gakoa lehen gakoen babes-kopiarako ziren berdinak izango dira",
+ "Migrate from Key Backup": "Migratu gakoen babes-kopiatik",
+ "New DM invite dialog (under development)": "Mezu zuzen bidezko gonbidapen elkarrizketa-koadro berria (garapenean)",
+ "Show info about bridges in room settings": "Erakutsi zubiei buruzko informazioa gelaren ezarpenetan",
+ "This bridge was provisioned by ": "Zubi hau erabiltzaileak hornitu du",
+ "This bridge is managed by .": "Zubi hau erabiltzaileak kudeatzen du.",
+ "Bridged into , on ": " kanalera zubia, protokoloan",
+ "Connected to on ": " kanalera konektatuta, sarean",
+ "Connected via %(protocolName)s": "%(protocolName)s bidez konektatuta",
+ "Bridge Info": "Zubiaren informazioa",
+ "Below is a list of bridges connected to this room.": "Behean gela honetara konektatutako zubien informazioa dago.",
+ "Show more": "Erakutsi gehiago",
+ "Recent Conversations": "Azken elkarrizketak",
+ "Direct Messages": "Mezu zuzenak",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Ez baduzu baten bat aurkitzen, eska egiezu bere erabiltzaile-izena, edo eman egiezu zurea (%(userId)s) edo profilera esteka.",
+ "Go": "Joan",
+ "Suggestions": "Proposamenak",
+ "Failed to find the following users": "Ezin izan dira honako erabiltzaile hauek aurkitu",
+ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Honako erabiltzaile hauek agian ez dira existitzen edo baliogabeak dira, eta ezin dira gonbidatu: %(csvNames)s"
}
diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json
index 6f941b5d4a..e53afb2598 100644
--- a/src/i18n/strings/fi.json
+++ b/src/i18n/strings/fi.json
@@ -1078,7 +1078,7 @@
"This room is a continuation of another conversation.": "Tämä huone on jatkumo toisesta keskustelusta.",
"Don't ask me again": "Älä kysy uudelleen",
"Not now": "Ei nyt",
- "The conversation continues here.": "Keskustelu jatkuu tässä.",
+ "The conversation continues here.": "Keskustelu jatkuu täällä.",
"Share Link to User": "Jaa linkki käyttäjälle",
"Muted Users": "Mykistetyt käyttäjät",
"Timeline": "Aikajana",
@@ -1343,7 +1343,7 @@
"Failed to decrypt %(failedCount)s sessions!": "%(failedCount)s istunnon purkaminen epäonnistui!",
"Restored %(sessionCount)s session keys": "%(sessionCount)s istunnon avainta palautettu",
"Enter Recovery Passphrase": "Syötä palautuksen salalause",
- "Warning: you should only set up key backup from a trusted computer.": "Varoitus: sinun pitäisi ottaa avainvarmuuskopio käyttöön vain luotetulta tietokoneelta.",
+ "Warning: you should only set up key backup from a trusted computer.": "Varoitus: sinun pitäisi ottaa avainvarmuuskopio käyttöön vain luotetulla tietokoneella.",
"Access your secure message history and set up secure messaging by entering your recovery passphrase.": "Pääse turvattuun viestihistoriaasi ja ota käyttöön turvallinen viestintä syöttämällä palautuksen salalauseesi.",
"If you've forgotten your recovery passphrase you can use your recovery key or set up new recovery options": "Jos olet unohtanut palautuksen salalauseesi, voit käyttää palautusavaintasi tai ottaa käyttöön uuden palautustavan",
"Access your secure message history and set up secure messaging by entering your recovery key.": "Pääse turvattuun viestihistoriaasi ja ota käyttöön turvallinen viestintä syöttämällä palautusavaimesi.",
@@ -1926,5 +1926,104 @@
"Customise your experience with experimental labs features. Learn more.": "Muokkaa kokemustasi kokeellisilla laboratio-ominaisuuksia. Tutki vaihtoehtoja.",
"Error upgrading room": "Virhe päivitettäessä huonetta",
"Double check that your server supports the room version chosen and try again.": "Tarkista, että palvelimesi tukee valittua huoneversiota ja yritä uudelleen.",
- "Invite joined members to the new room automatically": "Kutsu huoneen jäsenet liittymään uuteen huoneeseen automaattisesti"
+ "Invite joined members to the new room automatically": "Kutsu huoneen jäsenet liittymään uuteen huoneeseen automaattisesti",
+ "Send cross-signing keys to homeserver": "Lähetä ristivarmennuksen tarvitsemat avaimet kotipalvelimelle",
+ "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s poisti porttikiellon käyttäjiltä, jotka täsmäsivät sääntöön %(glob)s",
+ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s poisti huoneita estävän säännön %(glob)s",
+ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s poisti palvelimia estävän säännön %(glob)s",
+ "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s poisti estosäännön %(glob)s",
+ "%(senderName)s updated an invalid ban rule": "%(senderName)s muokkasi epäkelpoa estosääntöä",
+ "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s muokkasi käyttäjiä estävää sääntöä %(glob)s seuraavasta syystä: %(reason)s",
+ "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s muokkasi huoneita estävää sääntöä %(glob)s seuraavasta syystä: %(reason)s",
+ "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s muokkasi palvelimia estävää sääntöä %(glob)s seuraavasta syystä: %(reason)s",
+ "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s muokkasi estosääntöä %(glob)s seuraavasta syystä: %(reason)s",
+ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s loi porttikiellonsäännön %(glob)s, syy: %(reason)s",
+ "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s loi huoneita estävän säännön %(glob)s, syy: %(reason)s",
+ "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s loi palvelimia estävän säännön %(glob)s, syy: %(reason)s",
+ "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s loi estosäännön %(glob)s, syy: %(reason)s",
+ "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s muutti sääntöä, joka esti käyttäjiä säännöllä %(oldGlob)s muotoon %(newGlob)s. Syy: %(reason)s",
+ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s muutti sääntöä, joka esti huoneita säännöllä %(oldGlob)s muotoon %(newGlob)s. Syy: %(reason)s",
+ "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s muutti sääntöä, joka esti palvelimia säännöllä %(oldGlob)s muotoon %(newGlob)s. Syy: %(reason)s",
+ "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s muutti estosääntöä muodosta %(oldGlob)s muotoon %(newGlob)s. Syy: %(reason)s",
+ "The message you are trying to send is too large.": "Lähettämäsi viesti on liian suuri.",
+ "Cross-signing and secret storage are enabled.": "Ristivarmennus ja salavarasto on käytössä.",
+ "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this device.": "Tunnuksellasi on ristivarmennusidentiteetti salavarastossa, mutta tämä laite ei luota siihen.",
+ "Cross-signing and secret storage are not yet set up.": "Ristivarmennusta ja salavarastoa ei ole vielä otettu käyttöön.",
+ "Bootstrap cross-signing and secret storage": "Ota käyttöön ristivarmennus ja salavarasto",
+ "Cross-signing public keys:": "Ristivarmennuksen julkiset avaimet:",
+ "on device": "laitteella",
+ "not found": "ei löydetty",
+ "Cross-signing private keys:": "Ristivarmennuksen salaiset avaimet:",
+ "in secret storage": "salavarastossa",
+ "Secret storage public key:": "Salavaraston julkinen avain:",
+ "in account data": "tunnuksen tiedoissa",
+ "not stored": "ei tallennettu",
+ "Cross-signing": "Ristivarmennus",
+ "Backup has a valid signature from this user": "Varmuuskopiossa on kelvollinen allekirjoitus tältä käyttäjältä",
+ "Backup has a invalid signature from this user": "Varmuuskopiossa on epäkelpo allekirjoitus tältä käyttäjältä",
+ "Backup has a signature from unknown user with ID %(deviceId)s": "Varmuuskopiossa on tuntematon allekirjoitus käyttäjältä, jonka ID on %(deviceId)s",
+ "Backup has a signature from unknown device with ID %(deviceId)s": "Varmuuskopiossa on tuntematon allekirjoitus laitteelta, jonka ID on %(deviceId)s",
+ "Backup key stored in secret storage, but this feature is not enabled on this device. Please enable cross-signing in Labs to modify key backup state.": "Vara-avain on tallennettu salavarastoon, mutta salavarasto ei ole käytössä tällä laitteella. Ota käyttöön ristivarmennus Laboratoriosta, jotta voi muokata avainvarmuuskopion tilaa.",
+ "Backup key stored: ": "Vara-avain on tallennettu: ",
+ "Start using Key Backup with Secure Secret Storage": "Aloita avainten varmuuskopiointi turvalliseen salavarastoon",
+ "This user has not verified all of their devices.": "Tämä käyttäjä ei ole varmentanut kaikkia laitteitaan.",
+ "You have not verified this user. This user has verified all of their devices.": "Et ole varmentanut tätä käyttäjää. Tämä käyttäjä on varmentanut kaikki laitteensa.",
+ "You have verified this user. This user has verified all of their devices.": "Olet varmentanut tämän käyttäjän. Tämä käyttäjä on varmentanut kaikki laitteensa.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Et ole varmentanut osaa tämän salausta käyttävän huoneen käyttäjistä tai he eivät ole varmentaneet omia laitteitaan.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Olet varmentanut kaikki käyttäjät tässä salausta käyttävässä huoneessa ja he ovat varmentaneet omat laitteensa.",
+ "This message cannot be decrypted": "Tätä viestiä ei voida avata luettavaksi",
+ "Unencrypted": "Suojaamaton",
+ "Close preview": "Sulje esikatselu",
+ " wants to chat": " haluaa keskustella",
+ "Start chatting": "Aloita keskustelu",
+ "Hide verified sessions": "Piilota varmennetut istunnot",
+ "%(count)s verified sessions|other": "%(count)s varmennettua istuntoa",
+ "%(count)s verified sessions|one": "1 varmennettu istunto",
+ "Reactions": "Reaktiot",
+ " reacted with %(content)s": " reagoi: %(content)s",
+ "Language Dropdown": "Kielipudotusvalikko",
+ "Automatically invite users": "Kutsu käyttäjät automaattisesti",
+ "Upgrade private room": "Päivitä yksityinen huone",
+ "Upgrade public room": "Päivitä julkinen huone",
+ "Upgrading a room is an advanced action and is usually recommended when a room is unstable due to bugs, missing features or security vulnerabilities.": "Huoneen päivittäminen on monimutkainen toimenpide ja yleensä sitä suositellaan, kun huone on epävakaa bugien, puuttuvien ominaisuuksien tai tietoturvaongelmien takia.",
+ "This usually only affects how the room is processed on the server. If you're having problems with your Riot, please report a bug.": "Tämä yleensä vaikuttaa siihen, miten huonetta käsitellään palvelimella. Jos sinulla on ongelmia Riottisi kanssa, ilmoita virheestä.",
+ "You'll upgrade this room from to .": "Olat päivittämässä tätä huonetta versiosta versioon .",
+ "Upgrade": "Päivitä",
+ "Enter secret storage passphrase": "Syötä salavaraston salalause",
+ "Unable to access secret storage. Please verify that you entered the correct passphrase.": "Salavavaraston avaaminen epäonnistui. Varmista, että syötit oikean salalauseen.",
+ "Warning: You should only access secret storage from a trusted computer.": "Varoitus: sinun pitäisi käyttää salavarastoa vain luotetulta tietokoneelta.",
+ "Access your secure message history and your cross-signing identity for verifying other devices by entering your passphrase.": "Käytä turvattua viestihistoriaasi ja ristivarmennuksen identiteettiäsi muiden laitteiden varmentamiseen syöttämällä salalauseesi.",
+ "If you've forgotten your passphrase you can use your recovery key or set up new recovery options.": "Jos olet unohtanut salalauseesi, voit käyttää palautusavaintasi tai asettaa uusia palautusvaihtoehtoja.",
+ "Enter secret storage recovery key": "Syötä salavaraston palautusavain",
+ "Unable to access secret storage. Please verify that you entered the correct recovery key.": "Salavaraston käyttö epäonnistui. Varmista, että syötit oikean palautusavaimen.",
+ "Access your secure message history and your cross-signing identity for verifying other devices by entering your recovery key.": "Käytä turvattua viestihistoriaasi ja ristivarmennuksen identiteettiäsi muiden laitteiden varmentamiseen syöttämällä palautusavaimesi.",
+ "If you've forgotten your recovery key you can .": "Jos olet unohtanut palautusavaimesi, voit .",
+ "Warning: You should only set up key backup from a trusted computer.": "Varoitus: sinun pitäisi ottaa avainten varmuuskopiointi käyttöön vain luotetulla tietokoneella.",
+ "If you've forgotten your recovery key you can ": "Jos olet unohtanut palautusavaimesi, voit ",
+ "Notification settings": "Ilmoitusasetukset",
+ "Help": "Ohje",
+ "User Status": "Käyttäjän tila",
+ "Country Dropdown": "Maapudotusvalikko",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "Salavarasto otetaan käyttöön nykyisen avainten varmuuskopiointimenetelmäsi tiedoilla. Salavaraston salalause ja palautusavain tulee olemaan samat kuin ne olivat avainten varmuuskopioinnissasi",
+ "Warning: You should only set up secret storage from a trusted computer.": "Varoitus: sinun pitäisi ottaa salavarasto käyttöön vain luotetulla tietokoneella.",
+ "We'll use secret storage to optionally store an encrypted copy of your cross-signing identity for verifying other devices and message keys on our server. Protect your access to encrypted messages with a passphrase to keep it secure.": "Voimme vaihtoehtoisesti tallentaa salavarastoon salatun kopion ristivarmennuksen identiteetistäsi muiden laitteiden varmentamiseen ja lähettääksesi avaimia meidän palvelimelle. Suojaa pääsysi salattuihin viesteihisi pitämällä salalauseesi turvassa.",
+ "Set up with a recovery key": "Ota käyttöön palautusavaimella",
+ "As a safety net, you can use it to restore your access to encrypted messages if you forget your passphrase.": "Turvaverkkona, voit käyttää sitä palauttamaan pääsysi salattuihin viesteihin, jos unohdat salalauseesi.",
+ "As a safety net, you can use it to restore your access to encrypted messages.": "Turvaverkkona, voit käyttää sitä palauttamaan pääsysi salattuihin viesteihisi.",
+ "Keep your recovery key somewhere very secure, like a password manager (or a safe).": "Pidä palautusavaimesi jossain hyvin turvallisessa paikassa, kuten salasananhallintasovelluksessa (tai kassakaapissa).",
+ "Your recovery key has been copied to your clipboard, paste it to:": "Palautusavaimesi on kopioitu leikepöydällesi. Liitä se:",
+ "Your recovery key is in your Downloads folder.": "Palautusavaimesi on Lataukset-kansiossasi.",
+ "Your access to encrypted messages is now protected.": "Pääsysi salattuihin viesteihisi on nyt turvattu.",
+ "Without setting up secret storage, you won't be able to restore your access to encrypted messages or your cross-signing identity for verifying other devices if you log out or use another device.": "Ottamatta käyttöön salavarastoa et voi palauttaa pääsyäsi salattuihin viesteihisi tai ristivarmennuksen identiteettiisi, jos kirjaudut ulos tai käytät toista laitetta.",
+ "Set up secret storage": "Ota salavarasto käyttöön",
+ "Migrate from Key Backup": "Siirrä tiedot vanhasta avainten varmuuskopiointijärjestelmästä",
+ "Secure your encrypted messages with a passphrase": "Turvaa salatut viestisi salalauseella",
+ "Storing secrets...": "Tallennetaan salaisuuksia...",
+ "Unable to set up secret storage": "Salavaraston käyttöönotto epäonnistui",
+ "New DM invite dialog (under development)": "Uusi dialogi kutsuille yksityiskeskusteluun (kehitysversio)",
+ "Show more": "Näytä lisää",
+ "Recent Conversations": "Viimeaikaiset keskustelut",
+ "Direct Messages": "Yksityisviestit",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Jos et löydä jotakuta, kysy hänen käyttäjätunnusta, tai anna oma käyttäjätunnuksesi (%(userId)s) tai linkin profiiliisi hänelle.",
+ "Go": "Mene"
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index f4e2a86e77..d526c53430 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -2008,5 +2008,33 @@
"Hide verified sessions": "Masquer les sessions vérifiées",
"%(count)s verified sessions|other": "%(count)s sessions vérifiées",
"%(count)s verified sessions|one": "1 session vérifiée",
- "Close preview": "Fermer l’aperçu"
+ "Close preview": "Fermer l’aperçu",
+ "This user has not verified all of their devices.": "Cet utilisateur n'a pas vérifié tous ses appareils.",
+ "You have not verified this user. This user has verified all of their devices.": "Vous n'avez pas vérifié cet utilisateur. Cet utilisateur a vérifié tous ses appareils.",
+ "You have verified this user. This user has verified all of their devices.": "Vous avez vérifié cet utilisateur. Cet utilisateur a vérifié tous ses appareils.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Certains utilisateurs dans ce salon chiffré n’ont pas été vérifiés par vous ou n’ont pas vérifié leurs propres appareils.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Tous les utilisateurs de ce salon chiffré ont été vérifiés par vous et ont vérifié leurs propres appareils.",
+ "Language Dropdown": "Sélection de la langue",
+ "Country Dropdown": "Sélection du pays",
+ "The message you are trying to send is too large.": "Le message que vous essayez d’envoyer est trop gros.",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "Le coffre secret sera configuré en utilisant vos informations de sauvegarde de clés existantes. Votre phrase de passe et votre clé de récupération seront les mêmes que pour la sauvegarde de clés",
+ "Migrate from Key Backup": "Migrer depuis la sauvegarde de clés",
+ "Help": "Aide",
+ "New DM invite dialog (under development)": "Nouveau dialogue d’invitation aux MD (en développement)",
+ "Show more": "En savoir plus",
+ "Recent Conversations": "Conversations récentes",
+ "Direct Messages": "Messages directs",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Si vous n’arrivez pas à trouver quelqu’un, demandez-lui son nom d’utilisateur ou partagez votre nom d’utilisateur (%(userId)s) ou votre lien de profil.",
+ "Go": "C’est parti",
+ "Show info about bridges in room settings": "Afficher des informations à propos des passerelles dans les paramètres du salon",
+ "This bridge was provisioned by ": "Cette passerelle est fournie par ",
+ "This bridge is managed by .": "Cette passerelle est gérée par .",
+ "Bridged into , on ": "Relié à , sur ",
+ "Connected to on ": "Connecté à sur ",
+ "Connected via %(protocolName)s": "Connecté via %(protocolName)s",
+ "Bridge Info": "Informations de la passerelle",
+ "Below is a list of bridges connected to this room.": "Vous trouverez ci-dessous la liste des passerelles connectées à ce salon.",
+ "Suggestions": "Suggestions",
+ "Failed to find the following users": "Impossible de trouver les utilisateurs suivants",
+ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Les utilisateurs suivant n’existent peut-être pas ou ne sont pas valides, et ne peuvent pas être invités : %(csvNames)s"
}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index 0b094d86af..68af34ae2d 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -2009,5 +2009,33 @@
"Access your secure message history and your cross-signing identity for verifying other devices by entering your passphrase.": "A jelmondat megadásával hozzáférhetsz a titkosított üzeneteidhez és a kereszt-aláíráshoz tartozó azonosítódhoz amivel más eszközöket ellenőrizhetsz.",
"Access your secure message history and your cross-signing identity for verifying other devices by entering your recovery key.": "A visszaállítási kulcs megadásával hozzáférhetsz a titkosított üzeneteidhez és a kereszt-aláíráshoz tartozó azonosítódhoz amivel más eszközöket ellenőrizhetsz.",
"We'll use secret storage to optionally store an encrypted copy of your cross-signing identity for verifying other devices and message keys on our server. Protect your access to encrypted messages with a passphrase to keep it secure.": "Biztonsági tárolót fogunk használni, hogy tárolhassuk a kereszt-aláíráshoz tartozó azonosítót titkosított formában, amivel más eszközöket és üzenet kulcsokat lehet ellenőrizni. Védd a titkosított üzenetekhez való hozzáférést jelmondattal és azt tartsd titokban.",
- "Without setting up secret storage, you won't be able to restore your access to encrypted messages or your cross-signing identity for verifying other devices if you log out or use another device.": "A biztonsági tároló beállítása nélkül ha kijelentkezel és egy másik eszközön lépsz be nem fogsz hozzáférni a titkosított üzeneteidhez és a kereszt-aláíráshoz tartozó azonosítódhoz amivel más eszközöket ellenőrizhetsz."
+ "Without setting up secret storage, you won't be able to restore your access to encrypted messages or your cross-signing identity for verifying other devices if you log out or use another device.": "A biztonsági tároló beállítása nélkül ha kijelentkezel és egy másik eszközön lépsz be nem fogsz hozzáférni a titkosított üzeneteidhez és a kereszt-aláíráshoz tartozó azonosítódhoz amivel más eszközöket ellenőrizhetsz.",
+ "This user has not verified all of their devices.": "Ez a felhasználó még ellenőrizte az összes eszközét.",
+ "You have not verified this user. This user has verified all of their devices.": "Ezt a felhasználót még nem ellenőrizted. Minden eszközét ellenőrizte ez a felhasználó.",
+ "You have verified this user. This user has verified all of their devices.": "Ezt a felhasználót ellenőrizted. Minden eszközét ellenőrizte ez a felhasználó.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Néhány felhasználót még nem ellenőriztél ebben a titkosított szobában vagy még ők nem ellenőrizték az összes eszközüket.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Minden felhasználót ellenőriztél ebben a titkosított szobában és ők ellenőrizték az összes eszközüket.",
+ "Language Dropdown": "Nyelvválasztó lenyíló menü",
+ "Country Dropdown": "Ország lenyíló menü",
+ "The message you are trying to send is too large.": "Túl nagy képet próbálsz elküldeni.",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "A Biztonsági Tároló a már létező kulcs mentés adatai felhasználásával lesz létrehozva. A biztonsági tároló jelmondata és a visszaállítási kulcs meg fog egyezni a kulcs mentésénél használttal",
+ "Migrate from Key Backup": "Mozgatás a Kulcs Mentésből",
+ "Help": "Segítség",
+ "New DM invite dialog (under development)": "Új KB (DM) meghívó párbeszédablak (fejlesztés alatt)",
+ "Show more": "Mutass többet",
+ "Recent Conversations": "Legújabb Beszélgetések",
+ "Direct Messages": "Közvetlen Beszélgetések",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Ha nem találsz meg valakit, kérdezd meg a felhasználói nevét vagy oszd meg a te felhasználói nevedet (%(userId)s) vagy a profil hivatkozást.",
+ "Go": "Menj",
+ "Show info about bridges in room settings": "Híd információk megmutatása a szoba beállításoknál",
+ "This bridge was provisioned by ": "Ezt a hidat ez a felhasználó hozta létre: ",
+ "This bridge is managed by .": "Ezt a hidat ez a felhasználó kezeli: .",
+ "Bridged into , on ": "Híd ide: , ezzel a protokollal: ",
+ "Connected to on ": "Ide csatlakozva: itt: ",
+ "Connected via %(protocolName)s": "Ezzel a protokollal csatlakozva: %(protocolName)s",
+ "Bridge Info": "Híd információ",
+ "Below is a list of bridges connected to this room.": "Alább látható a lista a szobához kapcsolódó hidakról.",
+ "Suggestions": "Javaslatok",
+ "Failed to find the following users": "Az alábbi felhasználók nem találhatók",
+ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "Az alábbi felhasználók nem léteznek vagy hibásan vannak megadva és nem lehet őket meghívni: %(csvNames)s"
}
diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json
index 08be6d4c06..22fc083d08 100644
--- a/src/i18n/strings/it.json
+++ b/src/i18n/strings/it.json
@@ -271,9 +271,9 @@
"Blacklisted": "In lista nera",
"device id: ": "ID dispositivo: ",
"Disinvite": "Revoca invito",
- "Kick": "Caccia fuori",
+ "Kick": "Butta fuori",
"Disinvite this user?": "Revocare l'invito a questo utente?",
- "Kick this user?": "Cacciare questo utente?",
+ "Kick this user?": "Buttare fuori questo utente?",
"Failed to kick": "Espulsione fallita",
"Unban": "Togli ban",
"Ban": "Bandisci",
@@ -2006,5 +2006,31 @@
"Secure your encrypted messages with a passphrase": "Proteggi i tuoi messaggi cifrati con una password",
"Storing secrets...": "Memorizzo i segreti...",
"Unable to set up secret storage": "Impossibile impostare un archivio segreto",
- "Close preview": "Chiudi anteprima"
+ "Close preview": "Chiudi anteprima",
+ "This user has not verified all of their devices.": "Questo utente non ha verificato tutti i suoi dispositivi.",
+ "You have not verified this user. This user has verified all of their devices.": "Non hai verificato questo utente. Questo utente ha verificato tutti i suoi dispositivi.",
+ "You have verified this user. This user has verified all of their devices.": "Hai verificato questo utente. Questo utente ha verificato tutti i suoi dispositivi.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Non hai verificato alcuni utenti in questa stanza criptata o essi non hanno verificato i loro dispositivi.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Hai verificato tutti gli utenti in questa stanza criptata ed essi hanno verificato i loro dispositivi.",
+ "Language Dropdown": "Lingua a tendina",
+ "Country Dropdown": "Nazione a tendina",
+ "The message you are trying to send is too large.": "Il messaggio che stai tentando di inviare è troppo grande.",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "L'archivio segreto verrà impostato usando i dettagli del tuo backup chiavi. La password dell'archivio segreto e la chiave di ripristino saranno le stesse del tuo backup chiavi",
+ "Migrate from Key Backup": "Migra dal backup chiavi",
+ "Help": "Aiuto",
+ "New DM invite dialog (under development)": "Nuovo invito via messaggio diretto (in sviluppo)",
+ "Show info about bridges in room settings": "Mostra info sui bridge nelle impostazioni stanza",
+ "This bridge was provisioned by ": "Questo bridge è stato fornito da ",
+ "This bridge is managed by .": "Questo bridge è gestito da .",
+ "Bridged into , on ": "Bridge in , su ",
+ "Connected to on ": "Connesso a su ",
+ "Connected via %(protocolName)s": "Connesso via %(protocolName)s",
+ "Bridge Info": "Info bridge",
+ "Below is a list of bridges connected to this room.": "Sotto vedi una lista di brdige connessi a questa stanza.",
+ "Recent Conversations": "Conversazioni recenti",
+ "Suggestions": "Suggerimenti",
+ "Show more": "Mostra altro",
+ "Direct Messages": "Messaggi diretti",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Se non riesci a trovare qualcuno, chiedigli il nome utente o condividi il tuo (%(userId)s) o il link al profilo.",
+ "Go": "Vai"
}
diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json
index 14a1b6d429..cce9a81188 100644
--- a/src/i18n/strings/ja.json
+++ b/src/i18n/strings/ja.json
@@ -446,7 +446,7 @@
"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.": "共有キーリクエストは、他の端末に自動的に送信されます。 他の端末での共有キーリクエストを拒否または却下した場合は、ここをクリックしてこのセッションのキーを再度要求してください。",
"If your other devices do not have the key for this message you will not be able to decrypt them.": "他の端末にこのメッセージのキーがない場合、それらの端末を復号化することはできません。",
"Key request sent.": "キーリクエストが送信されました。",
- "Re-request encryption keys from your other devices.": "他の端末から暗号化キーを再リクエスト requestLink>します。",
+ "Re-request encryption keys from your other devices.": "他の端末から暗号化キーを再リクエストします。",
"Undecryptable": "解読不能",
"Encrypted by an unverified device": "未検証の端末によって暗号化されました",
"Unencrypted message": "暗号化されていないメッセージ",
diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json
index e8e62922af..71b46d67f3 100644
--- a/src/i18n/strings/lt.json
+++ b/src/i18n/strings/lt.json
@@ -59,7 +59,7 @@
"You have successfully set a password!": "Jūs sėkmingai įrašėte slaptažodį!",
"Favourite": "Svarbūs",
"All Rooms": "Visi pokalbių kambariai",
- "Explore Room State": "Peržiūrėti pokalbių kambario būseną",
+ "Explore Room State": "Peržiūrėti kambario būseną",
"Source URL": "Šaltinio URL adresas",
"Messages sent by bot": "Roboto siunčiamos žinutės",
"Cancel": "Atšaukti",
@@ -303,7 +303,7 @@
"Failed to mute user": "Nepavyko nutildyti naudotoją",
"Are you sure?": "Ar tikrai?",
"Devices": "Įrenginiai",
- "Ignore": "Nepaisyti",
+ "Ignore": "Ignoruoti",
"Invite": "Pakviesti",
"User Options": "Naudotojo parametrai",
"Admin Tools": "Administratoriaus įrankiai",
@@ -332,7 +332,7 @@
"Settings": "Nustatymai",
"Community Invites": "Bendruomenės pakvietimai",
"People": "Žmonės",
- "%(roomName)s does not exist.": "%(roomName)s nėra.",
+ "%(roomName)s does not exist.": "%(roomName)s neegzistuoja.",
"%(roomName)s is not accessible at this time.": "%(roomName)s šiuo metu nėra pasiekiamas.",
"Muted Users": "Nutildyti naudotojai",
"Click here to fix": "Spustelėkite čia, norėdami pataisyti",
@@ -568,7 +568,7 @@
"Confirm password": "Pakartokite slaptažodį",
"Demote yourself?": "Pažeminti save?",
"Demote": "Pažeminti",
- "Share Link to User": "Bendrinti nuorodą su naudotoju",
+ "Share Link to User": "Dalintis nuoroda į naudotoją",
"Direct chats": "Tiesioginiai pokalbiai",
"The conversation continues here.": "Pokalbis tęsiasi čia.",
"Jump to message": "Pereiti prie žinutės",
@@ -644,7 +644,7 @@
"Enable widget screenshots on supported widgets": "Palaikomuose valdikliuose įjungti valdiklių ekrano kopijas",
"Export E2E room keys": "Eksportuoti E2E kambario raktus",
"Last seen": "Paskutinį kartą matytas",
- "Unignore": "Nustoti nepaisyti",
+ "Unignore": "Nebeignoruoti",
"and %(count)s others...|other": "ir %(count)s kitų...",
"and %(count)s others...|one": "ir dar vienas...",
"Mention": "Paminėti",
@@ -807,7 +807,7 @@
"Whether or not you're logged in (we don't record your username)": "Nepriklausomai nuo to ar jūs prisijungę (mes neįrašome jūsų vartotojo vardo)",
"Chat with Riot Bot": "Kalbėtis su Riot botu",
"Sign In": "Prisijungti",
- "Explore rooms": "Peržiūrėti kambarius",
+ "Explore rooms": "Žvalgyti kambarius",
"Your Riot is misconfigured": "Jūsų Riot yra neteisingai sukonfigūruotas",
"Sign in to your Matrix account on %(serverName)s": "Prisijunkite prie savo paskyros %(serverName)s serveryje",
"Sign in to your Matrix account on ": "Prisijunkite prie savo paskyros serveryje",
@@ -926,5 +926,41 @@
"Group & filter rooms by custom tags (refresh to apply changes)": "Grupuoti ir filtruoti kambarius pagal pasirinktines žymas (atnaujinkite, kad pritaikytumėte pakeitimus)",
"Render simple counters in room header": "Užkrauti paprastus skaitiklius kambario antraštėje",
"Multiple integration managers": "Daugialypiai integracijų valdikliai",
- "%(name)s (%(userId)s)": "%(name)s (%(userId)s)"
+ "%(name)s (%(userId)s)": "%(name)s (%(userId)s)",
+ "Show info about bridges in room settings": "Rodyti informaciją apie tiltus kambario nustatymuose",
+ "General": "Bendrieji",
+ "Remove recent messages by %(user)s": "Pašalinti paskutines %(user)s žinutes",
+ "Jump to read receipt": "Nušokti iki perskaitytų žinučių",
+ "Remove recent messages": "Pašalinti paskutines žinutes",
+ "You can still join it because this is a public room.": "Jūs vis tiek galite prie jo prisijungti, nes tai yra viešas kambarys.",
+ "Do you want to chat with %(user)s?": "Ar jūs norite kalbėtis su %(user)s?",
+ " wants to chat": " nori kalbėtis",
+ "Start chatting": "Pradėti kalbėtis",
+ "Do you want to join %(roomName)s?": "Ar jūs norite prisijungti prie %(roomName)s?",
+ " invited you": " jus pakvietė",
+ "You're previewing %(roomName)s. Want to join it?": "Jūs peržiūrite %(roomName)s. Norite prie jo prisijungti?",
+ "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s negali būti peržiūrėtas. Ar jūs norite prie jo prisijungti?",
+ "This room doesn't exist. Are you sure you're at the right place?": "Šis kambarys neegzistuoja. Ar jūs tikras, kad esate tinkamoje vietoje?",
+ "Create a public room": "Sukurti viešą kambarį",
+ "Make this room public": "Padaryti šį kambarį viešu",
+ "Room Settings - %(roomName)s": "Kambario nustatymai - %(roomName)s",
+ "Upgrade public room": "Atnaujinti viešą kambarį",
+ "Upload files (%(current)s of %(total)s)": "Įkelti failus (%(current)s iš %(total)s)",
+ "Upload files": "Įkelti failus",
+ "Upload all": "Įkelti visus",
+ "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Šis failas yra per didelis įkėlimui. Failų dydžio limitas yra %(limit)s, bet šis failas užima %(sizeOfThisFile)s.",
+ "These files are too large to upload. The file size limit is %(limit)s.": "Šie failai yra per dideli įkėlimui. Failų dydžio limitas yra %(limit)s.",
+ "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Kai kurie failai yra per dideli įkėlimui. Failų dydžio limitas yra %(limit)s.",
+ "Upload %(count)s other files|other": "Įkelti %(count)s kitus failus",
+ "Upload %(count)s other files|one": "Įkelti %(count)s kitą failą",
+ "Cancel All": "Atšaukti visus",
+ "Upload Error": "Įkėlimo klaida",
+ "Explore": "Žvalgyti",
+ "Filter": "Filtruoti",
+ "Filter rooms…": "Filtruoti kambarius…",
+ "This room is not public. You will not be able to rejoin without an invite.": "Šis kambarys nėra viešas. Jūs negalėsite prie jo vėl prisijungti be pakvietimo.",
+ "Are you sure you want to leave the room '%(roomName)s'?": "Ar tikrai norite palikti kambarį %(roomName)s?",
+ "%(creator)s created and configured the room.": "%(creator)s sukūrė ir sukonfigūravo kambarį.",
+ "Riot failed to get the public room list.": "Riot nepavyko gauti viešų kambarių sąrašą.",
+ "General failure": "Bendras triktis"
}
diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json
index c71e4236b9..aeab97caf3 100644
--- a/src/i18n/strings/ru.json
+++ b/src/i18n/strings/ru.json
@@ -1267,7 +1267,7 @@
"Unable to load key backup status": "Не удалось получить статус резервного копирования для ключей шифрования",
"Restore from Backup": "Восстановить из резервной копии",
"This device is backing up your keys. ": "Это устройство хранит резервную копию ключей шифрования. ",
- "Back up your keys before signing out to avoid losing them.": "Перед выходом сохраните резервную копию ключей шифрования чтобы не потерять их.",
+ "Back up your keys before signing out to avoid losing them.": "Перед выходом сохраните резервную копию ключей шифрования, чтобы не потерять их.",
"Backup has a signature from unknown device with ID %(deviceId)s.": "Резервная копия подписана неизвестным устройством с ID %(deviceId)s.",
"Backup has a valid signature from this device": "Резервная копия заверена действительной подписью от этого устройства",
"Backup has a valid signature from verified device ": "Резервная копия заверена действительной подписью от подтверждённого устройства ",
@@ -1389,7 +1389,7 @@
"Do you want to join %(roomName)s?": "Хотите присоединиться к %(roomName)s?",
" invited you": " пригласил тебя",
"You're previewing %(roomName)s. Want to join it?": "Вы просматриваете %(roomName)s. Хотите присоединиться?",
- "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s не могут быть предварительно просмотрены. Вы хотите присоединиться к ней?",
+ "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s не может быть предварительно просмотрена. Вы хотите присоединиться к ней?",
"This room doesn't exist. Are you sure you're at the right place?": "Эта комната не существует. Вы уверены, что находитесь в правильном месте?",
"Try again later, or ask a room admin to check if you have access.": "Повторите попытку позже или попросите администратора комнаты проверить, есть ли у вас доступ.",
"%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "%(errcode)s был возвращен при попытке доступа в комнату. Если вы считаете, что видите это сообщение по ошибке, пожалуйста, отправьте отчет об ошибке .",
@@ -1440,7 +1440,7 @@
"You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Ранее вы использовали Riot на %(host)s с отложенной загрузкой участников. В этой версии отложенная загрузка отключена. Поскольку локальный кеш не совместим между этими двумя настройками, Riot необходимо повторно синхронизировать вашу учётную запись.",
"If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Если другая версия Riot все еще открыта на другой вкладке, закройте ее, так как использование Riot на том же хосте с включенной и отключенной ленивой загрузкой одновременно вызовет проблемы.",
"Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot теперь использует в 3-5 раз меньше памяти, загружая информацию только о других пользователях, когда это необходимо. Пожалуйста, подождите, пока мы ресинхронизируемся с сервером!",
- "I don't want my encrypted messages": "Я не хочу, мои зашифрованные сообщения",
+ "I don't want my encrypted messages": "Мне не нужны мои зашифрованные сообщения",
"Manually export keys": "Ручной экспорт ключей",
"If you run into any bugs or have feedback you'd like to share, please let us know on GitHub.": "Если вы столкнулись с какими-либо ошибками или хотите оставить отзыв, которым хотите поделиться, сообщите нам об этом на GitHub.",
"To help avoid duplicate issues, please view existing issues first (and add a +1) or create a new issue if you can't find it.": "Чтобы избежать повторяющихся проблем, сначала просмотрите существующие проблемы (и добавьте +1), либо создайте новую проблему , если вы не можете ее найти.",
@@ -1550,7 +1550,7 @@
"Unable to query for supported registration methods.": "Невозможно запросить поддерживаемые методы регистрации.",
"Great! This passphrase looks strong enough.": "Отлично! Этот пароль выглядит достаточно сильной.",
"We'll store an encrypted copy of your keys on our server. Protect your backup with a passphrase to keep it secure.": "Мы будем хранить зашифрованную копию ваших ключей на нашем сервере. Защитите свою резервную копию паролем, чтобы сохранить ее в безопасности.",
- "For maximum security, this should be different from your account password.": "Для максимальной безопасности это должно отличаться от пароля вашей учётной записи.",
+ "For maximum security, this should be different from your account password.": "Для максимальной безопасности он должен отличаться от пароля вашей учётной записи.",
"Enter a passphrase...": "Введите пароль....",
"Set up with a Recovery Key": "Настройка с ключом восстановления",
"That matches!": "Это совпадает!",
@@ -1830,5 +1830,7 @@
"My Ban List": "Мой список запрещенных",
"Ignored/Blocked": "Игнорируемые/Заблокированные",
"Error adding ignored user/server": "Ошибка добавления игнорируемого пользователя/сервера",
- "Error subscribing to list": "Ошибка при подписке на список"
+ "Error subscribing to list": "Ошибка при подписке на список",
+ "Send cross-signing keys to homeserver": "Отправка ключей перекрестной подписи на домашний сервер",
+ "Error upgrading room": "Ошибка обновления комнаты"
}
diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json
index 1782059252..8befc3c18c 100644
--- a/src/i18n/strings/sk.json
+++ b/src/i18n/strings/sk.json
@@ -1187,70 +1187,70 @@
"Verify this user by confirming the following number appears on their screen.": "Overte tohoto používateľa tým, že zistíte, či sa na jeho obrazovke objaví nasledujúce číslo.",
"Unable to find a supported verification method.": "Nie je možné nájsť podporovanú metódu overenia.",
"For maximum security, we recommend you do this in person or use another trusted means of communication.": "Pre zachovanie maximálnej bezpečnosti odporúčame, aby ste toto vykonali osobne, alebo použili iný dôverihodný komunikačný kanál.",
- "Dog": "Pes",
- "Cat": "Mačka",
- "Lion": "Lev",
+ "Dog": "Hlava psa",
+ "Cat": "Hlava mačky",
+ "Lion": "Hlava leva",
"Horse": "Kôň",
- "Unicorn": "Jednorožec",
- "Pig": "Prasa",
+ "Unicorn": "Hlava jednorožca",
+ "Pig": "Hlava Prasaťa",
"Elephant": "Slon",
- "Rabbit": "Zajac",
- "Panda": "Panda",
+ "Rabbit": "Hlava Zajaca",
+ "Panda": "Hlava Pandy",
"Rooster": "Kohút",
"Penguin": "Tučniak",
"Turtle": "Korytnačka",
"Fish": "Ryba",
"Octopus": "Chobotnica",
"Butterfly": "Motýľ",
- "Flower": "Kvetina",
- "Tree": "Strom",
+ "Flower": "Tulipán",
+ "Tree": "Listnatý strom",
"Cactus": "Kaktus",
- "Mushroom": "Hríb",
+ "Mushroom": "Huba",
"Globe": "Zemeguľa",
- "Moon": "Mesiac",
+ "Moon": "Polmesiac",
"Cloud": "Oblak",
"Fire": "Oheň",
"Banana": "Banán",
- "Apple": "Jablko",
+ "Apple": "Červené jablko",
"Strawberry": "Jahoda",
- "Corn": "Kukurica",
+ "Corn": "Kukuričný klas",
"Pizza": "Pizza",
- "Cake": "Koláč",
- "Heart": "Srdce",
- "Smiley": "Úsmev",
+ "Cake": "Narodeninová torta",
+ "Heart": "Červené srdce",
+ "Smiley": "Škeriaca sa tvár",
"Robot": "Robot",
- "Hat": "Klobúk",
+ "Hat": "Cylinder",
"Glasses": "Okuliare",
- "Spanner": "Skrutkovač",
- "Santa": "Mikuláš",
+ "Spanner": "Francúzsky kľúč",
+ "Santa": "Santa Claus",
"Thumbs up": "palec nahor",
"Umbrella": "Dáždnik",
"Hourglass": "Presýpacie hodiny",
- "Clock": "Hodiny",
- "Gift": "Darček",
+ "Clock": "Budík",
+ "Gift": "Zabalený darček",
"Light bulb": "Žiarovka",
- "Book": "Kniha",
+ "Book": "Zatvorená kniha",
"Pencil": "Ceruzka",
- "Paperclip": "Kancelárska sponka",
+ "Paperclip": "Sponka na papier",
"Scissors": "Nožnice",
- "Padlock": "Visiaci zámok",
+ "Padlock": "Zatvorená zámka",
"Key": "Kľúč",
"Hammer": "Kladivo",
"Telephone": "Telefón",
- "Flag": "Vlajka",
- "Train": "Vlak",
+ "Flag": "Kockovaná zástava",
+ "Train": "Rušeň",
"Bicycle": "Bicykel",
"Aeroplane": "Lietadlo",
"Rocket": "Raketa",
"Trophy": "Trofej",
- "Ball": "Lopta",
+ "Ball": "Futbal",
"Guitar": "Gitara",
"Trumpet": "Trúbka",
- "Bell": "Zvonček",
+ "Bell": "Zvon",
"Anchor": "Kotva",
"Headphones": "Slúchadlá",
- "Folder": "Priečinok",
- "Pin": "Pin",
+ "Folder": "Fascikel",
+ "Pin": "Špendlík",
"Your homeserver does not support device management.": "Váš domovský server nepodporuje správu zariadení.",
"Yes": "Áno",
"No": "Nie",
@@ -1461,7 +1461,7 @@
"The server does not support the room version specified.": "Server nepodporuje zadanú verziu miestnosti.",
"Name or Matrix ID": "Meno alebo Matrix ID",
"Email, name or Matrix ID": "Email, meno alebo Matrix ID",
- "Failed to start chat": "Nepodarilo sa spustiť konverzáciu",
+ "Failed to start chat": "Nepodarilo sa začať konverzáciu",
"Messages": "Správy",
"Actions": "Akcie",
"Room upgrade confirmation": "Potvrdenie aktualizácii miestnosti",
@@ -1514,5 +1514,115 @@
"Terms of service not accepted or the identity server is invalid.": "Neprijali ste Podmienky poskytovania služby alebo to nie je správny server.",
"Identity server has no terms of service": "Server totožností nemá žiadne podmienky poskytovania služieb",
"The identity server you have chosen does not have any terms of service.": "Zadaný server totožností nezverejňuje žiadne podmienky poskytovania služieb.",
- "Only continue if you trust the owner of the server.": "Pokračujte len v prípade, že dôverujete prevádzkovateľovi servera."
+ "Only continue if you trust the owner of the server.": "Pokračujte len v prípade, že dôverujete prevádzkovateľovi servera.",
+ "Add Email Address": "Pridať emailovú adresu",
+ "Add Phone Number": "Pridať telefónne číslo",
+ "Send cross-signing keys to homeserver": "Poslať kľúče pre podpisovanie naprieč zariadeniami na domovský server",
+ "This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Táto akcia si vyžaduje mať overenú emailovú adresu alebo telefónne číslo cez predvolený server totožností , ale server nezverejnil podmienky používania.",
+ "Trust": "Dôverovať",
+ "Custom (%(level)s)": "Vlastná (%(level)s)",
+ "Sends a message as plain text, without interpreting it as markdown": "Odošle správu vo formáte obyčajný text, bez prekladu markdown",
+ "You do not have the required permissions to use this command.": "Na použitie tohoto príkazu nemáte dostatočné povolenia.",
+ "Error upgrading room": "Chyba pri aktualizácii miestnosti",
+ "Double check that your server supports the room version chosen and try again.": "Uistite sa, že domovský server podporuje zvolenú verziu miestnosti a skúste znovu.",
+ "Changes the avatar of the current room": "Zmení obrázok miestnosti",
+ "Use an identity server": "Použiť server totožností",
+ "Use an identity server to invite by email. Click continue to use the default identity server (%(defaultIdentityServerName)s) or manage in Settings.": "Aby ste mohli používateľov pozývať zadaním emailovej adresy, je potrebné nastaviť adresu servera totožností. Klepnutím na tlačidlo pokračovať použijete predvolený server (%(defaultIdentityServerName)s) a zmeniť to môžete v nastaveniach.",
+ "Use an identity server to invite by email. Manage in Settings.": "Server totožností sa použije na pozývanie používateľov zadaním emailovej adresy. Spravujte v nastaveniach.",
+ "%(senderName)s placed a voice call.": "%(senderName)s uskutočnil telefonát.",
+ "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s uskutočnil telefonát. (Nepodporované týmto prehliadačom)",
+ "%(senderName)s placed a video call.": "%(senderName)s uskutočnil video hovor.",
+ "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s uskutočnil video hovor. (Nepodporované týmto prehliadačom)",
+ "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s odstránil pravidlo zákazu vstúpiť používateľom zhodujúcich sa s %(glob)s",
+ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s odstránil pravidlo zákaz vstúpiť do miestností zhodujúcich sa s %(glob)s",
+ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s odstránil pravidlo zakázať vstúpiť z domovského servera zhodnými s %(glob)s",
+ "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s odstránil pravidlo zákazu vstupu zhodné s %(glob)s",
+ "%(senderName)s updated an invalid ban rule": "%(senderName)s aktualizoval neplatné pravidlo zákazu vstúpiť",
+ "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s aktualizoval pravidlo zákazu vstúpiť používateľom zhodujúcim sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s aktualizoval pravidlo zakázať vstúpiť do miestností shodujúcich sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s aktualizoval pravidlo zakázať vstúpiť z domovských serverov zhodujúcich sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s aktualizoval pravidlo zakázať vstúpiť zhodujúce sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s vytvoril pravidlo zakázať vstúpiť používateľom zhodujúcim sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s vytvoril pravidlo zakázať vstúpiť do miestností zhodujúcich sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s vytvoril pravidlo zakázať vstúpiť z domovských serverov zhodujúcich sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s vytvoril pravidlo zakázať vstúpiť zhodujúce sa s %(glob)s, dôvod: %(reason)s",
+ "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s zmenil pravidlo zakázať vstúpiť používateľom pôvodne zhodujúcich sa s %(oldGlob)s na používateľov zhodujúcich sa s %(newGlob)s, dôvod: %(reason)s",
+ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s zmenil pravidlo zakázať vstúpiť do miestností pôvodne zhodujúcich sa s %(oldGlob)s na miestnosti zhodujúce sa s %(newGlob)s, dôvod: %(reason)s",
+ "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s zmenil pravidlo zakázať vstúpiť z domovských serverov pôvodne sa zhodujúcich s %(oldGlob)s na servery zhodujúce sa s %(newGlob)s, dôvod: %(reason)s",
+ "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s aktualizoval pravidlo zakázať vstúpiť pôvodne sa zhodujúce s %(oldGlob)s na %(newGlob)s, dôvod: %(reason)s",
+ "%(name)s (%(userId)s)": "%(name)s (%(userId)s)",
+ "Multiple integration managers": "Viacej integračných serverov",
+ "Try out new ways to ignore people (experimental)": "Vyskúšajte si nový spôsob ignorovania používateľov (experiment)",
+ "Send verification requests in direct message, including a new verification UX in the member panel.": "Požiadavky na overenie používateľov posielať v priamych konverzáciách, zahŕňa tiež nové rozhranie overenia v zozname používateľov.",
+ "Enable cross-signing to verify per-user instead of per-device (in development)": "Povoliť podpisovanie naprieč zariadeniami, umožňuje overovanie používateľov namiesto ich zariadení (vo vývoji)",
+ "Enable local event indexing and E2EE search (requires restart)": "Povoliť lokálne indexovanie udalostí a vyhľadávanie v šifrovaných miestnostiach",
+ "Use the new, faster, composer for writing messages": "Používať nový, rýchly, editor pri písaní správ",
+ "Match system theme": "Prispôsobiť sa vzhľadu systému",
+ "Send read receipts for messages (requires compatible homeserver to disable)": "Odosielať potvrdenia o prečítaní správ (na zakázanie je vyžadovaný kompatibilný domovský server)",
+ "Show previews/thumbnails for images": "Zobrazovať ukážky/náhľady obrázkov",
+ "My Ban List": "Môj zoznam zakázať vstúpiť",
+ "Decline (%(counter)s)": "Zamietnuť (%(counter)s)",
+ "The message you are trying to send is too large.": "Správa, ktorú sa usilujete odoslať, je príliš veľká.",
+ "This is your list of users/servers you have blocked - don't leave the room!": "Toto je zoznam používateľov / serverov, ktorých ste zablokovali - neopúšťajte miestnosť!",
+ "Upload": "Nahrať",
+ "Cross-signing and secret storage are enabled.": "Podpisovanie naprieč zariadeniami a bezpečné úložisko sú aktívne.",
+ "Your account has a cross-signing identity in secret storage, but it is not yet trusted by this device.": "Na bezpečnom úložisku vo vašom účte máte uloženú totožnosť podpisovania naprieč zariadeniami, ale v tomto zariadení zatiaľ tejto totožnosti nedôverujete.",
+ "Cross-signing and secret storage are not yet set up.": "Podpisovanie naprieč zariadeniami a bezpečné úložisko zatiaľ nie sú nastavené.",
+ "Bootstrap cross-signing and secret storage": "Zaviesť podpisovanie naprieč zariadeniami a bezpečné úložisko",
+ "Cross-signing public keys:": "Verejné kľúče podpisovania naprieč zariadeniami:",
+ "on device": "na zariadení",
+ "not found": "nenájdené",
+ "Cross-signing private keys:": "Súkromné kľúče podpisovania naprieč zariadeniami:",
+ "in secret storage": "na bezpečnom úložisku",
+ "Secret storage public key:": "Verejný kľúč bezpečného úložiska:",
+ "in account data": "v údajoch účtu",
+ "Connecting to integration manager...": "Pripájanie k integračnému serveru…",
+ "Cannot connect to integration manager": "Nie je možné sa pripojiť k integračnému serveru",
+ "The integration manager is offline or it cannot reach your homeserver.": "Integračný server je offline, alebo nemôže pristupovať k domovskému serveru.",
+ "not stored": "neuložené",
+ "Backup has a valid signature from this user": "Záloha je podpísaná platným kľúčom od tohoto používateľa",
+ "Backup has a invalid signature from this user": "Záloha je podpísaná neplatným kľúčom od tohoto používateľa",
+ "Backup has a signature from unknown user with ID %(deviceId)s": "Podpis zálohy pochádza od neznámeho používateľa ID %(deviceId)s",
+ "Backup has a signature from unknown device with ID %(deviceId)s": "Podpis zálohy pochádza z neznámeho zariadenia ID %(deviceId)s",
+ "Backup key stored in secret storage, but this feature is not enabled on this device. Please enable cross-signing in Labs to modify key backup state.": "Záloha kľúčov je uložená na bezpečnom úložisku, ale funkcia podpisovanie naprieč zariadeniami nie je na tomto zariadení aktívna. Ak chcete zmeniť stav zálohy kľúčov, zapnite podpisovanie naprieč zariadeniami v časti experimenty.",
+ "Backup key stored: ": "Záloha kľúčov uložená: ",
+ "Start using Key Backup with Secure Secret Storage": "Začnite používať zálohu kľúčov na bezpečnom úložisku",
+ "Clear notifications": "Vymazať oznámenia",
+ "Change identity server": "Zmeniť server totožností",
+ "Disconnect from the identity server and connect to instead?": "Naozaj si želáte odpojiť od servera totožností a pripojiť sa namiesto toho k serveru ?",
+ "Disconnect identity server": "Odpojiť server totožností",
+ "Disconnect from the identity server ?": "Naozaj sa chcete odpojiť od servera totožností ?",
+ "Disconnect": "Odpojiť",
+ "You should remove your personal data from identity server before disconnecting. Unfortunately, identity server is currently offline or cannot be reached.": "Pred odpojením zo servera totožností by ste mali z neho odstrániť vaše osobné údaje. Žiaľ, server momentálne nie je dostupný a nie je možné sa k nemu pripojiť.",
+ "You should:": "Mali by ste:",
+ "check your browser plugins for anything that might block the identity server (such as Privacy Badger)": "Skontrolovať rozšírenia inštalované vo webovom prehliadači, ktoré by mohli blokovať prístup k serveru totožností (napr. rozšírenie Privacy Badger)",
+ "contact the administrators of identity server ": "Kontaktovať správcu servera totožností ",
+ "wait and try again later": "Počkať a skúsiť znovu neskôr",
+ "Disconnect anyway": "Napriek tomu sa odpojiť",
+ "You are still sharing your personal data on the identity server .": "na servery máte stále uložené vaše osobné údaje.",
+ "We recommend that you remove your email addresses and phone numbers from the identity server before disconnecting.": "Odporúčame, aby ste ešte pred odpojením sa zo servera totožností odstránili vašu emailovú adresu a telefónne číslo.",
+ "Identity Server (%(server)s)": "Server totožností (%(server)s)",
+ "You are currently using to discover and be discoverable by existing contacts you know. You can change your identity server below.": "Momentálne na vyhľadávanie kontaktov a na možnosť byť nájdení kontaktmi ktorých poznáte používate . Zmeniť server totožností môžete nižšie.",
+ "If you don't want to use to discover and be discoverable by existing contacts you know, enter another identity server below.": "Ak nechcete na vyhľadávanie kontaktov a možnosť byť nájdení používať , zadajte adresu servera totožností nižšie.",
+ "Identity Server": "Server totožností",
+ "You are not currently using an identity server. To discover and be discoverable by existing contacts you know, add one below.": "Momentálne nepoužívate žiaden server totožností. Ak chcete vyhľadávať kontakty a zároveň umožniť ostatným vašim kontaktom, aby mohli nájsť vás, nastavte si server totožností nižšie.",
+ "Disconnecting from your identity server will mean you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Ak sa odpojíte od servera totožností, vaše kontakty vás nebudú môcť nájsť a ani vy nebudete môcť pozývať používateľov zadaním emailovej adresy a telefónneho čísla.",
+ "Using an identity server is optional. If you choose not to use an identity server, you won't be discoverable by other users and you won't be able to invite others by email or phone.": "Používanie servera totožností je voliteľné. Ak sa rozhodnete, že nebudete používať server totožností, nebudú vás vaši známi môcť nájsť a ani vy nebudete môcť pozývať používateľov zadaním emailovej adresy alebo telefónneho čísla.",
+ "Do not use an identity server": "Nepoužívať server totožností",
+ "Enter a new identity server": "Zadať nový server totožností",
+ "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Použiť integračný server (%(serverName)s) na správu botov, widgetov a balíčkov s nálepkami.",
+ "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Použiť integračný server na správu botov, widgetov a balíčkov s nálepkami.",
+ "Manage integrations": "Spravovať integrácie",
+ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integračné servery zhromažďujú údaje nastavení, môžu spravovať widgety, odosielať vo vašom mene pozvánky alebo meniť úroveň moci.",
+ "Agree to the identity server (%(serverName)s) Terms of Service to allow yourself to be discoverable by email address or phone number.": "Súhlas s podmienkami používania servera totožností (%(serverName)s), aby ste mohli byť nájdení zadaním emailovej adresy alebo telefónneho čísla.",
+ "Discovery": "Objaviť",
+ "Deactivate account": "Deaktivovať účet",
+ "Clear cache and reload": "Vymazať vyrovnávaciu pamäť a načítať znovu",
+ "Customise your experience with experimental labs features. Learn more.": "Prispôsobte si zážitok s používania aktivovaním experimentálnych vlastností. Zistiť viac.",
+ "Ignored/Blocked": "Ignorovaní / Blokovaní",
+ "Error adding ignored user/server": "Chyba pri pridávaní ignorovaného používateľa / servera",
+ "Something went wrong. Please try again or view your console for hints.": "Niečo sa nepodarilo. Prosím, skúste znovu neskôr alebo si prečítajte ďalšie usmernenia zobrazením konzoly.",
+ "Error subscribing to list": "Chyba pri prihlasovaní sa do zoznamu",
+ "Please verify the room ID or alias and try again.": "Prosím, overte platnosť ID miestnosti alebo alias a skúste znovu.\nPlease verify the room ID or alias and try again.",
+ "Error removing ignored user/server": "Chyba pri odstraňovaní ignorovaného používateľa / servera"
}
diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json
index 4d67df4fa4..e833009d59 100644
--- a/src/i18n/strings/sq.json
+++ b/src/i18n/strings/sq.json
@@ -1964,5 +1964,57 @@
"Set up secret storage": "Ujdisni depozitë të fshehtë",
"Secure your encrypted messages with a passphrase": "Sigurojini mesazhet tuaj të fshehtëzuar me një frazëkalim",
"Storing secrets...": "Po depozitohen të fshehta…",
- "Unable to set up secret storage": "S’u arrit të ujdiset depozitë e fshehtë"
+ "Unable to set up secret storage": "S’u arrit të ujdiset depozitë e fshehtë",
+ "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s hoqi rregullin për dëbim përdoruesish që kanë përputhje me %(glob)s",
+ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s hoqi rregullin që dëbon dhoma që kanë përputhje me %(glob)s",
+ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s hoqi rregullin që dëbon shërbyes që kanë përputhje me %(glob)s",
+ "%(senderName)s removed a ban rule matching %(glob)s": "%(senderName)s hoqi një rregull dëbimi mbi përputhje me %(glob)s",
+ "%(senderName)s updated an invalid ban rule": "%(senderName)s përditësoi një rregull të pavlefshëm dëbimesh",
+ "%(senderName)s updated the rule banning users matching %(glob)s for %(reason)s": "%(senderName)s përditësoi rregullin mbi dëbim përdoruesish që kanë përputhje me %(glob)s për %(reason)s",
+ "%(senderName)s updated the rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s përditësoi rregullin për dëbim dhomash që kanë përputhje me %(glob)s për %(reason)s",
+ "%(senderName)s updated the rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s përditësoi rregullin për dëbim shërbyesish që kanë përputhje me %(glob)s për %(reason)s",
+ "%(senderName)s updated a ban rule matching %(glob)s for %(reason)s": "%(senderName)s përditësoi një rregull dëbimi rreth përputhjesh me %(glob)s për %(reason)s",
+ "%(senderName)s created a rule banning users matching %(glob)s for %(reason)s": "%(senderName)s krijoi një rregull mbi dëbim përdoruesish që kanë përputhje me %(glob)s për %(reason)s",
+ "%(senderName)s created a rule banning rooms matching %(glob)s for %(reason)s": "%(senderName)s krijoi një rregull mbi dëbim dhomash që kanë përputhje me %(glob)s për %(reason)s",
+ "%(senderName)s created a rule banning servers matching %(glob)s for %(reason)s": "%(senderName)s krijoi një rregull mbi dëbim shërbyesish që kanë përputhje me %(glob)s për %(reason)s",
+ "%(senderName)s created a ban rule matching %(glob)s for %(reason)s": "%(senderName)s krijoi një rregull dëbimi rreth përputhjesh me %(glob)s për %(reason)s",
+ "%(senderName)s changed a rule that was banning users matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ndryshoi një rregull që dëbonte përdorues me përputhje me %(oldGlob)s për përputhje me %(newGlob)s për %(reason)s",
+ "%(senderName)s changed a rule that was banning rooms matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ndryshoi një rregull që dëbonte dhoma me përputhje me %(oldGlob)s për përputhje me %(newGlob)s për %(reason)s",
+ "%(senderName)s changed a rule that was banning servers matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s ndryshoi një rregull që dëbonte shërbyes me përputhje me %(oldGlob)s për përputhje me %(newGlob)s për %(reason)s",
+ "%(senderName)s updated a ban rule that was matching %(oldGlob)s to matching %(newGlob)s for %(reason)s": "%(senderName)s përditësoi një rregull dëbimesh mbi përputhje me %(oldGlob)s për përputhje me %(newGlob)s për %(reason)s",
+ "The message you are trying to send is too large.": "Mesazhi që po rrekeni të dërgoni është shumë i madh.",
+ "New DM invite dialog (under development)": "Dialog ftese të re për MD (në zhvillim)",
+ "not stored": "e padepozituar",
+ "Backup has a valid signature from this user": "Kopjeruajtja ka një nënshkrim të vlefshëm prej këtij përdoruesi",
+ "Backup has a invalid signature from this user": "Kopjeruajtja ka një nënshkrim të pavlefshëm prej këtij përdoruesi",
+ "Backup has a signature from unknown user with ID %(deviceId)s": "Kopjeruajtja ka një nënshkrim nga një përdorues i panjohur me ID %(deviceId)s",
+ "Backup has a signature from unknown device with ID %(deviceId)s": "Kopjeruajtja ka një nënshkrim nga një pajisje e panjohur me ID %(deviceId)s",
+ "Backup key stored: ": "Kyç kopjeruajtjeje i depozituar: ",
+ "Start using Key Backup with Secure Secret Storage": "Fillo të përdorësh Kopejruajtje Kyçesh me Depozitim Kyçi të Fshehtë",
+ "This user has not verified all of their devices.": "Ky përdorues s’ka verifikuar krejt pajisjet e tij.",
+ "You have not verified this user. This user has verified all of their devices.": "S’e keni verifikuar këtë përdorues. Ky përdorues ka verifikuar krejt pajisjet e veta.",
+ "You have verified this user. This user has verified all of their devices.": "E keni verifikuar këtë përdorues. Ky përdorues ka verifikuar krejt pajisjet e veta.",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "Disa përdorues në këtë dhomë të fshehtëzuar nuk janë verifikuar nga ju ose nuk kanë verifikuar pajisjet e tyre.",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "Krejt përdorues në këtë dhomë të fshehtëzuar janë verifikuar nga ju dhe kanë verifikuar pajisjet e tyre.",
+ "Close preview": "Mbylle paraparjen",
+ "Hide verified sessions": "Fshih sesione të verifikuar",
+ "%(count)s verified sessions|other": "%(count)s sesione të verifikuar",
+ "%(count)s verified sessions|one": "1 sesion i verifikuar",
+ "Language Dropdown": "Menu Hapmbyll Gjuhësh",
+ "Show more": "Shfaq më tepër",
+ "Recent Conversations": "Biseda Së Fundi",
+ "Direct Messages": "Mesazhe të Drejtpërdrejtë",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Nëse s’gjeni dot dikë, kërkojuni emrin e përdoruesit, ose jepuni emrin tuaj të përdoruesit (%(userId)s) ose profile link.",
+ "Go": "Shko",
+ "Help": "Ndihmë",
+ "Country Dropdown": "Menu Hapmbyll Vendesh",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "Depozita e Fshehtë do të ujdiset duke përdorur hollësitë tuaja ekzistuese për kopjeruajtje kyçesh.Frazëkalimi juaj për në depozitën e fshehtë dhe kyçi i rimarrjes do të jenë të njëjtë me ata për kopjeruajtjen tuaj të kyçeve",
+ "Migrate from Key Backup": "Migroji prej Kopjeruajtje Kyçesh",
+ "Show info about bridges in room settings": "Shfaq te rregullime dhome të dhëna rreth urash",
+ "This bridge was provisioned by ": "Kjo urë është dhënë nga ",
+ "This bridge is managed by .": "Kjo urë administrohet nga .",
+ "Connected to on ": "Lidhur me në ",
+ "Connected via %(protocolName)s": "Lidhur përmes %(protocolName)s",
+ "Bridge Info": "Të dhëna Ure",
+ "Below is a list of bridges connected to this room.": "Më poshtë keni një listë urash të lidhura në këtë dhomë."
}
diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json
index 1cd7b42a42..90c03b84f3 100644
--- a/src/i18n/strings/sv.json
+++ b/src/i18n/strings/sv.json
@@ -149,7 +149,7 @@
"Incorrect verification code": "Fel verifieringskod",
"Invalid alias format": "Fel alias-format",
"Invalid Email Address": "Ogiltig epostadress",
- "Invalid file%(extra)s": "Fel fil%(extra)s",
+ "Invalid file%(extra)s": "Felaktig fil%(extra)s",
"%(senderName)s invited %(targetName)s.": "%(senderName)s bjöd in %(targetName)s.",
"Invite new room members": "Bjud in nya rumsmedlemmar",
"Invited": "Inbjuden",
@@ -1519,5 +1519,130 @@
"%(name)s (%(userId)s)": "%(name)s (%(userId)s)",
"Try out new ways to ignore people (experimental)": "Testa nya sätt att ignorera personer (experimentalt)",
"Use the new, faster, composer for writing messages": "Använd den nya, snabbare kompositören för att skriva meddelanden",
- "Show previews/thumbnails for images": "Visa förhandsvisning/tumnagel för bilder"
+ "Show previews/thumbnails for images": "Visa förhandsvisning/tumnagel för bilder",
+ "Send cross-signing keys to homeserver": "Skicka korssigneringsnycklar till hemserver",
+ "Custom (%(level)s)": "Anpassad (%(level)s)",
+ "Error upgrading room": "Fel vid uppgradering av rum",
+ "Double check that your server supports the room version chosen and try again.": "Dubbelkolla att din server stöder den valda rumsversionen och försök igen.",
+ "%(senderName)s placed a voice call.": "%(senderName)s ringde ett röstsamtal.",
+ "%(senderName)s placed a voice call. (not supported by this browser)": "%(senderName)s ringde ett röstsamtal. (stöds inte av denna webbläsare)",
+ "%(senderName)s placed a video call.": "%(senderName)s ringde ett videosamtal.",
+ "%(senderName)s placed a video call. (not supported by this browser)": "%(senderName)s ringde ett videosamtal. (stöds inte av denna webbläsare)",
+ "%(senderName)s removed the rule banning users matching %(glob)s": "%(senderName)s tog bort regeln som bannar användare som matchar %(glob)s",
+ "%(senderName)s removed the rule banning rooms matching %(glob)s": "%(senderName)s tog bort regeln som bannar rum som matchar %(glob)s",
+ "%(senderName)s removed the rule banning servers matching %(glob)s": "%(senderName)s tog bort regeln som bannar servrar som matchar %(glob)s",
+ "Match system theme": "Matcha systemtema",
+ "Decline (%(counter)s)": "Avvisa (%(counter)s)",
+ "on device": "på enhet",
+ "not found": "hittades inte",
+ "Connecting to integration manager...": "Ansluter till integrationshanterare...",
+ "Cannot connect to integration manager": "Det går inte att ansluta till integrationshanterare",
+ "The integration manager is offline or it cannot reach your homeserver.": "Integrationshanteraren är offline eller kan inte nå din hemserver.",
+ "Use an Integration Manager (%(serverName)s) to manage bots, widgets, and sticker packs.": "Använd en Integrationshanterare (%(serverName)s) för att hantera bots, widgets och klistermärkespaket.",
+ "Use an Integration Manager to manage bots, widgets, and sticker packs.": "Använd en Integrationshanterare för att hantera bots, widgets och klistermärkespaket.",
+ "Manage integrations": "Hantera integrationer",
+ "Integration Managers receive configuration data, and can modify widgets, send room invites, and set power levels on your behalf.": "Integrationshanterare får konfigurationsdata och kan ändra widgetar, skicka ruminbjudningar och ställa in behörighetsnivåer via ditt konto.",
+ "Close preview": "Stäng förhandsvisning",
+ "Room %(name)s": "Rum %(name)s",
+ "Recent rooms": "Senaste rummen",
+ "Loading room preview": "Laddar förhandsvisning av rummet",
+ "Re-join": "Gå med igen",
+ "Try to join anyway": "Försök att gå med ändå",
+ "Join the discussion": "Gå med i diskussionen",
+ "Do you want to chat with %(user)s?": "Vill du chatta med %(user)s?",
+ " wants to chat": " vill chatta",
+ "Start chatting": "Börja chatta",
+ "Do you want to join %(roomName)s?": "Vill du gå med i %(roomName)s?",
+ " invited you": " bjöd in dig",
+ "You're previewing %(roomName)s. Want to join it?": "Du förhandsgranskar %(roomName)s. Vill du gå med i det?",
+ "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s kan inte förhandsvisas. Vill du gå med i det?",
+ "This room doesn't exist. Are you sure you're at the right place?": "Detta rum finns inte. Är du säker på att du är på rätt plats?",
+ "Try again later, or ask a room admin to check if you have access.": "Försök igen senare, eller be en rumsadministratör om att kontrollera om du har åtkomst.",
+ "%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "%(errcode)s returnerades när du försökte komma åt rummet. Om du tror att du ser det här meddelandet felaktigt, vänligen skicka in en felrapport.",
+ "Failed to connect to integration manager": "Det gick inte att ansluta till integrationshanterare",
+ "React": "Reagera",
+ "Message Actions": "Meddelandeåtgärder",
+ "Show image": "Visa bild",
+ "You have ignored this user, so their message is hidden. Show anyways.": "Du har ignorerat denna användare, så deras meddelande är dolt. Visa ändå.",
+ "You verified %(name)s": "Du verifierade %(name)s",
+ "You cancelled verifying %(name)s": "Du avbröt verifiering av %(name)s",
+ "%(name)s cancelled verifying": "%(name)s avbröt verifiering",
+ "You accepted": "Du accepterade",
+ "%(name)s accepted": "%(name)s accepterade",
+ "You cancelled": "Du avbröt",
+ "%(name)s cancelled": "%(name)s avbröt",
+ "%(name)s wants to verify": "%(name)s vill verifiera",
+ "You sent a verification request": "Du skickade en verifieringsbegäran",
+ "Reactions": "Reaktioner",
+ " reacted with %(content)s": " reagerade med %(content)s",
+ "Frequently Used": "Ofta använd",
+ "Smileys & People": "Smileys & Människor",
+ "Animals & Nature": "Djur & Natur",
+ "Food & Drink": "Mat & Dryck",
+ "Activities": "Aktiviteter",
+ "Travel & Places": "Resor & Platser",
+ "Objects": "Objekt",
+ "Symbols": "Symboler",
+ "Flags": "Flaggor",
+ "Quick Reactions": "Snabbreaktioner",
+ "Cancel search": "Avbryt sökningen",
+ "Any of the following data may be shared:": "Någon av följande data kan delas:",
+ "Your display name": "Ditt visningsnamn",
+ "Your avatar URL": "Din avatar-URL",
+ "Your user ID": "Ditt användar-ID",
+ "Your theme": "Ditt tema",
+ "Riot URL": "Riot-URL",
+ "Room ID": "Rums-ID",
+ "Widget ID": "Widget-ID",
+ "Using this widget may share data with %(widgetDomain)s & your Integration Manager.": "Att använda denna widget kan dela data med %(widgetDomain)s och din Integrationshanterare.",
+ "Using this widget may share data with %(widgetDomain)s.": "Att använda denna widget kan dela data med %(widgetDomain)s.",
+ "Widgets do not use message encryption.": "Widgets använder inte meddelandekryptering.",
+ "Widget added by": "Widget tillagd av",
+ "This widget may use cookies.": "Denna widget kan använda cookies.",
+ "More options": "Fler alternativ",
+ "Please create a new issue on GitHub so that we can investigate this bug.": "Vänligen skapa ett nytt ärende på GitHub så att vi kan undersöka detta fel.",
+ "Rotate Left": "Rotera vänster",
+ "Rotate Right": "Rotera höger",
+ "Language Dropdown": "Språkmeny",
+ "%(severalUsers)smade no changes %(count)s times|other": "%(severalUsers)sgjorde inga ändringar %(count)s gånger",
+ "%(severalUsers)smade no changes %(count)s times|one": "%(severalUsers)sgjorde inga ändringar",
+ "%(oneUser)smade no changes %(count)s times|other": "%(oneUser)sgjorde inga ändringar %(count)s gånger",
+ "%(oneUser)smade no changes %(count)s times|one": "%(oneUser)sgjorde inga ändringar",
+ "Room alias": "Rumsalias",
+ "e.g. my-room": "t.ex. mitt rum",
+ "Some characters not allowed": "Vissa tecken är inte tillåtna",
+ "Please provide a room alias": "Vänligen ange ett rumsalias",
+ "This alias is available to use": "Detta alias är tillgängligt att använda",
+ "This alias is already in use": "Detta alias används redan",
+ "Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.": "Använd en identitetsserver för att bjuda in via epost. Använd standard (%(defaultIdentityServerName)s) eller hantera i Inställningar.",
+ "Use an identity server to invite by email. Manage in Settings.": "Använd en identitetsserver för att bjuda in via epost. Hantera i Inställningar.",
+ "Close dialog": "Stäng dialogrutan",
+ "Please tell us what went wrong or, better, create a GitHub issue that describes the problem.": "Berätta vad som gick fel eller, bättre, skapa ett GitHub-ärende som beskriver problemet.",
+ "View Servers in Room": "Visa servrar i rum",
+ "Recent Conversations": "Senaste konversationerna",
+ "Suggestions": "Förslag",
+ "Show more": "Visa mer",
+ "Direct Messages": "Direktmeddelanden",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "Om det är någon du inte kan hitta, be dem om sitt användarnamn eller dela ditt användarnamn (%(userId)s) eller profillänk.",
+ "Go": "Gå",
+ "Verifying this user will mark their device as trusted, and also mark your device as trusted to them.": "Verifiering av den här användaren kommer att markera deras enhet som betrodd, men även markera din enhet som den är betrodd för dem.",
+ "Waiting for partner to confirm...": "Väntar på att kompanjon ska bekräfta...",
+ "Incoming Verification Request": "Inkommande verifieringsbegäran",
+ "Integrations are disabled": "Integrationer är inaktiverade",
+ "Enable 'Manage Integrations' in Settings to do this.": "Aktivera \"Hantera integrationer\" i Inställningar för att göra detta.",
+ "Integrations not allowed": "Integrationer inte tillåtna",
+ "Your Riot doesn't allow you to use an Integration Manager to do this. Please contact an admin.": "Ditt Riot tillåter dig inte att använda en Integrationshanterare för att göra detta. Vänligen kontakta en administratör.",
+ "Your homeserver doesn't seem to support this feature.": "Din hemserver verkar inte stödja den här funktionen.",
+ "Message edits": "Meddelandedigeringar",
+ "Preview": "Förhandsvisa",
+ "The message you are trying to send is too large.": "Meddelandet du försöker skicka är för stort.",
+ "New DM invite dialog (under development)": "Ny inbjudningsdialog för direktmeddelanden (under utveckling)",
+ "Enable cross-signing to verify per-user instead of per-device (in development)": "Aktivera korssignering för att verifiera per användare istället för per enhet (under utveckling)",
+ "Find others by phone or email": "Hitta andra via telefon eller epost",
+ "Be found by phone or email": "Bli hittad via telefon eller e-post",
+ "Terms of Service": "Användarvillkor",
+ "To continue you need to accept the terms of this service.": "För att fortsätta måste du acceptera villkoren för denna tjänst.",
+ "Service": "Tjänst",
+ "Summary": "Sammanfattning",
+ "Document": "Dokument"
}
diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json
index 2462b5789f..659c973d35 100644
--- a/src/i18n/strings/tr.json
+++ b/src/i18n/strings/tr.json
@@ -589,5 +589,713 @@
"The platform you're on": "Bulunduğun platform",
"The version of Riot.im": "Riot.im'in sürümü",
"Your language of choice": "Seçtiginiz diliniz",
- "Which officially provided instance you are using, if any": ""
+ "Which officially provided instance you are using, if any": "Hangi resmi destekli örneği(eğer varsa) kullanmaktasınız",
+ "Add Email Address": "E-posta Adresi Ekle",
+ "Add Phone Number": "Telefon Numarası Ekle",
+ "Your identity server's URL": "Kimlik sunucunuzun linki",
+ "e.g. %(exampleValue)s": "örn.%(exampleValue)s",
+ "Every page you use in the app": "uygulamadaki kullandığınız tüm sayfalar",
+ "e.g. ": "örn. ",
+ "Your User Agent": "Kullanıcı Ajanınız",
+ "Your device resolution": "Cihazınızın çözünürlüğü",
+ "Call Failed": "Arama Başarısız",
+ "Review Devices": "Cihazları Gözden Geçir",
+ "Call Anyway": "Yinede Ara",
+ "Answer Anyway": "Yinede Cevapla",
+ "Call": "Ara",
+ "Answer": "Cevap",
+ "Call failed due to misconfigured server": "Hatalı yapılandırılmış sunucu nedeniyle arama başarısız",
+ "Call in Progress": "Arama Yapılıyor",
+ "A call is already in progress!": "Zaten bir arama devam etmekte!",
+ "Permission Required": "İzin Gerekli",
+ "Replying With Files": "Dosyalarla Cevaplanıyor",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s%(monthName)s%(day)s%(fullYear)s",
+ "Invite new community members": "Yeni topluluk üyelerini davet et",
+ "Name or Matrix ID": "İsim yada Matrix ID",
+ "Invite to Community": "Topluluğa Davet",
+ "Add rooms to the community": "Topluluğa odalar ekle",
+ "Add to community": "Topluluğa ekle",
+ "Failed to invite the following users to %(groupId)s:": "%(groupId)s grubuna belirtilen kullanıcıların davet işlemi başarısız oldu:",
+ "Failed to invite users to community": "Kullanıcıların topluluğa daveti başarısız",
+ "Identity server has no terms of service": "Kimlik sunucusu hizmet kurallarına sahip değil",
+ "Only continue if you trust the owner of the server.": "Sadece sunucunun sahibine güveniyorsanız devam edin.",
+ "Trust": "Güven",
+ "Unable to load! Check your network connectivity and try again.": "Yüklenemiyor! Ağ bağlantınızı kontrol edin ve yeniden deneyin.",
+ "Registration Required": "Kayıt Zorunlu",
+ "You need to register to do this. Would you like to register now?": "Bunu yapabilmek için kayıt olmalısınız. Şimdi kayıt olmak ister misiniz?",
+ "Restricted": "Sınırlı",
+ "Email, name or Matrix ID": "E-posta, isim yada Matrix ID",
+ "Failed to start chat": "Sohbet başlatma başarısız",
+ "Failed to invite users to the room:": "Kullanıcıların odaya daveti başarısız oldu:",
+ "Missing roomId.": "roomId eksik.",
+ "You are not in this room.": "Bu odada değilsin.",
+ "You do not have permission to do that in this room.": "Bu odada bunu yapma yetkiniz yok.",
+ "Messages": "Mesajlar",
+ "Actions": "Eylemler",
+ "Other": "Diğer",
+ "Upgrades a room to a new version": "Odayı yeni bir sürüme yükseltir",
+ "You do not have the required permissions to use this command.": "Bu komutu kullanmak için gerekli izinlere sahip değilsin.",
+ "Error upgrading room": "Oda güncellenirken hata",
+ "Changes your avatar in all rooms": "Tüm odalardaki avatarlarını değiştirir",
+ "This room has no topic.": "Bu odanın başlığı yok.",
+ "Sets the room name": "Oda adını düzenler",
+ "Use an identity server": "Bir kimlik sunucusu kullan",
+ "Define the power level of a user": "Bir kullanıcının güç düzeyini tanımla",
+ "Opens the Developer Tools dialog": "Geliştirici Araçları kutucuğunu açar",
+ "%(senderDisplayName)s upgraded this room.": "Odayı güncelleyen %(senderDisplayName)s.",
+ "%(senderDisplayName)s made the room invite only.": "Odayı sadece davetle yapan %(senderDisplayName)s.",
+ "%(senderDisplayName)s has prevented guests from joining the room.": "Odaya misafirlerin girişini engelleyen %(senderDisplayName)s.",
+ "%(senderName)s removed the main address for this room.": "Bu oda için ana adresi silen %(senderName)s.",
+ "Light theme": "Açık tema",
+ "Dark theme": "Koyu tema",
+ "%(displayName)s is typing …": "%(displayName)s yazıyor…",
+ "%(names)s and %(count)s others are typing …|one": "%(names)s ve bir diğeri yazıyor…",
+ "%(names)s and %(lastPerson)s are typing …": "%(names)s ve %(lastPerson)s yazıyor…",
+ "Cannot reach homeserver": "Ana sunucuya erişilemiyor",
+ "Your Riot is misconfigured": "Rioutunuz hatalı yapılandırılmış",
+ "Cannot reach identity server": "Kimlik sunucu erişilemiyor",
+ "No homeserver URL provided": "Ana sunucu adresi belirtilmemiş",
+ "Unexpected error resolving homeserver configuration": "Ana sunucu yapılandırması çözümlenirken beklenmeyen hata",
+ "Unexpected error resolving identity server configuration": "Kimlik sunucu yapılandırması çözümlenirken beklenmeyen hata",
+ "The message you are trying to send is too large.": "Göndermeye çalıştığın mesaj çok büyük.",
+ "This homeserver has hit its Monthly Active User limit.": "Bu ana sunucu Aylık Aktif Kullanıcı limitine ulaştı.",
+ "Riot URL": "Riot Linki",
+ "Room ID": "Oda ID",
+ "More options": "Daha fazla seçenek",
+ "Join": "Katıl",
+ "Yes": "Evet",
+ "No": "Hayır",
+ "expand": "genişlet",
+ "Communities": "Topluluklar",
+ "Rotate Left": "Sola Döndür",
+ "Rotate Right": "Sağa Döndür",
+ "Rotate clockwise": "Saat yönünde döndür",
+ "%(nameList)s %(transitionList)s": "%(nameList)s%(transitionList)s",
+ "%(severalUsers)sjoined %(count)s times|other": "%(severalUsers)s %(count)s kez katıldı",
+ "%(severalUsers)sjoined %(count)s times|one": "%(severalUsers)s katıldı",
+ "%(oneUser)sjoined %(count)s times|other": "%(oneUser)s %(count)s kez katıldı",
+ "%(oneUser)sjoined %(count)s times|one": "%(oneUser)s katıldı",
+ "%(severalUsers)sleft %(count)s times|one": "%(severalUsers)s kullanıcı ayrıldı",
+ "%(oneUser)sleft %(count)s times|one": "%(oneUser)s ayrıldı",
+ "%(severalUsers)sjoined and left %(count)s times|one": "%(severalUsers)s katıldı ve ayrıldı",
+ "%(oneUser)sjoined and left %(count)s times|one": "%(oneUser)s katıldı ve ayrıldı",
+ "%(oneUser)sleft and rejoined %(count)s times|one": "%(oneUser)s ayrıldı ve yeniden katıldı",
+ "were invited %(count)s times|other": "%(count)s kez davet edildi",
+ "were invited %(count)s times|one": "davet edildi",
+ "was invited %(count)s times|other": "%(count)s kez davet edildi",
+ "was invited %(count)s times|one": "davet edildi",
+ "were kicked %(count)s times|other": "%(count)s kez atıldı",
+ "were kicked %(count)s times|one": "atıldı",
+ "was kicked %(count)s times|other": "%(count)s kez atıldı",
+ "was kicked %(count)s times|one": "atıldı",
+ "%(severalUsers)schanged their name %(count)s times|one": "%(severalUsers)s isimlerini değiştrtiler",
+ "%(oneUser)schanged their name %(count)s times|one": "%(oneUser)s ismini değiştirdi",
+ "Power level": "Güç düzeyi",
+ "e.g. my-room": "örn. odam",
+ "Some characters not allowed": "Bazı karakterlere izin verilmiyor",
+ "Matrix ID": "Matrix ID",
+ "Matrix Room ID": "Matrix Oda ID",
+ "email address": "e-posta adresi",
+ "That doesn't look like a valid email address": "Geçerli bir e-posta adresi gibi gözükmüyor",
+ "You have entered an invalid address.": "Geçersiz bir adres girdiniz.",
+ "Invite anyway and never warn me again": "Yinede davet et ve asla beni uyarma",
+ "Invite anyway": "Yinede davet et",
+ "Close dialog": "Kutucuğu kapat",
+ "Preparing to send logs": "Loglar gönderilmek için hazırlanıyor",
+ "Logs sent": "Loglar gönderiliyor",
+ "Thank you!": "Teşekkürler!",
+ "Failed to send logs: ": "Loglarıb gönderilmesi başarısız: ",
+ "GitHub issue": "GitHub sorunu",
+ "Notes": "Notlar",
+ "Removing…": "Siliniyor…",
+ "Clear all data on this device?": "Bu cihazdaki bütün verileri sil?",
+ "Clear all data": "Bütün verileri sil",
+ "Community IDs cannot be empty.": "Topluluk ID leri boş bırakılamaz.",
+ "Something went wrong whilst creating your community": "Topluluğunuz oluşturulurken bir şeyler yanlış gitti",
+ "Create Community": "Topluluk Oluştur",
+ "Community Name": "Topluluk Adı",
+ "Example": "Örnek",
+ "Community ID": "Topluluk ID",
+ "example": "örnek",
+ "Create": "Oluştur",
+ "Please enter a name for the room": "Lütfen oda için bir ad girin",
+ "This room is private, and can only be joined by invitation.": "Bu oda özel, sadece davet ile katılınabilir.",
+ "Create a private room": "Özel bir oda oluştur",
+ "Hide advanced": "Gelişmiş gizle",
+ "Show advanced": "Gelişmiş göster",
+ "Incompatible Database": "Uyumsuz Veritabanı",
+ "To continue, please enter your password:": "Devam etmek için lütfen şifrenizi giriniz:",
+ "Begin Verifying": "Doğrulamaya Başla",
+ "Use two-way text verification": "İki yönlü metin doğrulama kullan",
+ "Back": "Geri",
+ "You must specify an event type!": "Bir olay tipi seçmek zorundasınız!",
+ "Event sent!": "Olay gönderildi!",
+ "Event Type": "Olay Tipi",
+ "State Key": "Durum Anahtarı",
+ "Event Content": "Olay İçeriği",
+ "Send Account Data": "Hesap Verisi Gönder",
+ "Filter results": "Sonuçları filtrele",
+ "View Servers in Room": "Odadaki Sunucuları Gör",
+ "Toolbox": "Araç Kutusu",
+ "Developer Tools": "Geliştirici Araçları",
+ "Integrations are disabled": "Bütünleştirmeler kapatılmış",
+ "Integrations not allowed": "Bütünleştirmelere izin verilmiyor",
+ "Loading device info...": "Cihaz bilgileri yükleniyor...",
+ "Incompatible local cache": "Yerel geçici bellek uyumsuz",
+ "Clear cache and resync": "Geçici belleği temizle ve yeniden eşle",
+ "Updating Riot": "Riot güncelleniyor",
+ "I don't want my encrypted messages": "Şifrelenmiş mesajlarımı istemiyorum",
+ "Manually export keys": "Elle dışa aktarılmış anahtarlar",
+ "You'll lose access to your encrypted messages": "Şifrelenmiş mesajlarınıza erişiminizi kaybedeceksiniz",
+ "Are you sure you want to sign out?": "Oturumdan çıkmak istediğinize emin misiniz?",
+ "Your homeserver doesn't seem to support this feature.": "Ana sunucunuz bu özelliği desteklemiyor gözüküyor.",
+ "Message edits": "Mesajları düzenle",
+ "Report bugs & give feedback": "Hataları raporla & geri bildirim yap",
+ "Please fill why you're reporting.": "Lütfen neden raporlama yaptığınızı belirtin.",
+ "Report Content to Your Homeserver Administrator": "Ana Sunucu Yöneticinize İçeriği Raporlayın",
+ "Send report": "Rapor gönder",
+ "Room Settings - %(roomName)s": "Oda Ayarları - %(roomName)s",
+ "Failed to upgrade room": "Oda güncelleme başarısız",
+ "The room upgrade could not be completed": "Oda güncelleme tamamlanamadı",
+ "Upgrade this room to version %(version)s": "Bu odayı %(version)s versiyonuna yükselt",
+ "Upgrade Room Version": "Oda Sürümünü Yükselt",
+ "Automatically invite users": "Otomatik olarak kullanıcıları davet et",
+ "Upgrade private room": "Özel oda güncelle",
+ "Upgrade": "Yükselt",
+ "Sign out and remove encryption keys?": "Oturumu kapat ve şifreleme anahtarlarını sil?",
+ "Clear Storage and Sign Out": "Depolamayı temizle ve Oturumu Kapat",
+ "Send Logs": "Logları Gönder",
+ "Refresh": "Yenile",
+ "Checking...": "Kontrol ediliyor...",
+ "To get started, please pick a username!": "Başlamak için lütfen bir kullanıcı adı seçin!",
+ "Share Room": "Oda Paylaş",
+ "Link to most recent message": "En son mesaja bağlantı",
+ "Share User": "Kullanıcı Paylaş",
+ "Share Community": "Topluluk Paylaş",
+ "Share Room Message": "Oda Mesajı Paylaş",
+ "Link to selected message": "Seçili mesaja bağlantı",
+ "COPY": "KOPYA",
+ "Command Help": "Komut Yardımı",
+ "Missing session data": "Kayıp oturum verisi",
+ "Integration Manager": "Bütünleştirme Yöneticisi",
+ "Find others by phone or email": "Kişileri telefon yada e-posta ile bul",
+ "Be found by phone or email": "Telefon veya e-posta ile bulunun",
+ "Terms of Service": "Hizmet Şartları",
+ "Service": "Hizmet",
+ "Summary": "Özet",
+ "Document": "Belge",
+ "Next": "İleri",
+ "Upload files": "Dosyaları yükle",
+ "Upload all": "Hepsini yükle",
+ "Cancel All": "Hepsi İptal",
+ "Upload Error": "Yükleme Hatası",
+ "Allow": "İzin ver",
+ "Enter secret storage recovery key": "Depolama kurtarma anahtarı için şifre gir",
+ "This looks like a valid recovery key!": "Bu geçerli bir kurtarma anahtarına benziyor!",
+ "Not a valid recovery key": "Geçersiz bir kurtarma anahtarı",
+ "Unable to load backup status": "Yedek durumu yüklenemiyor",
+ "Recovery Key Mismatch": "Kurtarma Anahtarı Kurtarma",
+ "Unable to restore backup": "Yedek geri dönüşü yapılamıyor",
+ "No backup found!": "Yedek bulunamadı!",
+ "Backup Restored": "Yedek Geri Dönüldü",
+ "Enter Recovery Key": "Kurtarma Anahtarını Gir",
+ "Warning: You should only set up key backup from a trusted computer.": "Uyarı: Yedek anahtarı kurulumunu sadece güvenli bir bilgisayardan yapmalısınız.",
+ "Unable to reject invite": "Davet reddedilemedi",
+ "Pin Message": "Pin Mesajı",
+ "Share Message": "Mesajı Paylaş",
+ "Report Content": "İçeriği Raporla",
+ "Notification settings": "Bildirim ayarları",
+ "Clear status": "Durumu temizle",
+ "Update status": "Durumu güncelle",
+ "Set status": "Durumu ayarla",
+ "Set a new status...": "Yeni bir durum ayarla...",
+ "View Community": "Topluluğu Gör",
+ "Hide": "Gizle",
+ "Reload": "Yeniden Yükle",
+ "Remove for everyone": "Herkes için sil",
+ "Remove for me": "Benim için sil",
+ "User Status": "Kullanıcı Durumu",
+ "This homeserver would like to make sure you are not a robot.": "Bu ana sunucu sizin bir robot olup olmadığınızdan emin olmak istiyor.",
+ "Country Dropdown": "Ülke Listesi",
+ "Code": "Kod",
+ "Unable to validate homeserver/identity server": "Ana/kimlik sunucu doğrulanamıyor",
+ "Your Modular server": "Sizin Modüler sunucunuz",
+ "Server Name": "Sunucu Adı",
+ "The email field must not be blank.": "E-posta alanı boş bırakılamaz.",
+ "The username field must not be blank.": "Kullanıcı adı alanı boş bırakılamaz.",
+ "The phone number field must not be blank.": "Telefon numarası alanı boş bırakılamaz.",
+ "The password field must not be blank.": "Şifre alanı boş bırakılamaz.",
+ "Username": "Kullanıcı Adı",
+ "Use an email address to recover your account": "Hesabınızı kurtarmak için bir e-posta adresi kullanın",
+ "Enter email address (required on this homeserver)": "E-posta adresi gir ( bu ana sunucuda gerekli)",
+ "Doesn't look like a valid email address": "Geçerli bir e-posta adresine benzemiyor",
+ "Enter password": "Şifre gir",
+ "Password is allowed, but unsafe": "Şifreye izin var, fakat kullanmak güvenli değil",
+ "Nice, strong password!": "Güzel, güçlü şifre!",
+ "Keep going...": "Devam et...",
+ "Passwords don't match": "Şifreler uyuşmuyor",
+ "Enter phone number (required on this homeserver)": "Telefon numarası gir ( bu ana sunucuda gerekli)",
+ "Doesn't look like a valid phone number": "Geçerli bir telefon numarasına benzemiyor",
+ "Enter username": "Kullanıcı adı gir",
+ "Email (optional)": "E-posta (opsiyonel)",
+ "Confirm": "Doğrula",
+ "Phone (optional)": "Telefon (opsiyonel)",
+ "Create your Matrix account on %(serverName)s": "%(serverName)s üzerinde Matrix hesabınızı oluşturun",
+ "Create your Matrix account on ": " üzerinde Matrix hesabınızı oluşturun",
+ "Homeserver URL": "Ana sunucu URL",
+ "Identity Server URL": "Kimlik Sunucu URL",
+ "Other servers": "Diğer sunucular",
+ "Couldn't load page": "Sayfa yüklenemiyor",
+ "Add a Room": "Bir Oda Ekle",
+ "Add a User": "Bir Kullanıcı Ekle",
+ "Failed to upload image": "Resim yükleme başarısız",
+ "Unable to accept invite": "Davet kabul edilemiyor",
+ "Unable to join community": "Topluluğa katılınamıyor",
+ "Leave Community": "Topluluktan Ayrıl",
+ "Leave %(groupName)s?": "%(groupName)s den ayrıl?",
+ "Unable to leave community": "Topluluktan ayrılınamıyor",
+ "Community Settings": "Topluluk Ayarları",
+ "Join this community": "Bu topluluğa katıl",
+ "Leave this community": "Bu topluluktan ayrıl",
+ "You are an administrator of this community": "Bu topluluğun yöneticisi sizsiniz",
+ "You are a member of this community": "Bu topluluğun bir üyesisiniz",
+ "Who can join this community?": "Bu topluluğa kimler katılabilir?",
+ "Everyone": "Herkes",
+ "Long Description (HTML)": "Uzun Tanım (HTML)",
+ "Description": "Tanım",
+ "Community %(groupId)s not found": "%(groupId)s topluluğu bulunamıyor",
+ "This homeserver does not support communities": "Bu ana sunucu toplulukları desteklemiyor",
+ "Failed to load %(groupId)s": "%(groupId)s yükleme başarısız",
+ "Filter": "Filtre",
+ "Filter rooms…": "Odaları filtrele…",
+ "Old cryptography data detected": "Eski kriptolama verisi tespit edildi",
+ "Verification Request": "Doğrulama Talebi",
+ "Your Communities": "Topluluklarınız",
+ "Error whilst fetching joined communities": "Katılım sağlanmış topluluklar getirilirken hata oluştu",
+ "Create a new community": "Yeni bir topluluk oluştur",
+ "The homeserver may be unavailable or overloaded.": "Ana sunucunu mevcut değil yada fazla yüklü.",
+ "Preview": "Önizleme",
+ "View": "Görüntüle",
+ "Find a room…": "Bir oda bul…",
+ "Find a room… (e.g. %(exampleRoom)s)": "Bir oda bul... (örn. %(exampleRoom)s)",
+ "%(count)s of your messages have not been sent.|one": "Mesajınız gönderilmedi.",
+ "Jump to first unread room.": "Okunmamış ilk odaya zıpla.",
+ "Jump to first invite.": "İlk davete zıpla.",
+ "Add room": "Oda ekle",
+ "Clear filter": "Filtre temizle",
+ "Guest": "Misafir",
+ "Your profile": "Profiliniz",
+ "Could not load user profile": "Kullanıcı profili yüklenemedi",
+ "Your Matrix account on %(serverName)s": "%(serverName)s sunucusundaki Matrix hesabınız",
+ "Your password has been reset.": "Parolanız sıfırlandı.",
+ "Set a new password": "Yeni bir şifre belirle",
+ "General failure": "Genel başarısızlık",
+ "This homeserver does not support login using email address.": "Bu ana sunucu e-posta adresiyle oturum açmayı desteklemiyor.",
+ "This account has been deactivated.": "Bu hesap pasifleştirilmiş.",
+ "Create account": "Yeni hesap",
+ "Unable to query for supported registration methods.": "Desteklenen kayıt yöntemleri için sorgulama yapılamıyor.",
+ "Continue with previous account": "Önceki hesapla devam et",
+ "Log in to your new account.": "Yeni hesabınızla Oturum açın.",
+ "Registration Successful": "Kayıt Başarılı",
+ "Create your account": "Hesabınızı oluşturun",
+ "Forgotten your password?": "Parolanızı mı unuttunuz?",
+ "Sign in and regain access to your account.": "Oturum açın ve yeniden hesabınıza ulaşın.",
+ "Whether or not you're logged in (we don't record your username)": "İster oturum açın yasa açmayın (biz kullanıcı adınızı kaydetmiyoruz)",
+ "Whether or not you're using the Richtext mode of the Rich Text Editor": "Zengin Metin Düzenleyicinin Zengin metin modunu kullanıyor ya da kullanmıyorsunuz",
+ "Your homeserver's URL": "Ana sunucunuzun URL’i",
+ "The information being sent to us to help make Riot.im better includes:": "Riot.im i daha iyi yapmamıza yardımcı olacak bize gönderdiğiniz bilgilerin içeriği:",
+ "Try using turn.matrix.org": "turn.matrix.org i kullanarak dene",
+ "You do not have permission to start a conference call in this room": "Bu odada bir konferans başlatmak için izniniz yok",
+ "The file '%(fileName)s' failed to upload.": "%(fileName)s dosyası için yükleme başarısız.",
+ "The server does not support the room version specified.": "Belirtilen oda sürümünü sunucu desteklemiyor.",
+ "Who would you like to add to this community?": "Bu topluluğa kimi eklemek isterdiniz?",
+ "Which rooms would you like to add to this community?": "Hangi odaları bu topluluğa eklemek isterdiniz?",
+ "Unable to create widget.": "Görsel bileşen oluşturulamıyor.",
+ "Changes your display nickname in the current room only": "sadece mevcut odada görüntülenen lakabınızı değiştirir",
+ "Changes the avatar of the current room": "Mevcut odadaki avatarınızı değiştirir",
+ "Use an identity server to invite by email. Manage in Settings.": "E-posta ile davet etmek için bir kimlik sunucusu kullan. Ayarlardan Yönet.",
+ "You cannot modify widgets in this room.": "Bu odadaki görsel bileşenleri değiştiremezsiniz.",
+ "Sends the given message coloured as a rainbow": "Verilen mesajı gökkuşağı renklerinde gönderir",
+ "Displays list of commands with usages and descriptions": "Komutların listesini kullanımı ve tanımlarıyla gösterir",
+ "%(senderName)s made no change.": "%(senderName)s değişiklik yapmadı.",
+ "%(senderName)s changed the pinned messages for the room.": "Oda için sabitlenmiş mesajları %(senderName)s değiştirdi.",
+ "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s görsel bileşeni %(senderName)s tarafından düzenlendi",
+ "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s görsel bileşeni %(senderName)s tarafından eklendi",
+ "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s görsel bileşeni %(senderName)s tarafından silindi",
+ "%(names)s and %(count)s others are typing …|other": "%(names)s ve diğer %(count)s kişi yazıyor…",
+ "This homeserver has exceeded one of its resource limits.": "Bu anasunucu kaynak limitlerinden birini aştı.",
+ "Unable to connect to Homeserver. Retrying...": "Anasunucuya bağlanılamıyor. Yeniden deneniyor...",
+ "%(items)s and %(count)s others|other": "%(items)s ve diğer %(count)s",
+ "%(items)s and %(count)s others|one": "%(items)s ve bir diğeri",
+ "%(name)s (%(userId)s)": "%(name)s (%(userId)s)",
+ "Unrecognised address": "Tanınmayan adres",
+ "You do not have permission to invite people to this room.": "Bu odaya kişi davet etme izniniz yok.",
+ "User %(userId)s is already in the room": "Kullanıcı %(userId)s zaten odada",
+ "User %(user_id)s does not exist": "Kullanıcı %(user_id)s mevcut değil",
+ "User %(user_id)s may or may not exist": "Kullanıcı %(user_id)s mevcut olup olmadığı belli değil",
+ "You cannot sign in to your account. Please contact your homeserver admin for more information.": "Hesabınıza giriş yapamazsınız. Lütfen daha fazla bilgi için ana sunucu yöneticiniz ile bağlantıya geçiniz.",
+ "You're signed out": "Çıkış yaptınız",
+ "Clear personal data": "Kişisel veri temizle",
+ "Command Autocomplete": "Oto tamamlama komutu",
+ "Community Autocomplete": "Oto tamlama topluluğu",
+ "DuckDuckGo Results": "DuckDuckGo Sonuçları",
+ "Emoji Autocomplete": "Emoji Oto Tamamlama",
+ "Notify the whole room": "Tüm odayı bilgilendir",
+ "Room Notification": "Oda Bildirimi",
+ "Set up with a recovery key": "Kurtarma anahtarı ile kur",
+ "That matches!": "Eşleşti!",
+ "That doesn't match.": "Eşleşmiyor.",
+ "Your Recovery Key": "Kurtarma Anahtarınız",
+ "Download": "İndir",
+ "Print it and store it somewhere safe": "Yazdır ve güvenli bir yerde sakla",
+ "Save it on a USB key or backup drive": "Bir USB anahtara kaydet veya sürücüye yedekle",
+ "Copy it to your personal cloud storage": "Kişisel bulut depolamaya kopyala",
+ "Your access to encrypted messages is now protected.": "Şifrelenmiş mesajlara erişiminiz şimdi korunuyor.",
+ "Migrate from Key Backup": "Anahtar Yedeğinden Göç Et",
+ "Recovery key": "Kurtarma anahtarı",
+ "Success!": "Başarılı!",
+ "Retry": "Yeniden Dene",
+ "Set up with a Recovery Key": "Bir Kurtarma Anahtarı ile Kur",
+ "Set up Secure Message Recovery": "Güvenli Mesaj Kurtarma Kurulumu",
+ "Starting backup...": "Yedeklemeye başlanıyor...",
+ "Create Key Backup": "Anahtar Yedeği Oluştur",
+ "Unable to create key backup": "Anahtar yedeği oluşturulamıyor",
+ "Don't ask again": "Yeniden sorma",
+ "New Recovery Method": "Yeni Kurtarma Yöntemi",
+ "Go to Settings": "Ayarlara Git",
+ "Recovery Method Removed": "Kurtarma Yöntemi Silindi",
+ "Robot": "Robot",
+ "Hat": "Şapka",
+ "Glasses": "Gözlük",
+ "Umbrella": "Şemsiye",
+ "Hourglass": "Kum saati",
+ "Clock": "Saat",
+ "Gift": "Hediye",
+ "Light bulb": "Ampül",
+ "Book": "Kitap",
+ "Pencil": "Kalem",
+ "Paperclip": "Ataç",
+ "Scissors": "Makas",
+ "Key": "Anahtar",
+ "Hammer": "Çekiç",
+ "Telephone": "Telefon",
+ "Flag": "Bayrak",
+ "Train": "Tren",
+ "Bicycle": "Bisiklet",
+ "Aeroplane": "Uçak",
+ "Rocket": "Füze",
+ "Ball": "Top",
+ "Guitar": "Gitar",
+ "Trumpet": "Trampet",
+ "Bell": "Zil",
+ "Anchor": "Çıpa",
+ "Headphones": "Kulaklık",
+ "Folder": "Klasör",
+ "Accept to continue:": "Devam etmek için i kabul ediniz:",
+ "Upload": "Yükle",
+ "on device": "cihaz üstünde",
+ "not found": "bulunamadı",
+ "in account data": "hesap verisinde",
+ "Your homeserver does not support device management.": "Aan sunucunuz aygıt yönetimini desteklemiyor.",
+ "Delete %(count)s devices|other": "%(count)s cihazı silin",
+ "Delete %(count)s devices|one": "Cihaz sil",
+ "ID": "ID",
+ "Connecting to integration manager...": "Entegrasyon yöneticisine bağlanın...",
+ "Cannot connect to integration manager": "Entegrasyon yöneticisine bağlanılamadı",
+ "Delete Backup": "Yedek Sil",
+ "Unable to load key backup status": "Anahtar yedek durumu yüklenemiyor",
+ "Restore from Backup": "Yedekten Geri Dön",
+ "This device is backing up your keys. ": "Bu cihaz anahtarlarınızı yedekliyor. ",
+ "Connect this device to Key Backup": "Anahtar Yedeği için bu cihazı bağlayın",
+ "not stored": "depolanmadı",
+ "Backing up %(sessionsRemaining)s keys...": "%(sessionsRemaining)s anahtar yedekleniyor...",
+ "All keys backed up": "Bütün yedekler yedeklendi",
+ "Backup is not signed by any of your devices": "Yedek hiç bir cihazınız tarafından imzalanmadı",
+ "Backup version: ": "Yedek sürümü: ",
+ "Algorithm: ": "Algoritma: ",
+ "Start using Key Backup": "Anahtar Yedekleme kullanmaya başla",
+ "Clear notifications": "Bildirimleri temizle",
+ "Enable desktop notifications for this device": "Bu cihaz için masaüstü bildirimlerini aç",
+ "Show message in desktop notification": "Masaüstü bildiriminde mesaj göster",
+ "Display Name": "Ekran Adı",
+ "Profile picture": "Profil resmi",
+ "Could not connect to Identity Server": "Kimlik Sunucusuna bağlanılamadı",
+ "Checking server": "Sunucu kontrol ediliyor",
+ "Change identity server": "Kimlik sunucu değiştir",
+ "Sorry, your homeserver is too old to participate in this room.": "Üzgünüm, ana sunucunuz bu odaya katılabilmek için oldukça eski.",
+ "Please contact your homeserver administrator.": "Lütfen anasunucu yöneticiniz ile bağlantıya geçin.",
+ "Message Pinning": "Mesaj Sabitleme",
+ "Multiple integration managers": "Çoklu entegrasyon yöneticileri",
+ "New DM invite dialog (under development)": "Yeni DM davet diyalog kutusu (geliştirilmekte)",
+ "Enable Emoji suggestions while typing": "Yazarken Emoji önerilerini aç",
+ "Show join/leave messages (invites/kicks/bans unaffected)": "Katılma/ayrılma mesajları göster (davetler/atılmalar/yasaklamalar etkilenmeyecek)",
+ "Show avatar changes": "Avatar değişikliklerini göster",
+ "Always show encryption icons": "Şifreleme ikonlarını her zaman göster",
+ "Enable big emoji in chat": "Sohbette büyük emojileri aç",
+ "Send typing notifications": "Yazma bildirimlerini gönder",
+ "Send analytics data": "Analiz verilerini gönder",
+ "Show developer tools": "Geliştirici araçlarını göster",
+ "Low bandwidth mode": "Düşük bant genişliği modu",
+ "Messages containing my username": "Kullanıcı adımı içeren mesajlar",
+ "When rooms are upgraded": "Odaların güncellenme zamanları",
+ "My Ban List": "Yasaklı Listem",
+ "Verified!": "Doğrulandı!",
+ "You've successfully verified this user.": "Bu kullanıcıyı başarılı şekilde doğruladınız.",
+ "Unable to find a supported verification method.": "Desteklenen doğrulama yöntemi bulunamadı.",
+ "Dog": "Köpek",
+ "Cat": "Kedi",
+ "Lion": "Aslan",
+ "Horse": "At",
+ "Unicorn": "Tek boynuzlu at",
+ "Pig": "Domuz",
+ "Elephant": "Fil",
+ "Rabbit": "Tavşan",
+ "Panda": "Panda",
+ "Penguin": "Penguen",
+ "Turtle": "Kaplumbağa",
+ "Fish": "Balık",
+ "Octopus": "Ahtapot",
+ "Butterfly": "Kelebek",
+ "Flower": "Çiçek",
+ "Tree": "Ağaç",
+ "Cactus": "Kaktüs",
+ "Mushroom": "Mantar",
+ "Globe": "Dünya",
+ "Moon": "Ay",
+ "Cloud": "Bulut",
+ "Fire": "Ateş",
+ "Banana": "Muz",
+ "Apple": "Elma",
+ "Strawberry": "Çilek",
+ "Corn": "Mısır",
+ "Pizza": "Pizza",
+ "Cake": "Kek",
+ "Heart": "Kalp",
+ "Trophy": "Ödül",
+ "wait and try again later": "bekle ve tekrar dene",
+ "Disconnect anyway": "Yinede bağlantıyı kes",
+ "Go back": "Geri dön",
+ "Identity Server (%(server)s)": "(%(server)s) Kimlik Sunucusu",
+ "Identity Server": "Kimlik Sunucusu",
+ "Do not use an identity server": "Bir kimlik sunucu kullanma",
+ "Enter a new identity server": "Yeni bir kimlik sunucu gir",
+ "Change": "Değiştir",
+ "Manage integrations": "Entegrasyonları yönet",
+ "Email addresses": "E-posta adresleri",
+ "Phone numbers": "Telefon numaraları",
+ "Language and region": "Dil ve bölge",
+ "Theme": "Tema",
+ "Account management": "Hesap yönetimi",
+ "Warning": "Uyarı",
+ "General": "Genel",
+ "Discovery": "Keşfet",
+ "Legal": "Yasal",
+ "Check for update": "Güncelleme kontrolü",
+ "Help & About": "Yardım & Hakkında",
+ "Bug reporting": "Hata raporlama",
+ "FAQ": "FAQ",
+ "Versions": "Sürümler",
+ "Server rules": "Sunucu kuralları",
+ "User rules": "Kullanıcı kuralları",
+ "View rules": "Kuralları görüntüle",
+ "Room list": "Oda listesi",
+ "Autocomplete delay (ms)": "Oto tamamlama gecikmesi (ms)",
+ "Key backup": "Anahtar yedek",
+ "Cross-signing": "Çapraz-imzalama",
+ "Security & Privacy": "Güvenlik & Gizlilik",
+ "Learn more about how we use analytics.": "Analizleri nasıl kullandığımız hakkında daha fazla öğrenin.",
+ "No Audio Outputs detected": "Ses çıkışları tespit edilemedi",
+ "Audio Output": "Ses Çıkışı",
+ "Voice & Video": "Ses & Video",
+ "this room": "bu oda",
+ "Room information": "Oda bilgisi",
+ "Room version": "Oda sürümü",
+ "Room version:": "Oda versiyonu:",
+ "Developer options": "Geliştirici ayarları",
+ "Open Devtools": "Geliştirici araçlarını aç",
+ "Room Addresses": "Oda Adresleri",
+ "Uploaded sound": "Yüklenen ses",
+ "Sounds": "Sesler",
+ "Notification sound": "Bildirim sesi",
+ "Reset": "Sıfırla",
+ "Browse": "Gözat",
+ "Change room name": "Oda adını değiştir",
+ "Change history visibility": "Geçmiş görünürlüğünü değiştir",
+ "Change permissions": "İzinleri değiştir",
+ "Upgrade the room": "Odayı güncelle",
+ "Enable room encryption": "Oda şifrelemeyi aç",
+ "Modify widgets": "Görsel bileşenleri düzenle",
+ "Banned by %(displayName)s": "%(displayName)s tarafından yasaklandı",
+ "Default role": "Varsayılan rol",
+ "Send messages": "Mesajları gönder",
+ "Invite users": "Kullanıcıları davet et",
+ "Change settings": "Ayarları değiştir",
+ "Kick users": "Kullanıcıları at",
+ "Ban users": "Kullanıcıları yasakla",
+ "Remove messages": "Mesajları sil",
+ "Notify everyone": "Herkesi bilgilendir",
+ "Muted Users": "Sessizdeki Kullanıcılar",
+ "Roles & Permissions": "Roller & İzinler",
+ "Enable encryption?": "Şifrelemeyi aç?",
+ "Members only (since they were invited)": "Sadece üyeler (davet edildiklerinden beri)",
+ "Members only (since they joined)": "Sadece üyeler (katıldıklarından beri)",
+ "Encryption": "Şifreleme",
+ "Once enabled, encryption cannot be disabled.": "Açıldıktan donra şifreleme kapatılamaz.",
+ "Encrypted": "Şifrelenmiş",
+ "Unable to share email address": "E-posta adresi paylaşılamıyor",
+ "Your email address hasn't been verified yet": "E-posta adresiniz henüz doğrulanmadı",
+ "Verify the link in your inbox": "Gelen kutunuzdaki linki doğrulayın",
+ "Share": "Paylaş",
+ "Unable to share phone number": "Telefon numarası paylaşılamıyor",
+ "Unable to verify phone number.": "Telefon numarası doğrulanamıyor.",
+ "Please enter verification code sent via text.": "Lütfen mesajla gönderilen doğrulama kodunu girin.",
+ "Verification code": "Doğrulama kodu",
+ "Remove %(email)s?": "%(email)s sil?",
+ "Email Address": "E-posta Adresi",
+ "Remove %(phone)s?": "%(phone)s sil?",
+ "Phone Number": "Telefon Numarası",
+ "Cannot add any more widgets": "Daha fazla görsel bileşen eklenemiyor",
+ "The maximum permitted number of widgets have already been added to this room.": "İzin verilen maksimum sayıda görsel bileşen bu odaya zaten eklenmiş.",
+ "Add a widget": "Bir görsel bileşen ekle",
+ "Some devices for this user are not trusted": "Bu kullanıcının bazı cihazları güvenilir değil",
+ "All devices for this user are trusted": "Bu kullanıcının tüm cihazları güvenilir",
+ "Some devices in this encrypted room are not trusted": "Bu şifrelenmiş odada bazı cihazlar şifrelenmemiş",
+ "All devices in this encrypted room are trusted": "Bu şifrelenmiş odadaki tüm cihazlar güvenilir",
+ "Edit message": "Mesajı düzenle",
+ "%(senderName)s sent an image": "%(senderName)s bir resim gönderdi",
+ "%(senderName)s sent a video": "%(senderName)s bir video gönderdi",
+ "%(senderName)s uploaded a file": "%(senderName)s bir dosya yükledi",
+ "Key request sent.": "Anahtar isteği gönderildi.",
+ "This message cannot be decrypted": "Bu mesajın şifresi çözülemedi",
+ "Unencrypted": "Şifrelenmemiş",
+ "Close preview": "Önizlemeyi kapat",
+ "Disinvite this user?": "Bu kullanıcı davetini geri çek?",
+ "Kick this user?": "Bu kullanıcıyı kov?",
+ "Unban this user?": "Bu kullanıcının yasağını kaldır?",
+ "Ban this user?": "Bu kullanıcıyı yasakla?",
+ "Remove %(count)s messages|other": "%(count)s mesajı sil",
+ "Remove %(count)s messages|one": "1 mesajı sil",
+ "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Bu odada bilinmeyen cihazlar var: bunları doğrulamadan devam ederseniz birilerinin çağrılarınıza göz atma ihtimali var.",
+ "A conference call could not be started because the integrations server is not available": "Entegrasyon sunucusu mevcut olmadığından konferans çağrısı başlatılamadı",
+ "Send cross-signing keys to homeserver": "Çapraz-imzalama anahtarlarını anasunucuya gönder",
+ "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Uyarı: Topluluğa eklediğiniz her bir kişi topluluk IDsini bilen herhangi biri tarafından açıkça görünür olacaktır",
+ "Room name or alias": "Oda adı ve lakabı",
+ "Failed to invite users to %(groupId)s": "%(groupId)s grubuna kullanıcı daveti başarısız",
+ "Failed to add the following rooms to %(groupId)s:": "%(groupId)s odalarına ekleme başarısız:",
+ "Prepends ¯\\_(ツ)_/¯ to a plain-text message": "Düz-metin mesajına ¯\\_(ツ)_/¯ ifadesi ekler",
+ "Rooster": "Horoz",
+ "Cross-signing public keys:": "Çarpraz-imzalama açık anahtarları:",
+ "Cross-signing private keys:": "Çarpraz-imzalama gizli anahtarları:",
+ "Backup has a valid signature from this user": "Yedek bu kullanıcıdan geçerli anahtara sahip",
+ "Backup has a invalid signature from this user": "Yedek bu kullanıcıdan geçersiz bir anahtara sahip",
+ "Add an email address to configure email notifications": "E-posta bildirimlerini yapılandırmak için bir e-posta adresi ekleyin",
+ "Identity Server URL must be HTTPS": "Kimlik Sunucu URL adresi HTTPS olmak zorunda",
+ "Not a valid Identity Server (status code %(code)s)": "Geçerli bir Kimlik Sunucu değil ( durum kodu %(code)s )",
+ "Terms of service not accepted or the identity server is invalid.": "Hizmet şartları kabuk edilmedi yada kimlik sunucu geçersiz.",
+ "The identity server you have chosen does not have any terms of service.": "Seçtiğiniz kimlik sunucu herhangi bir hizmet şartları sözleşmesine sahip değil.",
+ "Disconnect identity server": "Kimlik sunucu bağlantısını kes",
+ "Disconnect from the identity server ?": " kimlik sunucusundan bağlantıyı kes?",
+ "Disconnect": "Bağlantıyı kes",
+ "contact the administrators of identity server ": " kimlik sunucusu yöneticisiyle bağlantıya geç",
+ "Deactivate user?": "Kullanıcıyı pasifleştir?",
+ "Deactivate user": "Kullanıcıyı pasifleştir",
+ "Failed to deactivate user": "Kullanıcı pasifleştirme başarısız",
+ "Invite": "Davet",
+ "Share Link to User": "Kullanıcıya Link Paylaş",
+ "User Options": "Kullanıcı Ayarları",
+ "Send an encrypted reply…": "Şifrelenmiş bir cevap gönder…",
+ "Send a reply (unencrypted)…": "Bir cevap gönder (şifresiz)…",
+ "Send an encrypted message…": "Şifreli bir mesaj gönder…",
+ "Send a message (unencrypted)…": "Bir mesaj gönder (şifresiz)…",
+ "Bold": "Kalın",
+ "Italics": "Eğik",
+ "Code block": "Kod bloku",
+ "No pinned messages.": "Sabitlenmiş mesaj yok.",
+ "Loading...": "Yükleniyor...",
+ "Pinned Messages": "Sabitlenmiş Mesajlar",
+ "Jump to message": "Mesaja git",
+ "%(duration)ss": "%(duration)ssn",
+ "%(duration)sm": "%(duration)sdk",
+ "%(duration)sh": "%(duration)ssa",
+ "%(duration)sd": "%(duration)sgün",
+ "Online for %(duration)s": "%(duration)s süresince çevrimiçi",
+ "Offline for %(duration)s": "%(duration)s süresince çevrimdışı",
+ "Unknown for %(duration)s": "%(duration)s süresince bilinmiyor",
+ "Unknown": "Bilinmeyen",
+ "Replying": "Cevap yazıyor",
+ "Room %(name)s": "Oda %(name)s",
+ "Share room": "Oda paylaş",
+ "Community Invites": "Topluluk Davetleri",
+ "System Alerts": "Sistem Uyarıları",
+ "Joining room …": "Odaya giriliyor …",
+ "Loading …": "Yükleniyor …",
+ "Rejecting invite …": "Davet reddediliyor …",
+ "Join the conversation with an account": "Konuşmaya bir hesapla katıl",
+ "Sign Up": "Kayıt Ol",
+ "Sign In": "Giriş Yap",
+ "Loading room preview": "Oda önizlemesi yükleniyor",
+ "Reason: %(reason)s": "Sebep: %(reason)s",
+ "Forget this room": "Bu odayı unut",
+ "Re-join": "Yeniden katıl",
+ "Join the discussion": "Tartışmaya katıl",
+ "Do you want to chat with %(user)s?": "%(user)s ile sohbet etmek ister misin?",
+ " wants to chat": " sohbet etmek istiyor",
+ "Start chatting": "Sohbet başlat",
+ "Do you want to join %(roomName)s?": "%(roomName)s odasına katılmak ister misin?",
+ " invited you": " davet etti",
+ "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s odasında önizleme yapılamaz. Katılmak ister misin?",
+ "This room doesn't exist. Are you sure you're at the right place?": "Bu oda mevcut değil. Doğru yerde olduğunuza emin misiniz?",
+ "Try again later, or ask a room admin to check if you have access.": "Daha sonra deneyin, yada bir oda adminine erişiminiz olup olmadığını sorun.",
+ "Never lose encrypted messages": "Şifrelenmiş mesajları asla kaybetmeyin",
+ "Not now": "Şimdi değil",
+ "Don't ask me again": "Yeniden sorma",
+ "%(count)s unread messages.|other": "%(count)s okunmamış mesaj.",
+ "%(count)s unread messages.|one": "1 okunmamış mesaj.",
+ "Unread messages.": "Okunmamış mesajlar.",
+ "This room has already been upgraded.": "Bu ıda zaten güncellenmiş.",
+ "Only room administrators will see this warning": "Bu uyarıyı sadece oda yöneticileri görür",
+ "Failed to connect to integration manager": "Entegrasyon yöneticisine bağlanma başarısız",
+ "Add some now": "Şimdi biraz ekle",
+ "Stickerpack": "Çıkartma paketi",
+ "Hide Stickers": "Çıkartmaları Gizle",
+ "Show Stickers": "Çıkartmaları Göster",
+ "Failed to revoke invite": "Davetin geri çekilmesi başarısız",
+ "Revoke invite": "Davet geri çekildi",
+ "Invited by %(sender)s": "%(sender)s tarafından davet",
+ "Error updating main address": "Ana adres güncellemede hata",
+ "Error removing alias": "Lakap silmede hata",
+ "Main address": "Ana adres",
+ "Invalid community ID": "Geçersiz topluluk ID si",
+ "'%(groupId)s' is not a valid community ID": "%(groupId)s geçerli olmayan bir topluluk ID si",
+ "New community ID (e.g. +foo:%(localDomain)s)": "Yeni topluluk ID si ( örn. +foo:%(localDomain)s)",
+ "Room Name": "Oda Adı",
+ "Hide verified sessions": "Onaylı oturumları gizle",
+ "%(count)s verified sessions|other": "%(count)s doğrulanmış oturum",
+ "%(count)s verified sessions|one": "1 doğrulanmış oturum",
+ "Direct message": "Doğrudan mesaj",
+ "Remove from community": "Topluluktan sil",
+ "Remove this user from community?": "Bu kullanıcıyı topluluktan sil?",
+ "Failed to withdraw invitation": "Davetin geri çekilmesi başarısız",
+ "Failed to remove user from community": "Kullanıcıyı bu topluluktan silme başarısız",
+ "Verify": "Doğrula",
+ "Security": "Güvenlik",
+ "Reply": "Cevapla",
+ "Edit": "Düzenle",
+ "Message Actions": "Mesaj Eylemleri",
+ "Show image": "Resim göster",
+ "You verified %(name)s": "%(name)s yı doğruladınız",
+ "You cancelled verifying %(name)s": "%(name)s doğrulaması iptal edildi",
+ "You accepted": "Kabul ettiniz",
+ "%(name)s accepted": "%(name)s kabul etti",
+ "You cancelled": "İptal ettiniz",
+ "%(name)s cancelled": "%(name)s iptal etti",
+ "%(name)s wants to verify": "%(name)s doğrulamak istiyor",
+ "You sent a verification request": "Doğrulama isteği gönderdiniz",
+ "Show all": "Hepsini göster",
+ "Reactions": "Tepkiler",
+ "Click here to see older messages.": "Daha eski mesajları görmek için buraya tıklayın.",
+ "Copied!": "Kopyalandı!",
+ "Failed to copy": "Kopyalama başarısız",
+ "edited": "düzenlendi",
+ "Message removed by %(userId)s": "Mesaj %(userId)s tarafından silindi"
}
diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json
index e2df3fc774..7795060406 100644
--- a/src/i18n/strings/uk.json
+++ b/src/i18n/strings/uk.json
@@ -160,7 +160,7 @@
"The server may be unavailable or overloaded": "Сервер може бути недосяжним або перевантаженим",
"Room not found": "Кімнату не знайдено",
"Reject": "Відмовитись",
- "Failed to set Direct Message status of room": "Не вдалось встановити статус прямого спілкування в кімнаті",
+ "Failed to set Direct Message status of room": "Не вдалося встановити статус прямого спілкування в кімнаті",
"Monday": "Понеділок",
"Remove from Directory": "Прибрати з каталогу",
"Enable them now": "Увімкнути їх зараз",
@@ -405,7 +405,7 @@
"%(widgetName)s widget removed by %(senderName)s": "%(senderName)s вилучив/ла %(widgetName)s",
"Failure to create room": "Не вдалося створити кімнату",
"Server may be unavailable, overloaded, or you hit a bug.": "Сервер може бути недоступний, перевантажений, або ж ви натрапили на ваду.",
- "Send anyway": "Все-таки надіслати",
+ "Send anyway": "Надіслати хоч би там що",
"Unnamed Room": "Кімната без назви",
"This homeserver has hit its Monthly Active User limit.": "Цей домашній сервер досягнув свого ліміту щомісячних активних користувачів.",
"This homeserver has exceeded one of its resource limits.": "Цей домашній сервер досягнув одного зі своїх лімітів ресурсів.",
@@ -438,8 +438,8 @@
"Incorrect verification code": "Неправильний код перевірки",
"Submit": "Надіслати",
"Phone": "Телефон",
- "Failed to upload profile picture!": "Не вдалося завантажити світлину профілю!",
- "Upload new:": "Завантажити нову:",
+ "Failed to upload profile picture!": "Не вдалося відвантажити світлину профілю!",
+ "Upload new:": "Відвантажити нову:",
"No display name": "Немає імені для показу",
"New passwords don't match": "Нові паролі не збігаються",
"Passwords can't be empty": "Пароль не може бути пустим",
@@ -460,7 +460,7 @@
"Enable Notifications": "Увімкнути сповіщення",
"The maximum permitted number of widgets have already been added to this room.": "Максимально дозволену кількість віджетів уже додано до цієї кімнати.",
"Drop File Here": "Киньте файл сюди",
- "Drop file here to upload": "Киньте файл сюди, щоб вивантажити",
+ "Drop file here to upload": "Киньте файл сюди, щоб відвантажити",
" (unsupported)": " (не підтримується)",
"Join as voice or video.": "Приєднатися голосом або відео.",
"Ongoing conference call%(supportedText)s.": "Триває дзвінок-конференція%(supportedText)s.",
@@ -508,7 +508,7 @@
"Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.": "Також ви можете спробувати використати публічний сервер turn.matrix.org, але це буде не настільки надійно, а також цей сервер матиме змогу бачити вашу IP-адресу. Ви можете керувати цим у налаштуваннях.",
"Try using turn.matrix.org": "Спробуйте використати turn.matrix.org",
"Replying With Files": "Відповісти файлами",
- "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Зараз неможливо відповісти файлом. Хочете завантажити цей файл без відповіді?",
+ "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Зараз неможливо відповісти файлом. Хочете відвантажити цей файл без відповіді?",
"Name or Matrix ID": "Імʼя або Matrix ID",
"Identity server has no terms of service": "Сервер ідентифікації не має умов надання послуг",
"This action requires accessing the default identity server to validate an email address or phone number, but the server does not have any terms of service.": "Щоб підтвердити адресу е-пошту або телефон ця дія потребує доступу до типового серверу ідентифікації , але сервер не має жодних умов надання послуг.",
@@ -547,5 +547,41 @@
"Forces the current outbound group session in an encrypted room to be discarded": "Примусово відкидає поточний вихідний груповий сеанс у шифрованій кімнаті",
"Sends the given message coloured as a rainbow": "Надсилає вказане повідомлення розфарбоване веселкою",
"Your Riot is misconfigured": "Ваш Riot налаштовано неправильно",
- "Join the discussion": "Приєднатися до обговорення"
+ "Join the discussion": "Приєднатися до обговорення",
+ "Upload": "Відвантажити",
+ "Upload file": "Відвантажити файл",
+ "Send an encrypted message…": "Надіслати зашифроване повідомлення…",
+ "Send a message (unencrypted)…": "Надіслати повідомлення (незашифроване)…",
+ "The conversation continues here.": "Розмова триває тут.",
+ "This room has been replaced and is no longer active.": "Ця кімната була замінена і не є активною.",
+ "You do not have permission to post to this room": "У вас нема дозволу дописувати у цю кімнату",
+ "Sign out": "Вийти",
+ "To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Щоб уникнути втрати історії ваших листувань, ви маєте експортувати ключі кімнати перед виходом. Вам треба буде повернутися до новішої версії Riot аби зробити це",
+ "You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "Раніше ви використовували новішу версію Riot на %(host)s. Для повторного користування цією версією з наскрізним шифруванням вам треба буде вийти та зайти знову. ",
+ "Incompatible Database": "Несумісна база даних",
+ "Continue With Encryption Disabled": "Продовжити із вимкненим шифруванням",
+ "Unknown error": "Невідома помилка",
+ "Incorrect password": "Неправильний пароль",
+ "Are you sure you want to sign out?": "Ви впевнені, що хочете вийти?",
+ "Your homeserver doesn't seem to support this feature.": "Схоже, що ваш домашній сервер не підтримує цю властивість.",
+ "Sign out and remove encryption keys?": "Вийти та видалити ключі шифрування?",
+ "Clear Storage and Sign Out": "Очистити сховище та вийти",
+ "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Очищення сховища вашого оглядача може усунути проблему, але воно виведе вас з системи і зробить непрочитною історію ваших зашифрованих листувань.",
+ "Verification Pending": "Очікується перевірка",
+ "Upload files (%(current)s of %(total)s)": "Відвантажити файли (%(current)s з %(total)s)",
+ "Upload files": "Відвантажити файли",
+ "Upload all": "Відвантажити всі",
+ "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Файл є надто великим для відвантаження. Допустимий розмір файлів — %(limit)s, але цей файл займає %(sizeOfThisFile)s.",
+ "These files are too large to upload. The file size limit is %(limit)s.": "Ці файли є надто великими для відвантаження. Допустимий розмір файлів — %(limit)s.",
+ "Some files are too large to be uploaded. The file size limit is %(limit)s.": "Деякі файли є надто великими для відвантаження. Допустимий розмір файлів — %(limit)s.",
+ "Upload %(count)s other files|other": "Відвантажити %(count)s інших файли(ів)",
+ "Upload Error": "Помилка відвантаження",
+ "Failed to upload image": "Не вдалось відвантажити зображення",
+ "Upload avatar": "Завантажити аватар",
+ "For security, this session has been signed out. Please sign in again.": "З метою безпеки вашу сесію було завершено. Зайдіть, будь ласка, знову.",
+ "Upload an avatar:": "Завантажити аватар:",
+ "Send cross-signing keys to homeserver": "Надсилання ключей підпису на домашній сервер",
+ "Custom (%(level)s)": "Власний (%(level)s)",
+ "Error upgrading room": "Помилка оновлення кімнати",
+ "Double check that your server supports the room version chosen and try again.": "Перевірте, чи підримує ваш сервер вказану версію кімнати та спробуйте ще."
}
diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json
index 829af63542..9401bb4a65 100644
--- a/src/i18n/strings/zh_Hant.json
+++ b/src/i18n/strings/zh_Hant.json
@@ -2008,5 +2008,33 @@
"Secure your encrypted messages with a passphrase": "使用密碼保護您的加密訊息",
"Storing secrets...": "正在儲存秘密……",
"Unable to set up secret storage": "無法設定秘密儲存空間",
- "Close preview": "關閉預覽"
+ "Close preview": "關閉預覽",
+ "This user has not verified all of their devices.": "這個使用者尚未驗證所有裝置。",
+ "You have not verified this user. This user has verified all of their devices.": "您尚未驗證此使用者。此使用者已驗證所有裝置。",
+ "You have verified this user. This user has verified all of their devices.": "您已驗證此使用者。此使用者已驗證所有裝置。",
+ "Some users in this encrypted room are not verified by you or they have not verified their own devices.": "在此已加密的聊天室中的某些使用者尚未被您驗證,或是他們尚未驗證他們的裝置。",
+ "All users in this encrypted room are verified by you and they have verified their own devices.": "在此已加密的聊天室中的所有使用者已被您驗證,他們也已驗證所有裝置。",
+ "Language Dropdown": "語言下拉式選單",
+ "Country Dropdown": "國家下拉式選單",
+ "The message you are trying to send is too large.": "您正試圖傳送的訊息太大了。",
+ "Secret Storage will be set up using your existing key backup details.Your secret storage passphrase and recovery key will be the same as they were for your key backup": "秘密儲存空間將使用你既有的金鑰備份資訊來設定。您的秘密儲存空間密碼與復原金鑰會與您的金鑰備份相同",
+ "Migrate from Key Backup": "從金鑰備份導入",
+ "Help": "說明",
+ "New DM invite dialog (under development)": "新的直接訊息邀請對話框(開發中)",
+ "Show more": "顯示更多",
+ "Recent Conversations": "最近的對話",
+ "Direct Messages": "直接訊息",
+ "If you can't find someone, ask them for their username, or share your username (%(userId)s) or profile link.": "如果您找不到某人,請向他們詢問他們的使用者名稱,或是分享您的使用者名稱 (%(userId)s) 或簡介連結。",
+ "Go": "到",
+ "Show info about bridges in room settings": "顯示關於聊天室設定中橋接相關的資訊",
+ "This bridge was provisioned by ": "此橋接由 配置",
+ "This bridge is managed by .": "此橋接由 管理。",
+ "Bridged into , on ": "橋接於 ,在 上",
+ "Connected to on ": "連線到 於 ",
+ "Connected via %(protocolName)s": "透過 %(protocolName)s 連線",
+ "Bridge Info": "橋接資訊",
+ "Below is a list of bridges connected to this room.": "以下是連線到此聊天室的橋接列表。",
+ "Suggestions": "建議",
+ "Failed to find the following users": "找不到以下使用者",
+ "The following users might not exist or are invalid, and cannot be invited: %(csvNames)s": "以下使用者可能不存在或無效,且無法被邀請:%(csvNames)s"
}
diff --git a/src/index.js b/src/index.js
index 7d0547d9c9..008e15ad90 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,5 +1,6 @@
/*
Copyright 2015, 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,14 +17,14 @@ limitations under the License.
import Skinner from './Skinner';
-module.exports.loadSkin = function(skinObject) {
+export function loadSkin(skinObject) {
Skinner.load(skinObject);
-};
+}
-module.exports.resetSkin = function() {
+export function resetSkin() {
Skinner.reset();
-};
+}
-module.exports.getComponent = function(componentName) {
+export function getComponent(componentName) {
return Skinner.getComponent(componentName);
-};
+}
diff --git a/src/indexing/EventIndex.js b/src/indexing/EventIndex.js
index cf7e2d8da2..c912e31fa5 100644
--- a/src/indexing/EventIndex.js
+++ b/src/indexing/EventIndex.js
@@ -15,7 +15,7 @@ limitations under the License.
*/
import PlatformPeg from "../PlatformPeg";
-import MatrixClientPeg from "../MatrixClientPeg";
+import {MatrixClientPeg} from "../MatrixClientPeg";
/*
* Event indexing class that wraps the platform specific event indexing.
diff --git a/src/indexing/EventIndexPeg.js b/src/indexing/EventIndexPeg.js
index 75f0fa66ba..3746591b1f 100644
--- a/src/indexing/EventIndexPeg.js
+++ b/src/indexing/EventIndexPeg.js
@@ -110,4 +110,4 @@ class EventIndexPeg {
if (!global.mxEventIndexPeg) {
global.mxEventIndexPeg = new EventIndexPeg();
}
-module.exports = global.mxEventIndexPeg;
+export default global.mxEventIndexPeg;
diff --git a/src/integrations/IntegrationManagerInstance.js b/src/integrations/IntegrationManagerInstance.js
index 4958209351..3ffe1e5401 100644
--- a/src/integrations/IntegrationManagerInstance.js
+++ b/src/integrations/IntegrationManagerInstance.js
@@ -15,7 +15,7 @@ limitations under the License.
*/
import ScalarAuthClient from "../ScalarAuthClient";
-import sdk from "../index";
+import * as sdk from "../index";
import {dialogTermsInteractionCallback, TermsNotSignedError} from "../Terms";
import type {Room} from "matrix-js-sdk";
import Modal from '../Modal';
diff --git a/src/integrations/IntegrationManagers.js b/src/integrations/IntegrationManagers.js
index 6c4d2ae4d4..b482ec73ce 100644
--- a/src/integrations/IntegrationManagers.js
+++ b/src/integrations/IntegrationManagers.js
@@ -15,12 +15,12 @@ limitations under the License.
*/
import SdkConfig from '../SdkConfig';
-import sdk from "../index";
+import * as sdk from "../index";
import Modal from '../Modal';
import {IntegrationManagerInstance, KIND_ACCOUNT, KIND_CONFIG, KIND_HOMESERVER} from "./IntegrationManagerInstance";
import type {MatrixClient, MatrixEvent, Room} from "matrix-js-sdk";
import WidgetUtils from "../utils/WidgetUtils";
-import MatrixClientPeg from "../MatrixClientPeg";
+import {MatrixClientPeg} from "../MatrixClientPeg";
import {AutoDiscovery} from "matrix-js-sdk";
import SettingsStore from "../settings/SettingsStore";
diff --git a/src/languageHandler.js b/src/languageHandler.js
index c56e5378df..ddb7e2718c 100644
--- a/src/languageHandler.js
+++ b/src/languageHandler.js
@@ -22,6 +22,9 @@ import counterpart from 'counterpart';
import React from 'react';
import SettingsStore, {SettingLevel} from "./settings/SettingsStore";
+// $webapp is a webpack resolve alias pointing to the output directory, see webpack config
+import webpackLangJsonUrl from "$webapp/i18n/languages.json";
+
const i18nFolder = 'i18n/';
// Control whether to also return original, untranslated strings
@@ -336,6 +339,10 @@ export function getLanguagesFromBrowser() {
return [navigator.userLanguage || "en"];
}
+export function getLanguageFromBrowser() {
+ return getLanguagesFromBrowser()[0];
+}
+
/**
* Turns a language string, normalises it,
* (see normalizeLanguageKey) into an array of language strings
@@ -410,12 +417,11 @@ export function pickBestLanguage(langs) {
}
function getLangsJson() {
- return new Promise((resolve, reject) => {
+ return new Promise(async (resolve, reject) => {
let url;
- try {
- // $webapp is a webpack resolve alias pointing to the output directory, see webpack config
- url = require('$webapp/i18n/languages.json');
- } catch (e) {
+ if (typeof(webpackLangJsonUrl) === 'string') { // in Jest this 'url' isn't a URL, so just fall through
+ url = webpackLangJsonUrl;
+ } else {
url = i18nFolder + 'languages.json';
}
request(
diff --git a/src/mjolnir/BanList.js b/src/mjolnir/BanList.js
index 60a924a52b..21cd5d4cf7 100644
--- a/src/mjolnir/BanList.js
+++ b/src/mjolnir/BanList.js
@@ -17,7 +17,7 @@ limitations under the License.
// Inspiration largely taken from Mjolnir itself
import {ListRule, RECOMMENDATION_BAN, recommendationToStable} from "./ListRule";
-import MatrixClientPeg from "../MatrixClientPeg";
+import {MatrixClientPeg} from "../MatrixClientPeg";
export const RULE_USER = "m.room.rule.user";
export const RULE_ROOM = "m.room.rule.room";
diff --git a/src/mjolnir/Mjolnir.js b/src/mjolnir/Mjolnir.js
index 7539dfafb0..4970d8e8af 100644
--- a/src/mjolnir/Mjolnir.js
+++ b/src/mjolnir/Mjolnir.js
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from "../MatrixClientPeg";
+import {MatrixClientPeg} from "../MatrixClientPeg";
import {ALL_RULE_TYPES, BanList} from "./BanList";
import SettingsStore, {SettingLevel} from "../settings/SettingsStore";
import {_t} from "../languageHandler";
diff --git a/src/notifications/ContentRules.js b/src/notifications/ContentRules.js
index f7e722dbfe..8c285220c7 100644
--- a/src/notifications/ContentRules.js
+++ b/src/notifications/ContentRules.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,9 +17,9 @@ limitations under the License.
'use strict';
-const PushRuleVectorState = require('./PushRuleVectorState');
+import {PushRuleVectorState} from "./PushRuleVectorState";
-module.exports = {
+export class ContentRules {
/**
* Extract the keyword rules from a list of rules, and parse them
* into a form which is useful for Vector's UI.
@@ -30,7 +31,7 @@ module.exports = {
* externalRules: a list of other keyword rules, with states other than
* vectorState
*/
- parseContentRules: function(rulesets) {
+ static parseContentRules(rulesets) {
// first categorise the keyword rules in terms of their actions
const contentRules = this._categoriseContentRules(rulesets);
@@ -79,9 +80,9 @@ module.exports = {
externalRules: contentRules.other,
};
}
- },
+ }
- _categoriseContentRules: function(rulesets) {
+ static _categoriseContentRules(rulesets) {
const contentRules = {on: [], on_but_disabled: [], loud: [], loud_but_disabled: [], other: []};
for (const kind in rulesets.global) {
for (let i = 0; i < Object.keys(rulesets.global[kind]).length; ++i) {
@@ -116,5 +117,5 @@ module.exports = {
}
}
return contentRules;
- },
-};
+ }
+}
diff --git a/src/notifications/NotificationUtils.js b/src/notifications/NotificationUtils.js
index 79c1b38f6d..bf393da060 100644
--- a/src/notifications/NotificationUtils.js
+++ b/src/notifications/NotificationUtils.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,14 +17,14 @@ limitations under the License.
'use strict';
-module.exports = {
+export class NotificationUtils {
// Encodes a dictionary of {
// "notify": true/false,
// "sound": string or undefined,
// "highlight: true/false,
// }
// to a list of push actions.
- encodeActions: function(action) {
+ static encodeActions(action) {
const notify = action.notify;
const sound = action.sound;
const highlight = action.highlight;
@@ -41,7 +42,7 @@ module.exports = {
} else {
return ["dont_notify"];
}
- },
+ }
// Decode a list of actions to a dictionary of {
// "notify": true/false,
@@ -49,7 +50,7 @@ module.exports = {
// "highlight: true/false,
// }
// If the actions couldn't be decoded then returns null.
- decodeActions: function(actions) {
+ static decodeActions(actions) {
let notify = false;
let sound = null;
let highlight = false;
@@ -85,5 +86,5 @@ module.exports = {
result.sound = sound;
}
return result;
- },
-};
+ }
+}
diff --git a/src/notifications/PushRuleVectorState.js b/src/notifications/PushRuleVectorState.js
index f4ba365b6d..263226ce1c 100644
--- a/src/notifications/PushRuleVectorState.js
+++ b/src/notifications/PushRuleVectorState.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,42 +17,44 @@ limitations under the License.
'use strict';
-const StandardActions = require('./StandardActions');
-const NotificationUtils = require('./NotificationUtils');
+import {StandardActions} from "./StandardActions";
+import {NotificationUtils} from "./NotificationUtils";
-const states = {
- /** The push rule is disabled */
- OFF: "off",
+export class PushRuleVectorState {
+ // Backwards compatibility (things should probably be using .states instead)
+ static OFF = "off";
+ static ON = "on";
+ static LOUD = "loud";
- /** The user will receive push notification for this rule */
- ON: "on",
-
- /** The user will receive push notification for this rule with sound and
- highlight if this is legitimate */
- LOUD: "loud",
-};
-
-
-module.exports = {
/**
* Enum for state of a push rule as defined by the Vector UI.
* @readonly
* @enum {string}
*/
- states: states,
+ static states = {
+ /** The push rule is disabled */
+ OFF: PushRuleVectorState.OFF,
+
+ /** The user will receive push notification for this rule */
+ ON: PushRuleVectorState.ON,
+
+ /** The user will receive push notification for this rule with sound and
+ highlight if this is legitimate */
+ LOUD: PushRuleVectorState.LOUD,
+ };
/**
* Convert a PushRuleVectorState to a list of actions
*
* @return [object] list of push-rule actions
*/
- actionsFor: function(pushRuleVectorState) {
- if (pushRuleVectorState === this.ON) {
+ static actionsFor(pushRuleVectorState) {
+ if (pushRuleVectorState === PushRuleVectorState.ON) {
return StandardActions.ACTION_NOTIFY;
- } else if (pushRuleVectorState === this.LOUD) {
+ } else if (pushRuleVectorState === PushRuleVectorState.LOUD) {
return StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND;
}
- },
+ }
/**
* Convert a pushrule's actions to a PushRuleVectorState.
@@ -60,7 +63,7 @@ module.exports = {
* category or in PushRuleVectorState.LOUD, regardless of its enabled
* state. Returns null if it does not match these categories.
*/
- contentRuleVectorStateKind: function(rule) {
+ static contentRuleVectorStateKind(rule) {
const decoded = NotificationUtils.decodeActions(rule.actions);
if (!decoded) {
@@ -78,16 +81,12 @@ module.exports = {
let stateKind = null;
switch (tweaks) {
case 0:
- stateKind = this.ON;
+ stateKind = PushRuleVectorState.ON;
break;
case 2:
- stateKind = this.LOUD;
+ stateKind = PushRuleVectorState.LOUD;
break;
}
return stateKind;
- },
-};
-
-for (const k in states) {
- module.exports[k] = states[k];
+ }
}
diff --git a/src/notifications/StandardActions.js b/src/notifications/StandardActions.js
index 15f645d5f7..b54cea332a 100644
--- a/src/notifications/StandardActions.js
+++ b/src/notifications/StandardActions.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,16 +17,16 @@ limitations under the License.
'use strict';
-const NotificationUtils = require('./NotificationUtils');
+import {NotificationUtils} from "./NotificationUtils";
const encodeActions = NotificationUtils.encodeActions;
-module.exports = {
- ACTION_NOTIFY: encodeActions({notify: true}),
- ACTION_NOTIFY_DEFAULT_SOUND: encodeActions({notify: true, sound: "default"}),
- ACTION_NOTIFY_RING_SOUND: encodeActions({notify: true, sound: "ring"}),
- ACTION_HIGHLIGHT: encodeActions({notify: true, highlight: true}),
- ACTION_HIGHLIGHT_DEFAULT_SOUND: encodeActions({notify: true, sound: "default", highlight: true}),
- ACTION_DONT_NOTIFY: encodeActions({notify: false}),
- ACTION_DISABLED: null,
-};
+export class StandardActions {
+ static ACTION_NOTIFY = encodeActions({notify: true});
+ static ACTION_NOTIFY_DEFAULT_SOUND = encodeActions({notify: true, sound: "default"});
+ static ACTION_NOTIFY_RING_SOUND = encodeActions({notify: true, sound: "ring"});
+ static ACTION_HIGHLIGHT = encodeActions({notify: true, highlight: true});
+ static ACTION_HIGHLIGHT_DEFAULT_SOUND = encodeActions({notify: true, sound: "default", highlight: true});
+ static ACTION_DONT_NOTIFY = encodeActions({notify: false});
+ static ACTION_DISABLED = null;
+}
diff --git a/src/notifications/VectorPushRulesDefinitions.js b/src/notifications/VectorPushRulesDefinitions.js
index b15fb4ccd7..98d197a004 100644
--- a/src/notifications/VectorPushRulesDefinitions.js
+++ b/src/notifications/VectorPushRulesDefinitions.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,10 +18,9 @@ limitations under the License.
'use strict';
import { _td } from '../languageHandler';
-
-const StandardActions = require('./StandardActions');
-const PushRuleVectorState = require('./PushRuleVectorState');
-const { decodeActions } = require('./NotificationUtils');
+import {StandardActions} from "./StandardActions";
+import {PushRuleVectorState} from "./PushRuleVectorState";
+import {NotificationUtils} from "./NotificationUtils";
class VectorPushRuleDefinition {
constructor(opts) {
@@ -51,8 +51,8 @@ class VectorPushRuleDefinition {
// value: true vs. unspecified for highlight (which defaults to
// true, making them equivalent).
if (enabled &&
- JSON.stringify(decodeActions(rule.actions)) ===
- JSON.stringify(decodeActions(vectorStateToActions))) {
+ JSON.stringify(NotificationUtils.decodeActions(rule.actions)) ===
+ JSON.stringify(NotificationUtils.decodeActions(vectorStateToActions))) {
return state;
}
}
@@ -68,7 +68,7 @@ class VectorPushRuleDefinition {
/**
* The descriptions of rules managed by the Vector UI.
*/
-module.exports = {
+export const VectorPushRulesDefinitions = {
// Messages containing user's display name
".m.rule.contains_display_name": new VectorPushRuleDefinition({
kind: "override",
diff --git a/src/notifications/index.js b/src/notifications/index.js
index 8ed77e9d41..7c400ad8b3 100644
--- a/src/notifications/index.js
+++ b/src/notifications/index.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,9 +17,7 @@ limitations under the License.
'use strict';
-module.exports = {
- NotificationUtils: require('./NotificationUtils'),
- PushRuleVectorState: require('./PushRuleVectorState'),
- VectorPushRulesDefinitions: require('./VectorPushRulesDefinitions'),
- ContentRules: require('./ContentRules'),
-};
+export * from "./NotificationUtils";
+export * from "./PushRuleVectorState";
+export * from "./VectorPushRulesDefinitions";
+export * from "./ContentRules";
diff --git a/src/rageshake/rageshake.js b/src/rageshake/rageshake.js
index 47bab38079..a9d17e77c9 100644
--- a/src/rageshake/rageshake.js
+++ b/src/rageshake/rageshake.js
@@ -432,77 +432,73 @@ function selectQuery(store, keyRange, resultMapper) {
});
}
-
-module.exports = {
-
- /**
- * Configure rage shaking support for sending bug reports.
- * Modifies globals.
- * @return {Promise} Resolves when set up.
- */
- init: function() {
- if (global.mx_rage_initPromise) {
- return global.mx_rage_initPromise;
- }
- global.mx_rage_logger = new ConsoleLogger();
- global.mx_rage_logger.monkeyPatch(window.console);
-
- // just *accessing* indexedDB throws an exception in firefox with
- // indexeddb disabled.
- let indexedDB;
- try {
- indexedDB = window.indexedDB;
- } catch (e) {}
-
- if (indexedDB) {
- global.mx_rage_store = new IndexedDBLogStore(indexedDB, global.mx_rage_logger);
- global.mx_rage_initPromise = global.mx_rage_store.connect();
- return global.mx_rage_initPromise;
- }
- global.mx_rage_initPromise = Promise.resolve();
+/**
+ * Configure rage shaking support for sending bug reports.
+ * Modifies globals.
+ * @return {Promise} Resolves when set up.
+ */
+export function init() {
+ if (global.mx_rage_initPromise) {
return global.mx_rage_initPromise;
- },
+ }
+ global.mx_rage_logger = new ConsoleLogger();
+ global.mx_rage_logger.monkeyPatch(window.console);
- flush: function() {
- if (!global.mx_rage_store) {
- return;
- }
- global.mx_rage_store.flush();
- },
+ // just *accessing* indexedDB throws an exception in firefox with
+ // indexeddb disabled.
+ let indexedDB;
+ try {
+ indexedDB = window.indexedDB;
+ } catch (e) {}
- /**
- * Clean up old logs.
- * @return Promise Resolves if cleaned logs.
- */
- cleanup: async function() {
- if (!global.mx_rage_store) {
- return;
- }
- await global.mx_rage_store.consume();
- },
+ if (indexedDB) {
+ global.mx_rage_store = new IndexedDBLogStore(indexedDB, global.mx_rage_logger);
+ global.mx_rage_initPromise = global.mx_rage_store.connect();
+ return global.mx_rage_initPromise;
+ }
+ global.mx_rage_initPromise = Promise.resolve();
+ return global.mx_rage_initPromise;
+}
- /**
- * Get a recent snapshot of the logs, ready for attaching to a bug report
- *
- * @return {Array<{lines: string, id, string}>} list of log data
- */
- getLogsForReport: async function() {
- if (!global.mx_rage_logger) {
- throw new Error(
- "No console logger, did you forget to call init()?",
- );
- }
- // If in incognito mode, store is null, but we still want bug report
- // sending to work going off the in-memory console logs.
- if (global.mx_rage_store) {
- // flush most recent logs
- await global.mx_rage_store.flush();
- return await global.mx_rage_store.consume();
- } else {
- return [{
- lines: global.mx_rage_logger.flush(true),
- id: "-",
- }];
- }
- },
-};
+export function flush() {
+ if (!global.mx_rage_store) {
+ return;
+ }
+ global.mx_rage_store.flush();
+}
+
+/**
+ * Clean up old logs.
+ * @return Promise Resolves if cleaned logs.
+ */
+export async function cleanup() {
+ if (!global.mx_rage_store) {
+ return;
+ }
+ await global.mx_rage_store.consume();
+}
+
+/**
+ * Get a recent snapshot of the logs, ready for attaching to a bug report
+ *
+ * @return {Array<{lines: string, id, string}>} list of log data
+ */
+export async function getLogsForReport() {
+ if (!global.mx_rage_logger) {
+ throw new Error(
+ "No console logger, did you forget to call init()?",
+ );
+ }
+ // If in incognito mode, store is null, but we still want bug report
+ // sending to work going off the in-memory console logs.
+ if (global.mx_rage_store) {
+ // flush most recent logs
+ await global.mx_rage_store.flush();
+ return await global.mx_rage_store.consume();
+ } else {
+ return [{
+ lines: global.mx_rage_logger.flush(true),
+ id: "-",
+ }];
+ }
+}
diff --git a/src/rageshake/submit-rageshake.js b/src/rageshake/submit-rageshake.js
index 457958eb82..ed5a9e5946 100644
--- a/src/rageshake/submit-rageshake.js
+++ b/src/rageshake/submit-rageshake.js
@@ -18,15 +18,16 @@ limitations under the License.
import pako from 'pako';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import PlatformPeg from '../PlatformPeg';
import { _t } from '../languageHandler';
-import rageshake from './rageshake';
+import * as rageshake from './rageshake';
// polyfill textencoder if necessary
import * as TextEncodingUtf8 from 'text-encoding-utf-8';
+import SettingsStore from "../settings/SettingsStore";
let TextEncoder = window.TextEncoder;
if (!TextEncoder) {
TextEncoder = TextEncodingUtf8.TextEncoder;
@@ -85,6 +86,12 @@ export default async function sendBugReport(bugReportEndpoint, opts) {
body.append('label', opts.label);
}
+ // add labs options
+ const enabledLabs = SettingsStore.getLabsFeatures().filter(SettingsStore.isFeatureEnabled);
+ if (enabledLabs.length) {
+ body.append('enabled_labs', enabledLabs.join(', '));
+ }
+
if (opts.sendLogs) {
progressCallback(_t("Collecting logs"));
const logs = await rageshake.getLogsForReport();
diff --git a/src/resizer/index.js b/src/resizer/index.js
index bc4c8f388c..7c4b2bd493 100644
--- a/src/resizer/index.js
+++ b/src/resizer/index.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,14 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import FixedDistributor from "./distributors/fixed";
-import CollapseDistributor from "./distributors/collapse";
-import RoomSubListDistributor from "./distributors/roomsublist";
-import Resizer from "./resizer";
-
-module.exports = {
- Resizer,
- FixedDistributor,
- CollapseDistributor,
- RoomSubListDistributor,
-};
+export FixedDistributor from "./distributors/fixed";
+export CollapseDistributor from "./distributors/collapse";
+export RoomSubListDistributor from "./distributors/roomsublist";
+export Resizer from "./resizer";
diff --git a/src/settings/Settings.js b/src/settings/Settings.js
index f1299a9045..2b8c0aef89 100644
--- a/src/settings/Settings.js
+++ b/src/settings/Settings.js
@@ -1,7 +1,7 @@
/*
Copyright 2017 Travis Ralston
Copyright 2018, 2019 New Vector Ltd.
-Copyright 2019 The Matrix.org Foundation C.I.C.
+Copyright 2019, 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -128,6 +128,18 @@ export const SETTINGS = {
supportedLevels: LEVELS_FEATURE,
default: false,
},
+ "feature_ftue_dms": {
+ isFeature: true,
+ displayName: _td("New DM invite dialog (under development)"),
+ supportedLevels: LEVELS_FEATURE,
+ default: false,
+ },
+ "feature_presence_in_room_list": {
+ isFeature: true,
+ displayName: _td("Show a presence dot next to DMs in the room list"),
+ supportedLevels: LEVELS_FEATURE,
+ default: false,
+ },
"mjolnirRooms": {
supportedLevels: ['account'],
default: [],
@@ -141,7 +153,6 @@ export const SETTINGS = {
displayName: _td("Enable cross-signing to verify per-user instead of per-device (in development)"),
supportedLevels: LEVELS_FEATURE,
default: false,
- controller: new ReloadOnChangeController(),
},
"feature_event_indexing": {
isFeature: true,
@@ -149,10 +160,11 @@ export const SETTINGS = {
displayName: _td("Enable local event indexing and E2EE search (requires restart)"),
default: false,
},
- "useCiderComposer": {
- displayName: _td("Use the new, faster, composer for writing messages"),
- supportedLevels: LEVELS_ACCOUNT_SETTINGS,
- default: true,
+ "feature_bridge_state": {
+ isFeature: true,
+ supportedLevels: LEVELS_FEATURE,
+ displayName: _td("Show info about bridges in room settings"),
+ default: false,
},
"MessageComposerInput.suggestEmoji": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
diff --git a/src/settings/controllers/NotificationControllers.js b/src/settings/controllers/NotificationControllers.js
index e78b67e847..395da765a1 100644
--- a/src/settings/controllers/NotificationControllers.js
+++ b/src/settings/controllers/NotificationControllers.js
@@ -15,10 +15,10 @@ limitations under the License.
*/
import SettingController from "./SettingController";
-import MatrixClientPeg from '../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
// XXX: This feels wrong.
-import PushProcessor from "matrix-js-sdk/lib/pushprocessor";
+import {PushProcessor} from "matrix-js-sdk/src/pushprocessor";
function isMasterRuleEnabled() {
// Return the value of the master push rule as a default
@@ -34,10 +34,15 @@ function isMasterRuleEnabled() {
return !masterRule.enabled;
}
+function getNotifier() {
+ let Notifier = require('../../Notifier'); // avoids cyclical references
+ if (Notifier.default) Notifier = Notifier.default; // correct for webpack require() weirdness
+ return Notifier;
+}
+
export class NotificationsEnabledController extends SettingController {
getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {
- const Notifier = require('../../Notifier'); // avoids cyclical references
- if (!Notifier.isPossible()) return false;
+ if (!getNotifier().isPossible()) return false;
if (calculatedValue === null || calculatedAtLevel === "default") {
return isMasterRuleEnabled();
@@ -47,18 +52,15 @@ export class NotificationsEnabledController extends SettingController {
}
onChange(level, roomId, newValue) {
- const Notifier = require('../../Notifier'); // avoids cyclical references
-
- if (Notifier.supportsDesktopNotifications()) {
- Notifier.setEnabled(newValue);
+ if (getNotifier().supportsDesktopNotifications()) {
+ getNotifier().setEnabled(newValue);
}
}
}
export class NotificationBodyEnabledController extends SettingController {
getValueOverride(level, roomId, calculatedValue) {
- const Notifier = require('../../Notifier'); // avoids cyclical references
- if (!Notifier.isPossible()) return false;
+ if (!getNotifier().isPossible()) return false;
if (calculatedValue === null) {
return isMasterRuleEnabled();
@@ -70,8 +72,7 @@ export class NotificationBodyEnabledController extends SettingController {
export class AudioNotificationsEnabledController extends SettingController {
getValueOverride(level, roomId, calculatedValue) {
- const Notifier = require('../../Notifier'); // avoids cyclical references
- if (!Notifier.isPossible()) return false;
+ if (!getNotifier().isPossible()) return false;
// Note: Audio notifications are *not* enabled by default.
return calculatedValue;
diff --git a/src/settings/handlers/AccountSettingsHandler.js b/src/settings/handlers/AccountSettingsHandler.js
index 7b05ad0c1b..fea2e92c62 100644
--- a/src/settings/handlers/AccountSettingsHandler.js
+++ b/src/settings/handlers/AccountSettingsHandler.js
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
import MatrixClientBackedSettingsHandler from "./MatrixClientBackedSettingsHandler";
import {SettingLevel} from "../SettingsStore";
diff --git a/src/settings/handlers/DeviceSettingsHandler.js b/src/settings/handlers/DeviceSettingsHandler.js
index ed61e9f3be..44f89b9086 100644
--- a/src/settings/handlers/DeviceSettingsHandler.js
+++ b/src/settings/handlers/DeviceSettingsHandler.js
@@ -17,7 +17,7 @@ limitations under the License.
*/
import SettingsHandler from "./SettingsHandler";
-import MatrixClientPeg from "../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../MatrixClientPeg";
import {SettingLevel} from "../SettingsStore";
/**
diff --git a/src/settings/handlers/RoomAccountSettingsHandler.js b/src/settings/handlers/RoomAccountSettingsHandler.js
index 0206711db2..1e9d3f7bed 100644
--- a/src/settings/handlers/RoomAccountSettingsHandler.js
+++ b/src/settings/handlers/RoomAccountSettingsHandler.js
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
import MatrixClientBackedSettingsHandler from "./MatrixClientBackedSettingsHandler";
import {SettingLevel} from "../SettingsStore";
diff --git a/src/settings/handlers/RoomSettingsHandler.js b/src/settings/handlers/RoomSettingsHandler.js
index 79626e2186..6407818450 100644
--- a/src/settings/handlers/RoomSettingsHandler.js
+++ b/src/settings/handlers/RoomSettingsHandler.js
@@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../../MatrixClientPeg';
+import {MatrixClientPeg} from '../../MatrixClientPeg';
import MatrixClientBackedSettingsHandler from "./MatrixClientBackedSettingsHandler";
import {SettingLevel} from "../SettingsStore";
diff --git a/src/stores/ActiveWidgetStore.js b/src/stores/ActiveWidgetStore.js
index 82a7f7932c..60ea3f9106 100644
--- a/src/stores/ActiveWidgetStore.js
+++ b/src/stores/ActiveWidgetStore.js
@@ -16,7 +16,7 @@ limitations under the License.
import EventEmitter from 'events';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
/**
* Stores information about the widgets active in the app right now:
diff --git a/src/stores/GroupStore.js b/src/stores/GroupStore.js
index 637e87b728..6aad6aeaec 100644
--- a/src/stores/GroupStore.js
+++ b/src/stores/GroupStore.js
@@ -17,7 +17,7 @@ limitations under the License.
import EventEmitter from 'events';
import { groupMemberFromApiObject, groupRoomFromApiObject } from '../groups';
import FlairStore from './FlairStore';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
function parseMembersResponse(response) {
return response.chunk.map((apiMember) => groupMemberFromApiObject(apiMember));
@@ -340,4 +340,4 @@ let singletonGroupStore = null;
if (!singletonGroupStore) {
singletonGroupStore = new GroupStore();
}
-module.exports = singletonGroupStore;
+export default singletonGroupStore;
diff --git a/src/stores/LifecycleStore.js b/src/stores/LifecycleStore.js
index 91dcf0aebb..904f29f7b3 100644
--- a/src/stores/LifecycleStore.js
+++ b/src/stores/LifecycleStore.js
@@ -1,6 +1,7 @@
/*
Copyright 2017 Vector Creations Ltd
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -79,4 +80,4 @@ let singletonLifecycleStore = null;
if (!singletonLifecycleStore) {
singletonLifecycleStore = new LifecycleStore();
}
-module.exports = singletonLifecycleStore;
+export default singletonLifecycleStore;
diff --git a/src/stores/MessageComposerStore.js b/src/stores/MessageComposerStore.js
deleted file mode 100644
index ab2dbfedec..0000000000
--- a/src/stores/MessageComposerStore.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright 2017, 2018 Vector Creations Ltd
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-import { Value } from 'slate';
-
-const localStoragePrefix = 'editor_state_';
-
-/**
- * A class for storing application state to do with the message composer (specifically in-progress message drafts).
- * It does not worry about cleaning up on log out as this is handled in Lifecycle.js by localStorage.clear()
- */
-class MessageComposerStore {
- constructor() {
- this.prefix = localStoragePrefix;
- }
-
- _getKey(roomId: string): string {
- return this.prefix + roomId;
- }
-
- setEditorState(roomId: string, editorState: Value, richText: boolean) {
- localStorage.setItem(this._getKey(roomId), JSON.stringify({
- editor_state: editorState.toJSON({
- preserveSelection: true,
- // XXX: re-hydrating history is not currently supported by fromJSON
- // preserveHistory: true,
- // XXX: this seems like a workaround for selection.isSet being based on anchorKey instead of anchorPath
- preserveKeys: true,
- }),
- rich_text: richText,
- }));
- }
-
- getEditorState(roomId): {editor_state: Value, rich_text: boolean} {
- const stateStr = localStorage.getItem(this._getKey(roomId));
-
- let state;
- if (stateStr) {
- state = JSON.parse(stateStr);
-
- // if it does not have the fields we expect then bail
- if (!state || state.rich_text === undefined || state.editor_state === undefined) return;
- state.editor_state = Value.fromJSON(state.editor_state);
- }
-
- return state;
- }
-}
-
-let singletonMessageComposerStore = null;
-if (!singletonMessageComposerStore) {
- singletonMessageComposerStore = new MessageComposerStore();
-}
-module.exports = singletonMessageComposerStore;
diff --git a/src/stores/RoomListStore.js b/src/stores/RoomListStore.js
index 134870398f..a0785cf10e 100644
--- a/src/stores/RoomListStore.js
+++ b/src/stores/RoomListStore.js
@@ -16,7 +16,7 @@ limitations under the License.
import {Store} from 'flux/utils';
import dis from '../dispatcher';
import DMRoomMap from '../utils/DMRoomMap';
-import Unread from '../Unread';
+import * as Unread from '../Unread';
import SettingsStore from "../settings/SettingsStore";
/*
diff --git a/src/stores/RoomViewStore.js b/src/stores/RoomViewStore.js
index a3caf876ef..d9204193e4 100644
--- a/src/stores/RoomViewStore.js
+++ b/src/stores/RoomViewStore.js
@@ -1,6 +1,7 @@
/*
Copyright 2017 Vector Creations Ltd
Copyright 2017, 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,8 +17,8 @@ limitations under the License.
*/
import dis from '../dispatcher';
import {Store} from 'flux/utils';
-import MatrixClientPeg from '../MatrixClientPeg';
-import sdk from '../index';
+import {MatrixClientPeg} from '../MatrixClientPeg';
+import * as sdk from '../index';
import Modal from '../Modal';
import { _t } from '../languageHandler';
import { getCachedRoomIDForAlias, storeRoomAliasInCache } from '../RoomAliasCache';
@@ -357,4 +358,4 @@ let singletonRoomViewStore = null;
if (!singletonRoomViewStore) {
singletonRoomViewStore = new RoomViewStore();
}
-module.exports = singletonRoomViewStore;
+export default singletonRoomViewStore;
diff --git a/src/stores/SessionStore.js b/src/stores/SessionStore.js
index ad58f1e93d..f38bc046d0 100644
--- a/src/stores/SessionStore.js
+++ b/src/stores/SessionStore.js
@@ -1,5 +1,6 @@
/*
Copyright 2017 Vector Creations Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -86,4 +87,4 @@ let singletonSessionStore = null;
if (!singletonSessionStore) {
singletonSessionStore = new SessionStore();
}
-module.exports = singletonSessionStore;
+export default singletonSessionStore;
diff --git a/src/stores/TagOrderStore.js b/src/stores/TagOrderStore.js
index 973d27f4e7..deb6388461 100644
--- a/src/stores/TagOrderStore.js
+++ b/src/stores/TagOrderStore.js
@@ -18,7 +18,7 @@ import dis from '../dispatcher';
import GroupStore from './GroupStore';
import Analytics from '../Analytics';
import * as RoomNotifs from "../RoomNotifs";
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
const INITIAL_STATE = {
orderedTags: null,
diff --git a/src/stores/TypingStore.js b/src/stores/TypingStore.js
index 71ae4f55a3..e86d698eac 100644
--- a/src/stores/TypingStore.js
+++ b/src/stores/TypingStore.js
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from "../MatrixClientPeg";
+import {MatrixClientPeg} from "../MatrixClientPeg";
import SettingsStore from "../settings/SettingsStore";
import Timer from "../utils/Timer";
diff --git a/src/stores/WidgetEchoStore.js b/src/stores/WidgetEchoStore.js
index 0d14ed1d60..33fa45c635 100644
--- a/src/stores/WidgetEchoStore.js
+++ b/src/stores/WidgetEchoStore.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -105,4 +106,4 @@ let singletonWidgetEchoStore = null;
if (!singletonWidgetEchoStore) {
singletonWidgetEchoStore = new WidgetEchoStore();
}
-module.exports = singletonWidgetEchoStore;
+export default singletonWidgetEchoStore;
diff --git a/src/utils/DMRoomMap.js b/src/utils/DMRoomMap.js
index af65b6f001..547da0863b 100644
--- a/src/utils/DMRoomMap.js
+++ b/src/utils/DMRoomMap.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019, 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -14,8 +15,9 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import _uniq from 'lodash/uniq';
+import {Room} from "matrix-js-sdk/src/matrix";
/**
* Class that takes a Matrix Client and flips the m.direct map
@@ -144,6 +146,13 @@ export default class DMRoomMap {
return this.roomToUser[roomId];
}
+ getUniqueRoomsWithIndividuals(): {[userId: string]: Room} {
+ return Object.keys(this.roomToUser)
+ .map(r => ({userId: this.getUserIdForRoomId(r), room: this.matrixClient.getRoom(r)}))
+ .filter(r => r.userId && r.room && r.room.getInvitedAndJoinedMemberCount() === 2)
+ .reduce((obj, r) => (obj[r.userId] = r.room) && obj, {});
+ }
+
_getUserToRooms() {
if (!this.userToRooms) {
const userToRooms = this.mDirectEvent;
diff --git a/src/utils/DecryptFile.js b/src/utils/DecryptFile.js
index f193bd7709..b87b723ed7 100644
--- a/src/utils/DecryptFile.js
+++ b/src/utils/DecryptFile.js
@@ -20,7 +20,7 @@ import encrypt from 'browser-encrypt-attachment';
// Pull in a fetch polyfill so we can download encrypted attachments.
import 'isomorphic-fetch';
// Grab the client so that we can turn mxc:// URLs into https:// URLS.
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
// WARNING: We have to be very careful about what mime-types we allow into blobs,
// as for performance reasons these are now rendered via URL.createObjectURL()
diff --git a/src/utils/EventUtils.js b/src/utils/EventUtils.js
index 29af5ca9b5..8acf5ae396 100644
--- a/src/utils/EventUtils.js
+++ b/src/utils/EventUtils.js
@@ -15,7 +15,7 @@ limitations under the License.
*/
import { EventStatus } from 'matrix-js-sdk';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import shouldHideEvent from "../shouldHideEvent";
/**
* Returns whether an event should allow actions like reply, reactions, edit, etc.
diff --git a/src/utils/HostingLink.js b/src/utils/HostingLink.js
index ff1ac3d063..580ed00de5 100644
--- a/src/utils/HostingLink.js
+++ b/src/utils/HostingLink.js
@@ -18,7 +18,7 @@ import url from 'url';
import qs from 'qs';
import SdkConfig from '../SdkConfig';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
export function getHostingLink(campaign) {
const hostingLink = SdkConfig.get().hosting_signup_link;
diff --git a/src/utils/IdentityServerUtils.js b/src/utils/IdentityServerUtils.js
index cf180e3026..093d4eeabf 100644
--- a/src/utils/IdentityServerUtils.js
+++ b/src/utils/IdentityServerUtils.js
@@ -16,7 +16,7 @@ limitations under the License.
import { SERVICE_TYPES } from 'matrix-js-sdk';
import SdkConfig from '../SdkConfig';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
export function getDefaultIdentityServerUrl() {
return SdkConfig.get()['validated_server_config']['isUrl'];
diff --git a/src/utils/KeyVerificationStateObserver.js b/src/utils/KeyVerificationStateObserver.js
index ef69a6b2f0..1a35319186 100644
--- a/src/utils/KeyVerificationStateObserver.js
+++ b/src/utils/KeyVerificationStateObserver.js
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import { _t } from '../languageHandler';
export function getNameForEventRoom(userId, mxEvent) {
diff --git a/src/utils/MegolmExportEncryption.js b/src/utils/MegolmExportEncryption.js
index 2f2fc4cca7..bc9af8db78 100644
--- a/src/utils/MegolmExportEncryption.js
+++ b/src/utils/MegolmExportEncryption.js
@@ -130,7 +130,7 @@ export async function decryptMegolmKeyFile(data, password) {
* @param {String} data
* @param {String} password
* @param {Object=} options
- * @param {Nunber=} options.kdf_rounds Number of iterations to perform of the
+ * @param {Number=} options.kdf_rounds Number of iterations to perform of the
* key-derivation function.
* @return {Promise} promise for encrypted output
*/
diff --git a/src/utils/MultiInviter.js b/src/utils/MultiInviter.js
index 887d829d76..7d1c900360 100644
--- a/src/utils/MultiInviter.js
+++ b/src/utils/MultiInviter.js
@@ -15,11 +15,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import {getAddressType} from '../UserAddress';
import GroupStore from '../stores/GroupStore';
import {_t} from "../languageHandler";
-import sdk from "../index";
+import * as sdk from "../index";
import Modal from "../Modal";
import SettingsStore from "../settings/SettingsStore";
import {defer} from "./promise";
diff --git a/src/utils/PasswordScorer.js b/src/utils/PasswordScorer.js
index 3c366a73f8..9d89942bf5 100644
--- a/src/utils/PasswordScorer.js
+++ b/src/utils/PasswordScorer.js
@@ -16,7 +16,7 @@ limitations under the License.
import zxcvbn from 'zxcvbn';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import { _t, _td } from '../languageHandler';
const ZXCVBN_USER_INPUTS = [
diff --git a/src/utils/StorageManager.js b/src/utils/StorageManager.js
index 49a120a470..c5a9f7aeed 100644
--- a/src/utils/StorageManager.js
+++ b/src/utils/StorageManager.js
@@ -15,7 +15,7 @@ limitations under the License.
*/
import Matrix from 'matrix-js-sdk';
-import LocalStorageCryptoStore from 'matrix-js-sdk/lib/crypto/store/localStorage-crypto-store';
+import {LocalStorageCryptoStore} from 'matrix-js-sdk/src/crypto/store/localStorage-crypto-store';
import Analytics from '../Analytics';
const localStorage = window.localStorage;
diff --git a/src/utils/WidgetUtils.js b/src/utils/WidgetUtils.js
index 9bab78dee4..c09cd8a858 100644
--- a/src/utils/WidgetUtils.js
+++ b/src/utils/WidgetUtils.js
@@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import SdkConfig from "../SdkConfig";
import dis from '../dispatcher';
import * as url from "url";
diff --git a/src/utils/createMatrixClient.js b/src/utils/createMatrixClient.js
index dee9324460..c8ff35a584 100644
--- a/src/utils/createMatrixClient.js
+++ b/src/utils/createMatrixClient.js
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import Matrix from 'matrix-js-sdk';
+import * as Matrix from 'matrix-js-sdk';
const localStorage = window.localStorage;
diff --git a/src/utils/humanize.js b/src/utils/humanize.js
new file mode 100644
index 0000000000..6e6f17f8f4
--- /dev/null
+++ b/src/utils/humanize.js
@@ -0,0 +1,57 @@
+/*
+Copyright 2020 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import {_t} from "../languageHandler";
+
+/**
+ * Converts a timestamp into human-readable, translated, text.
+ * @param {number} timeMillis The time in millis to compare against.
+ * @returns {string} The humanized time.
+ */
+export function humanizeTime(timeMillis) {
+ // These are the constants we use for when to break the text
+ const MILLISECONDS_RECENT = 15000;
+ const MILLISECONDS_1_MIN = 75000;
+ const MINUTES_UNDER_1_HOUR = 45;
+ const MINUTES_1_HOUR = 75;
+ const HOURS_UNDER_1_DAY = 23;
+ const HOURS_1_DAY = 26;
+
+ const now = (new Date()).getTime();
+ let msAgo = now - timeMillis;
+ const minutes = Math.abs(Math.ceil(msAgo / 60000));
+ const hours = Math.ceil(minutes / 60);
+ const days = Math.ceil(hours / 24);
+
+ if (msAgo >= 0) { // Past
+ if (msAgo <= MILLISECONDS_RECENT) return _t("a few seconds ago");
+ if (msAgo <= MILLISECONDS_1_MIN) return _t("about a minute ago");
+ if (minutes <= MINUTES_UNDER_1_HOUR) return _t("%(num)s minutes ago", {num: minutes});
+ if (minutes <= MINUTES_1_HOUR) return _t("about an hour ago");
+ if (hours <= HOURS_UNDER_1_DAY) return _t("%(num)s hours ago", {num: hours});
+ if (hours <= HOURS_1_DAY) return _t("about a day ago");
+ return _t("%(num)s days ago", {num: days});
+ } else { // Future
+ msAgo = Math.abs(msAgo);
+ if (msAgo <= MILLISECONDS_RECENT) return _t("a few seconds from now");
+ if (msAgo <= MILLISECONDS_1_MIN) return _t("about a minute from now");
+ if (minutes <= MINUTES_UNDER_1_HOUR) return _t("%(num)s minutes from now", {num: minutes});
+ if (minutes <= MINUTES_1_HOUR) return _t("about an hour from now");
+ if (hours <= HOURS_UNDER_1_DAY) return _t("%(num)s hours from now", {num: hours});
+ if (hours <= HOURS_1_DAY) return _t("about a day from now");
+ return _t("%(num)s days from now", {num: days});
+ }
+}
diff --git a/src/utils/permalinks/Permalinks.js b/src/utils/permalinks/Permalinks.js
index aec7243236..1174e59da6 100644
--- a/src/utils/permalinks/Permalinks.js
+++ b/src/utils/permalinks/Permalinks.js
@@ -14,15 +14,14 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import MatrixClientPeg from "../../MatrixClientPeg";
+import {MatrixClientPeg} from "../../MatrixClientPeg";
import isIp from "is-ip";
-import utils from 'matrix-js-sdk/lib/utils';
+import * as utils from 'matrix-js-sdk/src/utils';
import SpecPermalinkConstructor, {baseUrl as matrixtoBaseUrl} from "./SpecPermalinkConstructor";
import PermalinkConstructor, {PermalinkParts} from "./PermalinkConstructor";
import RiotPermalinkConstructor from "./RiotPermalinkConstructor";
import matrixLinkify from "../../linkify-matrix";
-
-const SdkConfig = require("../../SdkConfig");
+import SdkConfig from "../../SdkConfig";
// The maximum number of servers to pick when working out which servers
// to add to permalinks. The servers are appended as ?via=example.org
diff --git a/src/utils/pillify.js b/src/utils/pillify.js
index e943cfe657..24cc8a3c67 100644
--- a/src/utils/pillify.js
+++ b/src/utils/pillify.js
@@ -14,11 +14,12 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
+import React from "react";
import ReactDOM from 'react-dom';
-import MatrixClientPeg from '../MatrixClientPeg';
+import {MatrixClientPeg} from '../MatrixClientPeg';
import SettingsStore from "../settings/SettingsStore";
-import PushProcessor from 'matrix-js-sdk/lib/pushprocessor';
-import sdk from '../index';
+import {PushProcessor} from 'matrix-js-sdk/src/pushprocessor';
+import * as sdk from '../index';
export function pillifyLinks(nodes, mxEvent) {
const room = MatrixClientPeg.get().getRoom(mxEvent.getRoomId());
diff --git a/src/utils/replaceableComponent.ts b/src/utils/replaceableComponent.ts
new file mode 100644
index 0000000000..9f617b27f3
--- /dev/null
+++ b/src/utils/replaceableComponent.ts
@@ -0,0 +1,40 @@
+/*
+Copyright 2019 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import * as sdk from '../index';
+
+/**
+ * Replaces a component with a skinned version if a skinned version exists.
+ * This decorator should only be applied to components which can be skinned. For
+ * the react-sdk this means all components should be decorated with this.
+ *
+ * The decoration works by assuming the skin has been loaded prior to the
+ * decorator being called. If that's not the case, the developer will find
+ * out quickly through various amounts of errors and explosions.
+ *
+ * For a bit more detail on how this works, see docs/skinning.md
+ * @param {string} name The dot-path name of the component being replaced.
+ * @param {React.Component} origComponent The component that can be replaced
+ * with a skinned version. If no skinned version is available, this component
+ * will be used.
+ */
+export function replaceableComponent(name: string, origComponent: React.Component) {
+ // Decorators return a function to override the class (origComponent). This
+ // ultimately assumes that `getComponent()` won't throw an error and instead
+ // return a falsey value like `null` when the skin doesn't have a component.
+ return () => sdk.getComponent(name) || origComponent;
+}
diff --git a/test/DecryptionFailureTracker-test.js b/test/DecryptionFailureTracker-test.js
index baa0545f77..7a6a42ef55 100644
--- a/test/DecryptionFailureTracker-test.js
+++ b/test/DecryptionFailureTracker-test.js
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-
import { DecryptionFailure, DecryptionFailureTracker } from '../src/DecryptionFailureTracker';
import { MatrixEvent } from 'matrix-js-sdk';
diff --git a/test/PhasedRollOut-test.js b/test/PhasedRollOut-test.js
index 600b9051f7..f02411d78d 100644
--- a/test/PhasedRollOut-test.js
+++ b/test/PhasedRollOut-test.js
@@ -11,7 +11,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import {phasedRollOutExpiredForUser} from '../src/PhasedRollOut';
const OFFSET = 6000000;
diff --git a/test/ScalarAuthClient-test.js b/test/ScalarAuthClient-test.js
index 7e944189a6..83f357811a 100644
--- a/test/ScalarAuthClient-test.js
+++ b/test/ScalarAuthClient-test.js
@@ -14,43 +14,41 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-
-import sinon from 'sinon';
-
import ScalarAuthClient from '../src/ScalarAuthClient';
-import MatrixClientPeg from '../src/MatrixClientPeg';
+import {MatrixClientPeg} from '../src/MatrixClientPeg';
import { stubClient } from './test-utils';
describe('ScalarAuthClient', function() {
- let clientSandbox;
-
beforeEach(function() {
- sinon.stub(window.localStorage, 'getItem').withArgs('mx_scalar_token').returns('brokentoken');
- clientSandbox = stubClient();
- });
-
- afterEach(function() {
- clientSandbox.restore();
- sinon.restore();
+ window.localStorage.getItem = jest.fn((arg) => {
+ if (arg === "mx_scalar_token") return "brokentoken";
+ });
+ stubClient();
});
it('should request a new token if the old one fails', async function() {
const sac = new ScalarAuthClient();
- sac._getAccountName = sinon.stub();
- sac._getAccountName.withArgs('brokentoken').rejects({
- message: "Invalid token",
+ sac._getAccountName = jest.fn((arg) => {
+ switch (arg) {
+ case "brokentoken":
+ return Promise.reject({
+ message: "Invalid token",
+ });
+ case "wokentoken":
+ return Promise.resolve(MatrixClientPeg.get().getUserId());
+ }
});
- sac._getAccountName.withArgs('wokentoken').resolves(MatrixClientPeg.get().getUserId());
- MatrixClientPeg.get().getOpenIdToken = sinon.stub().resolves('this is your openid token');
+ MatrixClientPeg.get().getOpenIdToken = jest.fn().mockResolvedValue('this is your openid token');
- sac.exchangeForScalarToken = sinon.stub().withArgs('this is your openid token').resolves('wokentoken');
+ sac.exchangeForScalarToken = jest.fn((arg) => {
+ if (arg === "this is your openid token") return Promise.resolve("wokentoken");
+ });
await sac.connect();
- expect(sac.exchangeForScalarToken.calledWith('this is your openid token')).toBeTruthy();
+ expect(sac.exchangeForScalarToken).toBeCalledWith('this is your openid token');
expect(sac.scalarToken).toEqual('wokentoken');
});
});
diff --git a/test/Terms-test.js b/test/Terms-test.js
index 3fc7b56e42..3835af3ede 100644
--- a/test/Terms-test.js
+++ b/test/Terms-test.js
@@ -14,15 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-
-import sinon from 'sinon';
-
import * as Matrix from 'matrix-js-sdk';
import { startTermsFlow, Service } from '../src/Terms';
import { stubClient } from './test-utils';
-import MatrixClientPeg from '../src/MatrixClientPeg';
+import {MatrixClientPeg} from '../src/MatrixClientPeg';
const POLICY_ONE = {
version: "six",
@@ -44,107 +40,100 @@ const IM_SERVICE_ONE = new Service(Matrix.SERVICE_TYPES.IM, 'https://imone.test'
const IM_SERVICE_TWO = new Service(Matrix.SERVICE_TYPES.IM, 'https://imtwo.test', 'a token token');
describe('Terms', function() {
- let sandbox;
-
beforeEach(function() {
- sandbox = stubClient();
- });
-
- afterEach(function() {
- sandbox.restore();
+ stubClient();
});
it('should prompt for all terms & services if no account data', async function() {
- MatrixClientPeg.get().getAccountData = sinon.stub().returns(null);
- MatrixClientPeg.get().getTerms = sinon.stub().returns({
+ MatrixClientPeg.get().getAccountData = jest.fn().mockReturnValue(null);
+ MatrixClientPeg.get().getTerms = jest.fn().mockReturnValue({
policies: {
"policy_the_first": POLICY_ONE,
},
});
- const interactionCallback = sinon.stub().resolves([]);
+ const interactionCallback = jest.fn().mockResolvedValue([]);
await startTermsFlow([IM_SERVICE_ONE], interactionCallback);
- console.log("interaction callback calls", interactionCallback.getCall(0));
+ console.log("interaction callback calls", interactionCallback.mock.calls[0]);
- expect(interactionCallback.calledWith([
+ expect(interactionCallback).toBeCalledWith([
{
service: IM_SERVICE_ONE,
policies: {
policy_the_first: POLICY_ONE,
},
},
- ])).toBeTruthy();
+ ], []);
});
it('should not prompt if all policies are signed in account data', async function() {
- MatrixClientPeg.get().getAccountData = sinon.stub().returns({
- getContent: sinon.stub().returns({
+ MatrixClientPeg.get().getAccountData = jest.fn().mockReturnValue({
+ getContent: jest.fn().mockReturnValue({
accepted: ["http://example.com/one"],
}),
});
- MatrixClientPeg.get().getTerms = sinon.stub().returns({
+ MatrixClientPeg.get().getTerms = jest.fn().mockReturnValue({
policies: {
"policy_the_first": POLICY_ONE,
},
});
- MatrixClientPeg.get().agreeToTerms = sinon.stub();
+ MatrixClientPeg.get().agreeToTerms = jest.fn();
- const interactionCallback = sinon.spy();
+ const interactionCallback = jest.fn();
await startTermsFlow([IM_SERVICE_ONE], interactionCallback);
- console.log("agreeToTerms call", MatrixClientPeg.get().agreeToTerms.getCall(0).args);
+ console.log("agreeToTerms call", MatrixClientPeg.get().agreeToTerms.mock.calls[0]);
- expect(interactionCallback.called).toBeFalsy();
- expect(MatrixClientPeg.get().agreeToTerms.calledWith(
+ expect(interactionCallback).not.toHaveBeenCalled();
+ expect(MatrixClientPeg.get().agreeToTerms).toBeCalledWith(
Matrix.SERVICE_TYPES.IM,
'https://imone.test',
'a token token',
["http://example.com/one"],
- )).toBeTruthy();
+ );
});
it("should prompt for only terms that aren't already signed", async function() {
- MatrixClientPeg.get().getAccountData = sinon.stub().returns({
- getContent: sinon.stub().returns({
+ MatrixClientPeg.get().getAccountData = jest.fn().mockReturnValue({
+ getContent: jest.fn().mockReturnValue({
accepted: ["http://example.com/one"],
}),
});
- MatrixClientPeg.get().getTerms = sinon.stub().returns({
+ MatrixClientPeg.get().getTerms = jest.fn().mockReturnValue({
policies: {
"policy_the_first": POLICY_ONE,
"policy_the_second": POLICY_TWO,
},
});
- MatrixClientPeg.get().agreeToTerms = sinon.stub();
+ MatrixClientPeg.get().agreeToTerms = jest.fn();
- const interactionCallback = sinon.stub().resolves(["http://example.com/one", "http://example.com/two"]);
+ const interactionCallback = jest.fn().mockResolvedValue(["http://example.com/one", "http://example.com/two"]);
await startTermsFlow([IM_SERVICE_ONE], interactionCallback);
- console.log("interactionCallback call", interactionCallback.getCall(0).args);
- console.log("agreeToTerms call", MatrixClientPeg.get().agreeToTerms.getCall(0).args);
+ console.log("interactionCallback call", interactionCallback.mock.calls[0]);
+ console.log("agreeToTerms call", MatrixClientPeg.get().agreeToTerms.mock.calls[0]);
- expect(interactionCallback.calledWith([
+ expect(interactionCallback).toBeCalledWith([
{
service: IM_SERVICE_ONE,
policies: {
policy_the_second: POLICY_TWO,
},
},
- ])).toBeTruthy();
- expect(MatrixClientPeg.get().agreeToTerms.calledWith(
+ ], ["http://example.com/one"]);
+ expect(MatrixClientPeg.get().agreeToTerms).toBeCalledWith(
Matrix.SERVICE_TYPES.IM,
'https://imone.test',
'a token token',
["http://example.com/one", "http://example.com/two"],
- )).toBeTruthy();
+ );
});
it("should prompt for only services with un-agreed policies", async function() {
- MatrixClientPeg.get().getAccountData = sinon.stub().returns({
- getContent: sinon.stub().returns({
+ MatrixClientPeg.get().getAccountData = jest.fn().mockReturnValue({
+ getContent: jest.fn().mockReturnValue({
accepted: ["http://example.com/one"],
}),
});
- MatrixClientPeg.get().getTerms = sinon.stub();
- MatrixClientPeg.get().getTerms.callsFake((serviceType, baseUrl, accessToken) => {
+ MatrixClientPeg.get().getTerms = jest.fn((serviceType, baseUrl, accessToken) => {
switch (baseUrl) {
case 'https://imone.test':
return {
@@ -161,35 +150,35 @@ describe('Terms', function() {
}
});
- MatrixClientPeg.get().agreeToTerms = sinon.stub();
+ MatrixClientPeg.get().agreeToTerms = jest.fn();
- const interactionCallback = sinon.stub().resolves(["http://example.com/one", "http://example.com/two"]);
+ const interactionCallback = jest.fn().mockResolvedValue(["http://example.com/one", "http://example.com/two"]);
await startTermsFlow([IM_SERVICE_ONE, IM_SERVICE_TWO], interactionCallback);
- console.log("getTerms call 0", MatrixClientPeg.get().getTerms.getCall(0).args);
- console.log("getTerms call 1", MatrixClientPeg.get().getTerms.getCall(1).args);
- console.log("interactionCallback call", interactionCallback.getCall(0).args);
- console.log("agreeToTerms call", MatrixClientPeg.get().agreeToTerms.getCall(0).args);
+ console.log("getTerms call 0", MatrixClientPeg.get().getTerms.mock.calls[0]);
+ console.log("getTerms call 1", MatrixClientPeg.get().getTerms.mock.calls[1]);
+ console.log("interactionCallback call", interactionCallback.mock.calls[0]);
+ console.log("agreeToTerms call", MatrixClientPeg.get().agreeToTerms.mock.calls[0]);
- expect(interactionCallback.calledWith([
+ expect(interactionCallback).toBeCalledWith([
{
service: IM_SERVICE_TWO,
policies: {
policy_the_second: POLICY_TWO,
},
},
- ])).toBeTruthy();
- expect(MatrixClientPeg.get().agreeToTerms.calledWith(
+ ], ["http://example.com/one"]);
+ expect(MatrixClientPeg.get().agreeToTerms).toBeCalledWith(
Matrix.SERVICE_TYPES.IM,
'https://imone.test',
'a token token',
["http://example.com/one"],
- )).toBeTruthy();
- expect(MatrixClientPeg.get().agreeToTerms.calledWith(
+ );
+ expect(MatrixClientPeg.get().agreeToTerms).toBeCalledWith(
Matrix.SERVICE_TYPES.IM,
'https://imtwo.test',
'a token token',
["http://example.com/two"],
- )).toBeTruthy();
+ );
});
});
diff --git a/test/UserActivity-test.js b/test/UserActivity-test.js
index 6c684d25e9..a30df527ae 100644
--- a/test/UserActivity-test.js
+++ b/test/UserActivity-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import lolex from 'lolex';
import jest from 'jest-mock';
import EventEmitter from 'events';
diff --git a/test/all-tests.js b/test/all-tests.js
deleted file mode 100644
index 1d4d36ebfd..0000000000
--- a/test/all-tests.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// all-tests.js
-//
-// Our master test file: uses the webpack require API to find our test files
-// and run them
-
-const context = require.context('.', true, /-test\.jsx?$/);
-context.keys().forEach(context);
diff --git a/test/autocomplete/QueryMatcher-test.js b/test/autocomplete/QueryMatcher-test.js
index 864e1da81d..03f28eb984 100644
--- a/test/autocomplete/QueryMatcher-test.js
+++ b/test/autocomplete/QueryMatcher-test.js
@@ -14,8 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-
import QueryMatcher from '../../src/autocomplete/QueryMatcher';
const OBJECTS = [
diff --git a/test/components/structures/GroupView-test.js b/test/components/structures/GroupView-test.js
index b0768d3911..fb942d2f7c 100644
--- a/test/components/structures/GroupView-test.js
+++ b/test/components/structures/GroupView-test.js
@@ -17,14 +17,13 @@ limitations under the License.
import React from 'react';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-dom/test-utils';
-import expect from 'expect';
import MockHttpBackend from 'matrix-mock-request';
-import MatrixClientPeg from '../../../src/MatrixClientPeg';
-import sdk from 'matrix-react-sdk';
+import {MatrixClientPeg} from '../../../src/MatrixClientPeg';
+import sdk from '../../skinned-sdk';
import Matrix from 'matrix-js-sdk';
-import * as TestUtils from 'test-utils';
+import * as TestUtils from '../../test-utils';
const { waitForUpdate } = TestUtils;
const GroupView = sdk.getComponent('structures.GroupView');
@@ -61,8 +60,6 @@ describe('GroupView', function() {
};
beforeEach(function() {
- TestUtils.beforeEach(this);
-
httpBackend = new MockHttpBackend();
Matrix.request(httpBackend.requestFn);
@@ -194,13 +191,13 @@ describe('GroupView', function() {
const name = ReactTestUtils.findRenderedDOMComponentWithClass(root, 'mx_GroupView_header_name');
const nameElement = ReactDOM.findDOMNode(name);
expect(nameElement).toBeTruthy();
- expect(nameElement.innerText).toContain('The name of a community');
- expect(nameElement.innerText).toContain(groupId);
+ expect(nameElement.textContent).toContain('The name of a community');
+ expect(nameElement.textContent).toContain(groupId);
const shortDesc = ReactTestUtils.findRenderedDOMComponentWithClass(root, 'mx_GroupView_header_shortDesc');
const shortDescElement = ReactDOM.findDOMNode(shortDesc);
expect(shortDescElement).toBeTruthy();
- expect(shortDescElement.innerText).toBe('This is a community');
+ expect(shortDescElement.textContent).toBe('This is a community');
});
httpBackend.when('GET', '/groups/' + groupIdEncoded + '/summary').respond(200, summaryResponse);
@@ -220,7 +217,7 @@ describe('GroupView', function() {
const longDesc = ReactTestUtils.findRenderedDOMComponentWithClass(root, 'mx_GroupView_groupDesc');
const longDescElement = ReactDOM.findDOMNode(longDesc);
expect(longDescElement).toBeTruthy();
- expect(longDescElement.innerText).toBe('This is a LONG description.');
+ expect(longDescElement.textContent).toBe('This is a LONG description.');
expect(longDescElement.innerHTML).toBe('
This is a LONG description.
');
});
@@ -334,7 +331,7 @@ describe('GroupView', function() {
const roomDetailListRoomNameElement = ReactDOM.findDOMNode(roomDetailListRoomName);
expect(roomDetailListRoomNameElement).toBeTruthy();
- expect(roomDetailListRoomNameElement.innerText).toEqual('Some room name');
+ expect(roomDetailListRoomNameElement.textContent).toEqual('Some room name');
});
httpBackend.when('GET', '/groups/' + groupIdEncoded + '/summary').respond(200, summaryResponse);
@@ -365,7 +362,7 @@ describe('GroupView', function() {
const shortDesc = ReactTestUtils.findRenderedDOMComponentWithClass(root, 'mx_GroupView_header_shortDesc');
const shortDescElement = ReactDOM.findDOMNode(shortDesc);
expect(shortDescElement).toBeTruthy();
- expect(shortDescElement.innerText).toBe('This is a community');
+ expect(shortDescElement.textContent).toBe('This is a community');
});
httpBackend.when('GET', '/groups/' + groupIdEncoded + '/summary').respond(200, summaryResponse);
diff --git a/test/components/structures/MessagePanel-test.js b/test/components/structures/MessagePanel-test.js
index b7c7b4a396..59917057a5 100644
--- a/test/components/structures/MessagePanel-test.js
+++ b/test/components/structures/MessagePanel-test.js
@@ -23,17 +23,16 @@ import ReactDOM from "react-dom";
import PropTypes from "prop-types";
const TestUtils = require('react-dom/test-utils');
const expect = require('expect');
-import sinon from 'sinon';
import { EventEmitter } from "events";
-const sdk = require('matrix-react-sdk');
+import sdk from '../../skinned-sdk';
const MessagePanel = sdk.getComponent('structures.MessagePanel');
-import MatrixClientPeg from '../../../src/MatrixClientPeg';
+import {MatrixClientPeg} from '../../../src/MatrixClientPeg';
import Matrix from 'matrix-js-sdk';
-const test_utils = require('test-utils');
-const mockclock = require('mock-clock');
+const test_utils = require('../../test-utils');
+const mockclock = require('../../mock-clock');
import Velocity from 'velocity-animate';
import MatrixClientContext from "../../../src/contexts/MatrixClientContext";
@@ -63,17 +62,16 @@ describe('MessagePanel', function() {
const clock = mockclock.clock();
const realSetTimeout = window.setTimeout;
const events = mkEvents();
- let sandbox = null;
beforeEach(function() {
- test_utils.beforeEach(this);
- sandbox = test_utils.stubClient();
+ test_utils.stubClient();
client = MatrixClientPeg.get();
client.credentials = {userId: '@me:here'};
// HACK: We assume all settings want to be disabled
- SettingsStore.getValue = sinon.stub().returns(false);
- SettingsStore.getValue.withArgs('showDisplaynameChanges').returns(true);
+ SettingsStore.getValue = jest.fn((arg) => {
+ return arg === "showDisplaynameChanges";
+ });
// This option clobbers the duration of all animations to be 1ms
// which makes unit testing a lot simpler (the animation doesn't
@@ -86,7 +84,6 @@ describe('MessagePanel', function() {
delete Velocity.mock;
clock.uninstall();
- sandbox.restore();
});
function mkEvents() {
diff --git a/test/components/structures/auth/Login-test.js b/test/components/structures/auth/Login-test.js
index 6a7982dd47..7ca210ff93 100644
--- a/test/components/structures/auth/Login-test.js
+++ b/test/components/structures/auth/Login-test.js
@@ -14,14 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-import sinon from 'sinon';
import React from 'react';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-dom/test-utils';
-import sdk from 'matrix-react-sdk';
+import sdk from '../../../skinned-sdk';
import SdkConfig from '../../../../src/SdkConfig';
-import * as TestUtils from '../../../test-utils';
import {mkServerConfig} from "../../../test-utils";
const Login = sdk.getComponent(
@@ -32,13 +29,11 @@ describe('Login', function() {
let parentDiv;
beforeEach(function() {
- TestUtils.beforeEach(this);
parentDiv = document.createElement('div');
document.body.appendChild(parentDiv);
});
afterEach(function() {
- sinon.restore();
ReactDOM.unmountComponentAtNode(parentDiv);
parentDiv.remove();
});
@@ -74,7 +69,7 @@ describe('Login', function() {
});
it('should show form without change server link when custom URLs disabled', function() {
- sinon.stub(SdkConfig, "get").returns({
+ jest.spyOn(SdkConfig, "get").mockReturnValue({
disable_custom_urls: true,
});
diff --git a/test/components/structures/auth/Registration-test.js b/test/components/structures/auth/Registration-test.js
index 9c125adacc..bf26763a79 100644
--- a/test/components/structures/auth/Registration-test.js
+++ b/test/components/structures/auth/Registration-test.js
@@ -14,14 +14,11 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-import sinon from 'sinon';
import React from 'react';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-dom/test-utils';
-import sdk from 'matrix-react-sdk';
+import sdk from '../../../skinned-sdk';
import SdkConfig from '../../../../src/SdkConfig';
-import * as TestUtils from '../../../test-utils';
import {mkServerConfig} from "../../../test-utils";
const Registration = sdk.getComponent(
@@ -32,13 +29,11 @@ describe('Registration', function() {
let parentDiv;
beforeEach(function() {
- TestUtils.beforeEach(this);
parentDiv = document.createElement('div');
document.body.appendChild(parentDiv);
});
afterEach(function() {
- sinon.restore();
ReactDOM.unmountComponentAtNode(parentDiv);
parentDiv.remove();
});
@@ -63,7 +58,7 @@ describe('Registration', function() {
});
it('should show form when custom URLs disabled', function() {
- sinon.stub(SdkConfig, "get").returns({
+ jest.spyOn(SdkConfig, "get").mockReturnValue({
disable_custom_urls: true,
});
diff --git a/test/components/stub-component.js b/test/components/stub-component.js
index 9264792ffb..a5c3b44409 100644
--- a/test/components/stub-component.js
+++ b/test/components/stub-component.js
@@ -4,7 +4,7 @@
import React from 'react';
import createReactClass from 'create-react-class';
-module.exports = function(opts) {
+export default function(opts) {
opts = opts || {};
if (!opts.displayName) {
opts.displayName = 'StubComponent';
@@ -17,4 +17,4 @@ module.exports = function(opts) {
}
return createReactClass(opts);
-};
+}
diff --git a/test/components/views/dialogs/InteractiveAuthDialog-test.js b/test/components/views/dialogs/InteractiveAuthDialog-test.js
index 5f90e0f21c..fa44fc8d92 100644
--- a/test/components/views/dialogs/InteractiveAuthDialog-test.js
+++ b/test/components/views/dialogs/InteractiveAuthDialog-test.js
@@ -14,15 +14,13 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import React from 'react';
import ReactDOM from 'react-dom';
import ReactTestUtils from 'react-dom/test-utils';
-import sinon from 'sinon';
import MatrixReactTestUtils from 'matrix-react-test-utils';
-import sdk from 'matrix-react-sdk';
-import MatrixClientPeg from '../../../../src/MatrixClientPeg';
+import sdk from '../../../skinned-sdk';
+import {MatrixClientPeg} from '../../../../src/MatrixClientPeg';
import * as test_utils from '../../../test-utils';
import {sleep} from "../../../../src/utils/promise";
@@ -33,11 +31,9 @@ const InteractiveAuthDialog = sdk.getComponent(
describe('InteractiveAuthDialog', function() {
let parentDiv;
- let sandbox;
beforeEach(function() {
- test_utils.beforeEach(this);
- sandbox = test_utils.stubClient(sandbox);
+ test_utils.stubClient();
parentDiv = document.createElement('div');
document.body.appendChild(parentDiv);
});
@@ -45,12 +41,11 @@ describe('InteractiveAuthDialog', function() {
afterEach(function() {
ReactDOM.unmountComponentAtNode(parentDiv);
parentDiv.remove();
- sandbox.restore();
});
it('Should successfully complete a password flow', function() {
- const onFinished = sinon.spy();
- const doRequest = sinon.stub().returns(Promise.resolve({a: 1}));
+ const onFinished = jest.fn();
+ const doRequest = jest.fn().mockResolvedValue({a: 1});
// tell the stub matrixclient to return a real userid
const client = MatrixClientPeg.get();
@@ -96,8 +91,8 @@ describe('InteractiveAuthDialog', function() {
expect(submitNode.disabled).toBe(false);
ReactTestUtils.Simulate.submit(formNode, {});
- expect(doRequest.callCount).toEqual(1);
- expect(doRequest.calledWithMatch({
+ expect(doRequest).toHaveBeenCalledTimes(1);
+ expect(doRequest).toBeCalledWith(expect.objectContaining({
session: "sess",
type: "m.login.password",
password: "s3kr3t",
@@ -105,12 +100,12 @@ describe('InteractiveAuthDialog', function() {
type: "m.id.user",
user: "@user:id",
},
- })).toBe(true);
+ }));
// let the request complete
return sleep(1);
- }).then(() => {
- expect(onFinished.callCount).toEqual(1);
- expect(onFinished.calledWithExactly(true, {a: 1})).toBe(true);
+ }).then(sleep(1)).then(() => {
+ expect(onFinished).toBeCalledTimes(1);
+ expect(onFinished).toBeCalledWith(true, {a: 1});
});
});
});
diff --git a/test/components/views/elements/MemberEventListSummary-test.js b/test/components/views/elements/MemberEventListSummary-test.js
index 906ba45711..6d26fa36e9 100644
--- a/test/components/views/elements/MemberEventListSummary-test.js
+++ b/test/components/views/elements/MemberEventListSummary-test.js
@@ -1,9 +1,7 @@
-import expect from 'expect';
import React from 'react';
import ReactTestUtils from 'react-dom/test-utils';
import ShallowRenderer from "react-test-renderer/shallow";
-import sdk from 'matrix-react-sdk';
-import * as languageHandler from '../../../../src/languageHandler';
+import sdk from '../../../skinned-sdk';
import * as testUtils from '../../../test-utils';
// Give MELS a matrixClient in its child context
@@ -12,8 +10,6 @@ const MemberEventListSummary = testUtils.wrapInMatrixClientContext(
);
describe('MemberEventListSummary', function() {
- let sandbox;
-
// Generate dummy event tiles for use in simulating an expanded MELS
const generateTiles = (events) => {
return events.map((e) => {
@@ -87,18 +83,8 @@ describe('MemberEventListSummary', function() {
return eventsForUsers;
};
- beforeEach(function(done) {
- testUtils.beforeEach(this);
- sandbox = testUtils.stubClient();
-
- languageHandler.setLanguage('en').then(done);
- languageHandler.setMissingEntryGenerator(function(key) {
- return key.split('|', 2)[1];
- });
- });
-
- afterEach(function() {
- sandbox.restore();
+ beforeEach(function() {
+ testUtils.stubClient();
});
it('renders expanded events if there are less than props.threshold', function() {
@@ -167,7 +153,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe("user_1 joined and left and joined");
});
@@ -203,7 +189,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe("user_1 joined and left 7 times");
});
@@ -251,7 +237,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 was unbanned, joined and left 7 times and was invited",
@@ -304,7 +290,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 was unbanned, joined and left 2 times, was banned, " +
@@ -363,7 +349,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 and one other were unbanned, joined and left 2 times and were banned",
@@ -401,7 +387,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_0 and 19 others were unbanned, joined and left 2 times and were banned",
@@ -452,7 +438,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_2 was unbanned and joined and left 2 times, user_1 was unbanned, " +
@@ -526,7 +512,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 was invited, was banned, joined, rejected their invitation, left, " +
@@ -573,7 +559,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 and one other rejected their invitations and " +
@@ -609,7 +595,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 rejected their invitation 2 times",
@@ -637,7 +623,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1 and user_2 joined 2 times",
@@ -664,7 +650,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_1, user_2 and one other joined",
@@ -689,7 +675,7 @@ describe('MemberEventListSummary', function() {
const summary = ReactTestUtils.findRenderedDOMComponentWithClass(
instance, "mx_EventListSummary_summary",
);
- const summaryText = summary.innerText;
+ const summaryText = summary.textContent;
expect(summaryText).toBe(
"user_0, user_1 and 18 others joined",
diff --git a/test/components/views/groups/GroupMemberList-test.js b/test/components/views/groups/GroupMemberList-test.js
index 3922610644..867190f6f4 100644
--- a/test/components/views/groups/GroupMemberList-test.js
+++ b/test/components/views/groups/GroupMemberList-test.js
@@ -17,14 +17,13 @@ limitations under the License.
import React from "react";
import ReactDOM from "react-dom";
import ReactTestUtils from "react-dom/test-utils";
-import expect from "expect";
import MockHttpBackend from "matrix-mock-request";
-import MatrixClientPeg from "../../../../src/MatrixClientPeg";
-import sdk from "matrix-react-sdk";
+import {MatrixClientPeg} from "../../../../src/MatrixClientPeg";
+import sdk from "../../../skinned-sdk";
import Matrix from "matrix-js-sdk";
-import * as TestUtils from "test-utils";
+import * as TestUtils from "../../../test-utils";
const { waitForUpdate } = TestUtils;
const GroupMemberList = sdk.getComponent("views.groups.GroupMemberList");
@@ -70,8 +69,6 @@ describe("GroupMemberList", function() {
};
beforeEach(function() {
- TestUtils.beforeEach(this);
-
httpBackend = new MockHttpBackend();
Matrix.request(httpBackend.requestFn);
@@ -115,7 +112,7 @@ describe("GroupMemberList", function() {
const memberList = ReactTestUtils.findRenderedDOMComponentWithClass(root, "mx_MemberList_joined");
const memberListElement = ReactDOM.findDOMNode(memberList);
expect(memberListElement).toBeTruthy();
- expect(memberListElement.innerText).toBe("Test");
+ expect(memberListElement.textContent).toBe("Test");
});
httpBackend.when("GET", "/groups/" + groupIdEncoded + "/summary").respond(200, summaryResponse);
@@ -135,7 +132,7 @@ describe("GroupMemberList", function() {
const memberList = ReactTestUtils.findRenderedDOMComponentWithClass(root, "mx_MemberList_joined");
const memberListElement = ReactDOM.findDOMNode(memberList);
expect(memberListElement).toBeTruthy();
- expect(memberListElement.innerText).toBe("Failed to load group members");
+ expect(memberListElement.textContent).toBe("Failed to load group members");
});
httpBackend.when("GET", "/groups/" + groupIdEncoded + "/summary").respond(200, summaryResponse);
diff --git a/test/components/views/messages/TextualBody-test.js b/test/components/views/messages/TextualBody-test.js
new file mode 100644
index 0000000000..755751ffb7
--- /dev/null
+++ b/test/components/views/messages/TextualBody-test.js
@@ -0,0 +1,276 @@
+/*
+Copyright 2019 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from "react";
+import expect from 'expect';
+import Adapter from "enzyme-adapter-react-16";
+import { configure, mount } from "enzyme";
+
+import sdk from "../../../skinned-sdk";
+import {mkEvent, mkStubRoom} from "../../../test-utils";
+import {MatrixClientPeg} from "../../../../src/MatrixClientPeg";
+import * as languageHandler from "../../../../src/languageHandler";
+
+const TextualBody = sdk.getComponent("views.messages.TextualBody");
+
+configure({ adapter: new Adapter() });
+
+describe("", () => {
+ afterEach(() => {
+ MatrixClientPeg.matrixClient = null;
+ });
+
+ it("renders m.emote correctly", () => {
+ MatrixClientPeg.matrixClient = {
+ getRoom: () => mkStubRoom("room_id"),
+ getAccountData: () => undefined,
+ };
+
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "winks",
+ msgtype: "m.emote",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe("* sender winks");
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe('winks');
+ });
+
+ it("renders m.notice correctly", () => {
+ MatrixClientPeg.matrixClient = {
+ getRoom: () => mkStubRoom("room_id"),
+ getAccountData: () => undefined,
+ };
+
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "bot_sender",
+ content: {
+ body: "this is a notice, probably from a bot",
+ msgtype: "m.notice",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe(ev.getContent().body);
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe(`${ ev.getContent().body }`);
+ });
+
+ describe("renders plain-text m.text correctly", () => {
+ beforeEach(() => {
+ MatrixClientPeg.matrixClient = {
+ getRoom: () => mkStubRoom("room_id"),
+ getAccountData: () => undefined,
+ };
+ });
+
+ it("simple message renders as expected", () => {
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "this is a plaintext message",
+ msgtype: "m.text",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe(ev.getContent().body);
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe(`${ ev.getContent().body }`);
+ });
+
+ // If pills were rendered within a Portal/same shadow DOM then it'd be easier to test
+ it("linkification get applied correctly into the DOM", () => {
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "Visit https://matrix.org/",
+ msgtype: "m.text",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe(ev.getContent().body);
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe('' +
+ 'Visit ' +
+ 'https://matrix.org/');
+ });
+ });
+
+ describe("renders formatted m.text correctly", () => {
+ beforeEach(() => {
+ MatrixClientPeg.matrixClient = {
+ getRoom: () => mkStubRoom("room_id"),
+ getAccountData: () => undefined,
+ getUserId: () => "@me:my_server",
+ getHomeserverUrl: () => "https://my_server/",
+ on: () => undefined,
+ removeListener: () => undefined,
+ };
+ });
+
+ it("italics, bold, underline and strikethrough render as expected", () => {
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "foo *baz* __bar__ delu",
+ msgtype: "m.text",
+ format: "org.matrix.custom.html",
+ formatted_body: "foo bazbardelu",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe("foo baz bar del u");
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe('' +
+ ev.getContent().formatted_body + '');
+ });
+
+ it("spoilers get injected properly into the DOM", () => {
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "Hey [Spoiler for movie](mxc://someserver/somefile)",
+ msgtype: "m.text",
+ format: "org.matrix.custom.html",
+ formatted_body: "Hey the movie was awesome",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe("Hey (movie) the movie was awesome");
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe('' +
+ 'Hey ' +
+ '' +
+ '(movie) ' +
+ 'the movie was awesome' +
+ '');
+ });
+
+ // If pills were rendered within a Portal/same shadow DOM then it'd be easier to test
+ it("pills get injected correctly into the DOM", () => {
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "Hey User",
+ msgtype: "m.text",
+ format: "org.matrix.custom.html",
+ formatted_body: "Hey Member",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe("Hey Member");
+ const content = wrapper.find(".mx_EventTile_body");
+ expect(content.html()).toBe('' +
+ 'Hey ' +
+ '' +
+ 'Member' +
+ '');
+ });
+ });
+
+ it("renders url previews correctly", () => {
+ languageHandler.setMissingEntryGenerator(key => key.split('|', 2)[1]);
+
+ MatrixClientPeg.matrixClient = {
+ getRoom: () => mkStubRoom("room_id"),
+ getAccountData: () => undefined,
+ getUrlPreview: (url) => new Promise(() => {}),
+ };
+
+ const ev = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ body: "Visit https://matrix.org/",
+ msgtype: "m.text",
+ },
+ event: true,
+ });
+
+ const wrapper = mount();
+ expect(wrapper.text()).toBe(ev.getContent().body);
+
+ let widgets = wrapper.find("LinkPreviewWidget");
+ // at this point we should have exactly one widget
+ expect(widgets.length).toBe(1);
+ expect(widgets.at(0).prop("link")).toBe("https://matrix.org/");
+
+ // simulate an event edit and check the transition from the old URL preview to the new one
+ const ev2 = mkEvent({
+ type: "m.room.message",
+ room: "room_id",
+ user: "sender",
+ content: {
+ "m.new_content": {
+ body: "Visit https://vector.im/ and https://riot.im/",
+ msgtype: "m.text",
+ },
+ },
+ event: true,
+ });
+ ev.makeReplaced(ev2);
+
+ wrapper.setProps({
+ mxEvent: ev,
+ replacingEventId: ev.getId(),
+ }, () => {
+ expect(wrapper.text()).toBe(ev2.getContent()["m.new_content"].body + "(edited)");
+
+ // XXX: this is to give TextualBody enough time for state to settle
+ wrapper.setState({}, () => {
+ widgets = wrapper.find("LinkPreviewWidget");
+ // at this point we should have exactly two widgets (not the matrix.org one anymore)
+ expect(widgets.length).toBe(2);
+ expect(widgets.at(0).prop("link")).toBe("https://vector.im/");
+ expect(widgets.at(1).prop("link")).toBe("https://riot.im/");
+ });
+ });
+ });
+});
+
+
diff --git a/test/components/views/rooms/MemberList-test.js b/test/components/views/rooms/MemberList-test.js
index 9a1439c2f7..cac2c5287c 100644
--- a/test/components/views/rooms/MemberList-test.js
+++ b/test/components/views/rooms/MemberList-test.js
@@ -1,13 +1,12 @@
import React from 'react';
import ReactTestUtils from 'react-dom/test-utils';
import ReactDOM from 'react-dom';
-import expect from 'expect';
import lolex from 'lolex';
-import * as TestUtils from 'test-utils';
+import * as TestUtils from '../../../test-utils';
-import sdk from '../../../../src/index';
-import MatrixClientPeg from '../../../../src/MatrixClientPeg';
+import {MatrixClientPeg} from '../../../../src/MatrixClientPeg';
+import sdk from '../../../skinned-sdk';
import {Room, RoomMember, User} from 'matrix-js-sdk';
@@ -26,7 +25,6 @@ describe('MemberList', () => {
}
let parentDiv = null;
- let sandbox = null;
let client = null;
let root = null;
let clock = null;
@@ -38,8 +36,7 @@ describe('MemberList', () => {
let defaultUsers = [];
beforeEach(function() {
- TestUtils.beforeEach(this);
- sandbox = TestUtils.stubClient(sandbox);
+ TestUtils.stubClient();
client = MatrixClientPeg.get();
client.hasLazyLoadMembersEnabled = () => false;
@@ -116,7 +113,6 @@ describe('MemberList', () => {
parentDiv.remove();
parentDiv = null;
}
- sandbox.restore();
clock.uninstall();
diff --git a/test/components/views/rooms/MessageComposerInput-test.js b/test/components/views/rooms/MessageComposerInput-test.js
deleted file mode 100644
index 60380eecd2..0000000000
--- a/test/components/views/rooms/MessageComposerInput-test.js
+++ /dev/null
@@ -1,303 +0,0 @@
-import React from 'react';
-import ReactTestUtils from 'react-dom/test-utils';
-import ReactDOM from 'react-dom';
-import expect from 'expect';
-import sinon from 'sinon';
-import * as testUtils from '../../../test-utils';
-import sdk from 'matrix-react-sdk';
-const MessageComposerInput = sdk.getComponent('views.rooms.MessageComposerInput');
-import MatrixClientPeg from '../../../../src/MatrixClientPeg';
-import {sleep} from "../../../../src/utils/promise";
-
-function addTextToDraft(text) {
- const components = document.getElementsByClassName('public-DraftEditor-content');
- if (components && components.length) {
- const textarea = components[0];
- const textEvent = document.createEvent('TextEvent');
- textEvent.initTextEvent('textInput', true, true, null, text);
- textarea.dispatchEvent(textEvent);
- }
-}
-
-// FIXME: These tests need to be updated from Draft to Slate.
-
-xdescribe('MessageComposerInput', () => {
- let parentDiv = null,
- sandbox = null,
- client = null,
- mci = null,
- room = testUtils.mkStubRoom('!DdJkzRliezrwpNebLk:matrix.org');
-
- beforeEach(function() {
- testUtils.beforeEach(this);
- sandbox = testUtils.stubClient(sandbox);
- client = MatrixClientPeg.get();
- client.credentials = {userId: '@me:domain.com'};
-
- parentDiv = document.createElement('div');
- document.body.appendChild(parentDiv);
- mci = ReactDOM.render(
- ,
- parentDiv);
- });
-
- afterEach((done) => {
- // hack: let the component finish mounting before unmounting, to avoid
- // warnings
- // (please can we make the components not setState() after
- // they are unmounted?)
- sleep(10).done(() => {
- if (parentDiv) {
- ReactDOM.unmountComponentAtNode(parentDiv);
- parentDiv.remove();
- parentDiv = null;
- }
- sandbox.restore();
- done();
- });
- });
-
- // XXX this fails
- xit('should change mode if indicator is clicked', (done) => {
- mci.enableRichtext(true);
-
- setTimeout(() => {
- const indicator = ReactTestUtils.findRenderedDOMComponentWithClass(
- mci,
- 'mx_MessageComposer_input_markdownIndicator');
- ReactTestUtils.Simulate.click(indicator);
-
- expect(mci.state.isRichTextEnabled).toEqual(false, 'should have changed mode');
- done();
- });
- });
-
- it('should not send messages when composer is empty', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(true);
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(false, 'should not send message');
- });
-
- it('should not change content unnecessarily on RTE -> Markdown conversion', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(true);
- addTextToDraft('a');
- mci.handleKeyCommand('toggle-mode');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('a');
- });
-
- it('should not change content unnecessarily on Markdown -> RTE conversion', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('a');
- mci.handleKeyCommand('toggle-mode');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('a');
- });
-
- it('should send emoji messages when rich text is enabled', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(true);
- addTextToDraft('☹');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true, 'should send message');
- });
-
- it('should send emoji messages when Markdown is enabled', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('☹');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true, 'should send message');
- });
-
- // FIXME
- // it('should convert basic Markdown to rich text correctly', () => {
- // const spy = sinon.spy(client, 'sendHtmlMessage');
- // mci.enableRichtext(false);
- // addTextToDraft('*abc*');
- // mci.handleKeyCommand('toggle-mode');
- // mci.handleReturn(sinon.stub());
- // console.error(spy.args[0][2]);
- // expect(spy.args[0][2]).toContain('abc');
- // });
- //
- // it('should convert basic rich text to Markdown correctly', () => {
- // const spy = sinon.spy(client, 'sendHtmlMessage');
- // mci.enableRichtext(true);
- // process.nextTick(() => {
- //
- // });
- // mci.handleKeyCommand('italic');
- // addTextToDraft('abc');
- // mci.handleKeyCommand('toggle-mode');
- // mci.handleReturn(sinon.stub());
- // expect(['_abc_', '*abc*']).toContain(spy.args[0][1]);
- // });
-
- it('should insert formatting characters in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- mci.handleKeyCommand('italic');
- mci.handleReturn(sinon.stub());
- expect(['__', '**']).toContain(spy.args[0][1].body);
- });
-
- it('should not entity-encode " in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('"');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('"');
- });
-
- it('should escape characters without other markup in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('\\*escaped\\*');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('*escaped*');
- });
-
- it('should escape characters with other markup in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('\\*escaped\\* *italic*');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('\\*escaped\\* *italic*');
- expect(spy.args[0][1].formatted_body).toEqual('*escaped* italic');
- });
-
- it('should not convert -_- into a horizontal rule in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('-_-');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('-_-');
- });
-
- it('should not strip tags in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('striked-out');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('striked-out');
- expect(spy.args[0][1].formatted_body).toEqual('striked-out');
- });
-
- it('should not strike-through ~~~ in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('~~~striked-out~~~');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('~~~striked-out~~~');
- });
-
- it('should not mark single unmarkedup paragraphs as HTML in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('Lorem ipsum dolor sit amet, consectetur adipiscing elit.');
- });
-
- it('should not mark two unmarkedup paragraphs as HTML in Markdown mode', () => {
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- addTextToDraft('Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n\nFusce congue sapien sed neque molestie volutpat.');
- mci.handleReturn(sinon.stub());
-
- expect(spy.calledOnce).toEqual(true);
- expect(spy.args[0][1].body).toEqual('Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n\nFusce congue sapien sed neque molestie volutpat.');
- });
-
- it('should strip tab-completed mentions so that only the display name is sent in the plain body in Markdown mode', () => {
- // Sending a HTML message because we have entities in the composer (because of completions)
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(false);
- mci.setDisplayedCompletion({
- completion: 'Some Member',
- selection: mci.state.editorState.getSelection(),
- href: `https://matrix.to/#/@some_member:domain.bla`,
- });
-
- mci.handleReturn(sinon.stub());
-
- expect(spy.args[0][1].body).toEqual(
- 'Some Member',
- 'the plaintext body should only include the display name',
- );
- expect(spy.args[0][1].formatted_body).toEqual(
- 'Some Member',
- 'the html body should contain an anchor tag with a matrix.to href and display name text',
- );
- });
-
- it('should strip tab-completed mentions so that only the display name is sent in the plain body in RTE mode', () => {
- // Sending a HTML message because we have entities in the composer (because of completions)
- const spy = sinon.spy(client, 'sendMessage');
- mci.enableRichtext(true);
- mci.setDisplayedCompletion({
- completion: 'Some Member',
- selection: mci.state.editorState.getSelection(),
- href: `https://matrix.to/#/@some_member:domain.bla`,
- });
-
- mci.handleReturn(sinon.stub());
-
- expect(spy.args[0][1].body).toEqual('Some Member');
- expect(spy.args[0][1].formatted_body).toEqual('Some Member');
- });
-
- it('should not strip non-tab-completed mentions when manually typing MD', () => {
- // Sending a HTML message because we have entities in the composer (because of completions)
- const spy = sinon.spy(client, 'sendMessage');
- // Markdown mode enabled
- mci.enableRichtext(false);
- addTextToDraft('[My Not-Tab-Completed Mention](https://matrix.to/#/@some_member:domain.bla)');
-
- mci.handleReturn(sinon.stub());
-
- expect(spy.args[0][1].body).toEqual('[My Not-Tab-Completed Mention](https://matrix.to/#/@some_member:domain.bla)');
- expect(spy.args[0][1].formatted_body).toEqual('My Not-Tab-Completed Mention');
- });
-
- it('should not strip arbitrary typed (i.e. not tab-completed) MD links', () => {
- // Sending a HTML message because we have entities in the composer (because of completions)
- const spy = sinon.spy(client, 'sendMessage');
- // Markdown mode enabled
- mci.enableRichtext(false);
- addTextToDraft('[Click here](https://some.lovely.url)');
-
- mci.handleReturn(sinon.stub());
-
- expect(spy.args[0][1].body).toEqual('[Click here](https://some.lovely.url)');
- expect(spy.args[0][1].formatted_body).toEqual('Click here');
- });
-});
diff --git a/test/components/views/rooms/RoomList-test.js b/test/components/views/rooms/RoomList-test.js
index 68168fcf29..dc92221c21 100644
--- a/test/components/views/rooms/RoomList-test.js
+++ b/test/components/views/rooms/RoomList-test.js
@@ -1,13 +1,12 @@
import React from 'react';
import ReactTestUtils from 'react-dom/test-utils';
import ReactDOM from 'react-dom';
-import expect from 'expect';
import lolex from 'lolex';
-import * as TestUtils from 'test-utils';
+import * as TestUtils from '../../../test-utils';
-import sdk from '../../../../src/index';
-import MatrixClientPeg from '../../../../src/MatrixClientPeg';
+import {MatrixClientPeg} from '../../../../src/MatrixClientPeg';
+import sdk from '../../../skinned-sdk';
import { DragDropContext } from 'react-beautiful-dnd';
import dis from '../../../../src/dispatcher';
@@ -31,7 +30,6 @@ describe('RoomList', () => {
}
let parentDiv = null;
- let sandbox = null;
let client = null;
let root = null;
const myUserId = '@me:domain';
@@ -45,8 +43,7 @@ describe('RoomList', () => {
let myOtherMember;
beforeEach(function() {
- TestUtils.beforeEach(this);
- sandbox = TestUtils.stubClient(sandbox);
+ TestUtils.stubClient();
client = MatrixClientPeg.get();
client.credentials = {userId: myUserId};
//revert this to prototype method as the test-utils monkey-patches this to return a hardcoded value
@@ -112,7 +109,6 @@ describe('RoomList', () => {
parentDiv.remove();
parentDiv = null;
}
- sandbox.restore();
clock.uninstall();
@@ -181,7 +177,7 @@ describe('RoomList', () => {
function itDoesCorrectOptimisticUpdatesForDraggedRoomTiles() {
// TODO: Re-enable dragging tests when we support dragging again.
- xdescribe('does correct optimistic update when dragging from', () => {
+ describe.skip('does correct optimistic update when dragging from', () => {
it('rooms to people', () => {
expectCorrectMove(undefined, 'im.vector.fake.direct');
});
diff --git a/test/components/views/rooms/RoomSettings-test.js b/test/components/views/rooms/RoomSettings-test.js
index 1c0bfd95dc..21d22a964c 100644
--- a/test/components/views/rooms/RoomSettings-test.js
+++ b/test/components/views/rooms/RoomSettings-test.js
@@ -1,191 +1,188 @@
// TODO: Rewrite room settings tests for dialog support
-// import React from 'react';
-// import ReactDOM from 'react-dom';
-// import expect from 'expect';
-// import jest from 'jest-mock';
-// import * as testUtils from '../../../test-utils';
-// import sdk from 'matrix-react-sdk';
-// const WrappedRoomSettings = testUtils.wrapInMatrixClientContext(sdk.getComponent('views.rooms.RoomSettings'));
-// import MatrixClientPeg from '../../../../src/MatrixClientPeg';
-// import SettingsStore from '../../../../src/settings/SettingsStore';
-//
-//
-// describe('RoomSettings', () => {
-// let parentDiv = null;
-// let sandbox = null;
-// let client = null;
-// let roomSettings = null;
-// const room = testUtils.mkStubRoom('!DdJkzRliezrwpNebLk:matrix.org');
-//
-// function expectSentStateEvent(roomId, eventType, expectedEventContent) {
-// let found = false;
-// for (const call of client.sendStateEvent.mock.calls) {
-// const [
-// actualRoomId,
-// actualEventType,
-// actualEventContent,
-// ] = call.slice(0, 3);
-//
-// if (roomId === actualRoomId && actualEventType === eventType) {
-// expect(actualEventContent).toEqual(expectedEventContent);
-// found = true;
-// break;
-// }
-// }
-// expect(found).toBe(true);
-// }
-//
-// beforeEach(function(done) {
-// testUtils.beforeEach(this);
-// sandbox = testUtils.stubClient();
-// client = MatrixClientPeg.get();
-// client.credentials = {userId: '@me:domain.com'};
-//
-// client.setRoomName = jest.fn().mockReturnValue(Promise.resolve());
-// client.setRoomTopic = jest.fn().mockReturnValue(Promise.resolve());
-// client.setRoomDirectoryVisibility = jest.fn().mockReturnValue(Promise.resolve());
-//
-// // Covers any room state event (e.g. name, avatar, topic)
-// client.sendStateEvent = jest.fn().mockReturnValue(Promise.resolve());
-//
-// // Covers room tagging
-// client.setRoomTag = jest.fn().mockReturnValue(Promise.resolve());
-// client.deleteRoomTag = jest.fn().mockReturnValue(Promise.resolve());
-//
-// // Covers any setting in the SettingsStore
-// // (including local client settings not stored via matrix)
-// SettingsStore.setValue = jest.fn().mockReturnValue(Promise.resolve());
-//
-// parentDiv = document.createElement('div');
-// document.body.appendChild(parentDiv);
-//
-// const gatherWrappedRef = (r) => {roomSettings = r;};
-//
-// // get use wrappedRef because we're using wrapInMatrixClientContext
-// ReactDOM.render(
-// ,
-// parentDiv,
-// done,
-// );
-// });
-//
-// afterEach((done) => {
-// if (parentDiv) {
-// ReactDOM.unmountComponentAtNode(parentDiv);
-// parentDiv.remove();
-// parentDiv = null;
-// }
-// sandbox.restore();
-// done();
-// });
-//
-// it('should not set when no setting is changed', (done) => {
-// roomSettings.save().then(() => {
-// expect(client.sendStateEvent).not.toHaveBeenCalled();
-// expect(client.setRoomTag).not.toHaveBeenCalled();
-// expect(client.deleteRoomTag).not.toHaveBeenCalled();
-// done();
-// });
-// });
-//
-// // XXX: Apparently we do call SettingsStore.setValue
-// xit('should not settings via the SettingsStore when no setting is changed', (done) => {
-// roomSettings.save().then(() => {
-// expect(SettingsStore.setValue).not.toHaveBeenCalled();
-// done();
-// });
-// });
-//
-// it('should set room name when it has changed', (done) => {
-// const name = "My Room Name";
-// roomSettings.setName(name);
-//
-// roomSettings.save().then(() => {
-// expect(client.setRoomName.mock.calls[0].slice(0, 2))
-// .toEqual(['!DdJkzRliezrwpNebLk:matrix.org', name]);
-//
-// done();
-// });
-// });
-//
-// it('should set room topic when it has changed', (done) => {
-// const topic = "this is a topic";
-// roomSettings.setTopic(topic);
-//
-// roomSettings.save().then(() => {
-// expect(client.setRoomTopic.mock.calls[0].slice(0, 2))
-// .toEqual(['!DdJkzRliezrwpNebLk:matrix.org', topic]);
-//
-// done();
-// });
-// });
-//
-// it('should set history visibility when it has changed', (done) => {
-// const historyVisibility = "translucent";
-// roomSettings.setState({
-// history_visibility: historyVisibility,
-// });
-//
-// roomSettings.save().then(() => {
-// expectSentStateEvent(
-// "!DdJkzRliezrwpNebLk:matrix.org",
-// "m.room.history_visibility", {history_visibility: historyVisibility},
-// );
-// done();
-// });
-// });
-//
-// // XXX: Can't test this because we `getRoomDirectoryVisibility` in `componentWillMount`
-// xit('should set room directory publicity when set to true', (done) => {
-// const isRoomPublished = true;
-// roomSettings.setState({
-// isRoomPublished,
-// }, () => {
-// roomSettings.save().then(() => {
-// expect(client.setRoomDirectoryVisibility.calls[0].arguments.slice(0, 2))
-// .toEqual("!DdJkzRliezrwpNebLk:matrix.org", isRoomPublished ? "public" : "private");
-// done();
-// });
-// });
-// });
-//
-// it('should set power levels when changed', (done) => {
-// roomSettings.onPowerLevelsChanged(42, "invite");
-//
-// roomSettings.save().then(() => {
-// expectSentStateEvent(
-// "!DdJkzRliezrwpNebLk:matrix.org",
-// "m.room.power_levels", { invite: 42 },
-// );
-// done();
-// });
-// });
-//
-// it('should set event power levels when changed', (done) => {
-// roomSettings.onPowerLevelsChanged(42, "event_levels_m.room.message");
-//
-// roomSettings.save().then(() => {
-// // We expect all state events to be set to the state_default (50)
-// // See powerLevelDescriptors in RoomSettings
-// expectSentStateEvent(
-// "!DdJkzRliezrwpNebLk:matrix.org",
-// "m.room.power_levels", {
-// events: {
-// 'm.room.message': 42,
-// 'm.room.avatar': 50,
-// 'm.room.name': 50,
-// 'm.room.canonical_alias': 50,
-// 'm.room.history_visibility': 50,
-// 'm.room.power_levels': 50,
-// 'm.room.topic': 50,
-// 'im.vector.modular.widgets': 50,
-// },
-// },
-// );
-// done();
-// });
-// });
-// });
+import React from 'react';
+import ReactDOM from 'react-dom';
+import jest from 'jest-mock';
+import * as testUtils from '../../../test-utils';
+import sdk from '../../../skinned-sdk';
+import {MatrixClientPeg} from '../../../../src/MatrixClientPeg';
+import SettingsStore from '../../../../src/settings/SettingsStore';
+
+
+describe.skip('RoomSettings', () => {
+ const WrappedRoomSettings = testUtils.wrapInMatrixClientContext(sdk.getComponent('views.rooms.RoomSettings'));
+
+ let parentDiv = null;
+ let client = null;
+ let roomSettings = null;
+ const room = testUtils.mkStubRoom('!DdJkzRliezrwpNebLk:matrix.org');
+
+ function expectSentStateEvent(roomId, eventType, expectedEventContent) {
+ let found = false;
+ for (const call of client.sendStateEvent.mock.calls) {
+ const [
+ actualRoomId,
+ actualEventType,
+ actualEventContent,
+ ] = call.slice(0, 3);
+
+ if (roomId === actualRoomId && actualEventType === eventType) {
+ expect(actualEventContent).toEqual(expectedEventContent);
+ found = true;
+ break;
+ }
+ }
+ expect(found).toBe(true);
+ }
+
+ beforeEach(function(done) {
+ testUtils.stubClient();
+ client = MatrixClientPeg.get();
+ client.credentials = {userId: '@me:domain.com'};
+
+ client.setRoomName = jest.fn().mockReturnValue(Promise.resolve());
+ client.setRoomTopic = jest.fn().mockReturnValue(Promise.resolve());
+ client.setRoomDirectoryVisibility = jest.fn().mockReturnValue(Promise.resolve());
+
+ // Covers any room state event (e.g. name, avatar, topic)
+ client.sendStateEvent = jest.fn().mockReturnValue(Promise.resolve());
+
+ // Covers room tagging
+ client.setRoomTag = jest.fn().mockReturnValue(Promise.resolve());
+ client.deleteRoomTag = jest.fn().mockReturnValue(Promise.resolve());
+
+ // Covers any setting in the SettingsStore
+ // (including local client settings not stored via matrix)
+ SettingsStore.setValue = jest.fn().mockReturnValue(Promise.resolve());
+
+ parentDiv = document.createElement('div');
+ document.body.appendChild(parentDiv);
+
+ const gatherWrappedRef = (r) => {roomSettings = r;};
+
+ // get use wrappedRef because we're using wrapInMatrixClientContext
+ ReactDOM.render(
+ ,
+ parentDiv,
+ done,
+ );
+ });
+
+ afterEach((done) => {
+ if (parentDiv) {
+ ReactDOM.unmountComponentAtNode(parentDiv);
+ parentDiv.remove();
+ parentDiv = null;
+ }
+ done();
+ });
+
+ it('should not set when no setting is changed', (done) => {
+ roomSettings.save().then(() => {
+ expect(client.sendStateEvent).not.toHaveBeenCalled();
+ expect(client.setRoomTag).not.toHaveBeenCalled();
+ expect(client.deleteRoomTag).not.toHaveBeenCalled();
+ done();
+ });
+ });
+
+ // XXX: Apparently we do call SettingsStore.setValue
+ xit('should not settings via the SettingsStore when no setting is changed', (done) => {
+ roomSettings.save().then(() => {
+ expect(SettingsStore.setValue).not.toHaveBeenCalled();
+ done();
+ });
+ });
+
+ it('should set room name when it has changed', (done) => {
+ const name = "My Room Name";
+ roomSettings.setName(name);
+
+ roomSettings.save().then(() => {
+ expect(client.setRoomName.mock.calls[0].slice(0, 2))
+ .toEqual(['!DdJkzRliezrwpNebLk:matrix.org', name]);
+
+ done();
+ });
+ });
+
+ it('should set room topic when it has changed', (done) => {
+ const topic = "this is a topic";
+ roomSettings.setTopic(topic);
+
+ roomSettings.save().then(() => {
+ expect(client.setRoomTopic.mock.calls[0].slice(0, 2))
+ .toEqual(['!DdJkzRliezrwpNebLk:matrix.org', topic]);
+
+ done();
+ });
+ });
+
+ it('should set history visibility when it has changed', (done) => {
+ const historyVisibility = "translucent";
+ roomSettings.setState({
+ history_visibility: historyVisibility,
+ });
+
+ roomSettings.save().then(() => {
+ expectSentStateEvent(
+ "!DdJkzRliezrwpNebLk:matrix.org",
+ "m.room.history_visibility", {history_visibility: historyVisibility},
+ );
+ done();
+ });
+ });
+
+ // XXX: Can't test this because we `getRoomDirectoryVisibility` in `componentWillMount`
+ xit('should set room directory publicity when set to true', (done) => {
+ const isRoomPublished = true;
+ roomSettings.setState({
+ isRoomPublished,
+ }, () => {
+ roomSettings.save().then(() => {
+ expect(client.setRoomDirectoryVisibility.calls[0].arguments.slice(0, 2))
+ .toEqual("!DdJkzRliezrwpNebLk:matrix.org", isRoomPublished ? "public" : "private");
+ done();
+ });
+ });
+ });
+
+ it('should set power levels when changed', (done) => {
+ roomSettings.onPowerLevelsChanged(42, "invite");
+
+ roomSettings.save().then(() => {
+ expectSentStateEvent(
+ "!DdJkzRliezrwpNebLk:matrix.org",
+ "m.room.power_levels", { invite: 42 },
+ );
+ done();
+ });
+ });
+
+ it('should set event power levels when changed', (done) => {
+ roomSettings.onPowerLevelsChanged(42, "event_levels_m.room.message");
+
+ roomSettings.save().then(() => {
+ // We expect all state events to be set to the state_default (50)
+ // See powerLevelDescriptors in RoomSettings
+ expectSentStateEvent(
+ "!DdJkzRliezrwpNebLk:matrix.org",
+ "m.room.power_levels", {
+ events: {
+ 'm.room.message': 42,
+ 'm.room.avatar': 50,
+ 'm.room.name': 50,
+ 'm.room.canonical_alias': 50,
+ 'm.room.history_visibility': 50,
+ 'm.room.power_levels': 50,
+ 'm.room.topic': 50,
+ 'im.vector.modular.widgets': 50,
+ },
+ },
+ );
+ done();
+ });
+ });
+});
diff --git a/test/editor/caret-test.js b/test/editor/caret-test.js
index 9da28bff95..f0c171c7c9 100644
--- a/test/editor/caret-test.js
+++ b/test/editor/caret-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import {getLineAndNodePosition} from "../../src/editor/caret";
import EditorModel from "../../src/editor/model";
import {createPartCreator} from "./mock";
diff --git a/test/editor/deserialize-test.js b/test/editor/deserialize-test.js
index ae25e45126..1c58a6c40b 100644
--- a/test/editor/deserialize-test.js
+++ b/test/editor/deserialize-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import {parseEvent} from "../../src/editor/deserialize";
import {createPartCreator} from "./mock";
diff --git a/test/editor/diff-test.js b/test/editor/diff-test.js
index ebcb058baa..4637206b27 100644
--- a/test/editor/diff-test.js
+++ b/test/editor/diff-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import {diffDeletion, diffAtCaret} from "../../src/editor/diff";
describe('editor/diff', function() {
diff --git a/test/editor/history-test.js b/test/editor/history-test.js
index 4f227f74dd..e54c1e7ea9 100644
--- a/test/editor/history-test.js
+++ b/test/editor/history-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import HistoryManager, {MAX_STEP_LENGTH} from "../../src/editor/history";
describe('editor/history', function() {
diff --git a/test/editor/model-test.js b/test/editor/model-test.js
index c5f2a2ef12..826dde3d68 100644
--- a/test/editor/model-test.js
+++ b/test/editor/model-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import EditorModel from "../../src/editor/model";
import {createPartCreator} from "./mock";
diff --git a/test/editor/position-test.js b/test/editor/position-test.js
index 7ac4284c60..90f40c21a7 100644
--- a/test/editor/position-test.js
+++ b/test/editor/position-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import EditorModel from "../../src/editor/model";
import {createPartCreator} from "./mock";
diff --git a/test/editor/range-test.js b/test/editor/range-test.js
index 468cb60c76..53fb6cb765 100644
--- a/test/editor/range-test.js
+++ b/test/editor/range-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import EditorModel from "../../src/editor/model";
import {createPartCreator} from "./mock";
diff --git a/test/editor/serialize-test.js b/test/editor/serialize-test.js
index 2e7712e6e6..7517e46437 100644
--- a/test/editor/serialize-test.js
+++ b/test/editor/serialize-test.js
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
import EditorModel from "../../src/editor/model";
import {htmlSerializeIfNeeded} from "../../src/editor/serialize";
import {createPartCreator} from "./mock";
diff --git a/test/end-to-end-tests/Windows.md b/test/end-to-end-tests/Windows.md
new file mode 100644
index 0000000000..dee4fabb3f
--- /dev/null
+++ b/test/end-to-end-tests/Windows.md
@@ -0,0 +1,39 @@
+# Running the end-to-end tests on Windows
+
+Windows is not the best platform to run the tests on, but if you have to, enable Windows Subsystem for Linux (WSL)
+and start following these steps to get going:
+
+1. Navigate to your working directory (`cd /mnt/c/users/travisr/whatever/matrix-react-sdk` for example).
+2. Run `sudo apt-get install unzip python3 virtualenv dos2unix`
+3. Run `dos2unix ./test/end-to-end-tests/*.sh ./test/end-to-end-tests/synapse/*.sh ./test/end-to-end-tests/riot/*.sh`
+4. Install NodeJS for ubuntu:
+ ```bash
+ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
+ sudo apt-get update
+ sudo apt-get install nodejs
+ ```
+5. Start Riot on Windows through `yarn start`
+6. While that builds... Run:
+ ```bash
+ sudo apt-get install x11-apps
+ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
+ sudo dpkg -i google-chrome-stable_current_amd64.deb
+ sudo apt -f install
+ ```
+7. Run:
+ ```bash
+ cd ./test/end-to-end-tests
+ ./synapse/install.sh
+ ./run.sh --riot-url http://localhost:8080 --no-sandbox
+ ```
+
+Note that using `yarn test:e2e` probably won't work for you. You might also have to use the config.json from the
+`riot/config-template` directory in order to actually succeed at the tests.
+
+Also note that you'll have to use `--no-sandbox` otherwise Chrome will complain that there's no sandbox available. You
+could probably fix this with enough effort, or you could run a headless Chrome in the WSL container without a sandbox.
+
+
+Reference material that isn't fully represented in the steps above (but snippets have been borrowed):
+* https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx
+* https://gist.github.com/drexler/d70ab957f964dbef1153d46bd853c775
diff --git a/test/end-to-end-tests/src/logbuffer.js b/test/end-to-end-tests/src/logbuffer.js
index d586dc8b84..873363c2ec 100644
--- a/test/end-to-end-tests/src/logbuffer.js
+++ b/test/end-to-end-tests/src/logbuffer.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/logger.js b/test/end-to-end-tests/src/logger.js
index 283d07f163..f5a338e2c7 100644
--- a/test/end-to-end-tests/src/logger.js
+++ b/test/end-to-end-tests/src/logger.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/rest/consent.js b/test/end-to-end-tests/src/rest/consent.js
index 1e36f541a3..956441571b 100644
--- a/test/end-to-end-tests/src/rest/consent.js
+++ b/test/end-to-end-tests/src/rest/consent.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/rest/creator.js b/test/end-to-end-tests/src/rest/creator.js
index fde54014b2..03b2e099bc 100644
--- a/test/end-to-end-tests/src/rest/creator.js
+++ b/test/end-to-end-tests/src/rest/creator.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -71,12 +72,12 @@ module.exports = class RestSessionCreator {
async _authenticate(username, password) {
const requestBody = {
- "type": "m.login.password",
- "identifier": {
- "type": "m.id.user",
- "user": username,
- },
- "password": password,
+ "type": "m.login.password",
+ "identifier": {
+ "type": "m.id.user",
+ "user": username,
+ },
+ "password": password,
};
const url = `${this.hsUrl}/_matrix/client/r0/login`;
const responseBody = await request.post({url, json: true, body: requestBody});
diff --git a/test/end-to-end-tests/src/rest/multi.js b/test/end-to-end-tests/src/rest/multi.js
index e58b9f3f57..570879bff7 100644
--- a/test/end-to-end-tests/src/rest/multi.js
+++ b/test/end-to-end-tests/src/rest/multi.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/rest/room.js b/test/end-to-end-tests/src/rest/room.js
index 429a29c31a..94afce1dac 100644
--- a/test/end-to-end-tests/src/rest/room.js
+++ b/test/end-to-end-tests/src/rest/room.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/scenarios/directory.js b/test/end-to-end-tests/src/scenarios/directory.js
index 3ae728a5b7..ca2f99f192 100644
--- a/test/end-to-end-tests/src/scenarios/directory.js
+++ b/test/end-to-end-tests/src/scenarios/directory.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/scenarios/e2e-encryption.js b/test/end-to-end-tests/src/scenarios/e2e-encryption.js
index 8df374bacb..2f08acf417 100644
--- a/test/end-to-end-tests/src/scenarios/e2e-encryption.js
+++ b/test/end-to-end-tests/src/scenarios/e2e-encryption.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/scenarios/lazy-loading.js b/test/end-to-end-tests/src/scenarios/lazy-loading.js
index be5a91bb71..0c45b0d083 100644
--- a/test/end-to-end-tests/src/scenarios/lazy-loading.js
+++ b/test/end-to-end-tests/src/scenarios/lazy-loading.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/session.js b/test/end-to-end-tests/src/session.js
index 65cec6fef0..f25c5056ad 100644
--- a/test/end-to-end-tests/src/session.js
+++ b/test/end-to-end-tests/src/session.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/accept-invite.js b/test/end-to-end-tests/src/usecases/accept-invite.js
index 085c60aa6a..3f208cc1fc 100644
--- a/test/end-to-end-tests/src/usecases/accept-invite.js
+++ b/test/end-to-end-tests/src/usecases/accept-invite.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -23,7 +24,7 @@ module.exports = async function acceptInvite(session, name) {
return {inviteHandle, text};
}));
const inviteHandle = invitesWithText.find(({inviteHandle, text}) => {
- return text.trim() === name;
+ return text.trim() === name;
}).inviteHandle;
await inviteHandle.click();
diff --git a/test/end-to-end-tests/src/usecases/create-room.js b/test/end-to-end-tests/src/usecases/create-room.js
index 75abdc78f4..140748bca7 100644
--- a/test/end-to-end-tests/src/usecases/create-room.js
+++ b/test/end-to-end-tests/src/usecases/create-room.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/dialog.js b/test/end-to-end-tests/src/usecases/dialog.js
index 7b5d4d09fa..d4ae97dff9 100644
--- a/test/end-to-end-tests/src/usecases/dialog.js
+++ b/test/end-to-end-tests/src/usecases/dialog.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/invite.js b/test/end-to-end-tests/src/usecases/invite.js
index 814ecd30a6..6bee5dfd6f 100644
--- a/test/end-to-end-tests/src/usecases/invite.js
+++ b/test/end-to-end-tests/src/usecases/invite.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/join.js b/test/end-to-end-tests/src/usecases/join.js
index bc292a0768..655c0be686 100644
--- a/test/end-to-end-tests/src/usecases/join.js
+++ b/test/end-to-end-tests/src/usecases/join.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/memberlist.js b/test/end-to-end-tests/src/usecases/memberlist.js
index 42601b6610..e974eea95b 100644
--- a/test/end-to-end-tests/src/usecases/memberlist.js
+++ b/test/end-to-end-tests/src/usecases/memberlist.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/room-settings.js b/test/end-to-end-tests/src/usecases/room-settings.js
index 5b425f14b7..f526312f8a 100644
--- a/test/end-to-end-tests/src/usecases/room-settings.js
+++ b/test/end-to-end-tests/src/usecases/room-settings.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -55,6 +56,7 @@ module.exports = async function changeRoomSettings(session, settings) {
await session.replaceInputText(aliasField, settings.alias.substring(1, settings.alias.lastIndexOf(":")));
const addButton = await session.query(".mx_RoomSettingsDialog .mx_AliasSettings .mx_AccessibleButton");
await addButton.click();
+ await session.delay(10); // delay to give time for the validator to run and check the alias
session.log.done();
}
diff --git a/test/end-to-end-tests/src/usecases/settings.js b/test/end-to-end-tests/src/usecases/settings.js
index ec675157f2..a405fde9fb 100644
--- a/test/end-to-end-tests/src/usecases/settings.js
+++ b/test/end-to-end-tests/src/usecases/settings.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/signup.js b/test/end-to-end-tests/src/usecases/signup.js
index fd2b948572..ef8a259091 100644
--- a/test/end-to-end-tests/src/usecases/signup.js
+++ b/test/end-to-end-tests/src/usecases/signup.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/usecases/timeline.js b/test/end-to-end-tests/src/usecases/timeline.js
index 3ff9e0f5b4..3889dce108 100644
--- a/test/end-to-end-tests/src/usecases/timeline.js
+++ b/test/end-to-end-tests/src/usecases/timeline.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -90,7 +91,7 @@ module.exports.checkTimelineContains = async function(session, expectedMessages,
expectedMessages.forEach((expectedMessage) => {
const foundMessage = timelineMessages.find((message) => {
return message.sender === expectedMessage.sender &&
- message.body === expectedMessage.body;
+ message.body === expectedMessage.body;
});
try {
assertMessage(foundMessage, expectedMessage);
diff --git a/test/end-to-end-tests/src/usecases/verify.js b/test/end-to-end-tests/src/usecases/verify.js
index 11ff98d097..5f507f96e6 100644
--- a/test/end-to-end-tests/src/usecases/verify.js
+++ b/test/end-to-end-tests/src/usecases/verify.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/end-to-end-tests/src/util.js b/test/end-to-end-tests/src/util.js
index 699b11b5ce..cc7391fa9f 100644
--- a/test/end-to-end-tests/src/util.js
+++ b/test/end-to-end-tests/src/util.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/i18n-test/languageHandler-test.js b/test/i18n-test/languageHandler-test.js
index 8f21638703..7968186e9e 100644
--- a/test/i18n-test/languageHandler-test.js
+++ b/test/i18n-test/languageHandler-test.js
@@ -5,17 +5,11 @@ import * as languageHandler from '../../src/languageHandler';
const testUtils = require('../test-utils');
describe('languageHandler', function() {
- let sandbox;
-
beforeEach(function(done) {
- testUtils.beforeEach(this);
- sandbox = testUtils.stubClient();
+ testUtils.stubClient();
languageHandler.setLanguage('en').then(done);
- });
-
- afterEach(function() {
- sandbox.restore();
+ languageHandler.setMissingEntryGenerator(key => key.split("|", 2)[1]);
});
it('translates a string to german', function() {
diff --git a/test/mock-clock.js b/test/mock-clock.js
index 103e186c1f..1a4d6086de 100644
--- a/test/mock-clock.js
+++ b/test/mock-clock.js
@@ -1,5 +1,6 @@
/*
Copyright (c) 2008-2015 Pivotal Labs
+Copyright 2019 The Matrix.org Foundation C.I.C.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -25,7 +26,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* jasmine-core and exposed as a standalone module. The interface is just the
* same as that of jasmine.clock. For example:
*
- * var mock_clock = require("mock-clock").clock();
+ * var mock_clock = require("../../mock-clock").clock();
* mock_clock.install();
* setTimeout(function() {
* timerCallback();
@@ -411,10 +412,10 @@ j$.MockDate = function() {
return MockDate;
}();
-const clock = new j$.Clock(global, function() { return new j$.DelayedFunctionScheduler(); }, new j$.MockDate(global));
+const _clock = new j$.Clock(global, function() { return new j$.DelayedFunctionScheduler(); }, new j$.MockDate(global));
-module.exports.clock = function() {
- return clock;
-};
+export function clock() {
+ return _clock;
+}
diff --git a/test/notifications/ContentRules-test.js b/test/notifications/ContentRules-test.js
index b58667fee9..3bf0a0426d 100644
--- a/test/notifications/ContentRules-test.js
+++ b/test/notifications/ContentRules-test.js
@@ -58,10 +58,6 @@ var USERNAME_RULE = {
describe("ContentRules", function() {
- beforeEach(function() {
- test_utils.beforeEach(this);
- });
-
describe("parseContentRules", function() {
it("should handle there being no keyword rules", function() {
var rules = { 'global': { 'content': [
diff --git a/test/setupTests.js b/test/setupTests.js
new file mode 100644
index 0000000000..9c2d16a8df
--- /dev/null
+++ b/test/setupTests.js
@@ -0,0 +1,4 @@
+import * as languageHandler from "../src/languageHandler";
+
+languageHandler.setLanguage('en');
+languageHandler.setMissingEntryGenerator(key => key.split("|", 2)[1]);
diff --git a/test/skinned-sdk.js b/test/skinned-sdk.js
index 1ad361d59d..bc13d78815 100644
--- a/test/skinned-sdk.js
+++ b/test/skinned-sdk.js
@@ -9,16 +9,10 @@
* app to provide
*/
-// for ES6 stuff like startsWith() and Object.values() that babel doesn't do by
-// default
-require('babel-polyfill');
+import * as sdk from "../src/index";
+import stubComponent from "./components/stub-component";
-const sdk = require("../src/index");
-
-const skin = require('../src/component-index.js');
-const stubComponent = require('./components/stub-component.js');
-
-const components = skin.components;
+const components = {};
components['structures.LeftPanel'] = stubComponent();
components['structures.RightPanel'] = stubComponent();
components['structures.RoomDirectory'] = stubComponent();
@@ -31,6 +25,6 @@ components['views.messages.MessageTimestamp'] = stubComponent({displayName: 'Mes
components['views.messages.SenderProfile'] = stubComponent({displayName: 'SenderProfile'});
components['views.rooms.SearchBar'] = stubComponent();
-sdk.loadSkin(skin);
+sdk.loadSkin({components});
-module.exports = sdk;
+export default sdk;
diff --git a/test/stores/RoomViewStore-test.js b/test/stores/RoomViewStore-test.js
index 77dfb37b0a..41252103e7 100644
--- a/test/stores/RoomViewStore-test.js
+++ b/test/stores/RoomViewStore-test.js
@@ -1,32 +1,22 @@
-import expect from 'expect';
-
import RoomViewStore from '../../src/stores/RoomViewStore';
-
-import peg from '../../src/MatrixClientPeg';
+import {MatrixClientPeg as peg} from '../../src/MatrixClientPeg';
import * as testUtils from '../test-utils';
const dispatch = testUtils.getDispatchForStore(RoomViewStore);
describe('RoomViewStore', function() {
- let sandbox;
-
beforeEach(function() {
- testUtils.beforeEach(this);
- sandbox = testUtils.stubClient();
+ testUtils.stubClient();
peg.get().credentials = { userId: "@test:example.com" };
// Reset the state of the store
RoomViewStore.reset();
});
- afterEach(function() {
- sandbox.restore();
- });
-
it('can be used to view a room by ID and join', function(done) {
- peg.get().joinRoom = (roomAddress) => {
+ peg.get().joinRoom = async (roomAddress) => {
expect(roomAddress).toBe("!randomcharacters:aser.ver");
done();
};
@@ -37,13 +27,7 @@ describe('RoomViewStore', function() {
});
it('can be used to view a room by alias and join', function(done) {
- peg.get().getRoomIdForAlias.returns(Promise.resolve({room_id: "!randomcharacters:aser.ver"}));
- peg.get().joinRoom = (roomAddress) => {
- expect(roomAddress).toBe("#somealias2:aser.ver");
- done();
- };
-
- RoomViewStore.addListener(() => {
+ const token = RoomViewStore.addListener(() => {
// Wait until the room alias has resolved and the room ID is
if (!RoomViewStore.isRoomLoading()) {
expect(RoomViewStore.getRoomId()).toBe("!randomcharacters:aser.ver");
@@ -52,6 +36,13 @@ describe('RoomViewStore', function() {
}
});
+ peg.get().getRoomIdForAlias.mockResolvedValue({room_id: "!randomcharacters:aser.ver"});
+ peg.get().joinRoom = async (roomAddress) => {
+ token.remove(); // stop RVS listener
+ expect(roomAddress).toBe("#somealias2:aser.ver");
+ done();
+ };
+
dispatch({ action: 'view_room', room_alias: '#somealias2:aser.ver' });
});
});
diff --git a/test/test-utils.js b/test/test-utils.js
index 5c8c7f8a10..fdd50a8792 100644
--- a/test/test-utils.js
+++ b/test/test-utils.js
@@ -1,35 +1,13 @@
"use strict";
-import sinon from 'sinon';
import React from 'react';
-import peg from '../src/MatrixClientPeg';
+import {MatrixClientPeg as peg} from '../src/MatrixClientPeg';
import dis from '../src/dispatcher';
-import jssdk from 'matrix-js-sdk';
import {makeType} from "../src/utils/TypeUtils";
import {ValidatedServerConfig} from "../src/utils/AutoDiscoveryUtils";
import ShallowRenderer from 'react-test-renderer/shallow';
import MatrixClientContext from "../src/contexts/MatrixClientContext";
-const MatrixEvent = jssdk.MatrixEvent;
-
-/**
- * Perform common actions before each test case, e.g. printing the test case
- * name to stdout.
- * @param {Mocha.Context} context The test context
- */
-export function beforeEach(context) {
- const desc = context.currentTest.fullTitle();
-
- console.log();
-
- // this puts a mark in the chrome devtools timeline, which can help
- // figure out what's been going on.
- if (console.timeStamp) {
- console.timeStamp(desc);
- }
-
- console.log(desc);
- console.log(new Array(1 + desc.length).join("="));
-}
+import {MatrixEvent} from "matrix-js-sdk/src/models/event";
export function getRenderer() {
// Old: ReactTestUtils.createRenderer();
@@ -43,12 +21,8 @@ export function getRenderer() {
* TODO: once the components are updated to get their MatrixClients from
* the react context, we can get rid of this and just inject a test client
* via the context instead.
- *
- * @returns {sinon.Sandbox}; remember to call sandbox.restore afterwards.
*/
export function stubClient() {
- const sandbox = sinon.sandbox.create();
-
const client = createTestClient();
// stub out the methods in MatrixClientPeg
@@ -57,12 +31,11 @@ export function stubClient() {
// so we do this for each method
const methods = ['get', 'unset', 'replaceUsingCreds'];
for (let i = 0; i < methods.length; i++) {
- sandbox.stub(peg, methods[i]);
+ peg[methods[i]] = jest.spyOn(peg, methods[i]);
}
// MatrixClientPeg.get() is called a /lot/, so implement it with our own
// fast stub function rather than a sinon stub
peg.get = function() { return client; };
- return sandbox;
}
/**
@@ -72,27 +45,27 @@ export function stubClient() {
*/
export function createTestClient() {
return {
- getHomeserverUrl: sinon.stub(),
- getIdentityServerUrl: sinon.stub(),
- getDomain: sinon.stub().returns("matrix.rog"),
- getUserId: sinon.stub().returns("@userId:matrix.rog"),
+ getHomeserverUrl: jest.fn(),
+ getIdentityServerUrl: jest.fn(),
+ getDomain: jest.fn().mockReturnValue("matrix.rog"),
+ getUserId: jest.fn().mockReturnValue("@userId:matrix.rog"),
- getPushActionsForEvent: sinon.stub(),
- getRoom: sinon.stub().returns(mkStubRoom()),
- getRooms: sinon.stub().returns([]),
- getVisibleRooms: sinon.stub().returns([]),
- getGroups: sinon.stub().returns([]),
- loginFlows: sinon.stub(),
- on: sinon.stub(),
- removeListener: sinon.stub(),
- isRoomEncrypted: sinon.stub().returns(false),
- peekInRoom: sinon.stub().returns(Promise.resolve(mkStubRoom())),
+ getPushActionsForEvent: jest.fn(),
+ getRoom: jest.fn().mockReturnValue(mkStubRoom()),
+ getRooms: jest.fn().mockReturnValue([]),
+ getVisibleRooms: jest.fn().mockReturnValue([]),
+ getGroups: jest.fn().mockReturnValue([]),
+ loginFlows: jest.fn(),
+ on: jest.fn(),
+ removeListener: jest.fn(),
+ isRoomEncrypted: jest.fn().mockReturnValue(false),
+ peekInRoom: jest.fn().mockResolvedValue(mkStubRoom()),
- paginateEventTimeline: sinon.stub().returns(Promise.resolve()),
- sendReadReceipt: sinon.stub().returns(Promise.resolve()),
- getRoomIdForAlias: sinon.stub().returns(Promise.resolve()),
- getRoomDirectoryVisibility: sinon.stub().returns(Promise.resolve()),
- getProfileInfo: sinon.stub().returns(Promise.resolve({})),
+ paginateEventTimeline: jest.fn().mockResolvedValue(undefined),
+ sendReadReceipt: jest.fn().mockResolvedValue(undefined),
+ getRoomIdForAlias: jest.fn().mockResolvedValue(undefined),
+ getRoomDirectoryVisibility: jest.fn().mockResolvedValue(undefined),
+ getProfileInfo: jest.fn().mockResolvedValue({}),
getAccountData: (type) => {
return mkEvent({
type,
@@ -101,9 +74,9 @@ export function createTestClient() {
});
},
mxcUrlToHttp: (mxc) => 'http://this.is.a.url/',
- setAccountData: sinon.stub(),
- sendTyping: sinon.stub().returns(Promise.resolve({})),
- sendMessage: () => Promise.resolve({}),
+ setAccountData: jest.fn(),
+ sendTyping: jest.fn().mockResolvedValue({}),
+ sendMessage: () => jest.fn().mockResolvedValue({}),
getSyncState: () => "SYNCING",
generateClientSecret: () => "t35tcl1Ent5ECr3T",
isGuest: () => false,
@@ -234,15 +207,16 @@ export function mkStubRoom(roomId = null) {
const stubTimeline = { getEvents: () => [] };
return {
roomId,
- getReceiptsForEvent: sinon.stub().returns([]),
- getMember: sinon.stub().returns({
+ getReceiptsForEvent: jest.fn().mockReturnValue([]),
+ getMember: jest.fn().mockReturnValue({
userId: '@member:domain.bla',
name: 'Member',
+ rawDisplayName: 'Member',
roomId: roomId,
getAvatarUrl: () => 'mxc://avatar.url/image.png',
}),
- getMembersWithMembership: sinon.stub().returns([]),
- getJoinedMembers: sinon.stub().returns([]),
+ getMembersWithMembership: jest.fn().mockReturnValue([]),
+ getJoinedMembers: jest.fn().mockReturnValue([]),
getPendingEvents: () => [],
getLiveTimeline: () => stubTimeline,
getUnfilteredTimelineSet: () => null,
@@ -251,12 +225,12 @@ export function mkStubRoom(roomId = null) {
getVersion: () => '1',
shouldUpgradeToVersion: () => null,
getMyMembership: () => "join",
- maySendMessage: sinon.stub().returns(true),
+ maySendMessage: jest.fn().mockReturnValue(true),
currentState: {
- getStateEvents: sinon.stub(),
- mayClientSendStateEvent: sinon.stub().returns(true),
- maySendStateEvent: sinon.stub().returns(true),
- maySendEvent: sinon.stub().returns(true),
+ getStateEvents: jest.fn(),
+ mayClientSendStateEvent: jest.fn().mockReturnValue(true),
+ maySendStateEvent: jest.fn().mockReturnValue(true),
+ maySendEvent: jest.fn().mockReturnValue(true),
members: [],
},
tags: {
@@ -264,9 +238,9 @@ export function mkStubRoom(roomId = null) {
order: 0.5,
},
},
- setBlacklistUnverifiedDevices: sinon.stub(),
- on: sinon.stub(),
- removeListener: sinon.stub(),
+ setBlacklistUnverifiedDevices: jest.fn(),
+ on: jest.fn(),
+ removeListener: jest.fn(),
};
}
@@ -309,7 +283,7 @@ export function wrapInMatrixClientContext(WrappedComponent) {
/**
* Call fn before calling componentDidUpdate on a react component instance, inst.
* @param {React.Component} inst an instance of a React component.
- * @param {integer} updates Number of updates to wait for. (Defaults to 1.)
+ * @param {number} updates Number of updates to wait for. (Defaults to 1.)
* @returns {Promise} promise that resolves when componentDidUpdate is called on
* given component instance.
*/
diff --git a/test/utils/MegolmExportEncryption-test.js b/test/utils/MegolmExportEncryption-test.js
index fbd945ced6..1fd305b0a6 100644
--- a/test/utils/MegolmExportEncryption-test.js
+++ b/test/utils/MegolmExportEncryption-test.js
@@ -16,10 +16,15 @@ limitations under the License.
"use strict";
-import * as MegolmExportEncryption from '../../src/utils/MegolmExportEncryption';
+import {TextEncoder} from "util";
+import nodeCrypto from "crypto";
+import { Crypto } from "@peculiar/webcrypto";
-import * as testUtils from '../test-utils';
-import expect from 'expect';
+const webCrypto = new Crypto();
+
+function getRandomValues(buf) {
+ return nodeCrypto.randomFillSync(buf);
+}
const TEST_VECTORS=[
[
@@ -59,23 +64,22 @@ const TEST_VECTORS=[
"bWnSXS9oymiqwUIGs08sXI33ZA==\n" +
"-----END MEGOLM SESSION DATA-----",
],
-]
-;
+];
function stringToArray(s) {
return new TextEncoder().encode(s).buffer;
}
describe('MegolmExportEncryption', function() {
- before(function() {
- // if we don't have subtlecrypto, go home now
- if (!window.crypto.subtle && !window.crypto.webkitSubtle) {
- this.skip();
- }
+ let MegolmExportEncryption;
+
+ beforeAll(() => {
+ window.crypto = { subtle: webCrypto.subtle, getRandomValues };
+ MegolmExportEncryption = require("../../src/utils/MegolmExportEncryption");
});
- beforeEach(function() {
- testUtils.beforeEach(this);
+ afterAll(() => {
+ window.crypto = undefined;
});
describe('decrypt', function() {
@@ -114,7 +118,8 @@ cissyYBxjsfsAn
});
});
- it('should decrypt a range of inputs', function(done) {
+ // TODO find a subtlecrypto shim which doesn't break this test
+ it.skip('should decrypt a range of inputs', function(done) {
function next(i) {
if (i >= TEST_VECTORS.length) {
done();
diff --git a/test/utils/permalinks/Permalinks-test.js b/test/utils/permalinks/Permalinks-test.js
index 32a42a7728..72cd66cb69 100644
--- a/test/utils/permalinks/Permalinks-test.js
+++ b/test/utils/permalinks/Permalinks-test.js
@@ -13,8 +13,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-import expect from 'expect';
-import peg from '../../../src/MatrixClientPeg';
+import {MatrixClientPeg as peg} from '../../../src/MatrixClientPeg';
import {
makeGroupPermalink,
makeRoomPermalink,
@@ -66,18 +65,11 @@ function mockRoom(roomId, members, serverACL) {
}
describe('Permalinks', function() {
- let sandbox;
-
beforeEach(function() {
- testUtils.beforeEach(this);
- sandbox = testUtils.stubClient();
+ testUtils.stubClient();
peg.get().credentials = { userId: "@test:example.com" };
});
- afterEach(function() {
- sandbox.restore();
- });
-
it('should pick no candidate servers when the room has no members', function() {
const room = mockRoom("!fake:example.org", []);
const creator = new RoomPermalinkCreator(room);
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000000..ec1531e429
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "experimentalDecorators": true,
+ "emitDecoratorMetadata": true,
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "target": "es2016",
+ "noImplicitAny": false,
+ "sourceMap": false,
+ "outDir": "./lib",
+ "declaration": true,
+ "types": [
+ "node"
+ ]
+ },
+ "include": [
+ "./src/**/*.ts"
+ ]
+}
diff --git a/tslint.json b/tslint.json
new file mode 100644
index 0000000000..fc234117fc
--- /dev/null
+++ b/tslint.json
@@ -0,0 +1,72 @@
+{
+ "rules": {
+ "class-name": false,
+ "comment-format": [
+ true
+ ],
+ "curly": false,
+ "eofline": false,
+ "forin": false,
+ "indent": [
+ true,
+ "spaces"
+ ],
+ "label-position": true,
+ "max-line-length": false,
+ "member-access": false,
+ "member-ordering": [
+ true,
+ "static-after-instance",
+ "variables-before-functions"
+ ],
+ "no-arg": true,
+ "no-bitwise": false,
+ "no-console": false,
+ "no-construct": true,
+ "no-debugger": true,
+ "no-duplicate-variable": true,
+ "no-empty": false,
+ "no-eval": true,
+ "no-inferrable-types": true,
+ "no-shadowed-variable": true,
+ "no-string-literal": false,
+ "no-switch-case-fall-through": true,
+ "no-trailing-whitespace": true,
+ "no-unused-expression": true,
+ "no-use-before-declare": false,
+ "no-var-keyword": true,
+ "object-literal-sort-keys": false,
+ "one-line": [
+ true,
+ "check-open-brace",
+ "check-catch",
+ "check-else",
+ "check-whitespace"
+ ],
+ "quotemark": false,
+ "radix": true,
+ "semicolon": [
+ "always"
+ ],
+ "triple-equals": [],
+ "typedef-whitespace": [
+ true,
+ {
+ "call-signature": "nospace",
+ "index-signature": "nospace",
+ "parameter": "nospace",
+ "property-declaration": "nospace",
+ "variable-declaration": "nospace"
+ }
+ ],
+ "variable-name": false,
+ "whitespace": [
+ true,
+ "check-branch",
+ "check-decl",
+ "check-operator",
+ "check-separator",
+ "check-type"
+ ]
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index b8b877ab62..d2135f7aa6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,22 @@
# yarn lockfile v1
+"@babel/cli@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.7.5.tgz#25702cc65418efc06989af3727897b9f4c8690b6"
+ integrity sha512-y2YrMGXM3NUyu1Myg0pxg+Lx6g8XhEyvLHYNRwTBV6fDek3H7Io6b7N/LXscLs4HWn4HxMdy7f2rM1rTMp2mFg==
+ dependencies:
+ commander "^4.0.1"
+ convert-source-map "^1.1.0"
+ fs-readdir-recursive "^1.1.0"
+ glob "^7.0.0"
+ lodash "^4.17.13"
+ make-dir "^2.1.0"
+ slash "^2.0.0"
+ source-map "^0.5.0"
+ optionalDependencies:
+ chokidar "^2.1.8"
+
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5":
version "7.5.5"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d"
@@ -29,6 +45,56 @@
semver "^5.4.1"
source-map "^0.5.0"
+"@babel/core@^7.1.0":
+ version "7.7.7"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9"
+ integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.7.7"
+ "@babel/helpers" "^7.7.4"
+ "@babel/parser" "^7.7.7"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/core@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.5.tgz#ae1323cd035b5160293307f50647e83f8ba62f7e"
+ integrity sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw==
+ dependencies:
+ "@babel/code-frame" "^7.5.5"
+ "@babel/generator" "^7.7.4"
+ "@babel/helpers" "^7.7.4"
+ "@babel/parser" "^7.7.5"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ json5 "^2.1.0"
+ lodash "^4.17.13"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.4.0", "@babel/generator@^7.7.7":
+ version "7.7.7"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45"
+ integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==
+ dependencies:
+ "@babel/types" "^7.7.4"
+ jsesc "^2.5.1"
+ lodash "^4.17.13"
+ source-map "^0.5.0"
+
"@babel/generator@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369"
@@ -39,6 +105,75 @@
lodash "^4.17.13"
source-map "^0.5.0"
+"@babel/helper-annotate-as-pure@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce"
+ integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f"
+ integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-builder-react-jsx@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.4.tgz#da188d247508b65375b2c30cf59de187be6b0c66"
+ integrity sha512-kvbfHJNN9dg4rkEM4xn1s8d1/h6TYNvajy9L1wx4qLn9HFg0IkTsQi4rfBe92nxrPUFcMsHoMV+8rU7MJb3fCA==
+ dependencies:
+ "@babel/types" "^7.7.4"
+ esutils "^2.0.0"
+
+"@babel/helper-call-delegate@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801"
+ integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-create-class-features-plugin@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d"
+ integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA==
+ dependencies:
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-member-expression-to-functions" "^7.7.4"
+ "@babel/helper-optimise-call-expression" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+
+"@babel/helper-create-regexp-features-plugin@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59"
+ integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==
+ dependencies:
+ "@babel/helper-regex" "^7.4.4"
+ regexpu-core "^4.6.0"
+
+"@babel/helper-define-map@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176"
+ integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==
+ dependencies:
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ lodash "^4.17.13"
+
+"@babel/helper-explode-assignable-expression@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84"
+ integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==
+ dependencies:
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
"@babel/helper-function-name@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e"
@@ -55,6 +190,87 @@
dependencies:
"@babel/types" "^7.7.4"
+"@babel/helper-hoist-variables@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12"
+ integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-member-expression-to-functions@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74"
+ integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-module-imports@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91"
+ integrity sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835"
+ integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.7.4"
+ "@babel/helper-simple-access" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ lodash "^4.17.13"
+
+"@babel/helper-optimise-call-expression@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2"
+ integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==
+ dependencies:
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-plugin-utils@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
+ integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
+
+"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
+ version "7.5.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351"
+ integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==
+ dependencies:
+ lodash "^4.17.13"
+
+"@babel/helper-remap-async-to-generator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234"
+ integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.7.4"
+ "@babel/helper-wrap-function" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-replace-supers@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2"
+ integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.7.4"
+ "@babel/helper-optimise-call-expression" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
+"@babel/helper-simple-access@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294"
+ integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==
+ dependencies:
+ "@babel/template" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
"@babel/helper-split-export-declaration@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8"
@@ -62,6 +278,16 @@
dependencies:
"@babel/types" "^7.7.4"
+"@babel/helper-wrap-function@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace"
+ integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==
+ dependencies:
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/template" "^7.7.4"
+ "@babel/traverse" "^7.7.4"
+ "@babel/types" "^7.7.4"
+
"@babel/helpers@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302"
@@ -85,7 +311,590 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb"
integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g==
-"@babel/runtime@^7.0.0":
+"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.7":
+ version "7.7.7"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937"
+ integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==
+
+"@babel/parser@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.5.tgz#cbf45321619ac12d83363fcf9c94bb67fa646d71"
+ integrity sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==
+
+"@babel/plugin-proposal-async-generator-functions@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d"
+ integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.7.4"
+ "@babel/plugin-syntax-async-generators" "^7.7.4"
+
+"@babel/plugin-proposal-class-properties@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba"
+ integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-proposal-decorators@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz#58c1e21d21ea12f9f5f0a757e46e687b94a7ab2b"
+ integrity sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-decorators" "^7.7.4"
+
+"@babel/plugin-proposal-dynamic-import@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d"
+ integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-dynamic-import" "^7.7.4"
+
+"@babel/plugin-proposal-export-default-from@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.7.4.tgz#890de3c0c475374638292df31f6582160b54d639"
+ integrity sha512-1t6dh7BHYUz4zD1m4pozYYEZy/3m8dgOr9owx3r0mPPI3iGKRUKUbIxfYmcJ4hwljs/dhd0qOTr1ZDUp43ix+w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-export-default-from" "^7.7.4"
+
+"@babel/plugin-proposal-json-strings@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d"
+ integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-json-strings" "^7.7.4"
+
+"@babel/plugin-proposal-numeric-separator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.7.4.tgz#7819a17445f4197bb9575e5750ed349776da858a"
+ integrity sha512-CG605v7lLpVgVldSY6kxsN9ui1DxFOyepBfuX2AzU2TNriMAYApoU55mrGw9Jr4TlrTzPCG10CL8YXyi+E/iPw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-numeric-separator" "^7.7.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz#cc57849894a5c774214178c8ab64f6334ec8af71"
+ integrity sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.7.4"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379"
+ integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.7.4"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz#7c239ccaf09470dbe1d453d50057460e84517ebb"
+ integrity sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-async-generators@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889"
+ integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-decorators@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz#3c91cfee2a111663ff3ac21b851140f5a52a4e0b"
+ integrity sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-dynamic-import@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec"
+ integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-export-default-from@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.7.4.tgz#897f05808298060b52873fa804ff853540790ea1"
+ integrity sha512-j888jpjATLEzOWhKawq46UrpXnCRDbdhBd5io4jgwjJ3+CHHGCRb6PNAVEgs+BXIb+dNRAmnkv36zfB992PRVw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-flow@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b"
+ integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-json-strings@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc"
+ integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-jsx@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz#dab2b56a36fb6c3c222a1fbc71f7bf97f327a9ec"
+ integrity sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.7.4.tgz#39818f8042a09d4c6248d85d82555369da4da5c4"
+ integrity sha512-vmlUUBlLuFnbpaR+1kKIdo62xQEN+THWbtAHSEilo+0rHl2dKKCn6GLUVKpI848wL/T0ZPQgAy8asRJ9yYEjog==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46"
+ integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6"
+ integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-top-level-await@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da"
+ integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-typescript@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b"
+ integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-arrow-functions@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12"
+ integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-async-to-generator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba"
+ integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.7.4"
+
+"@babel/plugin-transform-block-scoped-functions@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b"
+ integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-block-scoping@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224"
+ integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ lodash "^4.17.13"
+
+"@babel/plugin-transform-classes@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec"
+ integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.7.4"
+ "@babel/helper-define-map" "^7.7.4"
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-optimise-call-expression" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.7.4"
+ "@babel/helper-split-export-declaration" "^7.7.4"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d"
+ integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-destructuring@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267"
+ integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-dotall-regex@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz#f7ccda61118c5b7a2599a72d5e3210884a021e96"
+ integrity sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-duplicate-keys@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91"
+ integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-exponentiation-operator@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9"
+ integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-flow-comments@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-comments/-/plugin-transform-flow-comments-7.7.4.tgz#663be88fc101b982975bdac4eefc15ba475b3368"
+ integrity sha512-e3nHGPo/wQcQMmNAHyqaM3Cl8dNKLognPi1RPmObnuVwyI6gHAQJtW6sg5HiNP4LBGRlPW8Npihm0/EzS/1Pzw==
+ dependencies:
+ "@babel/generator" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-flow" "^7.7.4"
+
+"@babel/plugin-transform-flow-strip-types@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a"
+ integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-flow" "^7.7.4"
+
+"@babel/plugin-transform-for-of@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc"
+ integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-function-name@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1"
+ integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==
+ dependencies:
+ "@babel/helper-function-name" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-literals@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e"
+ integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-member-expression-literals@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a"
+ integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-modules-amd@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c"
+ integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.7.5"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-commonjs@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345"
+ integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.7.5"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-simple-access" "^7.7.4"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-systemjs@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30"
+ integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ babel-plugin-dynamic-import-node "^2.3.0"
+
+"@babel/plugin-transform-modules-umd@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f"
+ integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220"
+ integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.7.4"
+
+"@babel/plugin-transform-new-target@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167"
+ integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-object-super@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262"
+ integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.7.4"
+
+"@babel/plugin-transform-parameters@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz#da4555c97f39b51ac089d31c7380f03bca4075ce"
+ integrity sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw==
+ dependencies:
+ "@babel/helper-call-delegate" "^7.7.4"
+ "@babel/helper-get-function-arity" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-property-literals@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2"
+ integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-react-display-name@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.7.4.tgz#9f2b80b14ebc97eef4a9b29b612c58ed9c0d10dd"
+ integrity sha512-sBbIvqYkthai0X0vkD2xsAwluBp+LtNHH+/V4a5ydifmTtb8KOVOlrMIk/MYmIc4uTYDnjZUHQildYNo36SRJw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-react-jsx-self@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.7.4.tgz#81b8fbfd14b2215e8f1c2c3adfba266127b0231c"
+ integrity sha512-PWYjSfqrO273mc1pKCRTIJXyqfc9vWYBax88yIhQb+bpw3XChVC7VWS4VwRVs63wFHKxizvGSd00XEr+YB9Q2A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.7.4"
+
+"@babel/plugin-transform-react-jsx-source@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.7.4.tgz#8994b1bf6014b133f5a46d3b7d1ee5f5e3e72c10"
+ integrity sha512-5ZU9FnPhqtHsOXxutRtXZAzoEJwDaP32QcobbMP1/qt7NYcsCNK8XgzJcJfoEr/ZnzVvUNInNjIW22Z6I8p9mg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.7.4"
+
+"@babel/plugin-transform-react-jsx@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.4.tgz#d91205717fae4e2f84d020cd3057ec02a10f11da"
+ integrity sha512-LixU4BS95ZTEAZdPaIuyg/k8FiiqN9laQ0dMHB4MlpydHY53uQdWCUrwjLr5o6ilS6fAgZey4Q14XBjl5tL6xw==
+ dependencies:
+ "@babel/helper-builder-react-jsx" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.7.4"
+
+"@babel/plugin-transform-regenerator@^7.7.5":
+ version "7.7.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9"
+ integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==
+ dependencies:
+ regenerator-transform "^0.14.0"
+
+"@babel/plugin-transform-reserved-words@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb"
+ integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-runtime@^7.7.6":
+ version "7.7.6"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61"
+ integrity sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==
+ dependencies:
+ "@babel/helper-module-imports" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ resolve "^1.8.1"
+ semver "^5.5.1"
+
+"@babel/plugin-transform-shorthand-properties@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e"
+ integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-spread@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578"
+ integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-sticky-regex@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c"
+ integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.0.0"
+
+"@babel/plugin-transform-template-literals@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604"
+ integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-typeof-symbol@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e"
+ integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-typescript@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636"
+ integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-typescript" "^7.7.4"
+
+"@babel/plugin-transform-unicode-regex@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae"
+ integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/preset-env@^7.7.6":
+ version "7.7.6"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.6.tgz#39ac600427bbb94eec6b27953f1dfa1d64d457b2"
+ integrity sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.7.4"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-async-generator-functions" "^7.7.4"
+ "@babel/plugin-proposal-dynamic-import" "^7.7.4"
+ "@babel/plugin-proposal-json-strings" "^7.7.4"
+ "@babel/plugin-proposal-object-rest-spread" "^7.7.4"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.7.4"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.7.4"
+ "@babel/plugin-syntax-async-generators" "^7.7.4"
+ "@babel/plugin-syntax-dynamic-import" "^7.7.4"
+ "@babel/plugin-syntax-json-strings" "^7.7.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.7.4"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.7.4"
+ "@babel/plugin-syntax-top-level-await" "^7.7.4"
+ "@babel/plugin-transform-arrow-functions" "^7.7.4"
+ "@babel/plugin-transform-async-to-generator" "^7.7.4"
+ "@babel/plugin-transform-block-scoped-functions" "^7.7.4"
+ "@babel/plugin-transform-block-scoping" "^7.7.4"
+ "@babel/plugin-transform-classes" "^7.7.4"
+ "@babel/plugin-transform-computed-properties" "^7.7.4"
+ "@babel/plugin-transform-destructuring" "^7.7.4"
+ "@babel/plugin-transform-dotall-regex" "^7.7.4"
+ "@babel/plugin-transform-duplicate-keys" "^7.7.4"
+ "@babel/plugin-transform-exponentiation-operator" "^7.7.4"
+ "@babel/plugin-transform-for-of" "^7.7.4"
+ "@babel/plugin-transform-function-name" "^7.7.4"
+ "@babel/plugin-transform-literals" "^7.7.4"
+ "@babel/plugin-transform-member-expression-literals" "^7.7.4"
+ "@babel/plugin-transform-modules-amd" "^7.7.5"
+ "@babel/plugin-transform-modules-commonjs" "^7.7.5"
+ "@babel/plugin-transform-modules-systemjs" "^7.7.4"
+ "@babel/plugin-transform-modules-umd" "^7.7.4"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4"
+ "@babel/plugin-transform-new-target" "^7.7.4"
+ "@babel/plugin-transform-object-super" "^7.7.4"
+ "@babel/plugin-transform-parameters" "^7.7.4"
+ "@babel/plugin-transform-property-literals" "^7.7.4"
+ "@babel/plugin-transform-regenerator" "^7.7.5"
+ "@babel/plugin-transform-reserved-words" "^7.7.4"
+ "@babel/plugin-transform-shorthand-properties" "^7.7.4"
+ "@babel/plugin-transform-spread" "^7.7.4"
+ "@babel/plugin-transform-sticky-regex" "^7.7.4"
+ "@babel/plugin-transform-template-literals" "^7.7.4"
+ "@babel/plugin-transform-typeof-symbol" "^7.7.4"
+ "@babel/plugin-transform-unicode-regex" "^7.7.4"
+ "@babel/types" "^7.7.4"
+ browserslist "^4.6.0"
+ core-js-compat "^3.4.7"
+ invariant "^2.2.2"
+ js-levenshtein "^1.1.3"
+ semver "^5.5.0"
+
+"@babel/preset-flow@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.7.4.tgz#99c1349b6fd7132783196de181e6b32d0949427e"
+ integrity sha512-6LbUqcHD8BcRtXMOp5bc5nJeU8RlKh6q5U8TgZeCrf9ebBdW8Wyy5ujAUnbJfmzQ56Kkq5XtwErC/5+5RHyFYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-transform-flow-strip-types" "^7.7.4"
+
+"@babel/preset-react@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.4.tgz#3fe2ea698d8fb536d8e7881a592c3c1ee8bf5707"
+ integrity sha512-j+vZtg0/8pQr1H8wKoaJyGL2IEk3rG/GIvua7Sec7meXVIvGycihlGMx5xcU00kqCJbwzHs18xTu3YfREOqQ+g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-transform-react-display-name" "^7.7.4"
+ "@babel/plugin-transform-react-jsx" "^7.7.4"
+ "@babel/plugin-transform-react-jsx-self" "^7.7.4"
+ "@babel/plugin-transform-react-jsx-source" "^7.7.4"
+
+"@babel/preset-typescript@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.7.4.tgz#780059a78e6fa7f7a4c87f027292a86b31ce080a"
+ integrity sha512-rqrjxfdiHPsnuPur0jKrIIGQCIgoTWMTjlbWE69G4QJ6TIOVnnRnIJhUxNTL/VwDmEAVX08Tq3B1nirer5341w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-transform-typescript" "^7.7.4"
+
+"@babel/register@^7.7.4":
+ version "7.7.4"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.7.4.tgz#45a4956471a9df3b012b747f5781cc084ee8f128"
+ integrity sha512-/fmONZqL6ZMl9KJUYajetCrID6m0xmL4odX7v+Xvoxcv0DdbP/oO0TWIeLUCHqczQ6L6njDMqmqHFy2cp3FFsA==
+ dependencies:
+ find-cache-dir "^2.0.0"
+ lodash "^4.17.13"
+ make-dir "^2.1.0"
+ pirates "^4.0.0"
+ source-map-support "^0.5.16"
+
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.7.6":
version "7.7.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f"
integrity sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==
@@ -99,7 +908,7 @@
dependencies:
regenerator-runtime "^0.13.2"
-"@babel/template@^7.7.4":
+"@babel/template@^7.4.0", "@babel/template@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b"
integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==
@@ -108,7 +917,7 @@
"@babel/parser" "^7.7.4"
"@babel/types" "^7.7.4"
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.7.4":
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558"
integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==
@@ -123,7 +932,7 @@
globals "^11.1.0"
lodash "^4.17.13"
-"@babel/types@^7.0.0", "@babel/types@^7.7.4":
+"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193"
integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==
@@ -132,7 +941,15 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
-"@jest/console@^24.9.0":
+"@cnakazawa/watch@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef"
+ integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==
+ dependencies:
+ exec-sh "^0.3.2"
+ minimist "^1.2.0"
+
+"@jest/console@^24.7.1", "@jest/console@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"
integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==
@@ -141,7 +958,87 @@
chalk "^2.0.1"
slash "^2.0.0"
-"@jest/source-map@^24.9.0":
+"@jest/core@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4"
+ integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/reporters" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ graceful-fs "^4.1.15"
+ jest-changed-files "^24.9.0"
+ jest-config "^24.9.0"
+ jest-haste-map "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.9.0"
+ jest-resolve-dependencies "^24.9.0"
+ jest-runner "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-snapshot "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
+ jest-watcher "^24.9.0"
+ micromatch "^3.1.10"
+ p-each-series "^1.0.0"
+ realpath-native "^1.1.0"
+ rimraf "^2.5.4"
+ slash "^2.0.0"
+ strip-ansi "^5.0.0"
+
+"@jest/environment@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18"
+ integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==
+ dependencies:
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ jest-mock "^24.9.0"
+
+"@jest/fake-timers@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93"
+ integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-mock "^24.9.0"
+
+"@jest/reporters@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43"
+ integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==
+ dependencies:
+ "@jest/environment" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ glob "^7.1.2"
+ istanbul-lib-coverage "^2.0.2"
+ istanbul-lib-instrument "^3.0.1"
+ istanbul-lib-report "^2.0.4"
+ istanbul-lib-source-maps "^3.0.1"
+ istanbul-reports "^2.2.6"
+ jest-haste-map "^24.9.0"
+ jest-resolve "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-util "^24.9.0"
+ jest-worker "^24.6.0"
+ node-notifier "^5.4.2"
+ slash "^2.0.0"
+ source-map "^0.6.0"
+ string-length "^2.0.0"
+
+"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714"
integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==
@@ -159,6 +1056,38 @@
"@jest/types" "^24.9.0"
"@types/istanbul-lib-coverage" "^2.0.0"
+"@jest/test-sequencer@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31"
+ integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==
+ dependencies:
+ "@jest/test-result" "^24.9.0"
+ jest-haste-map "^24.9.0"
+ jest-runner "^24.9.0"
+ jest-runtime "^24.9.0"
+
+"@jest/transform@^24.9.0":
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56"
+ integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^24.9.0"
+ babel-plugin-istanbul "^5.1.0"
+ chalk "^2.0.1"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.1.15"
+ jest-haste-map "^24.9.0"
+ jest-regex-util "^24.9.0"
+ jest-util "^24.9.0"
+ micromatch "^3.1.10"
+ pirates "^4.0.1"
+ realpath-native "^1.1.0"
+ slash "^2.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "2.4.1"
+
"@jest/types@^24.9.0":
version "24.9.0"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
@@ -181,41 +1110,65 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
-"@sinonjs/commons@^1", "@sinonjs/commons@^1.3.0":
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.6.0.tgz#ec7670432ae9c8eb710400d112c201a362d83393"
- integrity sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==
+"@peculiar/asn1-schema@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-1.0.3.tgz#e55ff9e98a1cf31832629aabacf85be3edf13a48"
+ integrity sha512-Tfgj9eNJ6cTKEtEuidKenLHMx/Q5M8KEE9hnohHqvdpqHJXWYr5RlT3GjAHPjGXy5+mr7sSfuXfzE6aAkEGN7A==
dependencies:
- type-detect "4.0.8"
+ asn1js "^2.0.22"
+ tslib "^1.9.3"
-"@sinonjs/formatio@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2"
- integrity sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==
+"@peculiar/json-schema@^1.1.6":
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.9.tgz#b746e046b787607a1b2804f64437fda2527b3e62"
+ integrity sha512-F2ST2y/IQPgY+1QMw1Q33sqJbGDCeO3lGqI69SL3Hgo0++7iHqprUB1QyxB/A7bN3tuM65MBxoM2JLbwh42lsQ==
dependencies:
- samsam "1.3.0"
+ tslib "^1.10.0"
-"@sinonjs/formatio@^3.2.1":
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.2.tgz#771c60dfa75ea7f2d68e3b94c7e888a78781372c"
- integrity sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==
+"@peculiar/webcrypto@^1.0.22":
+ version "1.0.22"
+ resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.0.22.tgz#9dae652fce6bacd9df15bc91965797cee33adf67"
+ integrity sha512-NP6H6ZGXUvJnQJCWzUgnRcQv+9nMCNwLUDhTwOxRUwPFvtHauMOl0oPTKUjbhInCMaE55gJqB4yc0YKbde6Exw==
dependencies:
- "@sinonjs/commons" "^1"
- "@sinonjs/samsam" "^3.1.0"
+ "@peculiar/asn1-schema" "^1.0.3"
+ "@peculiar/json-schema" "^1.1.6"
+ asn1js "^2.0.26"
+ pvtsutils "^1.0.9"
+ tslib "^1.10.0"
+ webcrypto-core "^1.0.17"
-"@sinonjs/samsam@^3.1.0":
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.3.tgz#46682efd9967b259b81136b9f120fd54585feb4a"
- integrity sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==
+"@types/babel__core@^7.1.0":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30"
+ integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==
dependencies:
- "@sinonjs/commons" "^1.3.0"
- array-from "^2.1.1"
- lodash "^4.17.15"
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ "@types/babel__generator" "*"
+ "@types/babel__template" "*"
+ "@types/babel__traverse" "*"
-"@sinonjs/text-encoding@^0.7.1":
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
- integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
+"@types/babel__generator@*":
+ version "7.6.1"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04"
+ integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@types/babel__template@*":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307"
+ integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==
+ dependencies:
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
+ version "7.0.8"
+ resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012"
+ integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==
+ dependencies:
+ "@babel/types" "^7.3.0"
"@types/events@*":
version "3.0.0"
@@ -298,9 +1251,9 @@
integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==
"@types/yargs@^13.0.0":
- version "13.0.3"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380"
- integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==
+ version "13.0.5"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.5.tgz#18121bfd39dc12f280cee58f92c5b21d32041908"
+ integrity sha512-CF/+sxTO7FOwbIRL4wMv0ZYLCRfMid2HQpzDRyViH7kSpfoAFiMdGqKIxb1PxWfjtQXQhnQuD33lvRHNwr809Q==
dependencies:
"@types/yargs-parser" "*"
@@ -482,34 +1435,44 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+abab@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
+ integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==
+
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-accepts@~1.3.4:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
- integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+acorn-globals@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
+ integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
dependencies:
- mime-types "~2.1.24"
- negotiator "0.6.2"
+ acorn "^6.0.1"
+ acorn-walk "^6.0.1"
acorn-jsx@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384"
integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==
-acorn@^6.0.7, acorn@^6.2.1:
+acorn-walk@^6.0.1:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
+ integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
+
+acorn@^5.5.3:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+ integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+
+acorn@^6.0.1, acorn@^6.0.7, acorn@^6.2.1:
version "6.4.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784"
integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==
-after@0.8.2:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
- integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
-
agent-base@4, agent-base@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
@@ -531,6 +1494,22 @@ agentkeepalive@^3.4.1:
dependencies:
humanize-ms "^1.2.1"
+airbnb-prop-types@^2.15.0:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.15.0.tgz#5287820043af1eb469f5b0af0d6f70da6c52aaef"
+ integrity sha512-jUh2/hfKsRjNFC4XONQrxo/n/3GG4Tn6Hl0WlFQN5PY9OMC9loSCoAYKnZsWaP8wEfd5xcrPloK0Zg6iS1xwVA==
+ dependencies:
+ array.prototype.find "^2.1.0"
+ function.prototype.name "^1.1.1"
+ has "^1.0.3"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object.assign "^4.1.0"
+ object.entries "^1.1.0"
+ prop-types "^15.7.2"
+ prop-types-exact "^1.2.0"
+ react-is "^16.9.0"
+
ajv-errors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
@@ -556,12 +1535,7 @@ another-json@^0.2.0:
resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc"
integrity sha1-tfQBnJc7bdXGUGotk0acttMq7tw=
-ansi-colors@^3.0.0:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
- integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-
-ansi-escapes@^3.2.0:
+ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
@@ -581,11 +1555,6 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0:
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-ansi-styles@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
- integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
-
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -593,14 +1562,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
- integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==
- dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
-
anymatch@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
@@ -609,14 +1570,6 @@ anymatch@^2.0.0:
micromatch "^3.1.4"
normalize-path "^2.1.1"
-anymatch@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
- integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -637,19 +1590,12 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
-arr-diff@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
- integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
- dependencies:
- arr-flatten "^1.0.1"
-
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
@@ -659,16 +1605,21 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+array-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
+ integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
+
+array-filter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
+ integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
+
array-find-index@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
-array-from@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/array-from/-/array-from-2.1.1.tgz#cfe9d8c26628b9dc5aecc62a9f5d8f1f352c1195"
- integrity sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=
-
array-includes@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
@@ -689,20 +1640,26 @@ array-uniq@^1.0.1, array-uniq@^1.0.2:
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
-array-unique@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
- integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
-
array-unique@^0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-arraybuffer.slice@~0.0.7:
- version "0.0.7"
- resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
- integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==
+array.prototype.find@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz#630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7"
+ integrity sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.13.0"
+
+array.prototype.flat@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b"
+ integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
arrify@^1.0.1:
version "1.0.1"
@@ -730,6 +1687,13 @@ asn1@~0.2.3:
dependencies:
safer-buffer "~2.1.0"
+asn1js@^2.0.22, asn1js@^2.0.26:
+ version "2.0.26"
+ resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-2.0.26.tgz#0a6d435000f556a96c6012969d9704d981b71251"
+ integrity sha512-yG89F0j9B4B0MKIcFyWWxnpZPLaNTjCj4tkE3fjbAoo0qmpGw0PYYqSbX/4ebnd9Icn8ZgK4K1fvDyEtW1JYtQ==
+ dependencies:
+ pvutils latest
+
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
@@ -753,7 +1717,7 @@ astral-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
-async-each@^1.0.0, async-each@^1.0.1:
+async-each@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
@@ -763,7 +1727,7 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-async@^2.5.0, async@^2.6.2:
+async@^2.5.0:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
@@ -803,63 +1767,7 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.0.tgz#24390e6ad61386b0a747265754d2a17219de862c"
integrity sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==
-babel-cli@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
- integrity sha1-UCq1SHTX24itALiHoGODzgPQAvE=
- dependencies:
- babel-core "^6.26.0"
- babel-polyfill "^6.26.0"
- babel-register "^6.26.0"
- babel-runtime "^6.26.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.6"
- v8flags "^2.1.1"
- optionalDependencies:
- chokidar "^1.6.1"
-
-babel-code-frame@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
- integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
- dependencies:
- chalk "^1.1.3"
- esutils "^2.0.2"
- js-tokens "^3.0.2"
-
-babel-core@^6.26.0, babel-core@^6.26.3:
- version "6.26.3"
- resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
- integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
- dependencies:
- 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.1"
- 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-eslint@^10.0.1:
+babel-eslint@^10.0.3:
version "10.0.3"
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a"
integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==
@@ -871,593 +1779,52 @@ babel-eslint@^10.0.1:
eslint-visitor-keys "^1.0.0"
resolve "^1.12.0"
-babel-generator@^6.26.0:
- version "6.26.1"
- resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
- integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
+babel-jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54"
+ integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==
dependencies:
- 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"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/babel__core" "^7.1.0"
+ babel-plugin-istanbul "^5.1.0"
+ babel-preset-jest "^24.9.0"
+ chalk "^2.4.2"
+ slash "^2.0.0"
-babel-helper-builder-binary-assignment-operator-visitor@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664"
- integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=
+babel-plugin-dynamic-import-node@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f"
+ integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==
dependencies:
- babel-helper-explode-assignable-expression "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
+ object.assign "^4.1.0"
-babel-helper-builder-react-jsx@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0"
- integrity sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=
+babel-plugin-istanbul@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854"
+ integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==
dependencies:
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- esutils "^2.0.2"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ find-up "^3.0.0"
+ istanbul-lib-instrument "^3.3.0"
+ test-exclude "^5.2.3"
-babel-helper-call-delegate@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d"
- integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=
+babel-plugin-jest-hoist@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756"
+ integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==
dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
+ "@types/babel__traverse" "^7.0.6"
-babel-helper-define-map@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f"
- integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=
+babel-preset-jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc"
+ integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==
dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
+ "@babel/plugin-syntax-object-rest-spread" "^7.0.0"
+ babel-plugin-jest-hoist "^24.9.0"
-babel-helper-explode-assignable-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
- integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo=
- dependencies:
- babel-runtime "^6.22.0"
- babel-traverse "^6.24.1"
- babel-types "^6.24.1"
-
-babel-helper-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
- integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d"
- integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-hoist-variables@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76"
- integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-optimise-call-expression@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
- integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-helper-regex@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72"
- integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=
- dependencies:
- babel-runtime "^6.26.0"
- babel-types "^6.26.0"
- lodash "^4.17.4"
-
-babel-helper-remap-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b"
- integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
- integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
- integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-loader@^7.1.5:
- version "7.1.5"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68"
- integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==
- dependencies:
- find-cache-dir "^1.0.0"
- loader-utils "^1.0.2"
- mkdirp "^0.5.1"
-
-babel-messages@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
- integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-add-module-exports@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz#9ae9a1f4a8dc67f0cdec4f4aeda1e43a5ff65e25"
- integrity sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=
-
-babel-plugin-check-es2015-constants@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a"
- integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-syntax-async-functions@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
- integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=
-
-babel-plugin-syntax-class-properties@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de"
- integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=
-
-babel-plugin-syntax-dynamic-import@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da"
- integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=
-
-babel-plugin-syntax-exponentiation-operator@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de"
- integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=
-
-babel-plugin-syntax-flow@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d"
- integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=
-
-babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
- integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
-
-babel-plugin-syntax-object-rest-spread@^6.8.0:
- version "6.13.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
- integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
-
-babel-plugin-syntax-trailing-function-commas@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3"
- integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=
-
-babel-plugin-transform-async-to-generator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761"
- integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=
- dependencies:
- 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-builtin-extend@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-builtin-extend/-/babel-plugin-transform-builtin-extend-1.1.2.tgz#5e96fecf58b8fa1ed74efcad88475b2af3c9116e"
- integrity sha1-Xpb+z1i4+h7XTvytiEdbKvPJEW4=
- dependencies:
- babel-runtime "^6.2.0"
- babel-template "^6.3.0"
-
-babel-plugin-transform-class-properties@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac"
- integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=
- dependencies:
- 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@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221"
- integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoped-functions@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141"
- integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-block-scoping@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f"
- integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db"
- integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3"
- integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=
- dependencies:
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-destructuring@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d"
- integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-duplicate-keys@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e"
- integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-for-of@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691"
- integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-function-name@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b"
- integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=
- dependencies:
- babel-helper-function-name "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e"
- integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-modules-amd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154"
- integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=
- dependencies:
- 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@^6.24.1:
- version "6.26.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3"
- integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23"
- integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=
- dependencies:
- babel-helper-hoist-variables "^6.24.1"
- babel-runtime "^6.22.0"
- babel-template "^6.24.1"
-
-babel-plugin-transform-es2015-modules-umd@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468"
- integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d"
- integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40=
- dependencies:
- babel-helper-replace-supers "^6.24.1"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-parameters@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b"
- integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0"
- integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-spread@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1"
- integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-sticky-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc"
- integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw=
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-plugin-transform-es2015-template-literals@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d"
- integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-typeof-symbol@^6.22.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372"
- integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-es2015-unicode-regex@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9"
- integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek=
- dependencies:
- babel-helper-regex "^6.24.1"
- babel-runtime "^6.22.0"
- regexpu-core "^2.0.0"
-
-babel-plugin-transform-exponentiation-operator@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e"
- integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=
- dependencies:
- 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@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf"
- integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=
- dependencies:
- babel-plugin-syntax-flow "^6.18.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-object-rest-spread@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
- integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
- dependencies:
- babel-plugin-syntax-object-rest-spread "^6.8.0"
- babel-runtime "^6.26.0"
-
-babel-plugin-transform-react-display-name@^6.23.0:
- version "6.25.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1"
- integrity sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-jsx-self@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e"
- integrity sha1-322AqdomEqEh5t3XVYvL7PBuY24=
- dependencies:
- babel-plugin-syntax-jsx "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-jsx-source@^6.22.0:
- version "6.22.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6"
- integrity sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=
- dependencies:
- babel-plugin-syntax-jsx "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-react-jsx@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3"
- integrity sha1-hAoCjn30YN/DotKfDA2R9jduZqM=
- dependencies:
- babel-helper-builder-react-jsx "^6.24.1"
- babel-plugin-syntax-jsx "^6.8.0"
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-regenerator@^6.24.1:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
- integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=
- dependencies:
- regenerator-transform "^0.10.0"
-
-babel-plugin-transform-runtime@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
- integrity sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=
- dependencies:
- babel-runtime "^6.22.0"
-
-babel-plugin-transform-strict-mode@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
- integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=
- dependencies:
- babel-runtime "^6.22.0"
- babel-types "^6.24.1"
-
-babel-polyfill@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
- integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=
- dependencies:
- babel-runtime "^6.26.0"
- core-js "^2.5.0"
- regenerator-runtime "^0.10.5"
-
-babel-preset-es2015@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939"
- integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=
- dependencies:
- 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@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b"
- integrity sha1-+QC/k+LrwNJ235uKtZck6/2Vn4s=
- dependencies:
- babel-plugin-transform-exponentiation-operator "^6.24.1"
-
-babel-preset-es2017@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1"
- integrity sha1-WXvq37n38gi8/YoS6bKym4svFNE=
- dependencies:
- babel-plugin-syntax-trailing-function-commas "^6.22.0"
- babel-plugin-transform-async-to-generator "^6.24.1"
-
-babel-preset-flow@^6.23.0:
- version "6.23.0"
- resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d"
- integrity sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=
- dependencies:
- babel-plugin-transform-flow-strip-types "^6.22.0"
-
-babel-preset-react@^6.24.1:
- version "6.24.1"
- resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380"
- integrity sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=
- dependencies:
- 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@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
- integrity sha1-btAhFz4vy0htestFxgCahW9kcHE=
- dependencies:
- 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@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0:
+babel-runtime@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
@@ -1465,52 +1832,6 @@ babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtim
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
-babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.3.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
- integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
- dependencies:
- 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@^6.24.1, babel-traverse@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
- integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
- dependencies:
- 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@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
- integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
- dependencies:
- babel-runtime "^6.26.0"
- esutils "^2.0.2"
- lodash "^4.17.4"
- to-fast-properties "^1.0.3"
-
-babylon@^6.18.0:
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
- integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
-
-backo2@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
- integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
-
bail@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.4.tgz#7181b66d508aa3055d3f6c13f0a0c720641dde9b"
@@ -1528,21 +1849,11 @@ base-x@^3.0.2:
dependencies:
safe-buffer "^5.0.1"
-base64-arraybuffer@0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
- integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
-
base64-js@^1.0.2:
version "1.3.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
-base64id@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
- integrity sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=
-
base@^0.11.1:
version "0.11.2"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@@ -1563,13 +1874,6 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
-better-assert@~1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
- integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=
- dependencies:
- callsite "1.0.0"
-
big.js@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
@@ -1580,17 +1884,7 @@ binary-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-binary-extensions@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c"
- integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==
-
-blob@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
- integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==
-
-bluebird@^3.3.0, bluebird@^3.5.0, bluebird@^3.5.5:
+bluebird@^3.5.0, bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -1605,21 +1899,10 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
-body-parser@^1.16.1:
- version "1.19.0"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
- integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
- dependencies:
- bytes "3.1.0"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "~1.1.2"
- http-errors "1.7.2"
- iconv-lite "0.4.24"
- on-finished "~2.3.0"
- qs "6.7.0"
- raw-body "2.4.0"
- type-is "~1.6.17"
+boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
brace-expansion@^1.1.7:
version "1.1.11"
@@ -1629,15 +1912,6 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^1.8.2:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
- integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
- dependencies:
- expand-range "^1.8.1"
- preserve "^0.2.0"
- repeat-element "^1.1.2"
-
braces@^2.3.1, braces@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
@@ -1654,13 +1928,6 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2"
to-regex "^3.0.1"
-braces@^3.0.2, braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -1671,15 +1938,22 @@ browser-encrypt-attachment@^0.3.0:
resolved "https://registry.yarnpkg.com/browser-encrypt-attachment/-/browser-encrypt-attachment-0.3.0.tgz#205a94caadf0dc7e81413941812f655bd190ff1c"
integrity sha1-IFqUyq3w3H6BQTlBgS9lW9GQ/xw=
+browser-process-hrtime@^0.1.2:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
+ integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
+
browser-request@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17"
integrity sha1-ns5bWsqJopkyJC4Yv5M975h2zBc=
-browser-stdout@1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
- integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
+browser-resolve@^1.11.3:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
+ integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
+ dependencies:
+ resolve "1.1.7"
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.2.0"
@@ -1740,6 +2014,15 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
+browserslist@^4.6.0, browserslist@^4.8.2:
+ version "4.8.2"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289"
+ integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==
+ dependencies:
+ caniuse-lite "^1.0.30001015"
+ electron-to-chromium "^1.3.322"
+ node-releases "^1.1.42"
+
browserslist@^4.8.0:
version "4.8.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.0.tgz#6f06b0f974a7cc3a84babc2ccc56493668e3c789"
@@ -1756,23 +2039,12 @@ bs58@^4.0.1:
dependencies:
base-x "^3.0.2"
-buffer-alloc-unsafe@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
- integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
-
-buffer-alloc@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
- integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+bser@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
+ integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
dependencies:
- buffer-alloc-unsafe "^1.1.0"
- buffer-fill "^1.0.0"
-
-buffer-fill@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
- integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+ node-int64 "^0.4.0"
buffer-from@^1.0.0:
version "1.1.1"
@@ -1793,16 +2065,16 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
+builtin-modules@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
-bytes@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
- integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
cacache@^12.0.0, cacache@^12.0.2:
version "12.0.3"
resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390"
@@ -1858,11 +2130,6 @@ caller-path@^2.0.0:
dependencies:
caller-callsite "^2.0.0"
-callsite@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
- integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA=
-
callsites@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
@@ -1887,16 +2154,23 @@ camelcase@^4.1.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
-camelcase@^5.0.0:
+camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-caniuse-lite@^1.0.30001012:
+caniuse-lite@^1.0.30001012, caniuse-lite@^1.0.30001015:
version "1.0.30001015"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0"
integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ==
+capture-exit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
+ integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
+ dependencies:
+ rsvp "^4.8.4"
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -1912,7 +2186,7 @@ chain-function@^1.0.0:
resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz#c63045e5b4b663fb86f1c6e186adaf1de402a1cc"
integrity sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==
-chalk@2.4.2, "chalk@^1.1.3 || 2.x", chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -1921,17 +2195,6 @@ chalk@2.4.2, "chalk@^1.1.3 || 2.x", chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, ch
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
-chalk@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
- integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
- dependencies:
- 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"
-
character-entities-html4@^1.0.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef"
@@ -1957,23 +2220,19 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-chokidar@^1.6.1:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=
+cheerio@^1.0.0-rc.3:
+ version "1.0.0-rc.3"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6"
+ integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==
dependencies:
- anymatch "^1.3.0"
- async-each "^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"
- optionalDependencies:
- fsevents "^1.0.0"
+ css-select "~1.2.0"
+ dom-serializer "~0.1.1"
+ entities "~1.1.1"
+ htmlparser2 "^3.9.1"
+ lodash "^4.15.0"
+ parse5 "^3.0.1"
-chokidar@^2.0.2, chokidar@^2.1.2:
+chokidar@^2.0.2, chokidar@^2.1.2, chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
@@ -1992,21 +2251,6 @@ chokidar@^2.0.2, chokidar@^2.1.2:
optionalDependencies:
fsevents "^1.2.7"
-chokidar@^3.0.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6"
- integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==
- dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.2.0"
- optionalDependencies:
- fsevents "~2.1.1"
-
chownr@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142"
@@ -2019,6 +2263,11 @@ chrome-trace-event@^1.0.2:
dependencies:
tslib "^1.9.0"
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -2072,15 +2321,6 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
-clone-deep@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
- integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
- dependencies:
- is-plain-object "^2.0.4"
- kind-of "^6.0.2"
- shallow-clone "^3.0.0"
-
clone-regexp@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f"
@@ -2089,6 +2329,11 @@ clone-regexp@^1.0.0:
is-regexp "^1.0.0"
is-supported-regexp-flag "^1.0.0"
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+ integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
@@ -2119,11 +2364,6 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-colors@^1.1.0, colors@^1.1.2:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
- integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
-
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -2131,16 +2371,16 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-commander@2.15.1:
- version "2.15.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
- integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
-
-commander@^2.11.0, commander@^2.20.0:
+commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c"
+ integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -2156,26 +2396,11 @@ commonmark@^0.28.1:
minimist "~ 1.2.0"
string.prototype.repeat "^0.2.0"
-component-bind@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
- integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
-
-component-emitter@1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
- integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
-
component-emitter@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-component-inherit@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
- integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
-
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -2206,16 +2431,6 @@ concurrently@^4.0.1:
tree-kill "^1.2.1"
yargs "^12.0.5"
-connect@^3.6.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8"
- integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==
- dependencies:
- debug "2.6.9"
- finalhandler "1.1.2"
- parseurl "~1.3.3"
- utils-merge "1.0.1"
-
console-browserify@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
@@ -2231,23 +2446,18 @@ constants-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
-content-type@^1.0.2, content-type@~1.0.4:
+content-type@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0:
+convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
dependencies:
safe-buffer "~5.1.1"
-cookie@0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
- integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
-
copy-concurrently@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@@ -2265,12 +2475,20 @@ copy-descriptor@^0.1.0:
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+core-js-compat@^3.4.7:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.5.0.tgz#5a11a619a9e9dd2dcf1c742b2060bc4a2143e5b6"
+ integrity sha512-E7iJB72svRjJTnm9HDvujzNVMCm3ZcDYEedkJ/sDTNsy/0yooCd9Cg7GSzE7b4e0LfIkjijdB1tqg0pGwxWeWg==
+ dependencies:
+ browserslist "^4.8.2"
+ semver "^6.3.0"
+
core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
-core-js@^2.4.0, core-js@^2.5.0:
+core-js@^2.4.0:
version "2.6.10"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f"
integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==
@@ -2374,11 +2592,38 @@ crypto-browserify@^3.11.0:
randombytes "^2.0.0"
randomfill "^1.0.3"
+css-select@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-what@2.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
+
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1"
+ integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==
+ dependencies:
+ cssom "0.3.x"
+
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -2386,11 +2631,6 @@ currently-unhandled@^0.4.1:
dependencies:
array-find-index "^1.0.1"
-custom-event@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
- integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=
-
cyclist@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
@@ -2403,36 +2643,40 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
+data-urls@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
+ integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
+ dependencies:
+ abab "^2.0.0"
+ whatwg-mimetype "^2.2.0"
+ whatwg-url "^7.0.0"
+
date-fns@^1.30.1:
version "1.30.1"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
-date-format@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.1.0.tgz#31d5b5ea211cf5fd764cd38baf9d033df7e125cf"
- integrity sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==
-
date-names@^0.1.11:
version "0.1.13"
resolved "https://registry.yarnpkg.com/date-names/-/date-names-0.1.13.tgz#c4358f6f77c8056e2f5ea68fdbb05f0bf1e53bd0"
integrity sha512-IxxoeD9tdx8pXVcmqaRlPvrXIsSrSrIZzfzlOkm9u+hyzKp5Wk/odt9O/gd7Ockzy8n/WHeEpTVJ2bF3mMV4LA==
-debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@3.1.0, debug@~3.1.0:
+debug@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
dependencies:
ms "2.0.0"
-debug@^3.0.0, debug@^3.1.0, debug@^3.2.6:
+debug@^2.2.0, debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
@@ -2513,11 +2757,6 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
-depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
des.js@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
@@ -2531,28 +2770,21 @@ detect-file@^1.0.0:
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
-detect-indent@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
- integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
- dependencies:
- repeating "^2.0.0"
-
detect-libc@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+detect-newline@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+ integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
+
detect-node@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
-di@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
- integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=
-
diff-dom@^4.1.3:
version "4.1.6"
resolved "https://registry.yarnpkg.com/diff-dom/-/diff-dom-4.1.6.tgz#ecd20f4b34703d777b7956790fc7e28e5ff3fece"
@@ -2571,10 +2803,10 @@ diff-sequences@^24.9.0:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
-diff@3.5.0, diff@^3.5.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
- integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+diff@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff"
+ integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==
diffie-hellman@^5.0.0:
version "5.0.3"
@@ -2592,10 +2824,10 @@ dir-glob@^2.2.2:
dependencies:
path-type "^3.0.0"
-direction@^0.1.5:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/direction/-/direction-0.1.5.tgz#ce5d797f97e26f8be7beff53f7dc40e1c1a9ec4c"
- integrity sha1-zl15f5fib4vnvv9T99xA4cGp7Ew=
+discontinuous-range@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a"
+ integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo=
doctrine@^2.1.0:
version "2.1.0"
@@ -2618,16 +2850,6 @@ dom-helpers@^3.2.0:
dependencies:
"@babel/runtime" "^7.1.2"
-dom-serialize@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
- integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=
- dependencies:
- custom-event "~1.0.0"
- ent "~2.2.0"
- extend "^3.0.0"
- void-elements "^2.0.0"
-
dom-serializer@0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
@@ -2636,12 +2858,20 @@ dom-serializer@0:
domelementtype "^2.0.1"
entities "^2.0.0"
+dom-serializer@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+ integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
+ dependencies:
+ domelementtype "^1.3.0"
+ entities "^1.1.1"
+
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-domelementtype@1, domelementtype@^1.3.1:
+domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
@@ -2651,6 +2881,13 @@ domelementtype@^2.0.1:
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d"
integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==
+domexception@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
+ integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
+ dependencies:
+ webidl-conversions "^4.0.2"
+
domhandler@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
@@ -2658,6 +2895,14 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
+domutils@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
domutils@^1.5.1:
version "1.7.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
@@ -2691,12 +2936,7 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-
-electron-to-chromium@^1.3.317:
+electron-to-chromium@^1.3.317, electron-to-chromium@^1.3.322:
version "1.3.322"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8"
integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==
@@ -2739,11 +2979,6 @@ emojis-list@^2.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-
encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
@@ -2758,46 +2993,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
-engine.io-client@~3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36"
- integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==
- dependencies:
- component-emitter "1.2.1"
- component-inherit "0.0.3"
- debug "~3.1.0"
- engine.io-parser "~2.1.1"
- has-cors "1.1.0"
- indexof "0.0.1"
- parseqs "0.0.5"
- parseuri "0.0.5"
- ws "~3.3.1"
- xmlhttprequest-ssl "~1.5.4"
- yeast "0.1.2"
-
-engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.3.tgz#757ab970fbf2dfb32c7b74b033216d5739ef79a6"
- integrity sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==
- dependencies:
- after "0.8.2"
- arraybuffer.slice "~0.0.7"
- base64-arraybuffer "0.1.5"
- blob "0.0.5"
- has-binary2 "~1.0.2"
-
-engine.io@~3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2"
- integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==
- dependencies:
- accepts "~1.3.4"
- base64id "1.0.0"
- cookie "0.3.1"
- debug "~3.1.0"
- engine.io-parser "~2.1.0"
- ws "~3.3.1"
-
enhanced-resolve@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
@@ -2816,12 +3011,7 @@ enhanced-resolve@^4.1.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
-ent@~2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
- integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0=
-
-entities@^1.1.1, "entities@~ 1.1.1":
+entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
@@ -2831,6 +3021,69 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
+enzyme-adapter-react-16@^1.15.1:
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.2.tgz#b16db2f0ea424d58a808f9df86ab6212895a4501"
+ integrity sha512-SkvDrb8xU3lSxID8Qic9rB8pvevDbLybxPK6D/vW7PrT0s2Cl/zJYuXvsd1EBTz0q4o3iqG3FJhpYz3nUNpM2Q==
+ dependencies:
+ enzyme-adapter-utils "^1.13.0"
+ enzyme-shallow-equal "^1.0.1"
+ has "^1.0.3"
+ object.assign "^4.1.0"
+ object.values "^1.1.1"
+ prop-types "^15.7.2"
+ react-is "^16.12.0"
+ react-test-renderer "^16.0.0-0"
+ semver "^5.7.0"
+
+enzyme-adapter-utils@^1.13.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.13.0.tgz#01c885dde2114b4690bf741f8dc94cee3060eb78"
+ integrity sha512-YuEtfQp76Lj5TG1NvtP2eGJnFKogk/zT70fyYHXK2j3v6CtuHqc8YmgH/vaiBfL8K1SgVVbQXtTcgQZFwzTVyQ==
+ dependencies:
+ airbnb-prop-types "^2.15.0"
+ function.prototype.name "^1.1.2"
+ object.assign "^4.1.0"
+ object.fromentries "^2.0.2"
+ prop-types "^15.7.2"
+ semver "^5.7.1"
+
+enzyme-shallow-equal@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.1.tgz#7afe03db3801c9b76de8440694096412a8d9d49e"
+ integrity sha512-hGA3i1so8OrYOZSM9whlkNmVHOicJpsjgTzC+wn2JMJXhq1oO4kA4bJ5MsfzSIcC71aLDKzJ6gZpIxrqt3QTAQ==
+ dependencies:
+ has "^1.0.3"
+ object-is "^1.0.2"
+
+enzyme@^3.10.0:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.11.0.tgz#71d680c580fe9349f6f5ac6c775bc3e6b7a79c28"
+ integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==
+ dependencies:
+ array.prototype.flat "^1.2.3"
+ cheerio "^1.0.0-rc.3"
+ enzyme-shallow-equal "^1.0.1"
+ function.prototype.name "^1.1.2"
+ has "^1.0.3"
+ html-element-map "^1.2.0"
+ is-boolean-object "^1.0.1"
+ is-callable "^1.1.5"
+ is-number-object "^1.0.4"
+ is-regex "^1.0.5"
+ is-string "^1.0.5"
+ is-subset "^0.1.1"
+ lodash.escape "^4.0.1"
+ lodash.isequal "^4.5.0"
+ object-inspect "^1.7.0"
+ object-is "^1.0.2"
+ object.assign "^4.1.0"
+ object.entries "^1.1.1"
+ object.values "^1.1.1"
+ raf "^3.4.1"
+ rst-selector-parser "^2.2.3"
+ string.prototype.trim "^1.2.1"
+
err-code@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
@@ -2866,6 +3119,40 @@ es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.16.2, es-abstract@^1.7.
string.prototype.trimleft "^2.1.0"
string.prototype.trimright "^2.1.0"
+es-abstract@^1.13.0:
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1"
+ integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.1.5"
+ is-regex "^1.0.5"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.0"
+ string.prototype.trimleft "^2.1.1"
+ string.prototype.trimright "^2.1.1"
+
+es-abstract@^1.17.0-next.1:
+ version "1.17.0-next.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0-next.1.tgz#94acc93e20b05a6e96dacb5ab2f1cb3a81fc2172"
+ integrity sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw==
+ dependencies:
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.1"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-inspect "^1.7.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.0"
+ string.prototype.trimleft "^2.1.0"
+ string.prototype.trimright "^2.1.0"
+
es-get-iterator@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.0.1.tgz#ebc4d3bbc2d59dd95a0ecef441ca2dbce7d9e2cd"
@@ -2900,16 +3187,28 @@ es6-promisify@^5.0.0:
dependencies:
es6-promise "^4.0.3"
-escape-html@^1.0.3, escape-html@~1.0.3:
+escape-html@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
-escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+escodegen@^1.9.1:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
+ integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
+ dependencies:
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
eslint-config-google@^0.7.1:
version "0.7.1"
resolved "https://registry.yarnpkg.com/eslint-config-google/-/eslint-config-google-0.7.1.tgz#5598f8498e9e078420f34b80495b8d959f651fb2"
@@ -3046,6 +3345,11 @@ espree@^5.0.1:
acorn-jsx "^5.0.0"
eslint-visitor-keys "^1.0.0"
+esprima@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+ integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
+
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@@ -3065,12 +3369,7 @@ esrecurse@^4.1.0:
dependencies:
estraverse "^4.1.0"
-esrever@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/esrever/-/esrever-0.2.0.tgz#96e9d28f4f1b1a76784cd5d490eaae010e7407b8"
- integrity sha1-lunSj08bGnZ4TNXUkOquAQ50B7g=
-
-estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
@@ -3085,16 +3384,11 @@ estree-walker@^0.6.1:
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
-esutils@^2.0.2:
+esutils@^2.0.0, esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-eventemitter3@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb"
- integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==
-
events@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
@@ -3115,6 +3409,11 @@ except@^0.1.3:
dependencies:
indexof "0.0.1"
+exec-sh@^0.3.2:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
+ integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==
+
execa@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
@@ -3135,12 +3434,10 @@ execall@^1.0.0:
dependencies:
clone-regexp "^1.0.0"
-expand-brackets@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
- integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
- dependencies:
- is-posix-bracket "^0.1.0"
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+ integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
expand-brackets@^2.1.4:
version "2.1.4"
@@ -3155,13 +3452,6 @@ expand-brackets@^2.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
-expand-range@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
- integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
- dependencies:
- fill-range "^2.1.0"
-
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
@@ -3182,7 +3472,7 @@ expect@^1.20.2:
object-keys "^1.0.9"
tmatch "^2.0.1"
-expect@^24.1.0:
+expect@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca"
integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==
@@ -3223,13 +3513,6 @@ external-editor@^3.0.3:
iconv-lite "^0.4.24"
tmp "^0.0.33"
-extglob@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
- integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
- dependencies:
- is-extglob "^1.0.0"
-
extglob@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
@@ -3281,6 +3564,13 @@ fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fb-watchman@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
+ integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
+ dependencies:
+ bser "2.1.1"
+
fbemitter@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865"
@@ -3349,27 +3639,11 @@ file-saver@^1.3.3:
resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.8.tgz#e68a30c7cb044e2fb362b428469feb291c2e09d8"
integrity sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg==
-filename-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
- integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
-
filesize@3.5.6:
version "3.5.6"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a"
integrity sha1-X9mPPqyU7JUW747VeC+thKAaCho=
-fill-range@^2.1.0:
- version "2.2.4"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
- integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
- dependencies:
- is-number "^2.1.0"
- isobject "^2.0.0"
- randomatic "^3.0.0"
- repeat-element "^1.1.2"
- repeat-string "^1.5.2"
-
fill-range@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -3380,36 +3654,7 @@ fill-range@^4.0.0:
repeat-string "^1.6.1"
to-regex-range "^2.1.0"
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-finalhandler@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
- integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "~2.3.0"
- parseurl "~1.3.3"
- statuses "~1.5.0"
- unpipe "~1.0.0"
-
-find-cache-dir@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f"
- integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=
- dependencies:
- commondir "^1.0.1"
- make-dir "^1.0.0"
- pkg-dir "^2.0.0"
-
-find-cache-dir@^2.1.0:
+find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
@@ -3426,7 +3671,7 @@ find-up@4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
-find-up@^2.0.0, find-up@^2.1.0:
+find-up@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
@@ -3496,25 +3741,11 @@ focus-visible@^5.0.2:
resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.0.2.tgz#4fae9cf40458b73c10701c9774c462e3ccd53caf"
integrity sha512-zT2fj/bmOgEBjqGbURGlowTmCwsIs3bRDMr/sFZz8Ly7VkEiwuCn9swNTL3pPuf8Oua2de7CLuKdnuNajWdDsQ==
-follow-redirects@^1.0.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f"
- integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==
- dependencies:
- debug "^3.0.0"
-
-for-in@^1.0.1, for-in@^1.0.2:
+for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-for-own@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
- integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=
- dependencies:
- for-in "^1.0.1"
-
foreachasync@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6"
@@ -3549,22 +3780,6 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"
-fs-access@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
- integrity sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=
- dependencies:
- null-check "^1.0.0"
-
-fs-extra@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
- integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
fs-minipass@^1.2.5:
version "1.2.7"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
@@ -3572,7 +3787,7 @@ fs-minipass@^1.2.5:
dependencies:
minipass "^2.6.0"
-fs-readdir-recursive@^1.0.0:
+fs-readdir-recursive@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27"
integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==
@@ -3592,7 +3807,7 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-fsevents@^1.0.0, fsevents@^1.2.7:
+fsevents@^1.2.7:
version "1.2.9"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
@@ -3600,16 +3815,20 @@ fsevents@^1.0.0, fsevents@^1.2.7:
nan "^2.12.1"
node-pre-gyp "^0.12.0"
-fsevents@~2.1.1:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805"
- integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==
-
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function.prototype.name@^1.1.1, function.prototype.name@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.2.tgz#5cdf79d7c05db401591dfde83e3b70c5123e9a45"
+ integrity sha512-C8A+LlHBJjB2AdcRPorc5JvJ5VUoWlXdEHLOJdCI7kjHEtGTpHQUiqMvCIKUwIsGwZX2jZJy761AXsn356bJQg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ functions-have-names "^1.2.0"
+
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
@@ -3653,11 +3872,6 @@ get-caller-file@^2.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-document@1:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/get-document/-/get-document-1.0.0.tgz#4821bce66f1c24cb0331602be6cb6b12c4f01c4b"
- integrity sha1-SCG85m8cJMsDMWAr5strEsTwHEs=
-
get-stdin@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
@@ -3675,13 +3889,6 @@ get-value@^2.0.3, get-value@^2.0.6:
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-get-window@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/get-window/-/get-window-1.1.2.tgz#65fbaa999fb87f86ea5d30770f4097707044f47f"
- integrity sha512-yjWpFcy9fjhLQHW1dPtg9ga4pmizLY8y4ZSHdGrAQ1NU277MRhnGnnLPxe19X8W5lWVsCZz++5xEuNozWMVmTw==
- dependencies:
- get-document "1"
-
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -3694,21 +3901,6 @@ gfm.css@^1.1.1:
resolved "https://registry.yarnpkg.com/gfm.css/-/gfm.css-1.1.2.tgz#94acfa600672663b9dd0fd4b6ee5d11c8dbc161e"
integrity sha512-KhK3rqxMj+UTLRxWnfUA5n8XZYMWfHrrcCxtWResYR2B3hWIqBM6v9FPGZSlVuX+ScLewizOvNkjYXuPs95ThQ==
-glob-base@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
- integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
- dependencies:
- glob-parent "^2.0.0"
- is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
- integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
- dependencies:
- is-glob "^2.0.0"
-
glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -3717,13 +3909,6 @@ glob-parent@^3.1.0:
is-glob "^3.1.0"
path-dirname "^1.0.0"
-glob-parent@~5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2"
- integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
- dependencies:
- is-glob "^4.0.1"
-
glob-to-regexp@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
@@ -3734,18 +3919,6 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@7.1.2:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
- integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
- dependencies:
- 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"
-
glob@^5.0.14:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
@@ -3757,7 +3930,7 @@ glob@^5.0.14:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
@@ -3810,11 +3983,6 @@ globals@^11.1.0, globals@^11.7.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^9.18.0:
- version "9.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
- integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
-
globby@^9.0.0:
version "9.2.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d"
@@ -3841,15 +4009,26 @@ gonzales-pe@^4.2.3:
dependencies:
minimist "1.1.x"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
version "4.2.3"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==
-growl@1.10.5:
- version "1.10.5"
- resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
- integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
+growly@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
+ integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
+
+handlebars@^4.1.2:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.6.0.tgz#33af6c3eda930d7a924f5d8f1c6d8edc3180512e"
+ integrity sha512-i1ZUP7Qp2JdkMaFon2a+b0m5geE8Z4ZTLaGkgrObkEd+OkUKyRbRWw4KxuFCoHfdETSY1yf9/574eVoNSiK7pw==
+ dependencies:
+ neo-async "^2.6.0"
+ optimist "^0.6.1"
+ source-map "^0.6.1"
+ optionalDependencies:
+ uglify-js "^3.1.4"
har-schema@^2.0.0:
version "2.0.0"
@@ -3864,25 +4043,6 @@ har-validator@~5.1.0:
ajv "^6.5.5"
har-schema "^2.0.0"
-has-ansi@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
- integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
- dependencies:
- ansi-regex "^2.0.0"
-
-has-binary2@~1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
- integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==
- dependencies:
- isarray "2.0.1"
-
-has-cors@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
- integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
-
has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
@@ -3957,11 +4117,6 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
-he@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
- integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
-
highlight.js@^9.15.8:
version "9.16.2"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.16.2.tgz#68368d039ffe1c6211bcc07e483daf95de3e403e"
@@ -3983,14 +4138,6 @@ hoist-non-react-statics@^3.3.0:
dependencies:
react-is "^16.7.0"
-home-or-tmp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
- integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.1"
-
homedir-polyfill@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
@@ -4010,12 +4157,31 @@ hosted-git-info@^2.1.4:
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==
+html-element-map@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/html-element-map/-/html-element-map-1.2.0.tgz#dfbb09efe882806af63d990cf6db37993f099f22"
+ integrity sha512-0uXq8HsuG1v2TmQ8QkIhzbrqeskE4kn52Q18QJ9iAA/SnHoEKXWiUxHQtclRsCFWEUD2So34X+0+pZZu862nnw==
+ dependencies:
+ array-filter "^1.0.0"
+
+html-encoding-sniffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
+ integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
+html-entities@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
+ integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
+
html-tags@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b"
integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=
-htmlparser2@^3.10.0:
+htmlparser2@^3.10.0, htmlparser2@^3.9.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
@@ -4032,17 +4198,6 @@ http-cache-semantics@^3.8.1:
resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
-http-errors@1.7.2:
- version "1.7.2"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
- integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.1"
- statuses ">= 1.5.0 < 2"
- toidentifier "1.0.0"
-
http-proxy-agent@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405"
@@ -4051,15 +4206,6 @@ http-proxy-agent@^2.1.0:
agent-base "4"
debug "3.1.0"
-http-proxy@^1.13.0:
- version "1.18.0"
- resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a"
- integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==
- dependencies:
- eventemitter3 "^4.0.0"
- follow-redirects "^1.0.0"
- requires-port "^1.0.0"
-
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
@@ -4149,7 +4295,7 @@ import-lazy@^3.1.0:
resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc"
integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==
-import-local@2.0.0:
+import-local@2.0.0, import-local@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
@@ -4317,18 +4463,16 @@ is-binary-path@^1.0.0:
dependencies:
binary-extensions "^1.0.0"
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
is-boolean-object@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.0.tgz#98f8b28030684219a95f375cfbd88ce3405dff93"
integrity sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=
+is-boolean-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e"
+ integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==
+
is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
@@ -4344,6 +4488,18 @@ is-callable@^1.0.4, is-callable@^1.1.4:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+is-callable@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
+ integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -4391,18 +4547,6 @@ is-directory@^0.3.1:
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
-is-dotfile@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
- integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=
-
-is-equal-shallow@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
- integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
- dependencies:
- is-primitive "^2.0.0"
-
is-equal@^1.5.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/is-equal/-/is-equal-1.6.1.tgz#74fafde5060fcaf187041c05f11f0b9f020bb9b3"
@@ -4439,23 +4583,11 @@ is-extendable@^1.0.1:
dependencies:
is-plain-object "^2.0.4"
-is-extglob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
- integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
-
is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-is-finite@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
- integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
- dependencies:
- number-is-nan "^1.0.0"
-
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
@@ -4473,18 +4605,16 @@ is-fullwidth-code-point@^3.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+is-generator-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
+ integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+
is-generator-function@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522"
integrity sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==
-is-glob@^2.0.0, is-glob@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
- integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
- dependencies:
- is-extglob "^1.0.0"
-
is-glob@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
@@ -4492,7 +4622,7 @@ is-glob@^3.1.0:
dependencies:
is-extglob "^2.1.0"
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+is-glob@^4.0.0, is-glob@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
@@ -4504,16 +4634,6 @@ is-hexadecimal@^1.0.0:
resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee"
integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==
-is-hotkey@0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.4.tgz#c34d2c85d6ec8d09a871dcf71931c8067a824c7d"
- integrity sha512-Py+aW4r5mBBY18TGzGz286/gKS+fCQ0Hee3qkaiSmEPiD0PqFpe0wuA3l7rTOUKyeXl8Mxf3XzJxIoTlSv+kxA==
-
-is-in-browser@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
- integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=
-
is-ip@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab"
@@ -4531,12 +4651,10 @@ is-number-object@^1.0.3:
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799"
integrity sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=
-is-number@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
- dependencies:
- kind-of "^3.0.2"
+is-number-object@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197"
+ integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==
is-number@^3.0.0:
version "3.0.0"
@@ -4545,16 +4663,6 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
-is-number@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
- integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
@@ -4572,16 +4680,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
-is-posix-bracket@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
- integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
-
-is-primitive@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
- integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
-
is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
@@ -4594,6 +4692,13 @@ is-regex@^1.0.3, is-regex@^1.0.4:
dependencies:
has "^1.0.1"
+is-regex@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae"
+ integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==
+ dependencies:
+ has "^1.0.3"
+
is-regexp@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
@@ -4614,6 +4719,16 @@ is-string@^1.0.4:
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64"
integrity sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=
+is-string@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
+ integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+
+is-subset@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
+ integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=
+
is-supported-regexp-flag@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca"
@@ -4646,11 +4761,6 @@ is-whitespace-character@^1.0.0:
resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac"
integrity sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==
-is-window@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-window/-/is-window-1.0.2.tgz#2c896ca53db97de45d3c33133a65d8c9f563480d"
- integrity sha1-LIlspT25feRdPDMTOmXYyfVjSA0=
-
is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -4666,33 +4776,16 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
-
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-isarray@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
- integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=
-
isarray@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-isbinaryfile@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
- integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==
- dependencies:
- buffer-alloc "^1.2.0"
-
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -4710,11 +4803,6 @@ isobject@^3.0.0, isobject@^3.0.1:
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-isomorphic-base64@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/isomorphic-base64/-/isomorphic-base64-1.0.2.tgz#f426aae82569ba8a4ec5ca73ad21a44ab1ee7803"
- integrity sha1-9Caq6CVpuopOxcpzrSGkSrHueAM=
-
isomorphic-fetch@^2.1.1, isomorphic-fetch@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
@@ -4728,6 +4816,102 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
+ integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
+
+istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
+ integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==
+ dependencies:
+ "@babel/generator" "^7.4.0"
+ "@babel/parser" "^7.4.3"
+ "@babel/template" "^7.4.0"
+ "@babel/traverse" "^7.4.3"
+ "@babel/types" "^7.4.0"
+ istanbul-lib-coverage "^2.0.5"
+ semver "^6.0.0"
+
+istanbul-lib-report@^2.0.4:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
+ integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
+ dependencies:
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ supports-color "^6.1.0"
+
+istanbul-lib-source-maps@^3.0.1:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
+ integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==
+ dependencies:
+ debug "^4.1.1"
+ istanbul-lib-coverage "^2.0.5"
+ make-dir "^2.1.0"
+ rimraf "^2.6.3"
+ source-map "^0.6.1"
+
+istanbul-reports@^2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
+ integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
+ dependencies:
+ handlebars "^4.1.2"
+
+jest-changed-files@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039"
+ integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ execa "^1.0.0"
+ throat "^4.0.0"
+
+jest-cli@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af"
+ integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==
+ dependencies:
+ "@jest/core" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ import-local "^2.0.0"
+ is-ci "^2.0.0"
+ jest-config "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
+ prompts "^2.0.1"
+ realpath-native "^1.1.0"
+ yargs "^13.3.0"
+
+jest-config@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5"
+ integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/test-sequencer" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ babel-jest "^24.9.0"
+ chalk "^2.0.1"
+ glob "^7.1.1"
+ jest-environment-jsdom "^24.9.0"
+ jest-environment-node "^24.9.0"
+ jest-get-type "^24.9.0"
+ jest-jasmine2 "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
+ micromatch "^3.1.10"
+ pretty-format "^24.9.0"
+ realpath-native "^1.1.0"
+
jest-diff@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
@@ -4738,11 +4922,101 @@ jest-diff@^24.9.0:
jest-get-type "^24.9.0"
pretty-format "^24.9.0"
+jest-docblock@^24.3.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2"
+ integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==
+ dependencies:
+ detect-newline "^2.1.0"
+
+jest-each@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05"
+ integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ chalk "^2.0.1"
+ jest-get-type "^24.9.0"
+ jest-util "^24.9.0"
+ pretty-format "^24.9.0"
+
+jest-environment-jsdom@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b"
+ integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==
+ dependencies:
+ "@jest/environment" "^24.9.0"
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ jest-mock "^24.9.0"
+ jest-util "^24.9.0"
+ jsdom "^11.5.1"
+
+jest-environment-node@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3"
+ integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==
+ dependencies:
+ "@jest/environment" "^24.9.0"
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ jest-mock "^24.9.0"
+ jest-util "^24.9.0"
+
jest-get-type@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
+jest-haste-map@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d"
+ integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ anymatch "^2.0.0"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.1.15"
+ invariant "^2.2.4"
+ jest-serializer "^24.9.0"
+ jest-util "^24.9.0"
+ jest-worker "^24.9.0"
+ micromatch "^3.1.10"
+ sane "^4.0.3"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+jest-jasmine2@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0"
+ integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@jest/environment" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ chalk "^2.0.1"
+ co "^4.6.0"
+ expect "^24.9.0"
+ is-generator-fn "^2.0.0"
+ jest-each "^24.9.0"
+ jest-matcher-utils "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-snapshot "^24.9.0"
+ jest-util "^24.9.0"
+ pretty-format "^24.9.0"
+ throat "^4.0.0"
+
+jest-leak-detector@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a"
+ integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==
+ dependencies:
+ jest-get-type "^24.9.0"
+ pretty-format "^24.9.0"
+
jest-matcher-utils@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073"
@@ -4767,17 +5041,165 @@ jest-message-util@^24.9.0:
slash "^2.0.0"
stack-utils "^1.0.1"
-jest-mock@^23.2.0:
- version "23.2.0"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134"
- integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=
+jest-mock@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6"
+ integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==
+ dependencies:
+ "@jest/types" "^24.9.0"
-jest-regex-util@^24.9.0:
+jest-pnp-resolver@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a"
+ integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==
+
+jest-regex-util@^24.3.0, jest-regex-util@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636"
integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==
-jest-worker@^24.6.0:
+jest-resolve-dependencies@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab"
+ integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-snapshot "^24.9.0"
+
+jest-resolve@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321"
+ integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ browser-resolve "^1.11.3"
+ chalk "^2.0.1"
+ jest-pnp-resolver "^1.2.1"
+ realpath-native "^1.1.0"
+
+jest-runner@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42"
+ integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ chalk "^2.4.2"
+ exit "^0.1.2"
+ graceful-fs "^4.1.15"
+ jest-config "^24.9.0"
+ jest-docblock "^24.3.0"
+ jest-haste-map "^24.9.0"
+ jest-jasmine2 "^24.9.0"
+ jest-leak-detector "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-resolve "^24.9.0"
+ jest-runtime "^24.9.0"
+ jest-util "^24.9.0"
+ jest-worker "^24.6.0"
+ source-map-support "^0.5.6"
+ throat "^4.0.0"
+
+jest-runtime@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac"
+ integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==
+ dependencies:
+ "@jest/console" "^24.7.1"
+ "@jest/environment" "^24.9.0"
+ "@jest/source-map" "^24.3.0"
+ "@jest/transform" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/yargs" "^13.0.0"
+ chalk "^2.0.1"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.1.15"
+ jest-config "^24.9.0"
+ jest-haste-map "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-mock "^24.9.0"
+ jest-regex-util "^24.3.0"
+ jest-resolve "^24.9.0"
+ jest-snapshot "^24.9.0"
+ jest-util "^24.9.0"
+ jest-validate "^24.9.0"
+ realpath-native "^1.1.0"
+ slash "^2.0.0"
+ strip-bom "^3.0.0"
+ yargs "^13.3.0"
+
+jest-serializer@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73"
+ integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==
+
+jest-snapshot@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba"
+ integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==
+ dependencies:
+ "@babel/types" "^7.0.0"
+ "@jest/types" "^24.9.0"
+ chalk "^2.0.1"
+ expect "^24.9.0"
+ jest-diff "^24.9.0"
+ jest-get-type "^24.9.0"
+ jest-matcher-utils "^24.9.0"
+ jest-message-util "^24.9.0"
+ jest-resolve "^24.9.0"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ pretty-format "^24.9.0"
+ semver "^6.2.0"
+
+jest-util@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162"
+ integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==
+ dependencies:
+ "@jest/console" "^24.9.0"
+ "@jest/fake-timers" "^24.9.0"
+ "@jest/source-map" "^24.9.0"
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ callsites "^3.0.0"
+ chalk "^2.0.1"
+ graceful-fs "^4.1.15"
+ is-ci "^2.0.0"
+ mkdirp "^0.5.1"
+ slash "^2.0.0"
+ source-map "^0.6.0"
+
+jest-validate@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab"
+ integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==
+ dependencies:
+ "@jest/types" "^24.9.0"
+ camelcase "^5.3.1"
+ chalk "^2.0.1"
+ jest-get-type "^24.9.0"
+ leven "^3.1.0"
+ pretty-format "^24.9.0"
+
+jest-watcher@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b"
+ integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==
+ dependencies:
+ "@jest/test-result" "^24.9.0"
+ "@jest/types" "^24.9.0"
+ "@types/yargs" "^13.0.0"
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.1"
+ jest-util "^24.9.0"
+ string-length "^2.0.0"
+
+jest-worker@^24.6.0, jest-worker@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==
@@ -4785,21 +5207,29 @@ jest-worker@^24.6.0:
merge-stream "^2.0.0"
supports-color "^6.1.0"
+jest@^24.9.0:
+ version "24.9.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171"
+ integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==
+ dependencies:
+ import-local "^2.0.0"
+ jest-cli "^24.9.0"
+
jquery@^3.3.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
+js-levenshtein@^1.1.3:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
+ integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-tokens@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
- integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
-
js-yaml@^3.13.0, js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
@@ -4813,10 +5243,37 @@ jsbn@~0.1.0:
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-jsesc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
- integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
+jsdom@^11.5.1:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8"
+ integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==
+ dependencies:
+ abab "^2.0.0"
+ acorn "^5.5.3"
+ acorn-globals "^4.1.0"
+ array-equal "^1.0.0"
+ cssom ">= 0.3.2 < 0.4.0"
+ cssstyle "^1.0.0"
+ data-urls "^1.0.0"
+ domexception "^1.0.1"
+ escodegen "^1.9.1"
+ html-encoding-sniffer "^1.0.2"
+ left-pad "^1.3.0"
+ nwsapi "^2.0.7"
+ parse5 "4.0.0"
+ pn "^1.1.0"
+ request "^2.87.0"
+ request-promise-native "^1.0.5"
+ sax "^1.2.4"
+ symbol-tree "^3.2.2"
+ tough-cookie "^2.3.4"
+ w3c-hr-time "^1.0.1"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.3"
+ whatwg-mimetype "^2.1.0"
+ whatwg-url "^6.4.1"
+ ws "^5.2.0"
+ xml-name-validator "^3.0.0"
jsesc@^2.5.1:
version "2.5.2"
@@ -4853,11 +5310,6 @@ json-stringify-safe@~5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-json5@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
- integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
-
json5@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
@@ -4872,13 +5324,6 @@ json5@^2.1.0:
dependencies:
minimist "^1.2.0"
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
- optionalDependencies:
- graceful-fs "^4.1.6"
-
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -4897,103 +5342,6 @@ jsx-ast-utils@^2.2.3:
array-includes "^3.0.3"
object.assign "^4.1.0"
-just-extend@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc"
- integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==
-
-karma-chrome-launcher@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf"
- integrity sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==
- dependencies:
- fs-access "^1.0.0"
- which "^1.2.1"
-
-karma-cli@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960"
- integrity sha1-rmw8WKMTodALRRZMRVubhs4X+WA=
- dependencies:
- resolve "^1.1.6"
-
-karma-logcapture-reporter@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/karma-logcapture-reporter/-/karma-logcapture-reporter-0.0.1.tgz#bf1b0b1c915e0de295a15fe2f0179d4281bacddc"
- integrity sha1-vxsLHJFeDeKVoV/i8BedQoG6zdw=
-
-karma-mocha@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf"
- integrity sha1-7qrH/8DiAetjxGdEDStpx883eL8=
- dependencies:
- minimist "1.2.0"
-
-karma-sourcemap-loader@^0.3.7:
- version "0.3.7"
- resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8"
- integrity sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=
- dependencies:
- graceful-fs "^4.1.2"
-
-karma-spec-reporter@^0.0.31:
- version "0.0.31"
- resolved "https://registry.yarnpkg.com/karma-spec-reporter/-/karma-spec-reporter-0.0.31.tgz#4830dc7148a155c7d7a186e632339a0d80fadec3"
- integrity sha1-SDDccUihVcfXoYbmMjOaDYD63sM=
- dependencies:
- colors "^1.1.2"
-
-karma-summary-reporter@^1.5.1:
- version "1.7.1"
- resolved "https://registry.yarnpkg.com/karma-summary-reporter/-/karma-summary-reporter-1.7.1.tgz#ff751e6e3950a3b3f2ae96a39b10fdc87938c4db"
- integrity sha512-1I1njfSKFwogQrfDDyjyXKUeysYdD7SXoXBz2o7oK7RpiGsteyBoV3+6J5qFLcT0D8VGxLzYCsU0BbyeeHIl0g==
- dependencies:
- chalk "^1.1.3 || 2.x"
-
-karma-webpack@^4.0.0-beta.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-4.0.2.tgz#23219bd95bdda853e3073d3874d34447c77bced0"
- integrity sha512-970/okAsdUOmiMOCY8sb17A2I8neS25Ad9uhyK3GHgmRSIFJbDcNEFE8dqqUhNe9OHiCC9k3DMrSmtd/0ymP1A==
- dependencies:
- clone-deep "^4.0.1"
- loader-utils "^1.1.0"
- neo-async "^2.6.1"
- schema-utils "^1.0.0"
- source-map "^0.7.3"
- webpack-dev-middleware "^3.7.0"
-
-karma@^4.0.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/karma/-/karma-4.4.1.tgz#6d9aaab037a31136dc074002620ee11e8c2e32ab"
- integrity sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==
- dependencies:
- bluebird "^3.3.0"
- body-parser "^1.16.1"
- braces "^3.0.2"
- chokidar "^3.0.0"
- colors "^1.1.0"
- connect "^3.6.0"
- di "^0.0.1"
- dom-serialize "^2.2.0"
- flatted "^2.0.0"
- glob "^7.1.1"
- graceful-fs "^4.1.2"
- http-proxy "^1.13.0"
- isbinaryfile "^3.0.0"
- lodash "^4.17.14"
- log4js "^4.0.0"
- mime "^2.3.1"
- 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 "2.1.1"
- source-map "^0.6.1"
- tmp "0.0.33"
- useragent "2.3.0"
-
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -5018,6 +5366,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+kleur@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
+ integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+
known-css-properties@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.11.0.tgz#0da784f115ea77c76b81536d7052e90ee6c86a8a"
@@ -5030,11 +5383,21 @@ lcid@^2.0.0:
dependencies:
invert-kv "^2.0.0"
+left-pad@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
+ integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
+
leven@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
+leven@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
+ integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -5109,21 +5472,31 @@ lodash.clonedeep@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
+lodash.escape@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98"
+ integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=
+
lodash.escaperegexp@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=
-lodash.get@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
- integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+lodash.flattendeep@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
+ integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=
lodash.isboolean@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
+lodash.isequal@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+ integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
+
lodash.isplainobject@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
@@ -5144,12 +5517,17 @@ lodash.mergewith@^4.6.1:
resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
lodash.unescape@4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
-lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1:
+lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -5161,32 +5539,16 @@ log-symbols@^2.0.0, log-symbols@^2.2.0:
dependencies:
chalk "^2.0.1"
-log4js@^4.0.0:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/log4js/-/log4js-4.5.1.tgz#e543625e97d9e6f3e6e7c9fc196dd6ab2cae30b5"
- integrity sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==
- dependencies:
- date-format "^2.0.0"
- debug "^4.1.1"
- flatted "^2.0.0"
- rfdc "^1.1.4"
- streamroller "^1.0.6"
-
loglevel@^1.6.4:
version "1.6.6"
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312"
integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==
-lolex@4.2, lolex@^4.1.0:
+lolex@4.2:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.2.0.tgz#ddbd7f6213ca1ea5826901ab1222b65d714b3cd7"
integrity sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==
-lolex@^2.4.2:
- version "2.7.5"
- resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733"
- integrity sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==
-
longest-streak@^2.0.1:
version "2.0.3"
resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105"
@@ -5207,14 +5569,6 @@ loud-rejection@^1.0.0:
currently-unhandled "^0.4.1"
signal-exit "^3.0.0"
-lru-cache@4.1.x:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
- integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
- dependencies:
- pseudomap "^1.0.2"
- yallist "^2.1.2"
-
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -5222,14 +5576,7 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-make-dir@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
- dependencies:
- pify "^3.0.0"
-
-make-dir@^2.0.0:
+make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@@ -5254,6 +5601,13 @@ make-fetch-happen@5.0.0:
socks-proxy-agent "^4.0.0"
ssri "^6.0.0"
+makeerror@1.0.x:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
+ integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
+ dependencies:
+ tmpl "1.0.x"
+
mamacro@^0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
@@ -5298,19 +5652,15 @@ markdown-table@^1.1.0:
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
-math-random@^1.0.1:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
- integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
-
mathml-tag-names@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz#6dff66c99d55ecf739ca53c492e626f1d12a33cc"
integrity sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==
-"matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop":
- version "2.4.6"
- resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/01f0dd4498fb689cb66091aff7aa0ae49f9b8ebf"
+matrix-js-sdk@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/matrix-js-sdk/-/matrix-js-sdk-3.0.0.tgz#97908f9eda9eeb3ba0333b7e474c45f2b258e50c"
+ integrity sha512-lzUMwJAZHw7Dk0K+rubqe6kEpy4+pJ+qCp8n6lisfdKfMDJXdNCkjiiXRnakM1ZD4PFYK8ju89+NfxlyhAAd4A==
dependencies:
another-json "^0.2.0"
browser-request "^0.3.3"
@@ -5355,11 +5705,6 @@ mdast-util-compact@^1.0.0:
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
mem@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
@@ -5374,11 +5719,6 @@ memoize-one@^3.0.1:
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-3.1.1.tgz#ef609811e3bc28970eac2884eece64d167830d17"
integrity sha512-YqVh744GsMlZu6xkhGslPSqSurOv6P+kLN2J3ysBZfagLcL5FdRK/0UpgLoL8hwjjEvvAVkjJZyFP+1T6p1vgA==
-memoize-one@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-4.1.0.tgz#a2387c58c03fff27ca390c31b764a79addf3f906"
- integrity sha512-2GApq0yI/b22J2j9rhbrAlsHb0Qcz+7yWxeLG8h+95sl1XPUgeLimQSOdur4Vw7cUhrBHwaUZxWFZueojqNRzA==
-
memory-fs@^0.4.0, memory-fs@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
@@ -5420,25 +5760,6 @@ merge2@^1.2.3:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
-micromatch@^2.1.5:
- version "2.3.11"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
- integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
- dependencies:
- 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"
-
micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
version "3.1.10"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
@@ -5471,18 +5792,13 @@ mime-db@1.42.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
-mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
+mime-types@^2.1.12, mime-types@~2.1.19:
version "2.1.25"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
dependencies:
mime-db "1.42.0"
-mime@^2.3.1, mime@^2.4.4:
- version "2.4.4"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
- integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==
-
mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
@@ -5503,7 +5819,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4:
+"minimatch@2 || 3", minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
@@ -5528,7 +5844,7 @@ minimist@1.1.x:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8"
integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=
-minimist@1.2.0, minimist@^1.2.0, "minimist@~ 1.2.0":
+minimist@1.2.0, minimist@^1.1.1, minimist@^1.2.0, "minimist@~ 1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
@@ -5577,29 +5893,17 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
-mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1:
+mkdirp@^0.5.0, mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
dependencies:
minimist "0.0.8"
-mocha@^5.0.5:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
- integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==
- dependencies:
- browser-stdout "1.3.1"
- commander "2.15.1"
- debug "3.1.0"
- diff "3.5.0"
- escape-string-regexp "1.0.5"
- glob "7.1.2"
- growl "1.10.5"
- he "1.1.1"
- minimatch "3.0.4"
- mkdirp "0.5.1"
- supports-color "5.4.0"
+moo@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e"
+ integrity sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==
move-concurrently@^1.0.1:
version "1.0.1"
@@ -5655,6 +5959,17 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+nearley@^2.7.10:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.0.tgz#37717781d0fd0f2bfc95e233ebd75678ca4bda46"
+ integrity sha512-2v52FTw7RPqieZr3Gth1luAXZR7Je6q3KaDHY5bjl/paDUdMu35fZ8ICNgiYJRr3tf3NMvIQQR1r27AvEr9CRA==
+ dependencies:
+ commander "^2.19.0"
+ moo "^0.4.3"
+ railroad-diagrams "^1.0.0"
+ randexp "0.4.6"
+ semver "^5.4.1"
+
needle@^2.2.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
@@ -5664,12 +5979,7 @@ needle@^2.2.1:
iconv-lite "^0.4.4"
sax "^1.2.4"
-negotiator@0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
- integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
-
-neo-async@^2.5.0, neo-async@^2.6.1:
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
@@ -5679,17 +5989,6 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-nise@^1.3.3:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.2.tgz#b6d29af10e48b321b307e10e065199338eeb2652"
- integrity sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA==
- dependencies:
- "@sinonjs/formatio" "^3.2.1"
- "@sinonjs/text-encoding" "^0.7.1"
- just-extend "^4.0.2"
- lolex "^4.1.0"
- path-to-regexp "^1.7.0"
-
node-fetch-npm@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7"
@@ -5707,6 +6006,11 @@ node-fetch@^1.0.1:
encoding "^0.1.11"
is-stream "^1.0.1"
+node-int64@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
+ integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
+
node-libs-browser@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
@@ -5736,6 +6040,22 @@ node-libs-browser@^2.2.1:
util "^0.11.0"
vm-browserify "^1.0.1"
+node-modules-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+ integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
+node-notifier@^5.4.2:
+ version "5.4.3"
+ resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50"
+ integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==
+ dependencies:
+ growly "^1.3.0"
+ is-wsl "^1.1.0"
+ semver "^5.5.0"
+ shellwords "^0.1.1"
+ which "^1.3.0"
+
node-pre-gyp@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
@@ -5752,7 +6072,7 @@ node-pre-gyp@^0.12.0:
semver "^5.3.0"
tar "^4"
-node-releases@^1.1.41:
+node-releases@^1.1.41, node-releases@^1.1.42:
version "1.1.42"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.42.tgz#a999f6a62f8746981f6da90627a8d2fc090bbad7"
integrity sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA==
@@ -5777,14 +6097,14 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
+normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
dependencies:
remove-trailing-separator "^1.0.1"
-normalize-path@^3.0.0, normalize-path@~3.0.0:
+normalize-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
@@ -5829,10 +6149,12 @@ npmlog@^4.0.2:
gauge "~2.7.3"
set-blocking "~2.0.0"
-null-check@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
- integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=
+nth-check@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
num2fraction@^1.2.2:
version "1.2.2"
@@ -5844,6 +6166,11 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+nwsapi@^2.0.7:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
+ integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
@@ -5854,11 +6181,6 @@ object-assign@^4.1.0, object-assign@^4.1.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-object-component@0.0.3:
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
- integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=
-
object-copy@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
@@ -5873,6 +6195,11 @@ object-inspect@^1.1.0, object-inspect@^1.7.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67"
integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==
+object-is@^1.0.1, object-is@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4"
+ integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==
+
object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.9, object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -5905,6 +6232,16 @@ object.entries@^1.1.0:
function-bind "^1.1.1"
has "^1.0.3"
+object.entries@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b"
+ integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
object.fromentries@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.1.tgz#050f077855c7af8ae6649f45c80b16ee2d31e704"
@@ -5915,13 +6252,23 @@ object.fromentries@^2.0.1:
function-bind "^1.1.1"
has "^1.0.3"
-object.omit@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
- integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+object.fromentries@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9"
+ integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==
dependencies:
- for-own "^0.1.4"
- is-extendable "^0.1.1"
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
+ integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
object.pick@^1.3.0:
version "1.3.0"
@@ -5940,12 +6287,15 @@ object.values@^1.1.0:
function-bind "^1.1.1"
has "^1.0.3"
-on-finished@~2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
- integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+object.values@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
+ integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
dependencies:
- ee-first "1.1.1"
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ function-bind "^1.1.1"
+ has "^1.0.3"
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
@@ -5969,7 +6319,7 @@ optimist@^0.6.1:
minimist "~0.0.1"
wordwrap "~0.0.2"
-optionator@^0.8.2:
+optionator@^0.8.1, optionator@^0.8.2:
version "0.8.3"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
@@ -6000,7 +6350,7 @@ os-locale@^3.0.0, os-locale@^3.1.0:
lcid "^2.0.0"
mem "^4.0.0"
-os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2:
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
@@ -6013,20 +6363,18 @@ osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
-output-file-sync@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
- integrity sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=
- dependencies:
- graceful-fs "^4.1.4"
- mkdirp "^0.5.1"
- object-assign "^4.1.0"
-
p-defer@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+p-each-series@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
+ integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=
+ dependencies:
+ p-reduce "^1.0.0"
+
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@@ -6072,6 +6420,11 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
+p-reduce@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
+ integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=
+
p-try@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
@@ -6127,16 +6480,6 @@ parse-entities@^1.0.2, parse-entities@^1.1.0:
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
-parse-glob@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
- integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
- dependencies:
- glob-base "^0.3.0"
- is-dotfile "^1.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.0"
-
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -6150,24 +6493,17 @@ parse-passwd@^1.0.0:
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
-parseqs@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d"
- integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=
- dependencies:
- better-assert "~1.0.0"
+parse5@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
+ integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
-parseuri@0.0.5:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a"
- integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=
+parse5@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
+ integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
dependencies:
- better-assert "~1.0.0"
-
-parseurl@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+ "@types/node" "*"
pascalcase@^0.1.1:
version "0.1.1"
@@ -6194,7 +6530,7 @@ path-exists@^4.0.0:
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
@@ -6214,13 +6550,6 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-path-to-regexp@^1.7.0:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
- integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==
- dependencies:
- isarray "0.0.1"
-
path-type@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
@@ -6249,11 +6578,6 @@ performance-now@^2.1.0:
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-picomatch@^2.0.4:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5"
- integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==
-
pify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
@@ -6264,12 +6588,12 @@ pify@^4.0.0, pify@^4.0.1:
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+pirates@^4.0.0, pirates@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
+ integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
dependencies:
- find-up "^2.1.0"
+ node-modules-regexp "^1.0.0"
pkg-dir@^3.0.0:
version "3.0.0"
@@ -6283,6 +6607,11 @@ pluralizers@^0.1.7:
resolved "https://registry.yarnpkg.com/pluralizers/-/pluralizers-0.1.7.tgz#8d38dd0a1b660e739b10ab2eab10b684c9d50142"
integrity sha512-mw6AejUiCaMQ6uPN9ObjJDTnR5AnBSmnHHy3uVTbxrSFSxO5scfwpTs8Dxyb6T2v7GSulhvOq+pm9y+hXUvtOA==
+pn@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
+ integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
+
png-chunks-extract@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz#fad4a905e66652197351c65e35b92c64311e472d"
@@ -6413,11 +6742,6 @@ prelude-ls@~1.1.2:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-preserve@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
- integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
-
pretty-format@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
@@ -6428,7 +6752,7 @@ pretty-format@^24.9.0:
ansi-styles "^3.2.0"
react-is "^16.8.4"
-private@^0.1.6, private@^0.1.8:
+private@^0.1.6:
version "0.1.8"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
@@ -6468,6 +6792,23 @@ promise@^7.0.3, promise@^7.1.1:
dependencies:
asap "~2.0.3"
+prompts@^2.0.1:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4"
+ integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.3"
+
+prop-types-exact@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869"
+ integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==
+ dependencies:
+ has "^1.0.3"
+ object.assign "^4.1.0"
+ reflect.ownkeys "^0.2.0"
+
prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
@@ -6482,16 +6823,16 @@ prr@~1.0.1:
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-pseudomap@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
- integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-
psl@^1.1.24:
version "1.5.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.5.0.tgz#47fd1292def7fdb1e138cd78afa8814cebcf7b13"
integrity sha512-4vqUjKi2huMu1OJiLhi3jN6jeeKvMZdI1tYgi/njW5zV52jNLgSAZSdN16m9bJFe61/cT8ulmw4qFitV9QRsEA==
+psl@^1.1.28:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110"
+ integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==
+
public-encrypt@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
@@ -6539,15 +6880,22 @@ punycode@^1.2.4, punycode@^1.4.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-punycode@^2.1.0:
+punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-qjobs@^1.1.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071"
- integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==
+pvtsutils@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.0.9.tgz#0eb6106f27878ccaa55e7dfbf6bd2c75af461dee"
+ integrity sha512-/kDsuCKPqJuIzn37w6+iN+TiSrN+zrwPEd7FjT61oNbRvceGdsS94fMEWZ4/h6QZU5EZhBMiV+79IYedroP/Yw==
+ dependencies:
+ tslib "^1.10.0"
+
+pvutils@latest:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.0.17.tgz#ade3c74dfe7178944fe44806626bd2e249d996bf"
+ integrity sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==
qr.js@0.0.0:
version "0.0.0"
@@ -6561,11 +6909,6 @@ qrcode-react@^0.1.16:
dependencies:
qr.js "0.0.0"
-qs@6.7.0:
- version "6.7.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
- integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-
qs@^6.5.2, qs@^6.6.0:
version "6.9.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9"
@@ -6596,21 +6939,25 @@ raf-schd@^2.1.0:
resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-2.1.2.tgz#ec622b5167f2912089f054dc03ebd5bcf33c8f62"
integrity sha512-Orl0IEvMtUCgPddgSxtxreK77UiQz4nPYJy9RggVzu4mKsZkQWiAaG1y9HlYWdvm9xtN348xRaT37qkvL/+A+g==
-raf@^3.1.0:
+raf@^3.1.0, raf@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
dependencies:
performance-now "^2.1.0"
-randomatic@^3.0.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
- integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==
+railroad-diagrams@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e"
+ integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234=
+
+randexp@0.4.6:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3"
+ integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==
dependencies:
- is-number "^4.0.0"
- kind-of "^6.0.0"
- math-random "^1.0.1"
+ discontinuous-range "1.0.0"
+ ret "~0.1.10"
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0"
@@ -6627,21 +6974,6 @@ randomfill@^1.0.3:
randombytes "^2.0.5"
safe-buffer "^5.1.0"
-range-parser@^1.2.0, range-parser@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
-raw-body@2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
- integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
- dependencies:
- bytes "3.1.0"
- http-errors "1.7.2"
- iconv-lite "0.4.24"
- unpipe "1.0.0"
-
rc@1.2.8, rc@^1.2.7, rc@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
@@ -6710,12 +7042,7 @@ react-focus-lock@^2.2.1:
dependencies:
gemini-scrollbar matrix-org/gemini-scrollbar#91e1e566
-react-immutable-proptypes@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#023d6f39bb15c97c071e9e60d00d136eac5fa0b4"
- integrity sha1-Aj1vObsVyXwHHp5g0A0TbqxfoLQ=
-
-react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6:
+react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
version "16.12.0"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
@@ -6747,7 +7074,7 @@ react-redux@^5.0.6:
react-is "^16.6.0"
react-lifecycles-compat "^3.0.0"
-react-test-renderer@^16.9.0:
+react-test-renderer@^16.0.0-0, react-test-renderer@^16.9.0:
version "16.12.0"
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.12.0.tgz#11417ffda579306d4e841a794d32140f3da1b43f"
integrity sha512-Vj/teSqt2oayaWxkbhQ6gKis+t5JrknXfPVo+aIJ8QwYAqMPH77uptOdrlphyxl8eQI/rtkOYg86i/UWkpFu0w==
@@ -6785,6 +7112,14 @@ read-pkg-up@^3.0.0:
find-up "^2.0.0"
read-pkg "^3.0.0"
+read-pkg-up@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978"
+ integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==
+ dependencies:
+ find-up "^3.0.0"
+ read-pkg "^3.0.0"
+
read-pkg@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
@@ -6825,7 +7160,7 @@ readable-stream@^3.1.1:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
-readdirp@^2.0.0, readdirp@^2.2.1:
+readdirp@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
@@ -6834,12 +7169,12 @@ readdirp@^2.0.0, readdirp@^2.2.1:
micromatch "^3.1.10"
readable-stream "^2.0.2"
-readdirp@~3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839"
- integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==
+realpath-native@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c"
+ integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==
dependencies:
- picomatch "^2.0.4"
+ util.promisify "^1.0.0"
redent@^2.0.0:
version "2.0.0"
@@ -6864,16 +7199,23 @@ redux@^3.7.2:
loose-envify "^1.1.0"
symbol-observable "^1.0.3"
-regenerate@^1.2.1:
+reflect.ownkeys@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460"
+ integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=
+
+regenerate-unicode-properties@^8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
+ integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
+ dependencies:
+ regenerate "^1.4.0"
+
+regenerate@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
-regenerator-runtime@^0.10.5:
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
- integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=
-
regenerator-runtime@^0.11.0:
version "0.11.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
@@ -6884,22 +7226,13 @@ regenerator-runtime@^0.13.2:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==
-regenerator-transform@^0.10.0:
- version "0.10.1"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
- integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==
+regenerator-transform@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb"
+ integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==
dependencies:
- babel-runtime "^6.18.0"
- babel-types "^6.19.0"
private "^0.1.6"
-regex-cache@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
- integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==
- dependencies:
- is-equal-shallow "^0.1.3"
-
regex-not@^1.0.0, regex-not@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
@@ -6913,14 +7246,17 @@ regexpp@^2.0.1:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
-regexpu-core@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240"
- integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=
+regexpu-core@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6"
+ integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==
dependencies:
- regenerate "^1.2.1"
- regjsgen "^0.2.0"
- regjsparser "^0.1.4"
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^8.1.0"
+ regjsgen "^0.5.0"
+ regjsparser "^0.6.0"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.1.0"
registry-auth-token@4.0.0:
version "4.0.0"
@@ -6930,15 +7266,15 @@ registry-auth-token@4.0.0:
rc "^1.2.8"
safe-buffer "^5.0.1"
-regjsgen@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
- integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
+regjsgen@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c"
+ integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==
-regjsparser@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
- integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
+regjsparser@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
+ integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==
dependencies:
jsesc "~0.5.0"
@@ -7002,24 +7338,33 @@ repeat-element@^1.1.2:
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
+repeat-string@^1.5.4, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-repeating@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
- integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
- dependencies:
- is-finite "^1.0.0"
-
replace-ext@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
-request@^2.88.0:
+request-promise-core@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9"
+ integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==
+ dependencies:
+ lodash "^4.17.15"
+
+request-promise-native@^1.0.5:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36"
+ integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==
+ dependencies:
+ request-promise-core "1.1.3"
+ stealthy-require "^1.1.1"
+ tough-cookie "^2.3.3"
+
+request@^2.87.0, request@^2.88.0:
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
@@ -7065,11 +7410,6 @@ require-main-filename@^2.0.0:
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
-requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
-
reselect@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147"
@@ -7110,13 +7450,25 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2:
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.3.2:
version "1.13.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16"
integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==
dependencies:
path-parse "^1.0.6"
+resolve@^1.8.1:
+ version "1.14.2"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2"
+ integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==
+ dependencies:
+ path-parse "^1.0.6"
+
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -7135,11 +7487,6 @@ retry@^0.10.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=
-rfdc@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2"
- integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==
-
rimraf@2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
@@ -7147,7 +7494,7 @@ rimraf@2.6.3:
dependencies:
glob "^7.1.3"
-rimraf@^2.4.3, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.3:
+rimraf@^2.4.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -7180,6 +7527,19 @@ rollup-pluginutils@^2.8.1:
dependencies:
estree-walker "^0.6.1"
+rst-selector-parser@^2.2.3:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91"
+ integrity sha1-gbIw6i/MYGbInjRy3nlChdmwPZE=
+ dependencies:
+ lodash.flattendeep "^4.4.0"
+ nearley "^2.7.10"
+
+rsvp@^4.8.4:
+ version "4.8.5"
+ resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
+ integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
+
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
@@ -7223,10 +7583,20 @@ safe-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-samsam@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50"
- integrity sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==
+sane@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
+ integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
+ dependencies:
+ "@cnakazawa/watch" "^1.0.3"
+ anymatch "^2.0.0"
+ capture-exit "^2.0.0"
+ exec-sh "^0.3.2"
+ execa "^1.0.0"
+ fb-watchman "^2.0.0"
+ micromatch "^3.1.4"
+ minimist "^1.1.1"
+ walker "~1.0.5"
sanitize-html@^1.18.4:
version "1.20.1"
@@ -7266,17 +7636,12 @@ schema-utils@^1.0.0:
ajv-errors "^1.0.0"
ajv-keywords "^3.1.0"
-selection-is-backward@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/selection-is-backward/-/selection-is-backward-1.0.0.tgz#97a54633188a511aba6419fc5c1fa91b467e6be1"
- integrity sha1-l6VGMxiKURq6ZBn8XB+pG0Z+a+E=
-
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@6.3.0, semver@^6.3.0:
+semver@6.3.0, semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -7306,11 +7671,6 @@ setimmediate@^1.0.4, setimmediate@^1.0.5:
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
-setprototypeof@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
- integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
-
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
@@ -7319,13 +7679,6 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-shallow-clone@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
- integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
- dependencies:
- kind-of "^6.0.2"
-
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -7338,121 +7691,26 @@ shebang-regex@^1.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+shellwords@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
+ integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
+
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
-sinon@^5.0.7:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/sinon/-/sinon-5.1.1.tgz#19c59810ffb733ea6e76a28b94a71fc4c2f523b8"
- integrity sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==
- dependencies:
- "@sinonjs/formatio" "^2.0.0"
- diff "^3.5.0"
- lodash.get "^4.4.2"
- lolex "^2.4.2"
- nise "^1.3.3"
- supports-color "^5.4.0"
- type-detect "^4.0.8"
-
-slash@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
- integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+sisteransi@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3"
+ integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==
slash@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
-slate-base64-serializer@^0.2.69:
- version "0.2.112"
- resolved "https://registry.yarnpkg.com/slate-base64-serializer/-/slate-base64-serializer-0.2.112.tgz#791d04a0ae7b9796844f068a904e185f2afc91f9"
- integrity sha512-Vo94bkCq8cbFj7Lutdh2RaM9S4WlLxnnMqZPKGUyefklUN4q2EzM/WUH7s9CIlLUH1qRfC/b0V25VJZr5XXTzA==
- dependencies:
- isomorphic-base64 "^1.0.2"
-
-slate-dev-environment@^0.2.0, slate-dev-environment@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/slate-dev-environment/-/slate-dev-environment-0.2.2.tgz#bd8946e1fe4cf5447060c84a362a1d026ed8b77f"
- integrity sha512-JZ09llrRQu6JUsLJCUlGC0lB1r1qIAabAkSd454iyYBq6lDuY//Bypi3Jo8yzIfzZ4+mRLdQvl9e8MbeM9l48Q==
- dependencies:
- is-in-browser "^1.1.3"
-
-slate-dev-logger@^0.1.43:
- version "0.1.43"
- resolved "https://registry.yarnpkg.com/slate-dev-logger/-/slate-dev-logger-0.1.43.tgz#77f6ca7207fcbf453a5516f3aa8b19794d1d26dc"
- integrity sha512-GkcPMGzmPVm85AL+jaKnzhIA0UH9ktQDEIDM+FuQtz+TAPcpPCQiRAaZ6I2p2uD0Hq9bImhKSCtHIa0qRxiVGw==
-
-slate-dev-warning@^0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/slate-dev-warning/-/slate-dev-warning-0.0.1.tgz#f6c36731babea5e301b5bd504fe64911dd24200a"
- integrity sha512-QdXa+qmOG46VrTfnzn2gUVzs1WiO3Q+zCv3XomzMNGdgAJjCgHBs3jaeQD845h15loS3OJ181gCNAkB3dby6Hw==
-
-slate-hotkeys@^0.2.5:
- version "0.2.9"
- resolved "https://registry.yarnpkg.com/slate-hotkeys/-/slate-hotkeys-0.2.9.tgz#0cc9eb750a49ab9ef11601305b7c82b5402348e3"
- integrity sha512-y+C/s5vJEmBxo8fIqHmUcdViGwALL/A6Qow3sNG1OHYD5SI11tC2gfYtGbPh+2q0H7O4lufffCmFsP5bMaDHqA==
- dependencies:
- is-hotkey "0.1.4"
- slate-dev-environment "^0.2.2"
-
-slate-html-serializer@^0.6.1:
- version "0.6.32"
- resolved "https://registry.yarnpkg.com/slate-html-serializer/-/slate-html-serializer-0.6.32.tgz#69b0fcdb89a0bdcea28b60b6a90b944651ad3277"
- integrity sha512-x1RP1R2HMaVFflk9UXiuepcbN4wMoJRv0VWtxFw8efGNFmJfNBWME4iXAy6GNFRV0rRPlG3xCuQv2wHZ/+JMYw==
- dependencies:
- slate-dev-logger "^0.1.43"
- type-of "^2.0.1"
-
-"slate-md-serializer@github:matrix-org/slate-md-serializer#f7c4ad3":
- version "3.1.0"
- resolved "https://codeload.github.com/matrix-org/slate-md-serializer/tar.gz/f7c4ad394f5af34d4c623de7909ce95ab78072d3"
-
-slate-plain-serializer@^0.6.8:
- version "0.6.39"
- resolved "https://registry.yarnpkg.com/slate-plain-serializer/-/slate-plain-serializer-0.6.39.tgz#5fb8d4dc530a2e7e0689548d48964ce242c4516a"
- integrity sha512-EGl+Y+9Fw9IULtPg8sttydaeiAoaibJolMXNfqI79+5GWTQwJFIbg24keKvsTw+3f2RieaPu8fcrKyujKtZ7ZQ==
-
-slate-prop-types@^0.4.67:
- version "0.4.67"
- resolved "https://registry.yarnpkg.com/slate-prop-types/-/slate-prop-types-0.4.67.tgz#c6aa74195466546a44fcb85d1c7b15fefe36ce6b"
- integrity sha512-FmdwitAw1Y69JHm326dfwP6Zd6R99jz1Im8jvKcnG2hytk72I1vIv6ct2CkNGwc3sg90+OIO/Rf18frYxxoTzw==
-
-slate-react@^0.18.10:
- version "0.18.11"
- resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.18.11.tgz#f452e7eb73f0271422d2a17e8090dcd8d889aef6"
- integrity sha512-7u0+LLabGaxjWYb0oTqUDcs3iCvJdaZwcGW6hLc1hFv06KkwaIxAqYpP8dUBRVlQd+0/X0TdyagCmf0IjFSPhg==
- dependencies:
- debug "^3.1.0"
- get-window "^1.1.1"
- is-window "^1.0.2"
- lodash "^4.1.1"
- memoize-one "^4.0.0"
- prop-types "^15.5.8"
- react-immutable-proptypes "^2.1.0"
- selection-is-backward "^1.0.0"
- slate-base64-serializer "^0.2.69"
- slate-dev-environment "^0.2.0"
- slate-dev-warning "^0.0.1"
- slate-hotkeys "^0.2.5"
- slate-plain-serializer "^0.6.8"
- slate-prop-types "^0.4.67"
-
-slate@^0.41.2:
- version "0.41.3"
- resolved "https://registry.yarnpkg.com/slate/-/slate-0.41.3.tgz#fa468de5db53afc453a0a7d7875b4de05737a900"
- integrity sha512-I/ymHWRxtoSOWYKh/SFgW3Vkkojt5ywWf7Wh4oBvaKic/3mAsM1wymyZmhnvSKK59IeE0JJzD4uyyQaM1KEFHA==
- dependencies:
- debug "^3.1.0"
- direction "^0.1.5"
- esrever "^0.2.0"
- is-plain-object "^2.0.4"
- lodash "^4.17.4"
- slate-dev-warning "^0.0.1"
- type-of "^2.0.1"
-
slice-ansi@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
@@ -7497,52 +7755,6 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
-socket.io-adapter@~1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9"
- integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==
-
-socket.io-client@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f"
- integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==
- dependencies:
- backo2 "1.0.2"
- base64-arraybuffer "0.1.5"
- component-bind "1.0.0"
- component-emitter "1.2.1"
- debug "~3.1.0"
- engine.io-client "~3.2.0"
- has-binary2 "~1.0.2"
- has-cors "1.1.0"
- indexof "0.0.1"
- object-component "0.0.3"
- parseqs "0.0.5"
- parseuri "0.0.5"
- socket.io-parser "~3.2.0"
- to-array "0.1.4"
-
-socket.io-parser@~3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077"
- integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==
- dependencies:
- component-emitter "1.2.1"
- debug "~3.1.0"
- isarray "2.0.1"
-
-socket.io@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980"
- integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==
- dependencies:
- debug "~3.1.0"
- engine.io "~3.2.0"
- has-binary2 "~1.0.2"
- socket.io-adapter "~1.1.0"
- socket.io-client "2.1.1"
- socket.io-parser "~3.2.0"
-
socks-proxy-agent@^4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386"
@@ -7583,14 +7795,7 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@^0.4.15:
- version "0.4.18"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
- integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
- dependencies:
- source-map "^0.5.6"
-
-source-map-support@~0.5.12:
+source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12:
version "0.5.16"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042"
integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==
@@ -7603,7 +7808,7 @@ source-map-url@^0.4.0:
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:
+source-map@^0.5.0, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -7613,11 +7818,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@^0.7.3:
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
- integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
-
spawn-command@^0.0.2-1:
version "0.0.2-1"
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
@@ -7719,10 +7919,10 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
-"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+stealthy-require@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
+ integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
stream-browserify@^2.0.1:
version "2.0.2"
@@ -7756,16 +7956,13 @@ stream-shift@^1.0.0:
resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
-streamroller@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-1.0.6.tgz#8167d8496ed9f19f05ee4b158d9611321b8cacd9"
- integrity sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==
+string-length@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
+ integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=
dependencies:
- async "^2.6.2"
- date-format "^2.0.0"
- debug "^3.2.6"
- fs-extra "^7.0.1"
- lodash "^4.17.14"
+ astral-regex "^1.0.0"
+ strip-ansi "^4.0.0"
string-width@4.1.0:
version "4.1.0"
@@ -7807,6 +8004,15 @@ string.prototype.repeat@^0.2.0:
resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf"
integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8=
+string.prototype.trim@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782"
+ integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.0-next.1"
+ function-bind "^1.1.1"
+
string.prototype.trimleft@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
@@ -7815,6 +8021,14 @@ string.prototype.trimleft@^2.1.0:
define-properties "^1.1.3"
function-bind "^1.1.1"
+string.prototype.trimleft@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74"
+ integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
string.prototype.trimright@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
@@ -7823,6 +8037,14 @@ string.prototype.trimright@^2.1.0:
define-properties "^1.1.3"
function-bind "^1.1.1"
+string.prototype.trimright@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9"
+ integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==
+ dependencies:
+ define-properties "^1.1.3"
+ function-bind "^1.1.1"
+
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -7978,13 +8200,6 @@ sugarss@^2.0.0:
dependencies:
postcss "^7.0.2"
-supports-color@5.4.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
- integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==
- dependencies:
- has-flag "^3.0.0"
-
supports-color@6.1.0, supports-color@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
@@ -7992,11 +8207,6 @@ supports-color@6.1.0, supports-color@^6.1.0:
dependencies:
has-flag "^3.0.0"
-supports-color@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
- integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
-
supports-color@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
@@ -8004,7 +8214,7 @@ supports-color@^4.5.0:
dependencies:
has-flag "^2.0.0"
-supports-color@^5.3.0, supports-color@^5.4.0:
+supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
@@ -8021,6 +8231,11 @@ symbol-observable@^1.0.3:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+symbol-tree@^3.2.2:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
table@^5.0.0, table@^5.2.3:
version "5.4.6"
resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
@@ -8073,6 +8288,16 @@ terser@^4.1.0, terser@^4.1.2:
source-map "~0.6.1"
source-map-support "~0.5.12"
+test-exclude@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0"
+ integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==
+ dependencies:
+ glob "^7.1.3"
+ minimatch "^3.0.4"
+ read-pkg-up "^4.0.0"
+ require-main-filename "^2.0.0"
+
text-encoding-utf-8@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13"
@@ -8083,6 +8308,11 @@ text-table@0.2.0, text-table@^0.2.0:
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+throat@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
+ integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=
+
through2@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@@ -8108,28 +8338,23 @@ tmatch@^2.0.1:
resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-2.0.1.tgz#0c56246f33f30da1b8d3d72895abaf16660f38cf"
integrity sha1-DFYkbzPzDaG409colauvFmYPOM8=
-tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33:
+tmp@^0.0.33:
version "0.0.33"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
dependencies:
os-tmpdir "~1.0.2"
-to-array@0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
- integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
+tmpl@1.0.x:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
+ integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
-to-fast-properties@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
- integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
-
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -8150,13 +8375,6 @@ to-regex-range@^2.1.0:
is-number "^3.0.0"
repeat-string "^1.6.1"
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
to-regex@^3.0.1, to-regex@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
@@ -8167,10 +8385,13 @@ to-regex@^3.0.1, to-regex@^3.0.2:
regex-not "^1.0.2"
safe-regex "^1.1.0"
-toidentifier@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
- integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+tough-cookie@^2.3.3, tough-cookie@^2.3.4:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
tough-cookie@~2.4.3:
version "2.4.3"
@@ -8180,6 +8401,13 @@ tough-cookie@~2.4.3:
psl "^1.1.24"
punycode "^1.4.1"
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
+ dependencies:
+ punycode "^2.1.0"
+
tree-kill@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a"
@@ -8190,11 +8418,6 @@ trim-newlines@^2.0.0:
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=
-trim-right@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
- integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
-
trim-trailing-lines@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a"
@@ -8210,11 +8433,37 @@ trough@^1.0.0:
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e"
integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==
-tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
+tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+tslint@^5.20.1:
+ version "5.20.1"
+ resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d"
+ integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ builtin-modules "^1.1.1"
+ chalk "^2.3.0"
+ commander "^2.12.1"
+ diff "^4.0.1"
+ glob "^7.1.1"
+ js-yaml "^3.13.1"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ resolve "^1.3.2"
+ semver "^5.3.0"
+ tslib "^1.8.0"
+ tsutils "^2.29.0"
+
+tsutils@^2.29.0:
+ version "2.29.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
+ integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
+ dependencies:
+ tslib "^1.8.1"
+
tsutils@^3.17.1:
version "3.17.1"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
@@ -8246,38 +8495,28 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
-type-detect@4.0.8, type-detect@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
- integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-
-type-is@~1.6.17:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
-
-type-of@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972"
- integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI=
-
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+typescript@^3.7.3:
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69"
+ integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw==
+
ua-parser-js@^0.7.18:
version "0.7.20"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098"
integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==
-ultron@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
- integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
+uglify-js@^3.1.4:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.2.tgz#cb1a601e67536e9ed094a92dd1e333459643d3f9"
+ integrity sha512-uhRwZcANNWVLrxLfNFEdltoPNhECUR3lc+UdJoG9CBpMcSnKyWA94tc3eAujB1GcMY5Uwq8ZMp4qWpxWYDQmaA==
+ dependencies:
+ commander "~2.20.3"
+ source-map "~0.6.1"
unherit@^1.0.4:
version "1.1.2"
@@ -8292,6 +8531,29 @@ unhomoglyph@^1.0.2:
resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.3.tgz#8d3551622b57754e10a831bf81442d7f15d1ddfd"
integrity sha512-PC/OAHE8aiTK0Gfmy0PxOlePazRn+BeCM1r4kFtkHgEnkJZgJoI7yD2yUEjsfSdLXKU1FSt/EcIZvNoKazYUTw==
+unicode-canonical-property-names-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+unicode-match-property-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^1.0.4"
+ unicode-property-aliases-ecmascript "^1.0.4"
+
+unicode-match-property-value-ecmascript@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
+ integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
+
+unicode-property-aliases-ecmascript@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
+ integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
+
unified@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13"
@@ -8380,16 +8642,6 @@ unist-util-visit@^1.1.0:
dependencies:
unist-util-visit-parents "^2.0.0"
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
-
unset-value@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
@@ -8457,24 +8709,19 @@ use@^3.1.0:
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-user-home@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
- integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
-
-useragent@2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972"
- integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==
- dependencies:
- lru-cache "4.1.x"
- tmp "0.0.x"
-
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+util.promisify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
util@0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
@@ -8489,11 +8736,6 @@ util@^0.11.0:
dependencies:
inherits "2.0.3"
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-
uuid@^3.3.2:
version "3.3.3"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
@@ -8504,13 +8746,6 @@ v8-compile-cache@2.0.3:
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
-v8flags@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
- integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=
- dependencies:
- user-home "^1.1.1"
-
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -8568,10 +8803,12 @@ vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-void-elements@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
- integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=
+w3c-hr-time@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
+ integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=
+ dependencies:
+ browser-process-hrtime "^0.1.2"
walk@^2.3.9:
version "2.3.14"
@@ -8580,6 +8817,13 @@ walk@^2.3.9:
dependencies:
foreachasync "^3.0.0"
+walker@^1.0.7, walker@~1.0.5:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
+ integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
+ dependencies:
+ makeerror "1.0.x"
+
warning@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c"
@@ -8596,6 +8840,19 @@ watchpack@^1.6.0:
graceful-fs "^4.1.2"
neo-async "^2.5.0"
+webcrypto-core@^1.0.17:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.0.17.tgz#a9354bc0b1ba6735e882f4137ede2c4366e6ad9b"
+ integrity sha512-7jxTLgtM+TahBPErx/Dd2XvxFDfWJrHxjVeTSvIa4LSgiYrmCPlC2INiAMAfb8MbtHiwJKKqF5sPS0AWNjBbXw==
+ dependencies:
+ pvtsutils "^1.0.9"
+ tslib "^1.10.0"
+
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
webpack-cli@^3.1.1:
version "3.3.10"
resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13"
@@ -8613,25 +8870,6 @@ webpack-cli@^3.1.1:
v8-compile-cache "2.0.3"
yargs "13.2.4"
-webpack-dev-middleware@^3.7.0:
- version "3.7.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3"
- integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==
- dependencies:
- memory-fs "^0.4.1"
- mime "^2.4.4"
- mkdirp "^0.5.1"
- range-parser "^1.2.1"
- webpack-log "^2.0.0"
-
-webpack-log@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f"
- integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
- dependencies:
- ansi-colors "^3.0.0"
- uuid "^3.3.2"
-
webpack-sources@^1.4.0, webpack-sources@^1.4.1:
version "1.4.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
@@ -8674,6 +8912,13 @@ what-input@^5.2.6:
resolved "https://registry.yarnpkg.com/what-input/-/what-input-5.2.6.tgz#ac6f003bf8d3592a0031dea7a03565469b00020b"
integrity sha512-a0BcI5YR7xp87vSzGcbN0IszJKpUQuTmrZaTSQBl7TLDIdKj6rDhluQ7b/7lYGG81gWDvkySsEvwv4BW5an9kg==
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
whatwg-fetch@>=0.10.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
@@ -8689,6 +8934,29 @@ whatwg-fetch@^1.1.1:
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319"
integrity sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk=
+whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+whatwg-url@^6.4.1:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8"
+ integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
which-boxed-primitive@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1"
@@ -8715,7 +8983,7 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.1:
+which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -8768,6 +9036,15 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+write-file-atomic@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529"
+ integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
write@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
@@ -8775,24 +9052,22 @@ write@1.0.3:
dependencies:
mkdirp "^0.5.1"
-ws@~3.3.1:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
- integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==
+ws@^5.2.0:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"
+ integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==
dependencies:
async-limiter "~1.0.0"
- safe-buffer "~5.1.0"
- ultron "~1.1.0"
x-is-string@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
-xmlhttprequest-ssl@~1.5.4:
- version "1.5.5"
- resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
- integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
version "4.0.2"
@@ -8804,11 +9079,6 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
-yallist@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
- integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
-
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
@@ -8829,7 +9099,7 @@ yargs-parser@^11.1.1:
camelcase "^5.0.0"
decamelize "^1.2.0"
-yargs-parser@^13.1.0:
+yargs-parser@^13.1.0, yargs-parser@^13.1.1:
version "13.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
@@ -8872,10 +9142,21 @@ yargs@^12.0.5:
y18n "^3.2.1 || ^4.0.0"
yargs-parser "^11.1.1"
-yeast@0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
- integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
+yargs@^13.3.0:
+ version "13.3.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83"
+ integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.1"
zxcvbn@^4.4.2:
version "4.4.2"