From 76008e8abd3e89eda16d39260e93e570d44cff7f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 12 Apr 2017 18:13:25 +0100 Subject: [PATCH 001/220] Remember and Recall window layout so that position+size persist Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron/src/electron-main.js | 16 +++++++++++++++- package.json | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 33b44ce9d1..8dd5e81333 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -30,6 +30,8 @@ const tray = require('./tray'); const VectorMenu = require('./vectormenu'); +const windowStateKeeper = require('electron-window-state'); + let vectorConfig = {}; try { vectorConfig = require('../../webapp/config.json'); @@ -186,11 +188,21 @@ electron.app.on('ready', () => { process.platform == 'win32' ? 'ico' : 'png' ); + // Load the previous window state with fallback to defaults + let mainWindowState = windowStateKeeper({ + defaultWidth: 1024, + defaultHeight: 768, + }); + mainWindow = new electron.BrowserWindow({ icon: icon_path, - width: 1024, height: 768, show: false, autoHideMenuBar: true, + + x: mainWindowState.x, + y: mainWindowState.y, + width: mainWindowState.width, + height: mainWindowState.height, }); mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); electron.Menu.setApplicationMenu(VectorMenu); @@ -226,6 +238,8 @@ electron.app.on('ready', () => { onLinkContextMenu(ev, params); } }); + + mainWindowState.manage(mainWindow); }); electron.app.on('window-all-closed', () => { diff --git a/package.json b/package.json index 28cde3895a..35ffb87b78 100644 --- a/package.json +++ b/package.json @@ -96,6 +96,7 @@ "css-raw-loader": "^0.1.1", "electron-builder": "^11.2.4", "electron-builder-squirrel-windows": "^11.2.1", + "electron-window-state": "^4.1.0", "emojione": "^2.2.7", "eslint": "^3.14.0", "eslint-config-google": "^0.7.1", From 3fb54029d7dff8b66f48d6a50ce4ac92ed268373 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 13 Apr 2017 13:39:15 +0100 Subject: [PATCH 002/220] Fix packaged functionality Improve dependency management for Electron main process deps Dependencies in /electron/package.json will be installed through a script in /package.json and will be bundled via electron-builder Does not affect standard webapp whatsoever Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .gitignore | 1 + electron/package.json | 6 ++++++ package.json | 11 ++++++----- 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 electron/package.json diff --git a/.gitignore b/.gitignore index c28df64c65..86baa127f7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /key.pem /lib /node_modules +/electron/node_modules /packages/ /webapp /.npmrc diff --git a/electron/package.json b/electron/package.json new file mode 100644 index 0000000000..e6e7e2a42d --- /dev/null +++ b/electron/package.json @@ -0,0 +1,6 @@ +{ + "description": "Electron main process dependencies", + "dependencies": { + "electron-window-state": "^4.1.0" + } +} diff --git a/package.json b/package.json index 35ffb87b78..dc1e3bea96 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "build": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", + "postinstall": "cd electron && npm i", "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", @@ -96,7 +97,6 @@ "css-raw-loader": "^0.1.1", "electron-builder": "^11.2.4", "electron-builder-squirrel-windows": "^11.2.1", - "electron-window-state": "^4.1.0", "emojione": "^2.2.7", "eslint": "^3.14.0", "eslint-config-google": "^0.7.1", @@ -145,6 +145,7 @@ "dereference": true, "//files": "We bundle everything, so we only need to include webapp/", "files": [ + "electron/node_modules/**", "electron/src/**", "electron/img/**", "webapp/**", @@ -159,10 +160,10 @@ }, "win": { "target": "squirrel" + }, + "directories": { + "buildResources": "electron/build", + "output": "electron/dist" } - }, - "directories": { - "buildResources": "electron/build", - "output": "electron/dist" } } From 20abb2c2dfd15eb339d9730589cf65fada4299cb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 21 Apr 2017 13:01:10 +0100 Subject: [PATCH 003/220] Add Forward Message button to m.room.message events Conform this file to eslint Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/context_menus/MessageContextMenu.js | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index db416b8a06..4a6c978892 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -16,13 +16,13 @@ limitations under the License. 'use strict'; -var React = require('react'); +const React = require('react'); -var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); -var dis = require('matrix-react-sdk/lib/dispatcher'); -var sdk = require('matrix-react-sdk'); -var Modal = require('matrix-react-sdk/lib/Modal'); -var Resend = require("matrix-react-sdk/lib/Resend"); +const MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); +const dis = require('matrix-react-sdk/lib/dispatcher'); +const sdk = require('matrix-react-sdk'); +const Modal = require('matrix-react-sdk/lib/Modal'); +const Resend = require("matrix-react-sdk/lib/Resend"); import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; module.exports = React.createClass({ @@ -45,7 +45,7 @@ module.exports = React.createClass({ }, onViewSourceClick: function() { - var ViewSource = sdk.getComponent('structures.ViewSource'); + const ViewSource = sdk.getComponent('structures.ViewSource'); Modal.createDialog(ViewSource, { content: this.props.mxEvent.event, }, 'mx_Dialog_viewsource'); @@ -70,12 +70,12 @@ module.exports = React.createClass({ MatrixClientPeg.get().redactEvent( this.props.mxEvent.getRoomId(), this.props.mxEvent.getId() ).catch(function(e) { - var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); + const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); // display error message stating you couldn't delete this. - var code = e.errcode || e.statusCode; + const code = e.errcode || e.statusCode; Modal.createDialog(ErrorDialog, { title: "Error", - description: "You cannot delete this message. (" + code + ")" + description: "You cannot delete this message. (" + code + ")", }); }).done(); }, @@ -88,6 +88,14 @@ module.exports = React.createClass({ if (this.props.onFinished) this.props.onFinished(); }, + onForwardClick: function() { + dis.dispatch({ + action: 'forward_message', + content: this.props.mxEvent.getContent(), + }); + this.closeMenu(); + }, + closeMenu: function() { if (this.props.onFinished) this.props.onFinished(); }, @@ -99,7 +107,7 @@ module.exports = React.createClass({ if (this.props.onFinished) this.props.onFinished(); }, - onQuoteClick: function () { + onQuoteClick: function() { console.log(this.props.mxEvent); dis.dispatch({ action: 'quote', @@ -108,15 +116,16 @@ module.exports = React.createClass({ }, render: function() { - var eventStatus = this.props.mxEvent.status; - var resendButton; - var viewSourceButton; - var viewClearSourceButton; - var redactButton; - var cancelButton; - var permalinkButton; - var unhidePreviewButton; - var externalURLButton; + const eventStatus = this.props.mxEvent.status; + let resendButton; + let redactButton; + let cancelButton; + let forwardButton; + let viewSourceButton; + let viewClearSourceButton; + let unhidePreviewButton; + let permalinkButton; + let externalURLButton; if (eventStatus === 'not_sent') { resendButton = ( @@ -142,6 +151,14 @@ module.exports = React.createClass({ ); } + if (this.props.mxEvent.getType() === 'm.room.message') { + forwardButton = ( +
+ Forward Message +
+ ); + } + viewSourceButton = (
View Source @@ -162,7 +179,7 @@ module.exports = React.createClass({
Unhide Preview
- ) + ); } } @@ -185,7 +202,7 @@ module.exports = React.createClass({ externalURLButton = (
Source URL + rel="noopener" target="_blank" onClick={ this.closeMenu }>Source URL
); } @@ -196,6 +213,7 @@ module.exports = React.createClass({ {resendButton} {redactButton} {cancelButton} + {forwardButton} {viewSourceButton} {viewClearSourceButton} {unhidePreviewButton} @@ -204,5 +222,5 @@ module.exports = React.createClass({ {externalURLButton}
); - } + }, }); From 77ce58b59d8e382568cf436f5eeaef56d6a495f6 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 21 Apr 2017 12:58:43 +0100 Subject: [PATCH 004/220] add .idea to .gitignore so I don't accidentally push my IDE config Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c28df64c65..c9e9b250be 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ npm-debug.log electron/dist electron/pub +/.idea From 9747836a4dccf6d913ad9ae3e15eb9e5c7951a6a Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:24:29 +0100 Subject: [PATCH 005/220] Update react-sdk and js-sdk dependencies --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8bdb2ba0f4..2341734587 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.6", - "matrix-react-sdk": "0.8.7", + "matrix-js-sdk": "0.7.7-rc.1", + "matrix-react-sdk": "0.8.8-rc.1", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From b5a5b472c482754b38a98f63c323ce637d2d0d9f Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:26:29 +0100 Subject: [PATCH 006/220] Prepare changelog for v0.9.9-rc.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2ed314978..bde4dbd168 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) + + * Update js-sdk and matrix-react-sdk to fix registration without a captcha (https://github.com/vector-im/riot-web/issues/3621) + + Changes in [0.9.8](https://github.com/vector-im/riot-web/releases/tag/v0.9.8) (2017-04-12) ========================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8-rc.3...v0.9.8) From eec0c274d260f1f4e067558f980bb4c89fc9875f Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:26:29 +0100 Subject: [PATCH 007/220] v0.9.9-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2341734587..d58b7f22ad 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.8", + "version": "0.9.9-rc.1", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From ca6d9063fdef52022e53ff6e3c2d314abc742e22 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:32:55 +0100 Subject: [PATCH 008/220] Back up release version to try again --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d58b7f22ad..7ec84667b9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.9-rc.1", + "version": "0.9.9", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From f25612198efb930348e2bf077a86a0ca1fb446f5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:33:53 +0100 Subject: [PATCH 009/220] 0.9.8, not 0.9.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7ec84667b9..2341734587 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.9", + "version": "0.9.8", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From d0c0eeac0aac27a7ccaba978a52b6cd924cb191b Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:35:14 +0100 Subject: [PATCH 010/220] Prepare changelog for v0.9.9-rc.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bde4dbd168..4be99030f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) + + Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) From 95647fb7a1c18533271668d95dc6376e0a1c3445 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:35:15 +0100 Subject: [PATCH 011/220] v0.9.9-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2341734587..d58b7f22ad 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.8", + "version": "0.9.9-rc.1", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From ce5a7ba48aac244225604c1a8e007d03a1e67750 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:39:11 +0100 Subject: [PATCH 012/220] Rewind version to try again, again --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d58b7f22ad..2341734587 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.9-rc.1", + "version": "0.9.8", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From 8aed52ece990254efc000712638a7d2f895ff1a9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:40:24 +0100 Subject: [PATCH 013/220] Prepare changelog for v0.9.9-rc.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4be99030f1..0145dec622 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9. [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) +Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) + + Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) From 141aafd18e0962fc791bf6413124a5e6f5bfc12f Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 21 Apr 2017 18:40:25 +0100 Subject: [PATCH 014/220] v0.9.9-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2341734587..d58b7f22ad 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.8", + "version": "0.9.9-rc.1", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From 2139fb74bbbd3c7f1865efd49342029939393584 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 23 Apr 2017 09:56:43 +0100 Subject: [PATCH 015/220] change show logic to same as that of the tray icon Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/vector/platform/ElectronPlatform.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index b0928a8f41..21d324a49b 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -106,13 +106,14 @@ export default class ElectronPlatform extends VectorBasePlatform { notification.onclick = function() { dis.dispatch({ action: 'view_room', - room_id: room.roomId + room_id: room.roomId, }); global.focus(); - const currentWin = electron.remote.getCurrentWindow(); - currentWin.show(); - currentWin.restore(); - currentWin.focus(); + const win = electron.remote.getCurrentWindow(); + + if (win.isMinimized()) win.restore(); + else if (!win.isVisible()) win.show(); + else win.focus(); }; return notification; From b3c9229aeeae48620a1a8164dc1f1eb1cdef8cfb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 23 Apr 2017 09:59:00 +0100 Subject: [PATCH 016/220] DRY code and change double quotes to single Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/vector/platform/ElectronPlatform.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 21d324a49b..9c857e3524 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -24,12 +24,12 @@ import q from 'q'; const electron = require('electron'); const remote = electron.remote; -electron.remote.autoUpdater.on('update-downloaded', onUpdateDownloaded); +remote.autoUpdater.on('update-downloaded', onUpdateDownloaded); function onUpdateDownloaded(ev, releaseNotes, ver, date, updateURL) { dis.dispatch({ action: 'new_version', - currentVersion: electron.remote.app.getVersion(), + currentVersion: remote.app.getVersion(), newVersion: ver, releaseNotes: releaseNotes, }); @@ -68,7 +68,7 @@ export default class ElectronPlatform extends VectorBasePlatform { try { remote.app.setBadgeCount(count); } catch (e) { - console.error("Failed to set notification count", e); + console.error('Failed to set notification count', e); } } @@ -89,7 +89,7 @@ export default class ElectronPlatform extends VectorBasePlatform { // we only have to strip out < and > as the spec doesn't include anything about things like & // so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done. if (window.process.platform === 'linux') { - msg = msg.replace(//g, ">"); + msg = msg.replace(//g, '>'); } // Notifications in Electron use the HTML5 notification API @@ -98,7 +98,7 @@ export default class ElectronPlatform extends VectorBasePlatform { { body: msg, icon: avatarUrl, - tag: "vector", + tag: 'vector', silent: true, // we play our own sounds } ); @@ -109,7 +109,7 @@ export default class ElectronPlatform extends VectorBasePlatform { room_id: room.roomId, }); global.focus(); - const win = electron.remote.getCurrentWindow(); + const win = remote.getCurrentWindow(); if (win.isMinimized()) win.restore(); else if (!win.isVisible()) win.show(); @@ -124,7 +124,7 @@ export default class ElectronPlatform extends VectorBasePlatform { } getAppVersion() { - return q(electron.remote.app.getVersion()); + return q(remote.app.getVersion()); } pollForUpdate() { @@ -141,7 +141,7 @@ export default class ElectronPlatform extends VectorBasePlatform { } getDefaultDeviceDisplayName() { - return "Riot Desktop on " + platformFriendlyName(); + return 'Riot Desktop on ' + platformFriendlyName(); } screenCaptureErrorString() { @@ -153,6 +153,6 @@ export default class ElectronPlatform extends VectorBasePlatform { } reload() { - electron.remote.getCurrentWebContents().reload(); + remote.getCurrentWebContents().reload(); } } From 9e2324fb69342897d3a95fa4bf8a9d95dae66be0 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sun, 23 Apr 2017 22:50:58 +0100 Subject: [PATCH 017/220] don't hook on postinstall, current dev cycle uses (abuses) npm i to build so no point making it take longer than it has to for the devs only testing webapp build:electron - hook npm run install:electron install:electron - run npm i for the electron deps electron - start the app locally for testing add to README Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- README.md | 1 + package.json | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d7ab81b8a..7bef64783d 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ To run as a desktop app: ``` npm install electron + npm run install:electron node_modules/.bin/electron . ``` diff --git a/package.json b/package.json index dc1e3bea96..a64d0d9ea3 100644 --- a/package.json +++ b/package.json @@ -32,11 +32,12 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", + "build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64", "build": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", - "postinstall": "cd electron && npm i", + "install:electron": "cd electron && npm i", + "electron": "npm run install:electron && electron .", "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", "start:js:prod": "NODE_ENV=production webpack-dev-server -w --progress", From c067800a4fa4a32d809e685a0df72c69c345505a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 24 Apr 2017 10:00:39 +0100 Subject: [PATCH 018/220] Disable dropdown highlight on focus --- .../css/matrix-react-sdk/views/elements/_Dropdown.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss index 1f9cbb63dd..26fe3792e8 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_Dropdown.scss @@ -31,6 +31,11 @@ limitations under the License. border-color: $accent-color; } +/* Disable dropdown highlight on focus */ +.mx_Dropdown_input.mx_AccessibleButton:focus { + filter: none; +} + .mx_Dropdown_arrow { border-color: $primary-fg-color transparent transparent; border-style: solid; From 61bba6c31f060df4e78ff314bb1b614494530d3c Mon Sep 17 00:00:00 2001 From: turt2live Date: Mon, 24 Apr 2017 08:44:53 -0600 Subject: [PATCH 019/220] CSS to make h1 and h2 the same size as h1. Addresses #1772 Signed-off-by: Travis Ralston --- .../css/matrix-react-sdk/views/rooms/_EventTile.scss | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index 4f01aeeee7..5adf016f05 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -331,6 +331,14 @@ limitations under the License. font-family: inherit ! important; } + +/* Make h1 and h2 the same size as h3. */ +.mx_EventTile_content .markdown-body h1, +.mx_EventTile_content .markdown-body h2 +{ + font-size: 1.5em; +} + .mx_EventTile_content .markdown-body a { color: $accent-color; } From 69f5833c9f648ea1a9497336b4124974e23847b7 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Mon, 24 Apr 2017 16:05:10 +0100 Subject: [PATCH 020/220] Prevent long room names/topics from pushing UI of the screen This was causing the "save" button in RoomSettings to be obscured when room names were set to long strings without spaces Fixes https://github.com/vector-im/riot-web/issues/1729 --- .../vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 4affc99490..5150d8cfdd 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -31,6 +31,7 @@ limitations under the License. margin-left: -2px; order: 1; flex: 1; + overflow: hidden; } .mx_RoomHeader_spinner { From 1701ea43a4109efcad0d9381bbeda6248abd486e Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 24 Apr 2017 18:22:23 +0100 Subject: [PATCH 021/220] Remove spurious changelog entries --- CHANGELOG.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0145dec622..bde4dbd168 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,3 @@ -Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) -==================================================================================================== -[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) - - -Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) -==================================================================================================== -[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) - - Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) From b6435502fc6c84f84c82e9355815670dfdb03ad8 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 24 Apr 2017 18:25:13 +0100 Subject: [PATCH 022/220] New version of react-sdk --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d58b7f22ad..2584954eda 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", "matrix-js-sdk": "0.7.7-rc.1", - "matrix-react-sdk": "0.8.8-rc.1", + "matrix-react-sdk": "0.8.8-rc.2", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 7f2fa09d4c7df9c375cbeab60c4627f85236921b Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 24 Apr 2017 18:26:19 +0100 Subject: [PATCH 023/220] Prepare changelog for v0.9.9-rc.2 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bde4dbd168..71210db3a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +Changes in [0.9.9-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.2) (2017-04-24) +==================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.9-rc.1...v0.9.9-rc.2) + + * Fix bug where links to Riot would fail to open. + + Changes in [0.9.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.1) (2017-04-21) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.8...v0.9.9-rc.1) From 5326faa0b805c536be19cafc9c134a4b154891a8 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 24 Apr 2017 18:26:20 +0100 Subject: [PATCH 024/220] v0.9.9-rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2584954eda..835a27f136 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.9-rc.1", + "version": "0.9.9-rc.2", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From 92b52a61e71f808a65afc0e4d93aa9a08f5a022b Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 24 Apr 2017 18:33:25 +0100 Subject: [PATCH 025/220] don't show forward option for things we cannot decrypt Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/views/context_menus/MessageContextMenu.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index 4a6c978892..5de8d18d72 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -151,7 +151,8 @@ module.exports = React.createClass({ ); } - if (this.props.mxEvent.getType() === 'm.room.message') { + if (this.props.mxEvent.getType() === 'm.room.message' + && this.props.mxEvent.getContent().msgtype !== 'm.bad.encrypted') { forwardButton = (
Forward Message From 0a1ebc2487cf3f85f017b93f21088215136342a2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Mon, 24 Apr 2017 22:43:02 +0100 Subject: [PATCH 026/220] Don't show for anything that doesn't have a msgtype and body otherwise the server will just reject it anyway Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../views/context_menus/MessageContextMenu.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index 5de8d18d72..002ec5bccc 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -151,13 +151,17 @@ module.exports = React.createClass({ ); } - if (this.props.mxEvent.getType() === 'm.room.message' - && this.props.mxEvent.getContent().msgtype !== 'm.bad.encrypted') { - forwardButton = ( -
- Forward Message -
- ); + if (this.props.mxEvent.getType() === 'm.room.message') { + const content = this.props.mxEvent.getContent(); + if (content.msgtype // truthy check msgtype + && content.msgtype !== 'm.bad.encrypted' + && content.hasOwnProperty('body')) { + forwardButton = ( +
+ Forward Message +
+ ); + } } viewSourceButton = ( From 4dd6ee681d3032f7d7a3d58e8a88ea07017e420f Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 25 Apr 2017 00:14:18 +0100 Subject: [PATCH 027/220] fix /config.json in .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0978bc5676..c5826b78d8 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ npm-debug.log electron/dist electron/pub -config.json +/config.json From e24ef2bb5cbbcaa8a4541465b98a7f0793200979 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 25 Apr 2017 10:18:17 +0100 Subject: [PATCH 028/220] Warn when exiting due to single-instance This lost me a fair bit of time trying to figure out why Riot was starting and then immediately quitting. --- electron/src/electron-main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index e6ffffac9b..a1fc9c1a6d 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -171,6 +171,7 @@ const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirector }); if (shouldQuit) { + console.log("Other instance detected: exiting"); electron.app.quit() } From 2d311ddbf4ea1848a0374e6ba288897652dcc746 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 25 Apr 2017 11:04:03 +0100 Subject: [PATCH 029/220] Released js-sdk & react-sdk --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 835a27f136..ba875972c1 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.7-rc.1", - "matrix-react-sdk": "0.8.8-rc.2", + "matrix-js-sdk": "0.7.7", + "matrix-react-sdk": "0.8.8", "modernizr": "^3.1.0", "q": "^1.4.1", "react": "^15.4.0", From 6fd64d19f0f95e9c009056ea8a3212015bf38b1c Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 25 Apr 2017 11:08:07 +0100 Subject: [PATCH 030/220] Prepare changelog for v0.9.9 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71210db3a9..ea63ee66a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +Changes in [0.9.9](https://github.com/vector-im/riot-web/releases/tag/v0.9.9) (2017-04-25) +========================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.9-rc.2...v0.9.9) + + * No changes + + Changes in [0.9.9-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.9.9-rc.2) (2017-04-24) ==================================================================================================== [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.9.9-rc.1...v0.9.9-rc.2) From aa482bae2857215619094c698f497b4c05de3127 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 25 Apr 2017 11:08:08 +0100 Subject: [PATCH 031/220] v0.9.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ba875972c1..340ee80560 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron/src/electron-main.js", - "version": "0.9.9-rc.2", + "version": "0.9.9", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { From 78cabed0bfb9d9815dce54707bf615cd7ae5f50a Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Tue, 25 Apr 2017 16:24:00 +0100 Subject: [PATCH 032/220] Modify CSS for matrix-org/matrix-react-sdk#833 --- .../structures/_UserSettings.scss | 9 ++++++++ .../structures/login/_Login.scss | 22 ++++++------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 9f33e1bcc2..739ac88ab9 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -176,6 +176,15 @@ limitations under the License. cursor: pointer; } +.mx_UserSettings_phoneSection { + display:table; +} + +.mx_UserSettings_phoneCountry { + width: 70px; + display: table-cell; +} + input.mx_UserSettings_phoneNumberField { margin-left: 3px; width: 172px; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 124304802a..93173ed336 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -179,11 +179,11 @@ limitations under the License. align-self: flex-end; } -.mx_Login_username_group { +.mx_Login_field_group { display: flex; } -.mx_Login_username_prefix { +.mx_Login_field_prefix { height: 33px; padding: 0px 5px; line-height: 33px; @@ -196,7 +196,7 @@ limitations under the License. text-align: center; } -.mx_Login_username_suffix { +.mx_Login_field_suffix { height: 33px; padding: 0px 5px; line-height: 33px; @@ -214,7 +214,9 @@ limitations under the License. flex-shrink: 1; min-width: 0px; border-radius: 3px; - /* The "@" is always prefixed, so no rounded corners */ +} + +.mx_Login_field_has_prefix { border-top-left-radius: 0px; border-bottom-left-radius: 0px; } @@ -224,13 +226,8 @@ limitations under the License. border-bottom-right-radius: 0px; } -.mx_Login_phoneSection { - display: table; -} - .mx_Login_phoneCountry { - display: table-cell; - width: 70px; + margin-bottom: 14px; } .mx_Login_phoneCountry .mx_Dropdown_option { @@ -246,8 +243,3 @@ limitations under the License. margin: 4px; vertical-align: top; } - -.mx_Login_phoneNumberField { - width: 210px; - margin-left: 3px; -} From 7b3719bc3c8056660144ef61c180e9f4373c3ae6 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 26 Apr 2017 16:27:25 +0100 Subject: [PATCH 033/220] Remove unused `placeholder` prop on RoomDropTarget --- src/components/views/rooms/RoomDropTarget.js | 20 ++++++------------- .../views/rooms/_RoomDropTarget.scss | 5 ----- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/components/views/rooms/RoomDropTarget.js b/src/components/views/rooms/RoomDropTarget.js index 1c5eb3c115..f5ca4f015d 100644 --- a/src/components/views/rooms/RoomDropTarget.js +++ b/src/components/views/rooms/RoomDropTarget.js @@ -22,20 +22,12 @@ module.exports = React.createClass({ displayName: 'RoomDropTarget', render: function() { - if (this.props.placeholder) { - return ( -
+ return ( +
+
+ { this.props.label }
- ); - } - else { - return ( -
-
- { this.props.label } -
-
- ); - } +
+ ); } }); diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss index e0a50a95c7..08229e377b 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_RoomDropTarget.scss @@ -33,11 +33,6 @@ limitations under the License. margin-left: 10px; } -.mx_RoomDropTarget_placeholder { - padding-top: 1px; - padding-bottom: 1px; -} - .mx_RoomDropTarget_label { position: relative; margin-top: 3px; From 44d0e7dcba2c2261be9b3730f0000b49b357d4a6 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Wed, 26 Apr 2017 18:00:51 +0100 Subject: [PATCH 034/220] Fix emote RRs alignment --- .../vector/css/matrix-react-sdk/views/rooms/_EventTile.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index 5adf016f05..cbd7142285 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -218,8 +218,8 @@ limitations under the License. } .mx_EventTile_continuation .mx_EventTile_readAvatars, -.mx_EventTile_info .mx_EventTile_readAvatars -{ +.mx_EventTile_info .mx_EventTile_readAvatars, +.mx_EventTile_emote .mx_EventTile_readAvatars { top: 7px; } From e6f694307d7ee176fdda81722766cabe234fa3a9 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 27 Apr 2017 16:46:14 +0100 Subject: [PATCH 035/220] add word-break to RoomDirectory --- src/skins/vector/css/vector-web/structures/_RoomDirectory.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss index 6e508ec78f..4acdd244c6 100644 --- a/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss +++ b/src/skins/vector/css/vector-web/structures/_RoomDirectory.scss @@ -21,6 +21,7 @@ limitations under the License. margin-right: auto; margin-bottom: 12px; color: $primary-fg-color; + word-break: break-word; display: flex; From afb4b79d81e3159c4d9507874a64acc1629cb560 Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 27 Apr 2017 18:04:41 +0100 Subject: [PATCH 036/220] Improve Room Directory Look & Feel By adding an icon next to the title. Requires https://github.com/matrix-org/matrix-react-sdk/pull/848 --- src/components/structures/RoomDirectory.js | 2 +- .../css/matrix-react-sdk/views/rooms/_RoomHeader.scss | 6 ++++++ .../vector/css/vector-web/structures/_RoomDirectory.scss | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index f8a3d9e981..cdf8d19e55 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -548,7 +548,7 @@ module.exports = React.createClass({ const DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox'); return (
- +
Date: Wed, 26 Apr 2017 19:00:07 +0100 Subject: [PATCH 037/220] Make left panel more friendly to new users https://github.com/vector-im/riot-web/issues/3609 --- src/components/structures/RoomSubList.js | 14 +++++++----- .../views/rooms/_RoomList.scss | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 577dac9c8f..fde35b129f 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -82,6 +82,7 @@ var RoomSubList = React.createClass({ incomingCall: React.PropTypes.object, onShowMoreRooms: React.PropTypes.func, searchFilter: React.PropTypes.string, + emptyContent: React.PropTypes.node, // content shown if the list is empty }, getInitialState: function() { @@ -468,16 +469,18 @@ var RoomSubList = React.createClass({ render: function() { var connectDropTarget = this.props.connectDropTarget; - var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget'); var TruncatedList = sdk.getComponent('elements.TruncatedList'); var label = this.props.collapsed ? null : this.props.label; //console.log("render: " + JSON.stringify(this.state.sortedList)); - var target; - if (this.state.sortedList.length == 0 && this.props.editable) { - target = ; + let content; + if (this.state.sortedList.length == 0) { + //content = ; + content = this.props.emptyContent; + } else { + content = this.makeRoomTiles(); } var roomCount = this.props.list.length > 0 ? this.props.list.length : ''; @@ -497,8 +500,7 @@ var RoomSubList = React.createClass({ if (!this.state.hidden) { subList = - { target } - { this.makeRoomTiles() } + { content } ; } else { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index 110dcd5b6b..bc699ae792 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +Copyright 2107 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. @@ -37,3 +38,24 @@ limitations under the License. .mx_RoomList_scrollbar .gm-scrollbar.-vertical { z-index: 6; } + +.mx_RoomList_greyedSubListLabel { + color: #a2a2a2; +} + +.mx_RoomList_emptySubListTip { + font-size: 13px; + margin-left: 18px; + margin-right: 18px; + margin-top: 8px; + margin-bottom: 7px; + padding: 5px; + border: 1px solid $accent-color; + color: $primary-fg-color; + background-color: $droptarget-bg-color; + border-radius: 4px; +} + +.mx_RoomList_butonPreview { + float: right; +} From 73fb2c859e2c60d843eb9107fd0d200b06520ee3 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 28 Apr 2017 11:20:55 +0100 Subject: [PATCH 038/220] Remove now-redundant grey CSS --- .../vector/css/matrix-react-sdk/views/rooms/_RoomList.scss | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index bc699ae792..e51b64f0c4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -39,10 +39,6 @@ limitations under the License. z-index: 6; } -.mx_RoomList_greyedSubListLabel { - color: #a2a2a2; -} - .mx_RoomList_emptySubListTip { font-size: 13px; margin-left: 18px; From 4eb0ca63a9e4cc12fb3131a57edccb7dc580fdc4 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 28 Apr 2017 11:22:05 +0100 Subject: [PATCH 039/220] Revert commits acciderntally put on develop --- src/components/structures/RoomSubList.js | 14 ++++++-------- .../views/rooms/_RoomList.scss | 18 ------------------ 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index fde35b129f..577dac9c8f 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -82,7 +82,6 @@ var RoomSubList = React.createClass({ incomingCall: React.PropTypes.object, onShowMoreRooms: React.PropTypes.func, searchFilter: React.PropTypes.string, - emptyContent: React.PropTypes.node, // content shown if the list is empty }, getInitialState: function() { @@ -469,18 +468,16 @@ var RoomSubList = React.createClass({ render: function() { var connectDropTarget = this.props.connectDropTarget; + var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget'); var TruncatedList = sdk.getComponent('elements.TruncatedList'); var label = this.props.collapsed ? null : this.props.label; //console.log("render: " + JSON.stringify(this.state.sortedList)); - let content; - if (this.state.sortedList.length == 0) { - //content = ; - content = this.props.emptyContent; - } else { - content = this.makeRoomTiles(); + var target; + if (this.state.sortedList.length == 0 && this.props.editable) { + target = ; } var roomCount = this.props.list.length > 0 ? this.props.list.length : ''; @@ -500,7 +497,8 @@ var RoomSubList = React.createClass({ if (!this.state.hidden) { subList = - { content } + { target } + { this.makeRoomTiles() } ; } else { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index e51b64f0c4..110dcd5b6b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -1,6 +1,5 @@ /* Copyright 2015, 2016 OpenMarket Ltd -Copyright 2107 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. @@ -38,20 +37,3 @@ limitations under the License. .mx_RoomList_scrollbar .gm-scrollbar.-vertical { z-index: 6; } - -.mx_RoomList_emptySubListTip { - font-size: 13px; - margin-left: 18px; - margin-right: 18px; - margin-top: 8px; - margin-bottom: 7px; - padding: 5px; - border: 1px solid $accent-color; - color: $primary-fg-color; - background-color: $droptarget-bg-color; - border-radius: 4px; -} - -.mx_RoomList_butonPreview { - float: right; -} From 96c867b34bbee417620ffbdb38a14585528198d4 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 26 Apr 2017 19:00:07 +0100 Subject: [PATCH 040/220] Make left panel more friendly to new users https://github.com/vector-im/riot-web/issues/3609 --- src/components/structures/RoomSubList.js | 14 +++++++----- .../views/rooms/_RoomList.scss | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 577dac9c8f..fde35b129f 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -82,6 +82,7 @@ var RoomSubList = React.createClass({ incomingCall: React.PropTypes.object, onShowMoreRooms: React.PropTypes.func, searchFilter: React.PropTypes.string, + emptyContent: React.PropTypes.node, // content shown if the list is empty }, getInitialState: function() { @@ -468,16 +469,18 @@ var RoomSubList = React.createClass({ render: function() { var connectDropTarget = this.props.connectDropTarget; - var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget'); var TruncatedList = sdk.getComponent('elements.TruncatedList'); var label = this.props.collapsed ? null : this.props.label; //console.log("render: " + JSON.stringify(this.state.sortedList)); - var target; - if (this.state.sortedList.length == 0 && this.props.editable) { - target = ; + let content; + if (this.state.sortedList.length == 0) { + //content = ; + content = this.props.emptyContent; + } else { + content = this.makeRoomTiles(); } var roomCount = this.props.list.length > 0 ? this.props.list.length : ''; @@ -497,8 +500,7 @@ var RoomSubList = React.createClass({ if (!this.state.hidden) { subList = - { target } - { this.makeRoomTiles() } + { content } ; } else { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index 110dcd5b6b..bc699ae792 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +Copyright 2107 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. @@ -37,3 +38,24 @@ limitations under the License. .mx_RoomList_scrollbar .gm-scrollbar.-vertical { z-index: 6; } + +.mx_RoomList_greyedSubListLabel { + color: #a2a2a2; +} + +.mx_RoomList_emptySubListTip { + font-size: 13px; + margin-left: 18px; + margin-right: 18px; + margin-top: 8px; + margin-bottom: 7px; + padding: 5px; + border: 1px solid $accent-color; + color: $primary-fg-color; + background-color: $droptarget-bg-color; + border-radius: 4px; +} + +.mx_RoomList_butonPreview { + float: right; +} From 67efb8bde264e3ea0823e40558d29dd89120c0c9 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 29 Apr 2017 00:00:29 +0100 Subject: [PATCH 041/220] Add date tooltip to timestamps --- src/components/views/messages/MessageTimestamp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/MessageTimestamp.js b/src/components/views/messages/MessageTimestamp.js index dda87767a6..ab910b05ab 100644 --- a/src/components/views/messages/MessageTimestamp.js +++ b/src/components/views/messages/MessageTimestamp.js @@ -25,7 +25,7 @@ module.exports = React.createClass({ render: function() { var date = new Date(this.props.ts); return ( - + { DateUtils.formatTime(date) } ); From 4a8ad53bd956866dbd413b24f5d820d352a34186 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Sun, 30 Apr 2017 13:11:01 +0100 Subject: [PATCH 042/220] Pin filesize ver to fix break upstream https://travis-ci.org/vector-im/riot-web/builds/227340622 avoidwork/filesize.js#87 3.5.7 and 3.5.8 ver released <24h ago and broke stuff for us --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 843b69dc19..a25e17955f 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "draft-js": "^0.8.1", "extract-text-webpack-plugin": "^0.9.1", "favico.js": "^0.3.10", - "filesize": "^3.1.2", + "filesize": "3.5.6", "flux": "~2.0.3", "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", From 61c338a23358f340008f63a2b193d18e59529b87 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 May 2017 21:24:02 +0100 Subject: [PATCH 043/220] remove leading v in /version file so its semver and also then consistent with electron versioning Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- scripts/package.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/package.sh b/scripts/package.sh index 5c1fdd5e36..b3bc00bf03 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -e @@ -22,7 +22,14 @@ cp config.sample.json webapp/ mkdir -p dist cp -r webapp vector-$version -echo $version > vector-$version/version + +# if $version looks like semver with leading v, strip it before writing to file +if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then + echo ${version:1} > vector-$version/version +else + echo ${version} > vector-$version/version +fi + tar chvzf dist/vector-$version.tar.gz vector-$version rm -r vector-$version From 6367344181d4312fb0d18b89a3c022ee5da9ae94 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 2 May 2017 21:29:19 +0100 Subject: [PATCH 044/220] tidy and fix flow notation Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/vector/platform/ElectronPlatform.js | 22 ++++++------- src/vector/platform/VectorBasePlatform.js | 2 +- src/vector/platform/WebPlatform.js | 39 +++++++++++------------ 3 files changed, 30 insertions(+), 33 deletions(-) diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 9c857e3524..82ef0b5168 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -20,13 +20,11 @@ limitations under the License. import VectorBasePlatform from './VectorBasePlatform'; import dis from 'matrix-react-sdk/lib/dispatcher'; import q from 'q'; - -const electron = require('electron'); -const remote = electron.remote; +import electron, {remote} from 'electron'; remote.autoUpdater.on('update-downloaded', onUpdateDownloaded); -function onUpdateDownloaded(ev, releaseNotes, ver, date, updateURL) { +function onUpdateDownloaded(ev: Event, releaseNotes: string, ver: string, date: Date, updateURL: string) { dis.dispatch({ action: 'new_version', currentVersion: remote.app.getVersion(), @@ -35,7 +33,7 @@ function onUpdateDownloaded(ev, releaseNotes, ver, date, updateURL) { }); } -function platformFriendlyName() { +function platformFriendlyName(): string { console.log(window.process); switch (window.process.platform) { case 'darwin': @@ -72,11 +70,11 @@ export default class ElectronPlatform extends VectorBasePlatform { } } - supportsNotifications() : boolean { + supportsNotifications(): boolean { return true; } - maySendNotifications() : boolean { + maySendNotifications(): boolean { return true; } @@ -100,7 +98,7 @@ export default class ElectronPlatform extends VectorBasePlatform { icon: avatarUrl, tag: 'vector', silent: true, // we play our own sounds - } + }, ); notification.onclick = function() { @@ -123,7 +121,7 @@ export default class ElectronPlatform extends VectorBasePlatform { notif.close(); } - getAppVersion() { + getAppVersion(): Promise { return q(remote.app.getVersion()); } @@ -140,15 +138,15 @@ export default class ElectronPlatform extends VectorBasePlatform { electron.ipcRenderer.send('install_update'); } - getDefaultDeviceDisplayName() { + getDefaultDeviceDisplayName(): string { return 'Riot Desktop on ' + platformFriendlyName(); } - screenCaptureErrorString() { + screenCaptureErrorString(): ?string { return null; } - requestNotificationPermission() : Promise { + requestNotificationPermission(): Promise { return q('granted'); } diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js index 5240f3f583..1466b76ae3 100644 --- a/src/vector/platform/VectorBasePlatform.js +++ b/src/vector/platform/VectorBasePlatform.js @@ -44,7 +44,7 @@ export default class VectorBasePlatform extends BasePlatform { * Get a sensible default display name for the * device Vector is running on */ - getDefaultDeviceDisplayName() { + getDefaultDeviceDisplayName(): string { return "Unknown device"; } } diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index 5dc5505297..72ca19f06c 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -52,7 +52,7 @@ export default class WebPlatform extends VectorBasePlatform { } this.favicon.badge(notif, { - bgColor: bgColor + bgColor: bgColor, }); } catch (e) { console.warn(`Failed to set badge count: ${e.message}`); @@ -75,7 +75,7 @@ export default class WebPlatform extends VectorBasePlatform { * Returns true if the platform supports displaying * notifications, otherwise false. */ - supportsNotifications() : boolean { + supportsNotifications(): boolean { return Boolean(global.Notification); } @@ -83,8 +83,8 @@ export default class WebPlatform extends VectorBasePlatform { * Returns true if the application currently has permission * to display notifications. Otherwise false. */ - maySendNotifications() : boolean { - return global.Notification.permission == 'granted'; + maySendNotifications(): boolean { + return global.Notification.permission === 'granted'; } /** @@ -94,7 +94,7 @@ export default class WebPlatform extends VectorBasePlatform { * that is 'granted' if the user allowed the request or * 'denied' otherwise. */ - requestNotificationPermission() : Promise { + requestNotificationPermission(): Promise { // annoyingly, the latest spec says this returns a // promise, but this is only supported in Chrome 46 // and Firefox 47, so adapt the callback API. @@ -113,13 +113,13 @@ export default class WebPlatform extends VectorBasePlatform { icon: avatarUrl, tag: "vector", silent: true, // we play our own sounds - } + }, ); notification.onclick = function() { dis.dispatch({ action: 'view_room', - room_id: room.roomId + room_id: room.roomId, }); global.focus(); notification.close(); @@ -132,7 +132,7 @@ export default class WebPlatform extends VectorBasePlatform { }, 5 * 1000); } - _getVersion() { + _getVersion(): Promise { const deferred = q.defer(); // We add a cachebuster to the request to make sure that we know about @@ -148,19 +148,19 @@ export default class WebPlatform extends VectorBasePlatform { }, (err, response, body) => { if (err || response.status < 200 || response.status >= 300) { - if (err == null) err = { status: response.status }; + if (err === null) err = { status: response.status }; deferred.reject(err); return; } const ver = body.trim(); deferred.resolve(ver); - } + }, ); return deferred.promise; } - getAppVersion() { + getAppVersion(): Promise { if (this.runningVersion !== null) { return q(this.runningVersion); } @@ -169,9 +169,9 @@ export default class WebPlatform extends VectorBasePlatform { pollForUpdate() { this._getVersion().done((ver) => { - if (this.runningVersion == null) { + if (this.runningVersion === null) { this.runningVersion = ver; - } else if (this.runningVersion != ver) { + } else if (this.runningVersion !== ver) { dis.dispatch({ action: 'new_version', currentVersion: this.runningVersion, @@ -187,19 +187,18 @@ export default class WebPlatform extends VectorBasePlatform { window.location.reload(); } - getDefaultDeviceDisplayName() { + getDefaultDeviceDisplayName(): string { // strip query-string and fragment from uri - let u = url.parse(window.location.href); + const u = url.parse(window.location.href); u.search = ""; u.hash = ""; - let app_name = u.format(); + const appName = u.format(); - let ua = new UAParser(); - return app_name + " via " + ua.getBrowser().name + - " on " + ua.getOS().name; + const ua = new UAParser(); + return `${appName} via ${ua.getBrowser().name} on ${ua.getOS().name}`; } - screenCaptureErrorString() { + screenCaptureErrorString(): ?string { // it won't work at all if you're not on HTTPS so whine whine whine if (!global.window || global.window.location.protocol !== "https:") { return "You need to be using HTTPS to place a screen-sharing call."; From d5009962cda4f38d423f4fdae0280772a5918469 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Tue, 2 May 2017 22:19:32 +0100 Subject: [PATCH 045/220] Fix scope of callback This may have led to the room list not refreshing on error of deleting alias --- src/components/structures/RoomDirectory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index cdf8d19e55..9104695938 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -204,7 +204,7 @@ module.exports = React.createClass({ }).done(() => { modal.close(); this.refreshRoomList(); - }, function(err) { + }, (err) => { modal.close(); this.refreshRoomList(); console.error("Failed to " + step + ": " + err); From 9997cc989186f535e10bde4c85c69c71c1d73e24 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Tue, 2 May 2017 22:27:30 +0100 Subject: [PATCH 046/220] import Modal class seems to be referring to Modal but does not import it --- src/components/structures/RoomSubList.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 577dac9c8f..c315ae46e9 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -29,6 +29,7 @@ var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils'); var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); var ConstantTimeDispatcher = require('matrix-react-sdk/lib/ConstantTimeDispatcher'); var RoomSubListHeader = require('./RoomSubListHeader.js'); +import Modal from 'matrix-react-sdk/lib/Modal'; // turn this on for drag & drop console debugging galore var debug = false; From c5d37ab2fbec70fab03e7fac9c48b61fece17989 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 3 May 2017 22:56:39 +0100 Subject: [PATCH 047/220] add to manifest for #334 Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/vector-icons/manifest.json | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/res/vector-icons/manifest.json b/res/vector-icons/manifest.json index feab1753cb..2cf10bed44 100644 --- a/res/vector-icons/manifest.json +++ b/res/vector-icons/manifest.json @@ -1,5 +1,9 @@ { - "name": "Riot", + "name": "Riot - Matrix Client", + "short_name": "Riot", + "display": "standalone", + "theme_color": "#76CFA6", + "start_url": "../", "icons": [ { "src": "android-chrome-36x36.png", @@ -37,5 +41,13 @@ "type": "image\/png", "density": "4.0" } - ] + ], + "related_applications": [{ + "platform": "play", + "url": "https://play.google.com/store/apps/details?id=im.vector.alpha", + "id": "im.vector.alpha" + }, { + "platform": "itunes", + "url": "https://itunes.apple.com/gb/app/riot-open-source-team-collaboration-via-matrix/id1083446067" + }] } From 095da68aace2e59355346fc2f8e620e04e181e53 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 13:58:17 +0100 Subject: [PATCH 048/220] Add buttons to room sub list headers --- src/components/structures/RoomSubList.js | 4 ++ .../structures/RoomSubListHeader.js | 42 +++++++++---------- src/skins/vector/css/_components.scss | 1 + .../views/elements/_RoleButton.scss | 26 ++++++++++++ .../views/rooms/_RoomList.scss | 11 ++--- 5 files changed, 54 insertions(+), 30 deletions(-) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index fde35b129f..4d2a3927a4 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -1,4 +1,5 @@ /* +Copyright 2017 Vector Creations Ltd Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -83,6 +84,7 @@ var RoomSubList = React.createClass({ onShowMoreRooms: React.PropTypes.func, searchFilter: React.PropTypes.string, emptyContent: React.PropTypes.node, // content shown if the list is empty + headerItems: React.PropTypes.node, // content shown in the sublist header }, getInitialState: function() { @@ -522,6 +524,7 @@ var RoomSubList = React.createClass({ roomNotificationCount={ this.roomNotificationCount() } onClick={ this.onClick } onHeaderClick={ this.props.onHeaderClick } + headerItems={this.props.headerItems} /> { subList }
@@ -543,6 +546,7 @@ var RoomSubList = React.createClass({ roomNotificationCount={ this.roomNotificationCount() } onClick={ this.onClick } onHeaderClick={ this.props.onHeaderClick } + headerItems={this.props.headerItems} /> : undefined } { (this.props.showSpinner && !this.state.hidden) ? : undefined } diff --git a/src/components/structures/RoomSubListHeader.js b/src/components/structures/RoomSubListHeader.js index ad9aff5f70..3ad7547ccb 100644 --- a/src/components/structures/RoomSubListHeader.js +++ b/src/components/structures/RoomSubListHeader.js @@ -14,16 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; - -var React = require('react'); -var ReactDOM = require('react-dom'); -var classNames = require('classnames'); -var sdk = require('matrix-react-sdk') -var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils'); -var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); -var ConstantTimeDispatcher = require('matrix-react-sdk/lib/ConstantTimeDispatcher'); +import React from 'react'; +import classNames from 'classnames'; +import sdk from 'matrix-react-sdk'; +import FormattingUtils from 'matrix-react-sdk/lib/utils/FormattingUtils'; +import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; module.exports = React.createClass({ displayName: 'RoomSubListHeader', @@ -42,6 +37,7 @@ module.exports = React.createClass({ hidden: React.PropTypes.bool, onClick: React.PropTypes.func, onHeaderClick: React.PropTypes.func, + headerItems: React.PropTypes.node, // content shown in the sublist header }, getDefaultProps: function() { @@ -63,35 +59,34 @@ module.exports = React.createClass({ // }, render: function() { - var TintableSvg = sdk.getComponent("elements.TintableSvg"); + const TintableSvg = sdk.getComponent("elements.TintableSvg"); - var subListNotifications = this.props.roomNotificationCount; - var subListNotifCount = subListNotifications[0]; - var subListNotifHighlight = subListNotifications[1]; + const subListNotifications = this.props.roomNotificationCount; + const subListNotifCount = subListNotifications[0]; + const subListNotifHighlight = subListNotifications[1]; - var chevronClasses = classNames({ + const chevronClasses = classNames({ 'mx_RoomSubList_chevron': true, 'mx_RoomSubList_chevronRight': this.props.hidden, 'mx_RoomSubList_chevronDown': !this.props.hidden, }); - var badgeClasses = classNames({ + const badgeClasses = classNames({ 'mx_RoomSubList_badge': true, 'mx_RoomSubList_badgeHighlight': subListNotifHighlight, }); - var badge; + let badge; if (subListNotifCount > 0) { badge =
{ FormattingUtils.formatCount(subListNotifCount) }
; - } - else if (subListNotifHighlight) { + } else if (subListNotifHighlight) { badge =
!
; } // When collapsed, allow a long hover on the header to show user // the full tag name and room count - var title; - var roomCount = this.props.roomCount; + let title; + const roomCount = this.props.roomCount; if (this.props.collapsed) { title = this.props.label; if (roomCount !== '') { @@ -99,9 +94,9 @@ module.exports = React.createClass({ } } - var incomingCall; + let incomingCall; if (this.props.isIncomingCallRoom) { - var IncomingCallBox = sdk.getComponent("voip.IncomingCallBox"); + const IncomingCallBox = sdk.getComponent("voip.IncomingCallBox"); incomingCall = ; } @@ -109,6 +104,7 @@ module.exports = React.createClass({
{ this.props.collapsed ? '' : this.props.label } + {this.props.headerItems}
{ roomCount }
{ badge } diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index df3c4600eb..5b23bb82f8 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -27,6 +27,7 @@ @import "./matrix-react-sdk/views/elements/_MemberEventListSummary.scss"; @import "./matrix-react-sdk/views/elements/_ProgressBar.scss"; @import "./matrix-react-sdk/views/elements/_RichText.scss"; +@import "./matrix-react-sdk/views/elements/_RoleButton.scss"; @import "./matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss"; @import "./matrix-react-sdk/views/login/_ServerConfig.scss"; @import "./matrix-react-sdk/views/messages/_MEmoteBody.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss new file mode 100644 index 0000000000..04503346ff --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss @@ -0,0 +1,26 @@ +/* +Copyright 2107 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. +*/ + +.mx_RoleButton { + margin-left: 4px; + margin-right: 4px; + cursor: pointer; + display: inline-block; +} + +.mx_RoleButton object { + pointer-events: none; +} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index bc699ae792..77df1f8fda 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -39,10 +39,6 @@ limitations under the License. z-index: 6; } -.mx_RoomList_greyedSubListLabel { - color: #a2a2a2; -} - .mx_RoomList_emptySubListTip { font-size: 13px; margin-left: 18px; @@ -50,12 +46,13 @@ limitations under the License. margin-top: 8px; margin-bottom: 7px; padding: 5px; - border: 1px solid $accent-color; + border: 1px dashed $accent-color; color: $primary-fg-color; background-color: $droptarget-bg-color; border-radius: 4px; } -.mx_RoomList_butonPreview { - float: right; +.mx_RoomList_headerButtons { + position: absolute; + right: 60px; } From ff709ed8b126c3f9c96ebebb815730b12a62e31d Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 14:53:13 +0100 Subject: [PATCH 049/220] Fix import --- src/components/structures/RoomSubListHeader.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/structures/RoomSubListHeader.js b/src/components/structures/RoomSubListHeader.js index 3ad7547ccb..74094ae0ba 100644 --- a/src/components/structures/RoomSubListHeader.js +++ b/src/components/structures/RoomSubListHeader.js @@ -17,7 +17,7 @@ limitations under the License. import React from 'react'; import classNames from 'classnames'; import sdk from 'matrix-react-sdk'; -import FormattingUtils from 'matrix-react-sdk/lib/utils/FormattingUtils'; +import { formatCount } from 'matrix-react-sdk/lib/utils/FormattingUtils'; import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; module.exports = React.createClass({ @@ -78,7 +78,7 @@ module.exports = React.createClass({ let badge; if (subListNotifCount > 0) { - badge =
{ FormattingUtils.formatCount(subListNotifCount) }
; + badge =
{ formatCount(subListNotifCount) }
; } else if (subListNotifHighlight) { badge =
!
; } From 2bf007495331542c49ff6a9fc98002cee947dac6 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 15:38:53 +0100 Subject: [PATCH 050/220] Make bottom left menu buttons use RoleButton too --- src/components/structures/BottomLeftMenu.js | 122 ++---------------- .../views/elements/_RoleButton.scss | 7 + .../css/vector-web/structures/_LeftPanel.scss | 34 ++--- 3 files changed, 25 insertions(+), 138 deletions(-) diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index f378cac628..1195a6f347 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -14,13 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; - -var React = require('react'); -var ReactDOM = require('react-dom'); -var sdk = require('matrix-react-sdk') -var dis = require('matrix-react-sdk/lib/dispatcher'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); +import React from 'react'; +import sdk from 'matrix-react-sdk'; module.exports = React.createClass({ displayName: 'BottomLeftMenu', @@ -30,121 +25,24 @@ module.exports = React.createClass({ teamToken: React.PropTypes.string, }, - getInitialState: function() { - return({ - directoryHover : false, - roomsHover : false, - homeHover: false, - peopleHover : false, - settingsHover : false, - }); - }, - - // Room events - onDirectoryClick: function() { - dis.dispatch({ action: 'view_room_directory' }); - }, - - onDirectoryMouseEnter: function() { - this.setState({ directoryHover: true }); - }, - - onDirectoryMouseLeave: function() { - this.setState({ directoryHover: false }); - }, - - onRoomsClick: function() { - dis.dispatch({ action: 'view_create_room' }); - }, - - onRoomsMouseEnter: function() { - this.setState({ roomsHover: true }); - }, - - onRoomsMouseLeave: function() { - this.setState({ roomsHover: false }); - }, - - // Home button events - onHomeClick: function() { - dis.dispatch({ action: 'view_home_page' }); - }, - - onHomeMouseEnter: function() { - this.setState({ homeHover: true }); - }, - - onHomeMouseLeave: function() { - this.setState({ homeHover: false }); - }, - - // People events - onPeopleClick: function() { - dis.dispatch({ action: 'view_create_chat' }); - }, - - onPeopleMouseEnter: function() { - this.setState({ peopleHover: true }); - }, - - onPeopleMouseLeave: function() { - this.setState({ peopleHover: false }); - }, - - // Settings events - onSettingsClick: function() { - dis.dispatch({ action: 'view_user_settings' }); - }, - - onSettingsMouseEnter: function() { - this.setState({ settingsHover: true }); - }, - - onSettingsMouseLeave: function() { - this.setState({ settingsHover: false }); - }, - - // Get the label/tooltip to show - getLabel: function(label, show) { - if (show) { - var RoomTooltip = sdk.getComponent("rooms.RoomTooltip"); - return ; - } - }, - render: function() { - var TintableSvg = sdk.getComponent('elements.TintableSvg'); + const RoleButton = sdk.getComponent('elements.RoleButton'); var homeButton; if (this.props.teamToken) { - homeButton = ( - - - { this.getLabel("Welcome page", this.state.homeHover) } - - ); + homeButton = ; } return (
{ homeButton } - - - { this.getLabel("Start chat", this.state.peopleHover) } - - - - { this.getLabel("Room directory", this.state.directoryHover) } - - - - { this.getLabel("Create new room", this.state.roomsHover) } - - - - { this.getLabel("Settings", this.state.settingsHover) } - + + + + + +
); diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss index 04503346ff..094e0b9b1b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss @@ -24,3 +24,10 @@ limitations under the License. .mx_RoleButton object { pointer-events: none; } + +.mx_RoleButton_tooltip { + display: inline-block; + position: relative; + top: -25px; + left: 6px; +} diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index d3bbce1b19..f171591cd6 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -64,43 +64,25 @@ limitations under the License. pointer-events: none; } -.mx_LeftPanel .mx_BottomLeftMenu_homePage, -.mx_LeftPanel .mx_BottomLeftMenu_directory, -.mx_LeftPanel .mx_BottomLeftMenu_createRoom, -.mx_LeftPanel .mx_BottomLeftMenu_people, -.mx_LeftPanel .mx_BottomLeftMenu_settings { - display: inline-block; - cursor: pointer; -} - -.collapsed .mx_BottomLeftMenu_homePage, -.collapsed .mx_BottomLeftMenu_directory, -.collapsed .mx_BottomLeftMenu_createRoom, -.collapsed .mx_BottomLeftMenu_people, -.collapsed .mx_BottomLeftMenu_settings { +.collapsed .mx_RoleButton { margin-right: 0px ! important; padding-top: 3px ! important; padding-bottom: 3px ! important; } -.mx_LeftPanel .mx_BottomLeftMenu_homePage, -.mx_LeftPanel .mx_BottomLeftMenu_directory, -.mx_LeftPanel .mx_BottomLeftMenu_createRoom, -.mx_LeftPanel .mx_BottomLeftMenu_people { +.mx_BottomLeftMenu_options .mx_RoleButton { + margin-left: 0px; margin-right: 10px; } -.mx_LeftPanel .mx_BottomLeftMenu_settings { +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { float: right; } +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton { + margin-right: 0px; +} + .mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { float: none; } - -.mx_LeftPanel .mx_BottomLeftMenu_tooltip { - display: inline-block; - position: relative; - top: -25px; - left: 6px; -} From 7b320f8fbbf85c10d8212af5bc2eb6689879f04b Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 16:51:36 +0100 Subject: [PATCH 051/220] Remove babelcheck Nobody is likley to be upgrading from babel 5 any more, so this can go away now. --- package.json | 6 +++--- scripts/babelcheck.js | 26 -------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) delete mode 100644 scripts/babelcheck.js diff --git a/package.json b/package.json index a25e17955f..6554f2f733 100644 --- a/package.json +++ b/package.json @@ -33,13 +33,13 @@ "build:bundle": "cross-env NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", - "build": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle", - "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", + "build": "npm run build:res && npm run build:bundle", + "build:dev": "npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", "start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress", - "start": "node scripts/babelcheck.js && parallelshell \"npm run start:res\" \"npm run start:js\"", + "start": "parallelshell \"npm run start:res\" \"npm run start:js\"", "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", "lint": "eslint src/", "lintall": "eslint src/ test/", diff --git a/scripts/babelcheck.js b/scripts/babelcheck.js deleted file mode 100644 index 89f5cac554..0000000000 --- a/scripts/babelcheck.js +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env node - -var exec = require('child_process').exec; - -// Makes sure the babel executable in the path is babel 6 (or greater), not -// babel 5, which it is if you upgrade from an older version of react-sdk and -// run 'npm install' since the package has changed to babel-cli, so 'babel' -// remains installed and the executable in node_modules/.bin remains as babel -// 5. - -// This script is duplicated from matrix-react-sdk because it can't reliably -// be pulled in from react-sdk while npm install is failing, as it will do -// if the environment is in the erroneous state this script checks for. - -exec("babel -V", function (error, stdout, stderr) { - if ((error && error.code) || parseInt(stdout.substr(0,1), 10) < 6) { - console.log("\033[31m\033[1m"+ - '*****************************************\n'+ - '* vector-web has moved to babel 6 *\n'+ - '* Please "rm -rf node_modules && npm i" *\n'+ - '* then restore links as appropriate *\n'+ - '*****************************************\n'+ - "\033[91m"); - process.exit(1); - } -}); From 45efdbdd43ac29cca27f8f9c3eb3e1bd947c0e66 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 4 May 2017 17:21:16 +0100 Subject: [PATCH 052/220] Include MXID and device id in rageshakes - to make for easier triage --- src/vector/submit-rageshake.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vector/submit-rageshake.js b/src/vector/submit-rageshake.js index ef6fbabe29..45b427e899 100644 --- a/src/vector/submit-rageshake.js +++ b/src/vector/submit-rageshake.js @@ -17,6 +17,7 @@ limitations under the License. import pako from 'pako'; import q from "q"; +import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; import rageshake from './rageshake' @@ -64,6 +65,8 @@ export default async function sendBugReport(bugReportEndpoint, opts) { userAgent = window.navigator.userAgent; } + const client = MatrixClientPeg.get(); + console.log("Sending bug report."); const body = new FormData(); @@ -72,6 +75,11 @@ export default async function sendBugReport(bugReportEndpoint, opts) { body.append('version', version); body.append('user_agent', userAgent); + if (client) { + body.append('user_id', client.credentials.userId); + body.append('device_id', client.deviceId); + } + if (opts.sendLogs) { progressCallback("Collecting logs"); const logs = await rageshake.getLogsForReport(); From da960e776dde215aaf20885fbc7faf22ae905f7a Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 17:45:11 +0100 Subject: [PATCH 053/220] Remove commented code --- src/components/structures/RoomSubList.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 4d2a3927a4..bac87bc489 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -475,8 +475,6 @@ var RoomSubList = React.createClass({ var label = this.props.collapsed ? null : this.props.label; - //console.log("render: " + JSON.stringify(this.state.sortedList)); - let content; if (this.state.sortedList.length == 0) { //content = ; From 23a141c5ad390cb8d6cf4aede5fd32c9f2463949 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 17:46:44 +0100 Subject: [PATCH 054/220] Remove slightly misleading commented code --- src/components/structures/RoomSubList.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index bac87bc489..adeb365148 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -477,7 +477,6 @@ var RoomSubList = React.createClass({ let content; if (this.state.sortedList.length == 0) { - //content = ; content = this.props.emptyContent; } else { content = this.makeRoomTiles(); From 1001c98a3c8fca82d264a54d5a433845a2e36fe9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 4 May 2017 18:23:04 +0100 Subject: [PATCH 055/220] Align buttons better with the text --- .../vector/css/matrix-react-sdk/views/rooms/_RoomList.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index 77df1f8fda..35787ca0c4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -52,6 +52,10 @@ limitations under the License. border-radius: 4px; } +.mx_RoomList_emptySubListTip .mx_RoleButton { + vertical-align: -3px; +} + .mx_RoomList_headerButtons { position: absolute; right: 60px; From ae76c76558a9c38100c51a9c7019cb50bfdc388e Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 4 May 2017 21:27:33 +0100 Subject: [PATCH 056/220] Fix #3450 - RM hidden by things --- .../vector/css/matrix-react-sdk/structures/_RoomView.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index 1286193974..e251ecd14c 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -160,7 +160,8 @@ hr.mx_RoomView_myReadMarker { border-bottom: solid 1px $accent-color; margin-top: 0px; position: relative; - top: 5px; + top: -1px; + z-index: 1; } .mx_RoomView_statusArea { From e1cd046c1a4ff92992c1477ddf975b80195af50c Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Fri, 5 May 2017 09:54:00 +0100 Subject: [PATCH 057/220] Prevent zalgo-like text overflowing MELS summary --- .../matrix-react-sdk/views/elements/_MemberEventListSummary.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss index 1858865980..1969bc2db0 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/elements/_MemberEventListSummary.scss @@ -20,6 +20,7 @@ limitations under the License. .mx_TextualEvent.mx_MemberEventListSummary_summary { font-size: 14px; + display: inline-flex; } .mx_MemberEventListSummary_avatars { From c27f39714a66bbcb0fb6bee95638f7bb67e20637 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 5 May 2017 14:26:13 +0100 Subject: [PATCH 058/220] Dedicated classes for the buttons --- src/components/structures/BottomLeftMenu.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index 1195a6f347..63dfac60d8 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -1,5 +1,6 @@ /* Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 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. @@ -26,22 +27,26 @@ module.exports = React.createClass({ }, render: function() { - const RoleButton = sdk.getComponent('elements.RoleButton'); + const HomeButton = sdk.getComponent('elements.HomeButton'); + const StartChatButton = sdk.getComponent('elements.StartChatButton'); + const RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton'); + const CreateRoomButton = sdk.getComponent('elements.CreateRoomButton'); + const SettingsButton = sdk.getComponent('elements.SettingsButton'); var homeButton; if (this.props.teamToken) { - homeButton = ; + homeButton = ; } return (
{ homeButton } - - - + + + - +
From f54708227e0eb624dc178992c134519e42c43dfa Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 May 2017 16:54:55 +0100 Subject: [PATCH 059/220] Proper two package.json format, release.sh bumps 2nd json ver too Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron/package.json | 6 +++++- package.json | 14 ++++++++------ release.sh | 13 +++++++++++++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/electron/package.json b/electron/package.json index e6e7e2a42d..0fff99f522 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,5 +1,9 @@ { - "description": "Electron main process dependencies", + "name": "riot-web", + "main": "src/electron-main.js", + "version": "0.0.0", + "description": "A feature-rich client for Matrix.org", + "author": "Vector Creations Ltd.", "dependencies": { "electron-window-state": "^4.1.0" } diff --git a/package.json b/package.json index a64d0d9ea3..e801ed5d07 100644 --- a/package.json +++ b/package.json @@ -146,11 +146,12 @@ "dereference": true, "//files": "We bundle everything, so we only need to include webapp/", "files": [ - "electron/node_modules/**", - "electron/src/**", - "electron/img/**", - "webapp/**", - "package.json" + "node_modules/**", + "src/**", + "img/**" + ], + "extraResources": [ + "webapp/**/*" ], "linux": { "target": "deb", @@ -164,7 +165,8 @@ }, "directories": { "buildResources": "electron/build", - "output": "electron/dist" + "output": "electron/dist", + "app": "electron" } } } diff --git a/release.sh b/release.sh index e8c68b9024..a3225150b6 100755 --- a/release.sh +++ b/release.sh @@ -9,4 +9,17 @@ set -e cd `dirname $0` + +# bump Electron's package.json first +release="${1#v}" +tag="v${release}" +echo "electron npm version" + +cd electron +npm version --no-git-tag-version "$release" +git commit package.json -m "$tag" + + +cd .. + exec ./node_modules/matrix-js-sdk/release.sh -z "$@" From 8a5020718936368d556c438a1f1b1691414c884c Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 May 2017 16:57:18 +0100 Subject: [PATCH 060/220] Change shebang to bash for string manipulations Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.sh b/release.sh index a3225150b6..9d02e98e93 100755 --- a/release.sh +++ b/release.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Script to perform a release of vector-web. # From 499b04c25467fd4f6550568232a6d89797dcbe47 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 May 2017 17:01:32 +0100 Subject: [PATCH 061/220] Only install electron deps when we're bundling/running electron Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e801ed5d07..548c95d2fc 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "build": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle", "build:dev": "node scripts/babelcheck.js && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", - "install:electron": "cd electron && npm i", + "install:electron": "install-app-deps", "electron": "npm run install:electron && electron .", "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", From 1ed1080bf3fa8be1ef2325ad854b68893330bb90 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 May 2017 17:05:03 +0100 Subject: [PATCH 062/220] Update README with npm run electron Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 7bef64783d..55463a376e 100644 --- a/README.md +++ b/README.md @@ -135,8 +135,7 @@ To run as a desktop app: ``` npm install electron - npm run install:electron - node_modules/.bin/electron . + npm run electron ``` To build packages, use electron-builder. This is configured to output: From 309afdb813e1413a95de1ed248cdc5f78e7a7fd1 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 May 2017 17:08:50 +0100 Subject: [PATCH 063/220] no point installing deps here, builder will do it for us Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d0161610d8..b01c1aa0c0 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "build:compile": "babel --source-maps -d lib src", "build:bundle": "cross-env NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "npm run clean && npm run build && npm run install:electron && build -wml --ia32 --x64", + "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", "build": "npm run build:res && npm run build:bundle", "build:dev": "npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", From 9c6b3819a5797ac4490ec74e6295e0ae8708cf01 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Sat, 6 May 2017 10:24:13 +0100 Subject: [PATCH 064/220] Re-add productName so that electron-builder packages is as Riot rather than riot-web --- electron/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/electron/package.json b/electron/package.json index 69ea9a2899..cf5b4efd5d 100644 --- a/electron/package.json +++ b/electron/package.json @@ -1,5 +1,6 @@ { "name": "riot-web", + "productName": "Riot", "main": "src/electron-main.js", "version": "0.9.8", "description": "A feature-rich client for Matrix.org", From 1e5908a31e15e88567bd231f20078d48bf2754cb Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 7 May 2017 19:34:05 +0100 Subject: [PATCH 065/220] speed up burndown generation by ~250x --- scripts/issues-burndown.pl | 40 +++++++++++++++++++++++++------------- scripts/issues-no-state.pl | 12 ++++++++++-- 2 files changed, 36 insertions(+), 16 deletions(-) mode change 100644 => 100755 scripts/issues-burndown.pl diff --git a/scripts/issues-burndown.pl b/scripts/issues-burndown.pl old mode 100644 new mode 100755 index 7d0f3409c0..67c05673df --- a/scripts/issues-burndown.pl +++ b/scripts/issues-burndown.pl @@ -4,16 +4,24 @@ use warnings; use strict; use Net::GitHub; -use DateTime; -use DateTime::Format::ISO8601; +use Time::Moment; +use Term::ReadPassword; + +# This version of the script emits the cumulative number of bugs, split into open & closed +# suitable for drawing the 'top' and 'bottom' of a burndown graph. +# +# N.B. this doesn't take into account issues changing priority over time, but only their most recent priority. +# +# If you want instead the number of open issues on a given day, then look at issues-no-state.pl my $gh = Net::GitHub->new( - login => 'ara4n', pass => 'secret' + login => 'ara4n', pass => read_password("github password: "), ); $gh->set_default_user_repo('vector-im', 'vector-web'); -my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 }); +#my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 }); +my @issues = $gh->issue->repos_issues({ state => 'all' }); while ($gh->issue->has_next_page) { push @issues, $gh->issue->next_page; } @@ -30,11 +38,11 @@ while ($gh->issue->has_next_page) { my $days = {}; my $schema = {}; -my $now = DateTime->now(); +my $now = Time::Moment->now; foreach my $issue (@issues) { next if ($issue->{pull_request}); - + # use Data::Dumper; # print STDERR Dumper($issue); @@ -56,10 +64,10 @@ foreach my $issue (@issues) { my $priority = &$extract_labels(qw(p1 p2 p3 p4 p5)) || "unprioritised"; my $severity = &$extract_labels(qw(minor major critical cosmetic network)) || "no-severity"; - my $start = DateTime::Format::ISO8601->parse_datetime($issue->{created_at}); + my $start = Time::Moment->from_string($issue->{created_at}); do { - my $ymd = $start->ymd(); + my $ymd = $start->strftime('%F'); $days->{ $ymd }->{ 'created' }->{ $type }->{ $priority }->{ $severity }->{ total }++; $schema->{ 'created' }->{ $type }->{ $priority }->{ $severity }->{ total }++; @@ -68,13 +76,14 @@ foreach my $issue (@issues) { $schema->{ 'created' }->{ $type }->{ $priority }->{ $severity }->{ $_ }++; } - $start = $start->add(days => 1); - } while (DateTime->compare($start, $now) < 0); + $start = $start->plus_days(1); + # print STDERR "^"; + } while ($start->compare($now) < 0); if ($state eq 'closed') { - my $end = DateTime::Format::ISO8601->parse_datetime($issue->{closed_at}); + my $end = Time::Moment->from_string($issue->{closed_at}); do { - my $ymd = $end->ymd(); + my $ymd = $end->strftime('%F'); $days->{ $ymd }->{ 'resolved' }->{ $type }->{ $priority }->{ $severity }->{ total }++; $schema->{ 'resolved' }->{ $type }->{ $priority }->{ $severity }->{ total }++; @@ -83,9 +92,12 @@ foreach my $issue (@issues) { $schema->{ 'resolved' }->{ $type }->{ $priority }->{ $severity }->{ $_ }++; } - $end = $end->add(days => 1); - } while (DateTime->compare($end, $now) < 0); + $end = $end->plus_days(1); + } while ($end->compare($now) < 0); + # print STDERR "v"; } + + # print STDERR "\n"; } print "day,"; diff --git a/scripts/issues-no-state.pl b/scripts/issues-no-state.pl index da12fb225a..9b07ed271f 100755 --- a/scripts/issues-no-state.pl +++ b/scripts/issues-no-state.pl @@ -6,14 +6,22 @@ use strict; use Net::GitHub; use DateTime; use DateTime::Format::ISO8601; +use Term::ReadPassword; + +# This version of the script emits the total number of bugs open on a given day, +# split by various tags. +# +# If you want instead the cumulative number of open & closed issues on a given day, +# then look at issues-burndown.pl my $gh = Net::GitHub->new( - login => 'ara4n', pass => 'secret' + login => 'ara4n', pass => read_password("github password: "), ); $gh->set_default_user_repo('vector-im', 'vector-web'); -my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 }); +#my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 }); +my @issues = $gh->issue->repos_issues({ state => 'all' }); while ($gh->issue->has_next_page) { push @issues, $gh->issue->next_page; } From ea72e9c7a0f0ef77583cc4875a610509c8396ee6 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Sun, 7 May 2017 20:33:13 +0100 Subject: [PATCH 066/220] match primary package.json got mismatched after a release -> develop merge --- electron/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electron/package.json b/electron/package.json index cf5b4efd5d..99651cc1c5 100644 --- a/electron/package.json +++ b/electron/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "0.9.8", + "version": "0.9.9", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "dependencies": { From 640aa98cf4adfdfcd97db5b837ada3d5e722443f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 8 May 2017 13:05:17 +0100 Subject: [PATCH 067/220] Update 2 missed icons to the new icon Electron icons for windows & Linux. Also add them to the script that makes all the icon versions. --- electron/img/riot.ico | Bin 21650 -> 104772 bytes electron/img/riot.png | Bin 14677 -> 10430 bytes scripts/make-icons.sh | 2 ++ 3 files changed, 2 insertions(+) diff --git a/electron/img/riot.ico b/electron/img/riot.ico index 8b681ffba3c1fbc6af4ad68fc41449ce017d9b53..8f8ff94eea677e966568bc2a264d1c0fe708dcf4 100644 GIT binary patch literal 104772 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≈@& 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 literal 21650 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 Mnuf@?>b4R81I3T|A^-pY diff --git a/electron/img/riot.png b/electron/img/riot.png index fe13aa99c3aac79efe1ce0e4dd549656f7e0451f..85e9f8ca74a6cd79a8a1fed0ea06be3d11ffc46c 100644 GIT binary patch literal 10430 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 Date: Tue, 9 May 2017 12:27:41 +0100 Subject: [PATCH 068/220] Fix bug report endpoint in config.sample.json. Not sure why this was like this - has vector.im/bugs *ever* worked? --- config.sample.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.sample.json b/config.sample.json index a65646ac77..3c513f7ab2 100644 --- a/config.sample.json +++ b/config.sample.json @@ -4,7 +4,7 @@ "brand": "Riot", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", - "bug_report_endpoint_url": "https://vector.im/bugs", + "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "enableLabs": true, "roomDirectory": { "servers": [ From c607b1bc8913ab84a3ae169d7cf950dc0d26404f Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Wed, 10 May 2017 13:36:27 +0100 Subject: [PATCH 069/220] npm is "smart" enough to try and install our electron wrapper as a module instead of the actual electron package. With no way to ignore directories. I'd like to think of this as temporary, until I get to rip apart riot-web and riot-electron Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- {electron => electron_app}/build/icon.icns | Bin {electron => electron_app}/build/icon.ico | Bin {electron => electron_app}/build/icons/128x128.png | Bin {electron => electron_app}/build/icons/16x16.png | Bin {electron => electron_app}/build/icons/24x24.png | Bin {electron => electron_app}/build/icons/256x256.png | Bin {electron => electron_app}/build/icons/48x48.png | Bin {electron => electron_app}/build/icons/512x512.png | Bin {electron => electron_app}/build/icons/64x64.png | Bin {electron => electron_app}/build/icons/96x96.png | Bin .../build/install-spinner.gif | Bin {electron => electron_app}/img/riot.ico | Bin {electron => electron_app}/img/riot.png | Bin {electron => electron_app}/package.json | 0 {electron => electron_app}/riot.im/README | 0 {electron => electron_app}/riot.im/config.json | 0 {electron => electron_app}/src/electron-main.js | 0 {electron => electron_app}/src/squirrelhooks.js | 0 {electron => electron_app}/src/tray.js | 0 {electron => electron_app}/src/vectormenu.js | 0 package.json | 8 ++++---- release.sh | 4 ++-- scripts/electron-package.sh | 12 ++++++------ scripts/make-icons.sh | 10 +++++----- 24 files changed, 17 insertions(+), 17 deletions(-) rename {electron => electron_app}/build/icon.icns (100%) rename {electron => electron_app}/build/icon.ico (100%) rename {electron => electron_app}/build/icons/128x128.png (100%) rename {electron => electron_app}/build/icons/16x16.png (100%) rename {electron => electron_app}/build/icons/24x24.png (100%) rename {electron => electron_app}/build/icons/256x256.png (100%) rename {electron => electron_app}/build/icons/48x48.png (100%) rename {electron => electron_app}/build/icons/512x512.png (100%) rename {electron => electron_app}/build/icons/64x64.png (100%) rename {electron => electron_app}/build/icons/96x96.png (100%) rename {electron => electron_app}/build/install-spinner.gif (100%) rename {electron => electron_app}/img/riot.ico (100%) rename {electron => electron_app}/img/riot.png (100%) rename {electron => electron_app}/package.json (100%) rename {electron => electron_app}/riot.im/README (100%) rename {electron => electron_app}/riot.im/config.json (100%) rename {electron => electron_app}/src/electron-main.js (100%) rename {electron => electron_app}/src/squirrelhooks.js (100%) rename {electron => electron_app}/src/tray.js (100%) rename {electron => electron_app}/src/vectormenu.js (100%) diff --git a/electron/build/icon.icns b/electron_app/build/icon.icns similarity index 100% rename from electron/build/icon.icns rename to electron_app/build/icon.icns diff --git a/electron/build/icon.ico b/electron_app/build/icon.ico similarity index 100% rename from electron/build/icon.ico rename to electron_app/build/icon.ico diff --git a/electron/build/icons/128x128.png b/electron_app/build/icons/128x128.png similarity index 100% rename from electron/build/icons/128x128.png rename to electron_app/build/icons/128x128.png diff --git a/electron/build/icons/16x16.png b/electron_app/build/icons/16x16.png similarity index 100% rename from electron/build/icons/16x16.png rename to electron_app/build/icons/16x16.png diff --git a/electron/build/icons/24x24.png b/electron_app/build/icons/24x24.png similarity index 100% rename from electron/build/icons/24x24.png rename to electron_app/build/icons/24x24.png diff --git a/electron/build/icons/256x256.png b/electron_app/build/icons/256x256.png similarity index 100% rename from electron/build/icons/256x256.png rename to electron_app/build/icons/256x256.png diff --git a/electron/build/icons/48x48.png b/electron_app/build/icons/48x48.png similarity index 100% rename from electron/build/icons/48x48.png rename to electron_app/build/icons/48x48.png diff --git a/electron/build/icons/512x512.png b/electron_app/build/icons/512x512.png similarity index 100% rename from electron/build/icons/512x512.png rename to electron_app/build/icons/512x512.png diff --git a/electron/build/icons/64x64.png b/electron_app/build/icons/64x64.png similarity index 100% rename from electron/build/icons/64x64.png rename to electron_app/build/icons/64x64.png diff --git a/electron/build/icons/96x96.png b/electron_app/build/icons/96x96.png similarity index 100% rename from electron/build/icons/96x96.png rename to electron_app/build/icons/96x96.png diff --git a/electron/build/install-spinner.gif b/electron_app/build/install-spinner.gif similarity index 100% rename from electron/build/install-spinner.gif rename to electron_app/build/install-spinner.gif diff --git a/electron/img/riot.ico b/electron_app/img/riot.ico similarity index 100% rename from electron/img/riot.ico rename to electron_app/img/riot.ico diff --git a/electron/img/riot.png b/electron_app/img/riot.png similarity index 100% rename from electron/img/riot.png rename to electron_app/img/riot.png diff --git a/electron/package.json b/electron_app/package.json similarity index 100% rename from electron/package.json rename to electron_app/package.json diff --git a/electron/riot.im/README b/electron_app/riot.im/README similarity index 100% rename from electron/riot.im/README rename to electron_app/riot.im/README diff --git a/electron/riot.im/config.json b/electron_app/riot.im/config.json similarity index 100% rename from electron/riot.im/config.json rename to electron_app/riot.im/config.json diff --git a/electron/src/electron-main.js b/electron_app/src/electron-main.js similarity index 100% rename from electron/src/electron-main.js rename to electron_app/src/electron-main.js diff --git a/electron/src/squirrelhooks.js b/electron_app/src/squirrelhooks.js similarity index 100% rename from electron/src/squirrelhooks.js rename to electron_app/src/squirrelhooks.js diff --git a/electron/src/tray.js b/electron_app/src/tray.js similarity index 100% rename from electron/src/tray.js rename to electron_app/src/tray.js diff --git a/electron/src/vectormenu.js b/electron_app/src/vectormenu.js similarity index 100% rename from electron/src/vectormenu.js rename to electron_app/src/vectormenu.js diff --git a/package.json b/package.json index b8a4accc82..884811af93 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "riot-web", "productName": "Riot", - "main": "electron/src/electron-main.js", + "main": "electron_app/src/electron-main.js", "version": "0.9.9", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", @@ -165,9 +165,9 @@ "target": "squirrel" }, "directories": { - "buildResources": "electron/build", - "output": "electron/dist", - "app": "electron" + "buildResources": "electron_app/build", + "output": "electron_app/dist", + "app": "electron_app" } } } diff --git a/release.sh b/release.sh index 9d02e98e93..c245456051 100755 --- a/release.sh +++ b/release.sh @@ -2,7 +2,7 @@ # # Script to perform a release of vector-web. # -# Requires github-changelog-generator; to install, do +# Requires github-changelog-generator; to install, do # pip install git+https://github.com/matrix-org/github-changelog-generator.git set -e @@ -15,7 +15,7 @@ release="${1#v}" tag="v${release}" echo "electron npm version" -cd electron +cd electron_app npm version --no-git-tag-version "$release" git commit package.json -m "$tag" diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index 87e353f746..a5718df832 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -90,8 +90,8 @@ npm run build:electron popd -distdir="$builddir/electron/dist" -pubdir="$projdir/electron/pub" +distdir="$builddir/electron_app/dist" +pubdir="$projdir/electron_app/pub" rm -r "$pubdir" || true mkdir -p "$pubdir" @@ -120,11 +120,11 @@ cp $distdir/win/*.nupkg "$pubdir/update/win32/x64/" cp $distdir/win/RELEASES "$pubdir/update/win32/x64/" # Move the debs to the main project dir's dist folder -rm -r "$projdir/electron/dist" || true -mkdir -p "$projdir/electron/dist" -cp $distdir/*.deb "$projdir/electron/dist/" +rm -r "$projdir/electron_app/dist" || true +mkdir -p "$projdir/electron_app/dist" +cp $distdir/*.deb "$projdir/electron_app/dist/" rm -rf "$builddir" echo "Riot Desktop is ready to go in $pubdir: this directory can be hosted on your web server." -echo "deb archives are in electron/dist/ - these should be added into your debian repository" +echo "deb archives are in electron_app/dist/ - these should be added into your debian repository" diff --git a/scripts/make-icons.sh b/scripts/make-icons.sh index ebb15852c1..19e48895df 100755 --- a/scripts/make-icons.sh +++ b/scripts/make-icons.sh @@ -52,7 +52,7 @@ cp "$tmpdir/256.png" "$tmpdir/Riot.iconset/icon_256x256.png" cp "$tmpdir/512.png" "$tmpdir/Riot.iconset/icon_256x256@2x.png" cp "$tmpdir/512.png" "$tmpdir/Riot.iconset/icon_512x512.png" cp "$tmpdir/1024.png" "$tmpdir/Riot.iconset/icon_512x512@2x.png" -iconutil -c icns -o electron/build/icon.icns "$tmpdir/Riot.iconset" +iconutil -c icns -o electron_app/build/icon.icns "$tmpdir/Riot.iconset" cp "$tmpdir/36.png" "res/vector-icons/android-chrome-36x36.png" cp "$tmpdir/48.png" "res/vector-icons/android-chrome-48x48.png" @@ -79,17 +79,17 @@ cp "$tmpdir/144.png" "res/vector-icons/mstile-144x144.png" cp "$tmpdir/150.png" "res/vector-icons/mstile-150x150.png" cp "$tmpdir/310.png" "res/vector-icons/mstile-310x310.png" cp "$tmpdir/310x150.png" "res/vector-icons/mstile-310x150.png" -cp "$tmpdir/180.png" "electron/img/riot.png" +cp "$tmpdir/180.png" "electron_app/img/riot.png" convert "$tmpdir/16.png" "$tmpdir/32.png" "$tmpdir/64.png" "$tmpdir/128.png" "$tmpdir/256.png" "res/vector-icons/favicon.ico" -cp "res/vector-icons/favicon.ico" "electron/build/icon.ico" -cp "res/vector-icons/favicon.ico" "electron/img/riot.ico" +cp "res/vector-icons/favicon.ico" "electron_app/build/icon.ico" +cp "res/vector-icons/favicon.ico" "electron_app/img/riot.ico" # https://github.com/electron-userland/electron-builder/blob/3f97b86993d4ea5172e562b182230a194de0f621/src/targets/LinuxTargetHelper.ts#L127 for i in 24 96 16 48 64 128 256 512 do - cp "$tmpdir/$i.png" "electron/build/icons/${i}x${i}.png" + cp "$tmpdir/$i.png" "electron_app/build/icons/${i}x${i}.png" done rm -r "$tmpdir" From 6d94f35c33a226d126b9773c9484b9842377b83d Mon Sep 17 00:00:00 2001 From: Luke Barnard Date: Thu, 11 May 2017 10:35:56 +0100 Subject: [PATCH 070/220] Automatically update component-index Following changes to the react-sdk, reskindex can now be updated using the "-w" (watch) equivalent of the reskindex script. -Alter npm scripts so that reskindex is run when building once and so that reskindex:start is runwhen developing -Remove and stop tracking component-index, this will now only be created at build-time --- .gitignore | 1 + package.json | 11 +++--- src/component-index.js | 90 ------------------------------------------ 3 files changed, 7 insertions(+), 95 deletions(-) delete mode 100644 src/component-index.js diff --git a/.gitignore b/.gitignore index cba50a69e7..6dd2b988c3 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ npm-debug.log electron/dist electron/pub /config.json +/src/component-index.js diff --git a/package.json b/package.json index 884811af93..a1f06b00b1 100644 --- a/package.json +++ b/package.json @@ -27,22 +27,23 @@ "matrix-react-parent": "matrix-react-sdk", "scripts": { "reskindex": "reskindex -h src/header", + "reskindex:watch": "reskindex -h src/header -w", "build:res": "node scripts/copy-res.js", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", - "build:compile": "babel --source-maps -d lib src", + "build:compile": "npm run reskindex && babel --source-maps -d lib src", "build:bundle": "cross-env NODE_ENV=production webpack -p --progress", "build:bundle:dev": "webpack --optimize-occurence-order --progress", "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", - "build": "npm run build:res && npm run build:bundle", - "build:dev": "npm run build:res && npm run build:bundle:dev", + "build": "npm run reskindex && npm run build:res && npm run build:bundle", + "build:dev": "npm run reskindex && npm run build:res && npm run build:bundle:dev", "dist": "scripts/package.sh", "install:electron": "install-app-deps", "electron": "npm run install:electron && electron .", "start:res": "node scripts/copy-res.js -w", "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", "start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress", - "start": "parallelshell \"npm run start:res\" \"npm run start:js\"", - "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", + "start": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js\"", + "start:prod": "parallelshell \"npm run reskindex:watch\" \"npm run start:res\" \"npm run start:js:prod\"", "lint": "eslint src/", "lintall": "eslint src/ test/", "clean": "rimraf lib webapp electron/dist", diff --git a/src/component-index.js b/src/component-index.js deleted file mode 100644 index 4bf0b0f984..0000000000 --- a/src/component-index.js +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright 2015, 2016 OpenMarket 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. -*/ - -/* - * THIS FILE IS AUTO-GENERATED - * You can edit it you like, but your changes will be overwritten, - * so you'd just be trying to swim upstream like a salmon. - * You are not a salmon. - * - * To update it, run: - * ./reskindex.js -h header - */ - -module.exports.components = require('matrix-react-sdk/lib/component-index').components; - -import structures$BottomLeftMenu from './components/structures/BottomLeftMenu'; -structures$BottomLeftMenu && (module.exports.components['structures.BottomLeftMenu'] = structures$BottomLeftMenu); -import structures$CompatibilityPage from './components/structures/CompatibilityPage'; -structures$CompatibilityPage && (module.exports.components['structures.CompatibilityPage'] = structures$CompatibilityPage); -import structures$HomePage from './components/structures/HomePage'; -structures$HomePage && (module.exports.components['structures.HomePage'] = structures$HomePage); -import structures$LeftPanel from './components/structures/LeftPanel'; -structures$LeftPanel && (module.exports.components['structures.LeftPanel'] = structures$LeftPanel); -import structures$RightPanel from './components/structures/RightPanel'; -structures$RightPanel && (module.exports.components['structures.RightPanel'] = structures$RightPanel); -import structures$RoomDirectory from './components/structures/RoomDirectory'; -structures$RoomDirectory && (module.exports.components['structures.RoomDirectory'] = structures$RoomDirectory); -import structures$RoomSubList from './components/structures/RoomSubList'; -structures$RoomSubList && (module.exports.components['structures.RoomSubList'] = structures$RoomSubList); -import structures$RoomSubListHeader from './components/structures/RoomSubListHeader'; -structures$RoomSubListHeader && (module.exports.components['structures.RoomSubListHeader'] = structures$RoomSubListHeader); -import structures$SearchBox from './components/structures/SearchBox'; -structures$SearchBox && (module.exports.components['structures.SearchBox'] = structures$SearchBox); -import structures$ViewSource from './components/structures/ViewSource'; -structures$ViewSource && (module.exports.components['structures.ViewSource'] = structures$ViewSource); -import views$context_menus$MessageContextMenu from './components/views/context_menus/MessageContextMenu'; -views$context_menus$MessageContextMenu && (module.exports.components['views.context_menus.MessageContextMenu'] = views$context_menus$MessageContextMenu); -import views$context_menus$RoomTileContextMenu from './components/views/context_menus/RoomTileContextMenu'; -views$context_menus$RoomTileContextMenu && (module.exports.components['views.context_menus.RoomTileContextMenu'] = views$context_menus$RoomTileContextMenu); -import views$dialogs$BugReportDialog from './components/views/dialogs/BugReportDialog'; -views$dialogs$BugReportDialog && (module.exports.components['views.dialogs.BugReportDialog'] = views$dialogs$BugReportDialog); -import views$dialogs$ChangelogDialog from './components/views/dialogs/ChangelogDialog'; -views$dialogs$ChangelogDialog && (module.exports.components['views.dialogs.ChangelogDialog'] = views$dialogs$ChangelogDialog); -import views$directory$NetworkDropdown from './components/views/directory/NetworkDropdown'; -views$directory$NetworkDropdown && (module.exports.components['views.directory.NetworkDropdown'] = views$directory$NetworkDropdown); -import views$elements$ImageView from './components/views/elements/ImageView'; -views$elements$ImageView && (module.exports.components['views.elements.ImageView'] = views$elements$ImageView); -import views$elements$Spinner from './components/views/elements/Spinner'; -views$elements$Spinner && (module.exports.components['views.elements.Spinner'] = views$elements$Spinner); -import views$globals$GuestWarningBar from './components/views/globals/GuestWarningBar'; -views$globals$GuestWarningBar && (module.exports.components['views.globals.GuestWarningBar'] = views$globals$GuestWarningBar); -import views$globals$MatrixToolbar from './components/views/globals/MatrixToolbar'; -views$globals$MatrixToolbar && (module.exports.components['views.globals.MatrixToolbar'] = views$globals$MatrixToolbar); -import views$globals$NewVersionBar from './components/views/globals/NewVersionBar'; -views$globals$NewVersionBar && (module.exports.components['views.globals.NewVersionBar'] = views$globals$NewVersionBar); -import views$login$VectorCustomServerDialog from './components/views/login/VectorCustomServerDialog'; -views$login$VectorCustomServerDialog && (module.exports.components['views.login.VectorCustomServerDialog'] = views$login$VectorCustomServerDialog); -import views$login$VectorLoginFooter from './components/views/login/VectorLoginFooter'; -views$login$VectorLoginFooter && (module.exports.components['views.login.VectorLoginFooter'] = views$login$VectorLoginFooter); -import views$login$VectorLoginHeader from './components/views/login/VectorLoginHeader'; -views$login$VectorLoginHeader && (module.exports.components['views.login.VectorLoginHeader'] = views$login$VectorLoginHeader); -import views$messages$DateSeparator from './components/views/messages/DateSeparator'; -views$messages$DateSeparator && (module.exports.components['views.messages.DateSeparator'] = views$messages$DateSeparator); -import views$messages$MessageTimestamp from './components/views/messages/MessageTimestamp'; -views$messages$MessageTimestamp && (module.exports.components['views.messages.MessageTimestamp'] = views$messages$MessageTimestamp); -import views$rooms$DNDRoomTile from './components/views/rooms/DNDRoomTile'; -views$rooms$DNDRoomTile && (module.exports.components['views.rooms.DNDRoomTile'] = views$rooms$DNDRoomTile); -import views$rooms$RoomDropTarget from './components/views/rooms/RoomDropTarget'; -views$rooms$RoomDropTarget && (module.exports.components['views.rooms.RoomDropTarget'] = views$rooms$RoomDropTarget); -import views$rooms$RoomTooltip from './components/views/rooms/RoomTooltip'; -views$rooms$RoomTooltip && (module.exports.components['views.rooms.RoomTooltip'] = views$rooms$RoomTooltip); -import views$rooms$SearchBar from './components/views/rooms/SearchBar'; -views$rooms$SearchBar && (module.exports.components['views.rooms.SearchBar'] = views$rooms$SearchBar); -import views$settings$IntegrationsManager from './components/views/settings/IntegrationsManager'; -views$settings$IntegrationsManager && (module.exports.components['views.settings.IntegrationsManager'] = views$settings$IntegrationsManager); -import views$settings$Notifications from './components/views/settings/Notifications'; -views$settings$Notifications && (module.exports.components['views.settings.Notifications'] = views$settings$Notifications); From ffa53ca2053d6e30d4a834a3eb3dd22ce65c3b12 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Thu, 11 May 2017 11:17:55 +0100 Subject: [PATCH 071/220] Update manifest.json --- res/vector-icons/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/vector-icons/manifest.json b/res/vector-icons/manifest.json index 2cf10bed44..7536efebc5 100644 --- a/res/vector-icons/manifest.json +++ b/res/vector-icons/manifest.json @@ -1,5 +1,5 @@ { - "name": "Riot - Matrix Client", + "name": "Riot - open team collaboration", "short_name": "Riot", "display": "standalone", "theme_color": "#76CFA6", From 3c5594e03464cf8e9145837cecafa01444aa86bf Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 11 May 2017 13:12:26 +0100 Subject: [PATCH 072/220] move manifest.json outward so it is scoped properly this will matter more when we add a service worker Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/manifest.json | 56 ++++++++++++++++++++++++++++++++++ res/vector-icons/manifest.json | 53 -------------------------------- scripts/copy-res.js | 1 + src/vector/index.html | 2 +- 4 files changed, 58 insertions(+), 54 deletions(-) create mode 100644 res/manifest.json delete mode 100644 res/vector-icons/manifest.json diff --git a/res/manifest.json b/res/manifest.json new file mode 100644 index 0000000000..75b182122d --- /dev/null +++ b/res/manifest.json @@ -0,0 +1,56 @@ +{ + "name": "Riot - open team collaboration", + "short_name": "Riot", + "display": "standalone", + "theme_color": "#76CFA6", + "start_url": "index.html", + "icons": [ + { + "src": "vector-icons/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "vector-icons/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "vector-icons/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "vector-icons/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "vector-icons/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "vector-icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ], + "related_applications": [ + { + "platform": "play", + "url": "https://play.google.com/store/apps/details?id=im.vector.alpha", + "id": "im.vector.alpha" + }, + { + "platform": "itunes", + "url": "https://itunes.apple.com/gb/app/riot-open-source-team-collaboration-via-matrix/id1083446067" + } + ] +} diff --git a/res/vector-icons/manifest.json b/res/vector-icons/manifest.json deleted file mode 100644 index 7536efebc5..0000000000 --- a/res/vector-icons/manifest.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "Riot - open team collaboration", - "short_name": "Riot", - "display": "standalone", - "theme_color": "#76CFA6", - "start_url": "../", - "icons": [ - { - "src": "android-chrome-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "android-chrome-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "android-chrome-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "android-chrome-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "android-chrome-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "android-chrome-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ], - "related_applications": [{ - "platform": "play", - "url": "https://play.google.com/store/apps/details?id=im.vector.alpha", - "id": "im.vector.alpha" - }, { - "platform": "itunes", - "url": "https://itunes.apple.com/gb/app/riot-open-source-team-collaboration-via-matrix/id1083446067" - }] -} diff --git a/scripts/copy-res.js b/scripts/copy-res.js index 4702d5cf1b..5a43c4e6e5 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -7,6 +7,7 @@ // common parents. Hence, "res/{a,b}/**": the output will be "dest/a/..." and // "dest/b/...". const COPY_LIST = [ + ["res/manifest.json", "webapp"], ["res/{media,vector-icons}/**", "webapp"], ["src/skins/vector/{fonts,img}/**", "webapp"], ["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"], diff --git a/src/vector/index.html b/src/vector/index.html index 331bf68448..38810f62c1 100644 --- a/src/vector/index.html +++ b/src/vector/index.html @@ -12,7 +12,7 @@ - + From f248477f82da6af6ec3c0f6f18ca03c497e2946e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 11 May 2017 17:46:08 +0100 Subject: [PATCH 073/220] stage 0.5 rebrand (rename dist release) Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- scripts/jenkins.sh | 2 +- scripts/package.sh | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh index 0d441cdd76..312eea4543 100755 --- a/scripts/jenkins.sh +++ b/scripts/jenkins.sh @@ -34,7 +34,7 @@ npm run test # run eslint npm run lintall -- -f checkstyle -o eslint.xml || true -rm dist/vector-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist +rm dist/riot-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist # node_modules deps from 'npm install' don't have a .git dir so can't # rev-parse; but they do set the commit in package.json under 'gitHead' which diff --git a/scripts/package.sh b/scripts/package.sh index b3bc00bf03..cffb6d288b 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -25,13 +25,13 @@ cp -r webapp vector-$version # if $version looks like semver with leading v, strip it before writing to file if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then - echo ${version:1} > vector-$version/version + echo ${version:1} > riot-$version/version else - echo ${version} > vector-$version/version + echo ${version} > riot-$version/version fi -tar chvzf dist/vector-$version.tar.gz vector-$version -rm -r vector-$version +tar chvzf dist/riot-$version.tar.gz riot-$version +rm -r riot-$version echo -echo "Packaged dist/vector-$version.tar.gz" +echo "Packaged dist/riot-$version.tar.gz" From ea0b166da7f3bb6b5591dbee0f1aa5eeab388210 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 11 May 2017 17:49:31 +0100 Subject: [PATCH 074/220] change wording to not confuse users building repo change default repos to match their current naming Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- scripts/electron-package.sh | 2 +- scripts/issues-burndown.pl | 2 +- scripts/issues-no-state.pl | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/electron-package.sh b/scripts/electron-package.sh index a5718df832..973ea45e82 100755 --- a/scripts/electron-package.sh +++ b/scripts/electron-package.sh @@ -63,7 +63,7 @@ fi if [ ! -f package.json ]; then echo "No package.json found. This script must be run from" - echo "the vector-web directory." + echo "the riot-web directory." exit fi diff --git a/scripts/issues-burndown.pl b/scripts/issues-burndown.pl index 67c05673df..03af5ed7cc 100755 --- a/scripts/issues-burndown.pl +++ b/scripts/issues-burndown.pl @@ -18,7 +18,7 @@ my $gh = Net::GitHub->new( login => 'ara4n', pass => read_password("github password: "), ); -$gh->set_default_user_repo('vector-im', 'vector-web'); +$gh->set_default_user_repo('vector-im', 'riot-web'); #my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 }); my @issues = $gh->issue->repos_issues({ state => 'all' }); diff --git a/scripts/issues-no-state.pl b/scripts/issues-no-state.pl index 9b07ed271f..748809c59a 100755 --- a/scripts/issues-no-state.pl +++ b/scripts/issues-no-state.pl @@ -18,7 +18,7 @@ my $gh = Net::GitHub->new( login => 'ara4n', pass => read_password("github password: "), ); -$gh->set_default_user_repo('vector-im', 'vector-web'); +$gh->set_default_user_repo('vector-im', 'riot-web'); #my @issues = $gh->issue->repos_issues({ state => 'all', milestone => 3 }); my @issues = $gh->issue->repos_issues({ state => 'all' }); @@ -42,7 +42,7 @@ my $now = DateTime->now(); foreach my $issue (@issues) { next if ($issue->{pull_request}); - + use Data::Dumper; print STDERR Dumper($issue); From bbda658b7f7e0dd4b173b2b4ed02484ff9eba170 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 13 May 2017 12:37:13 +0100 Subject: [PATCH 075/220] make Electron tray icon mimic the Favico.js one DRY: moved Favicon stuff into the base platform Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/tray.js | 16 ++++---- src/vector/platform/VectorBasePlatform.js | 47 ++++++++++++++++++++++- src/vector/platform/WebPlatform.js | 44 --------------------- 3 files changed, 55 insertions(+), 52 deletions(-) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index 2ccdf40ccc..ab3a8e1c53 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -15,12 +15,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -const path = require('path'); -const electron = require('electron'); - -const app = electron.app; -const Tray = electron.Tray; -const MenuItem = electron.MenuItem; +const {app, Tray, Menu, nativeImage} = require('electron'); let trayIcon = null; @@ -44,7 +39,7 @@ exports.create = function (win, config) { } }; - const contextMenu = electron.Menu.buildFromTemplate([ + const contextMenu = Menu.buildFromTemplate([ { label: 'Show/Hide ' + config.brand, click: toggleWin @@ -64,4 +59,11 @@ exports.create = function (win, config) { trayIcon.setToolTip(config.brand); trayIcon.setContextMenu(contextMenu); trayIcon.on('click', toggleWin); + + win.webContents.on('page-favicon-updated', function(ev, favicons) { + try { + const img = nativeImage.createFromDataURL(favicons[0]); + trayIcon.setImage(img); + } catch (e) {console.error(e);} + }); }; diff --git a/src/vector/platform/VectorBasePlatform.js b/src/vector/platform/VectorBasePlatform.js index 1466b76ae3..00c9c47c30 100644 --- a/src/vector/platform/VectorBasePlatform.js +++ b/src/vector/platform/VectorBasePlatform.js @@ -17,12 +17,57 @@ See the License for the specific language governing permissions and limitations under the License. */ -import BasePlatform from 'matrix-react-sdk/lib/BasePlatform' +import BasePlatform from 'matrix-react-sdk/lib/BasePlatform'; +import Favico from 'favico.js'; /** * Vector-specific extensions to the BasePlatform template */ export default class VectorBasePlatform extends BasePlatform { + constructor() { + super(); + + // The 'animations' are really low framerate and look terrible. + // Also it re-starts the animationb every time you set the badge, + // and we set the state each time, even if the value hasn't changed, + // so we'd need to fix that if enabling the animation. + this.favicon = new Favico({animation: 'none'}); + this._updateFavicon(); + } + + _updateFavicon() { + try { + // This needs to be in in a try block as it will throw + // if there are more than 100 badge count changes in + // its internal queue + let bgColor = "#d00", + notif = this.notificationCount; + + if (this.errorDidOccur) { + notif = notif || "×"; + bgColor = "#f00"; + } + + this.favicon.badge(notif, { + bgColor: bgColor, + }); + } catch (e) { + console.warn(`Failed to set badge count: ${e.message}`); + } + } + + setNotificationCount(count: number) { + if (this.notificationCount === count) return; + super.setNotificationCount(count); + this._updateFavicon(); + } + + setErrorStatus(errorDidOccur: boolean) { + if (this.errorDidOccur === errorDidOccur) return; + super.setErrorStatus(errorDidOccur); + this._updateFavicon(); + } + /** * Check for the availability of an update to the version of the * app that's currently running. diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index 72ca19f06c..204317bab3 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -18,7 +18,6 @@ limitations under the License. */ import VectorBasePlatform from './VectorBasePlatform'; -import Favico from 'favico.js'; import request from 'browser-request'; import dis from 'matrix-react-sdk/lib/dispatcher.js'; import q from 'q'; @@ -27,49 +26,6 @@ import url from 'url'; import UAParser from 'ua-parser-js'; export default class WebPlatform extends VectorBasePlatform { - constructor() { - super(); - this.runningVersion = null; - // The 'animations' are really low framerate and look terrible. - // Also it re-starts the animationb every time you set the badge, - // and we set the state each time, even if the value hasn't changed, - // so we'd need to fix that if enabling the animation. - this.favicon = new Favico({animation: 'none'}); - this._updateFavicon(); - } - - _updateFavicon() { - try { - // This needs to be in in a try block as it will throw - // if there are more than 100 badge count changes in - // its internal queue - let bgColor = "#d00", - notif = this.notificationCount; - - if (this.errorDidOccur) { - notif = notif || "×"; - bgColor = "#f00"; - } - - this.favicon.badge(notif, { - bgColor: bgColor, - }); - } catch (e) { - console.warn(`Failed to set badge count: ${e.message}`); - } - } - - setNotificationCount(count: number) { - if (this.notificationCount === count) return; - super.setNotificationCount(count); - this._updateFavicon(); - } - - setErrorStatus(errorDidOccur: boolean) { - if (this.errorDidOccur === errorDidOccur) return; - super.setErrorStatus(errorDidOccur); - this._updateFavicon(); - } /** * Returns true if the platform supports displaying From 8927afca036cda1f0cc2b1c0cac23f4510fa351d Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 13 May 2017 12:37:27 +0100 Subject: [PATCH 076/220] re-add electron node modules to gitignore Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6dd2b988c3..6072f0ff5b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ /key.pem /lib /node_modules -/electron/node_modules +/electron_app/node_modules /packages/ /webapp /.npmrc From 6aae97b81204e20ef463ecbfa903af7658dbd6de Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 13 May 2017 12:39:55 +0100 Subject: [PATCH 077/220] Update tray tooltip based on document.title Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/tray.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index ab3a8e1c53..b0a657a08e 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -66,4 +66,8 @@ exports.create = function (win, config) { trayIcon.setImage(img); } catch (e) {console.error(e);} }); + + win.webContents.on('page-title-updated', function(ev, title) { + trayIcon.setToolTip(title); + }); }; From 808240eef9bfef0a4e685933bd986b8347bead1e Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 13 May 2017 12:40:17 +0100 Subject: [PATCH 078/220] shouldn't need this try-catch Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/tray.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index b0a657a08e..75104042c1 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -61,10 +61,7 @@ exports.create = function (win, config) { trayIcon.on('click', toggleWin); win.webContents.on('page-favicon-updated', function(ev, favicons) { - try { - const img = nativeImage.createFromDataURL(favicons[0]); - trayIcon.setImage(img); - } catch (e) {console.error(e);} + trayIcon.setImage(nativeImage.createFromDataURL(favicons[0])); }); win.webContents.on('page-title-updated', function(ev, title) { From aa7728cad39f388f607cea1eb810eec5ea33a4f2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Sat, 13 May 2017 12:41:13 +0100 Subject: [PATCH 079/220] tidy up tray.js - it made my eyes hurt Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/tray.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/electron_app/src/tray.js b/electron_app/src/tray.js index 75104042c1..7198356ca6 100644 --- a/electron_app/src/tray.js +++ b/electron_app/src/tray.js @@ -21,15 +21,15 @@ let trayIcon = null; exports.hasTray = function hasTray() { return (trayIcon !== null); -} +}; -exports.create = function (win, config) { +exports.create = function(win, config) { // no trays on darwin if (process.platform === 'darwin' || trayIcon) { return; } - const toggleWin = function () { + const toggleWin = function() { if (win.isVisible() && !win.isMinimized()) { win.hide(); } else { @@ -42,17 +42,17 @@ exports.create = function (win, config) { const contextMenu = Menu.buildFromTemplate([ { label: 'Show/Hide ' + config.brand, - click: toggleWin + click: toggleWin, }, { - type: 'separator' + type: 'separator', }, { label: 'Quit', - click: function () { + click: function() { app.quit(); - } - } + }, + }, ]); trayIcon = new Tray(config.icon_path); From 25a727b8d8bb7b658da0ff1628d431b615fd346d Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 15 May 2017 00:26:02 +0100 Subject: [PATCH 080/220] use full date formats on timestamps - fixes https://github.com/vector-im/riot-web/issues/3874 --- src/components/views/messages/MessageTimestamp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/MessageTimestamp.js b/src/components/views/messages/MessageTimestamp.js index ab910b05ab..a97f54b173 100644 --- a/src/components/views/messages/MessageTimestamp.js +++ b/src/components/views/messages/MessageTimestamp.js @@ -25,7 +25,7 @@ module.exports = React.createClass({ render: function() { var date = new Date(this.props.ts); return ( - + { DateUtils.formatTime(date) } ); From 8e2e6cee35845f256cfe2f9981a1efa7978d2f0a Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 15 May 2017 01:07:25 +0100 Subject: [PATCH 081/220] require indexeddb & webworkers in modernizr --- src/vector/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index 0d704d995d..02713afca7 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -103,7 +103,7 @@ function checkBrowserFeatures(featureList) { var validBrowser = checkBrowserFeatures([ "displaytable", "flexbox", "es5object", "es5function", "localstorage", - "objectfit" + "objectfit", "indexeddb", "webworkers", ]); // Parse the given window.location and return parameters that can be used when calling From c3477a30a7de80ade690dca05db1f7c1176a5d06 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 15 May 2017 01:22:32 +0100 Subject: [PATCH 082/220] oops, rebuild modernizr to pull in new tests --- .modernizr.json | 6 ++++-- src/vector/modernizr.js | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.modernizr.json b/.modernizr.json index 29e620a5ba..06be8b4fa1 100644 --- a/.modernizr.json +++ b/.modernizr.json @@ -9,6 +9,8 @@ "test/css/flexbox", "test/es5/specification", "test/css/objectfit", - "test/storage/localstorage" + "test/storage/localstorage", + "test/workers/webworkers", + "test/indexeddb" ] -} \ No newline at end of file +} diff --git a/src/vector/modernizr.js b/src/vector/modernizr.js index 5ef7778aeb..07bd2fd37c 100644 --- a/src/vector/modernizr.js +++ b/src/vector/modernizr.js @@ -1,3 +1,3 @@ -/*! modernizr 3.1.0 (Custom Build) | MIT * - * http://modernizr.com/download/?-displaytable-es5-flexbox-localstorage-objectfit-cssclassprefix:modernizr_ !*/ -!function(window,document,undefined){function is(e,t){return typeof e===t}function testRunner(){var e,t,r,n,o,s,i;for(var d in tests){if(e=[],t=tests[d],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(r=0;rd;d++)if(l=e[d],c=mStyle.style[l],contains(l,"-")&&(l=cssToDOM(l)),mStyle.style[l]!==undefined){if(n||is(r,"undefined"))return o(),"pfx"==t?l:!0;try{mStyle.style[l]=r}catch(u){}if(mStyle.style[l]!=c)return o(),"pfx"==t?l:!0}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return r===!1?e[o]:(n=t[e[o]],is(n,"function")?fnBind(n,r||t):n);return!1}function testPropsAll(e,t,r,n,o){var s=e.charAt(0).toUpperCase()+e.slice(1),i=(e+" "+cssomPrefixes.join(s+" ")+s).split(" ");return is(t,"string")||is(t,"undefined")?testProps(i,t,n,o):(i=(e+" "+domPrefixes.join(s+" ")+s).split(" "),testDOMProps(i,t,r))}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}var tests=[],ModernizrProto={_version:"3.1.0",_config:{classPrefix:"modernizr_",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout(function(){t(r[e])},0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG="svg"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(e){var t,r=e.childNodes;t=r[0].offsetLefto;o++){var s=prefixes[o],i=s.toUpperCase()+"_"+t;if(i in n)return"@-"+s.toLowerCase()+"-"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf("@")?atRule(e):(-1!=e.indexOf("-")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,"pfx"))};Modernizr.addTest("objectfit",!!prefixed("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("localstorage",function(){var e="modernizr";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;id;d++)if(l=e[d],c=mStyle.style[l],contains(l,"-")&&(l=cssToDOM(l)),mStyle.style[l]!==undefined){if(n||is(r,"undefined"))return o(),"pfx"==t?l:!0;try{mStyle.style[l]=r}catch(u){}if(mStyle.style[l]!=c)return o(),"pfx"==t?l:!0}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return r===!1?e[o]:(n=t[e[o]],is(n,"function")?fnBind(n,r||t):n);return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+cssomPrefixes.join(i+" ")+i).split(" ");return is(t,"string")||is(t,"undefined")?testProps(s,t,n,o):(s=(e+" "+domPrefixes.join(i+" ")+i).split(" "),testDOMProps(s,t,r))}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}var tests=[],ModernizrProto={_version:"3.3.1",_config:{classPrefix:"modernizr_",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout(function(){t(r[e])},0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG="svg"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(e){var t,r=e.childNodes;t=r[0].offsetLefto;o++){var i=prefixes[o],s=i.toUpperCase()+"_"+t;if(s in n)return"@-"+i.toLowerCase()+"-"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf("@")?atRule(e):(-1!=e.indexOf("-")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,"pfx"))};Modernizr.addTest("objectfit",!!prefixed("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("localstorage",function(){var e="modernizr";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest("webworkers","Worker"in window);var indexeddb;try{indexeddb=prefixed("indexedDB",window)}catch(e){}Modernizr.addTest("indexeddb",!!indexeddb),indexeddb&&Modernizr.addTest("indexeddb.deletedatabase","deleteDatabase"in indexeddb),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i Date: Mon, 15 May 2017 02:24:34 +0100 Subject: [PATCH 083/220] cursor pointer for avatar upload in user settings --- .../vector/css/matrix-react-sdk/structures/_UserSettings.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index 739ac88ab9..fe60aacb9f 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -219,6 +219,10 @@ input.mx_UserSettings_phoneNumberField { margin-top: 10px; } +.mx_UserSettings_avatarPicker_edit img { + cursor: pointer; +} + .mx_UserSettings_avatarPicker_edit > input { display: none; } From fe61a7eefd83af9bc4d33a25235dfe0fe4b45d5b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Mon, 15 May 2017 02:32:25 +0100 Subject: [PATCH 084/220] fix off-by-one pixel errors in login field heights - fixes https://github.com/vector-im/riot-web/issues/3738 --- .../css/matrix-react-sdk/structures/login/_Login.scss | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index 93173ed336..3537046464 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -184,7 +184,7 @@ limitations under the License. } .mx_Login_field_prefix { - height: 33px; + height: 34px; padding: 0px 5px; line-height: 33px; @@ -197,7 +197,7 @@ limitations under the License. } .mx_Login_field_suffix { - height: 33px; + height: 34px; padding: 0px 5px; line-height: 33px; @@ -211,11 +211,16 @@ limitations under the License. } .mx_Login_username { + height: 16px; flex-shrink: 1; min-width: 0px; border-radius: 3px; } +.mx_Login_phoneNumberField { + height: 16px; +} + .mx_Login_field_has_prefix { border-top-left-radius: 0px; border-bottom-left-radius: 0px; From cef26a5b20601904ae104cf1688f9721edfb83c8 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Mon, 15 May 2017 21:14:01 +0100 Subject: [PATCH 085/220] fix #3894 --- scripts/package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/package.sh b/scripts/package.sh index cffb6d288b..23d0925b05 100755 --- a/scripts/package.sh +++ b/scripts/package.sh @@ -21,7 +21,7 @@ npm run build$dev cp config.sample.json webapp/ mkdir -p dist -cp -r webapp vector-$version +cp -r webapp riot-$version # if $version looks like semver with leading v, strip it before writing to file if [[ ${version} =~ ^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-.+)?$ ]]; then From 3cead032c2fe1a0b0034c2a3b2c06248ebc2c564 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 16 May 2017 16:27:58 +0100 Subject: [PATCH 086/220] Revert "Merge pull request #3804 from vector-im/dbkr/left_panel_for_newbies_2" This reverts commit e6133820a2f70f94e693f6352da71c03ef5a079a, reversing changes made to d1db602b3a3e735430016af2fc837841feafdb43. --- src/components/structures/BottomLeftMenu.js | 127 +++++++++++++++--- src/components/structures/RoomSubList.js | 19 ++- .../structures/RoomSubListHeader.js | 44 +++--- src/skins/vector/css/_components.scss | 1 - .../views/elements/_RoleButton.scss | 33 ----- .../views/rooms/_RoomList.scss | 23 ---- .../css/vector-web/structures/_LeftPanel.scss | 34 +++-- 7 files changed, 170 insertions(+), 111 deletions(-) delete mode 100644 src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index 63dfac60d8..f378cac628 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -1,6 +1,5 @@ /* Copyright 2015, 2016 OpenMarket Ltd -Copyright 2017 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. @@ -15,8 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; -import sdk from 'matrix-react-sdk'; +'use strict'; + +var React = require('react'); +var ReactDOM = require('react-dom'); +var sdk = require('matrix-react-sdk') +var dis = require('matrix-react-sdk/lib/dispatcher'); +var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); module.exports = React.createClass({ displayName: 'BottomLeftMenu', @@ -26,28 +30,121 @@ module.exports = React.createClass({ teamToken: React.PropTypes.string, }, + getInitialState: function() { + return({ + directoryHover : false, + roomsHover : false, + homeHover: false, + peopleHover : false, + settingsHover : false, + }); + }, + + // Room events + onDirectoryClick: function() { + dis.dispatch({ action: 'view_room_directory' }); + }, + + onDirectoryMouseEnter: function() { + this.setState({ directoryHover: true }); + }, + + onDirectoryMouseLeave: function() { + this.setState({ directoryHover: false }); + }, + + onRoomsClick: function() { + dis.dispatch({ action: 'view_create_room' }); + }, + + onRoomsMouseEnter: function() { + this.setState({ roomsHover: true }); + }, + + onRoomsMouseLeave: function() { + this.setState({ roomsHover: false }); + }, + + // Home button events + onHomeClick: function() { + dis.dispatch({ action: 'view_home_page' }); + }, + + onHomeMouseEnter: function() { + this.setState({ homeHover: true }); + }, + + onHomeMouseLeave: function() { + this.setState({ homeHover: false }); + }, + + // People events + onPeopleClick: function() { + dis.dispatch({ action: 'view_create_chat' }); + }, + + onPeopleMouseEnter: function() { + this.setState({ peopleHover: true }); + }, + + onPeopleMouseLeave: function() { + this.setState({ peopleHover: false }); + }, + + // Settings events + onSettingsClick: function() { + dis.dispatch({ action: 'view_user_settings' }); + }, + + onSettingsMouseEnter: function() { + this.setState({ settingsHover: true }); + }, + + onSettingsMouseLeave: function() { + this.setState({ settingsHover: false }); + }, + + // Get the label/tooltip to show + getLabel: function(label, show) { + if (show) { + var RoomTooltip = sdk.getComponent("rooms.RoomTooltip"); + return ; + } + }, + render: function() { - const HomeButton = sdk.getComponent('elements.HomeButton'); - const StartChatButton = sdk.getComponent('elements.StartChatButton'); - const RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton'); - const CreateRoomButton = sdk.getComponent('elements.CreateRoomButton'); - const SettingsButton = sdk.getComponent('elements.SettingsButton'); + var TintableSvg = sdk.getComponent('elements.TintableSvg'); var homeButton; if (this.props.teamToken) { - homeButton = ; + homeButton = ( + + + { this.getLabel("Welcome page", this.state.homeHover) } + + ); } return (
{ homeButton } - - - - - - + + + { this.getLabel("Start chat", this.state.peopleHover) } + + + + { this.getLabel("Room directory", this.state.directoryHover) } + + + + { this.getLabel("Create new room", this.state.roomsHover) } + + + + { this.getLabel("Settings", this.state.settingsHover) } +
); diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index ab6c4422d1..c315ae46e9 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -1,5 +1,4 @@ /* -Copyright 2017 Vector Creations Ltd Copyright 2015, 2016 OpenMarket Ltd Licensed under the Apache License, Version 2.0 (the "License"); @@ -84,8 +83,6 @@ var RoomSubList = React.createClass({ incomingCall: React.PropTypes.object, onShowMoreRooms: React.PropTypes.func, searchFilter: React.PropTypes.string, - emptyContent: React.PropTypes.node, // content shown if the list is empty - headerItems: React.PropTypes.node, // content shown in the sublist header }, getInitialState: function() { @@ -472,15 +469,16 @@ var RoomSubList = React.createClass({ render: function() { var connectDropTarget = this.props.connectDropTarget; + var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget'); var TruncatedList = sdk.getComponent('elements.TruncatedList'); var label = this.props.collapsed ? null : this.props.label; - let content; - if (this.state.sortedList.length == 0) { - content = this.props.emptyContent; - } else { - content = this.makeRoomTiles(); + //console.log("render: " + JSON.stringify(this.state.sortedList)); + + var target; + if (this.state.sortedList.length == 0 && this.props.editable) { + target = ; } var roomCount = this.props.list.length > 0 ? this.props.list.length : ''; @@ -500,7 +498,8 @@ var RoomSubList = React.createClass({ if (!this.state.hidden) { subList = - { content } + { target } + { this.makeRoomTiles() } ; } else { @@ -522,7 +521,6 @@ var RoomSubList = React.createClass({ roomNotificationCount={ this.roomNotificationCount() } onClick={ this.onClick } onHeaderClick={ this.props.onHeaderClick } - headerItems={this.props.headerItems} /> { subList }
@@ -544,7 +542,6 @@ var RoomSubList = React.createClass({ roomNotificationCount={ this.roomNotificationCount() } onClick={ this.onClick } onHeaderClick={ this.props.onHeaderClick } - headerItems={this.props.headerItems} /> : undefined } { (this.props.showSpinner && !this.state.hidden) ? : undefined } diff --git a/src/components/structures/RoomSubListHeader.js b/src/components/structures/RoomSubListHeader.js index 74094ae0ba..ad9aff5f70 100644 --- a/src/components/structures/RoomSubListHeader.js +++ b/src/components/structures/RoomSubListHeader.js @@ -14,11 +14,16 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; -import classNames from 'classnames'; -import sdk from 'matrix-react-sdk'; -import { formatCount } from 'matrix-react-sdk/lib/utils/FormattingUtils'; -import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; +'use strict'; + +var React = require('react'); +var ReactDOM = require('react-dom'); +var classNames = require('classnames'); +var sdk = require('matrix-react-sdk') +var FormattingUtils = require('matrix-react-sdk/lib/utils/FormattingUtils'); +var RoomNotifs = require('matrix-react-sdk/lib/RoomNotifs'); +var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); +var ConstantTimeDispatcher = require('matrix-react-sdk/lib/ConstantTimeDispatcher'); module.exports = React.createClass({ displayName: 'RoomSubListHeader', @@ -37,7 +42,6 @@ module.exports = React.createClass({ hidden: React.PropTypes.bool, onClick: React.PropTypes.func, onHeaderClick: React.PropTypes.func, - headerItems: React.PropTypes.node, // content shown in the sublist header }, getDefaultProps: function() { @@ -59,34 +63,35 @@ module.exports = React.createClass({ // }, render: function() { - const TintableSvg = sdk.getComponent("elements.TintableSvg"); + var TintableSvg = sdk.getComponent("elements.TintableSvg"); - const subListNotifications = this.props.roomNotificationCount; - const subListNotifCount = subListNotifications[0]; - const subListNotifHighlight = subListNotifications[1]; + var subListNotifications = this.props.roomNotificationCount; + var subListNotifCount = subListNotifications[0]; + var subListNotifHighlight = subListNotifications[1]; - const chevronClasses = classNames({ + var chevronClasses = classNames({ 'mx_RoomSubList_chevron': true, 'mx_RoomSubList_chevronRight': this.props.hidden, 'mx_RoomSubList_chevronDown': !this.props.hidden, }); - const badgeClasses = classNames({ + var badgeClasses = classNames({ 'mx_RoomSubList_badge': true, 'mx_RoomSubList_badgeHighlight': subListNotifHighlight, }); - let badge; + var badge; if (subListNotifCount > 0) { - badge =
{ formatCount(subListNotifCount) }
; - } else if (subListNotifHighlight) { + badge =
{ FormattingUtils.formatCount(subListNotifCount) }
; + } + else if (subListNotifHighlight) { badge =
!
; } // When collapsed, allow a long hover on the header to show user // the full tag name and room count - let title; - const roomCount = this.props.roomCount; + var title; + var roomCount = this.props.roomCount; if (this.props.collapsed) { title = this.props.label; if (roomCount !== '') { @@ -94,9 +99,9 @@ module.exports = React.createClass({ } } - let incomingCall; + var incomingCall; if (this.props.isIncomingCallRoom) { - const IncomingCallBox = sdk.getComponent("voip.IncomingCallBox"); + var IncomingCallBox = sdk.getComponent("voip.IncomingCallBox"); incomingCall = ; } @@ -104,7 +109,6 @@ module.exports = React.createClass({
{ this.props.collapsed ? '' : this.props.label } - {this.props.headerItems}
{ roomCount }
{ badge } diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 5b23bb82f8..df3c4600eb 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -27,7 +27,6 @@ @import "./matrix-react-sdk/views/elements/_MemberEventListSummary.scss"; @import "./matrix-react-sdk/views/elements/_ProgressBar.scss"; @import "./matrix-react-sdk/views/elements/_RichText.scss"; -@import "./matrix-react-sdk/views/elements/_RoleButton.scss"; @import "./matrix-react-sdk/views/login/_InteractiveAuthEntryComponents.scss"; @import "./matrix-react-sdk/views/login/_ServerConfig.scss"; @import "./matrix-react-sdk/views/messages/_MEmoteBody.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss b/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss deleted file mode 100644 index 094e0b9b1b..0000000000 --- a/src/skins/vector/css/matrix-react-sdk/views/elements/_RoleButton.scss +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2107 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. -*/ - -.mx_RoleButton { - margin-left: 4px; - margin-right: 4px; - cursor: pointer; - display: inline-block; -} - -.mx_RoleButton object { - pointer-events: none; -} - -.mx_RoleButton_tooltip { - display: inline-block; - position: relative; - top: -25px; - left: 6px; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss index 35787ca0c4..110dcd5b6b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomList.scss @@ -1,6 +1,5 @@ /* Copyright 2015, 2016 OpenMarket Ltd -Copyright 2107 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. @@ -38,25 +37,3 @@ limitations under the License. .mx_RoomList_scrollbar .gm-scrollbar.-vertical { z-index: 6; } - -.mx_RoomList_emptySubListTip { - font-size: 13px; - margin-left: 18px; - margin-right: 18px; - margin-top: 8px; - margin-bottom: 7px; - padding: 5px; - border: 1px dashed $accent-color; - color: $primary-fg-color; - background-color: $droptarget-bg-color; - border-radius: 4px; -} - -.mx_RoomList_emptySubListTip .mx_RoleButton { - vertical-align: -3px; -} - -.mx_RoomList_headerButtons { - position: absolute; - right: 60px; -} diff --git a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss index f171591cd6..d3bbce1b19 100644 --- a/src/skins/vector/css/vector-web/structures/_LeftPanel.scss +++ b/src/skins/vector/css/vector-web/structures/_LeftPanel.scss @@ -64,25 +64,43 @@ limitations under the License. pointer-events: none; } -.collapsed .mx_RoleButton { +.mx_LeftPanel .mx_BottomLeftMenu_homePage, +.mx_LeftPanel .mx_BottomLeftMenu_directory, +.mx_LeftPanel .mx_BottomLeftMenu_createRoom, +.mx_LeftPanel .mx_BottomLeftMenu_people, +.mx_LeftPanel .mx_BottomLeftMenu_settings { + display: inline-block; + cursor: pointer; +} + +.collapsed .mx_BottomLeftMenu_homePage, +.collapsed .mx_BottomLeftMenu_directory, +.collapsed .mx_BottomLeftMenu_createRoom, +.collapsed .mx_BottomLeftMenu_people, +.collapsed .mx_BottomLeftMenu_settings { margin-right: 0px ! important; padding-top: 3px ! important; padding-bottom: 3px ! important; } -.mx_BottomLeftMenu_options .mx_RoleButton { - margin-left: 0px; +.mx_LeftPanel .mx_BottomLeftMenu_homePage, +.mx_LeftPanel .mx_BottomLeftMenu_directory, +.mx_LeftPanel .mx_BottomLeftMenu_createRoom, +.mx_LeftPanel .mx_BottomLeftMenu_people { margin-right: 10px; } -.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { +.mx_LeftPanel .mx_BottomLeftMenu_settings { float: right; } -.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton { - margin-right: 0px; -} - .mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { float: none; } + +.mx_LeftPanel .mx_BottomLeftMenu_tooltip { + display: inline-block; + position: relative; + top: -25px; + left: 6px; +} From 03476705b1cccf03070bdc55af5139450dd1c1cc Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 16 May 2017 16:35:06 +0100 Subject: [PATCH 087/220] Revert "better solution to incomingcallbox weirdness" This reverts commit be527874730d959fa980e81c897a658a03952aad. --- src/components/structures/RoomSubListHeader.js | 2 +- .../css/matrix-react-sdk/views/voip/_IncomingCallbox.scss | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/structures/RoomSubListHeader.js b/src/components/structures/RoomSubListHeader.js index ad9aff5f70..eb73f72162 100644 --- a/src/components/structures/RoomSubListHeader.js +++ b/src/components/structures/RoomSubListHeader.js @@ -112,8 +112,8 @@ module.exports = React.createClass({
{ roomCount }
{ badge } + { incomingCall }
- { incomingCall }
); }, diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss index 64eac25d01..e63814f545 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss @@ -25,6 +25,8 @@ limitations under the License. margin-top: -3px; margin-left: -20px; width: 200px; + font-weight: initial; + text-transform: initial; } .mx_IncomingCallBox_chevron { From 9399b7ddf0cf7b272e527b9086fc6fe68db2e66d Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 16 May 2017 16:35:17 +0100 Subject: [PATCH 088/220] Revert "fix incoming call box" This reverts commit b3431bb75008b068a2a1805803b91d0ff2616571. --- src/components/structures/RoomSubList.js | 1 - src/components/structures/RoomSubListHeader.js | 1 - .../vector/css/matrix-react-sdk/structures/_RoomView.scss | 4 ++-- .../css/matrix-react-sdk/views/voip/_IncomingCallbox.scss | 2 -- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index c315ae46e9..f741a30f03 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -516,7 +516,6 @@ var RoomSubList = React.createClass({ roomCount={ roomCount } collapsed={ this.props.collapsed } hidden={ this.state.hidden } - incomingCall={ this.props.incomingCall } isIncomingCallRoom={ isIncomingCallRoom } roomNotificationCount={ this.roomNotificationCount() } onClick={ this.onClick } diff --git a/src/components/structures/RoomSubListHeader.js b/src/components/structures/RoomSubListHeader.js index eb73f72162..5618b39b85 100644 --- a/src/components/structures/RoomSubListHeader.js +++ b/src/components/structures/RoomSubListHeader.js @@ -36,7 +36,6 @@ module.exports = React.createClass({ React.PropTypes.number ]), collapsed: React.PropTypes.bool.isRequired, // is LeftPanel collapsed? - incomingCall: React.PropTypes.object, isIncomingCallRoom: React.PropTypes.bool, roomNotificationCount: React.PropTypes.array, hidden: React.PropTypes.bool, diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss index e251ecd14c..3d5fe02963 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_RoomView.scss @@ -172,7 +172,7 @@ hr.mx_RoomView_myReadMarker { max-height: 0px; background-color: $primary-bg-color; - z-index: 5; + z-index: 1000; overflow: hidden; -webkit-transition: all .2s ease-out; @@ -260,4 +260,4 @@ hr.mx_RoomView_myReadMarker { .mx_RoomView_ongoingConfCallNotification a { color: $accent-fg-color ! important; -} +} \ No newline at end of file diff --git a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss index e63814f545..64eac25d01 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/voip/_IncomingCallbox.scss @@ -25,8 +25,6 @@ limitations under the License. margin-top: -3px; margin-left: -20px; width: 200px; - font-weight: initial; - text-transform: initial; } .mx_IncomingCallBox_chevron { From fdf326c9f0651c9766d55bc5aeddd60d5e0372d1 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 16 May 2017 17:13:39 +0100 Subject: [PATCH 089/220] Revert "Cancel quick-search on Escape, clearing it and returning focus to composer." This reverts commit 52a119244b2ff221c32c082166e77f9913833573. --- src/components/structures/SearchBox.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index d0868b690d..d79617c046 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -100,10 +100,6 @@ module.exports = React.createClass({ } switch (ev.keyCode) { - case KeyCode.ESCAPE: - this._clearSearch(); - dis.dispatch({action: 'focus_composer'}); - break; case KeyCode.KEY_K: if (ctrlCmdOnly) { if (this.refs.search) { From 844ea390c87eab83c9f287313d32e727c958a6fb Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 16 May 2017 17:13:55 +0100 Subject: [PATCH 090/220] Revert "clear the searchbox after quick-search" This reverts commit ddd12edc064bdd81fffbad941e199eaa065e3ae0. --- src/components/structures/RoomSubList.js | 3 +-- src/components/structures/SearchBox.js | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index f741a30f03..a1291eebd7 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -165,11 +165,10 @@ var RoomSubList = React.createClass({ } }, - onRoomTileClick(roomId, ev) { + onRoomTileClick(roomId) { dis.dispatch({ action: 'view_room', room_id: roomId, - clear_search: (ev && (ev.keyCode == 13 || ev.keyCode == 32)), }); }, diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index d79617c046..a3848dcc44 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -48,14 +48,18 @@ module.exports = React.createClass({ }, onAction: function(payload) { + // Disabling this as I find it really really annoying, and was used to the + // previous behaviour - see https://github.com/vector-im/riot-web/issues/3348 +/* switch (payload.action) { // Clear up the text field when a room is selected. case 'view_room': - if (payload.clear_search && this.refs.search) { + if (this.refs.search) { this._clearSearch(); } break; } +*/ }, onChange: function() { From 9fc9de3af53e6457a6f83e1305c1f2247ab95421 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 16 May 2017 17:21:49 +0100 Subject: [PATCH 091/220] Revert "Merge pull request #3654 from vector-im/matthew/quick-search" This reverts commit 8f20fcfa6b6828421d1278b169df663e80d2a743, reversing changes made to 751f715e77a73fa704298dd1dbad0035eb7a75e8. --- package.json | 3 +- src/components/structures/LeftPanel.js | 94 +---------- src/components/structures/RoomSubList.js | 147 ++++++++++-------- .../structures/RoomSubListHeader.js | 120 -------------- src/components/structures/SearchBox.js | 31 ---- 5 files changed, 86 insertions(+), 309 deletions(-) delete mode 100644 src/components/structures/RoomSubListHeader.js diff --git a/package.json b/package.json index a1f06b00b1..644e9309dc 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "favico.js": "^0.3.10", "filesize": "3.5.6", "flux": "~2.0.3", + "gemini-scrollbar": "matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", @@ -73,7 +74,7 @@ "react-dnd": "^2.1.4", "react-dnd-html5-backend": "^2.1.2", "react-dom": "^15.4.0", - "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#39d858c", + "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#5e97aef", "sanitize-html": "^1.11.1", "ua-parser-js": "^0.7.10", "url": "^0.11.0" diff --git a/src/components/structures/LeftPanel.js b/src/components/structures/LeftPanel.js index 2d97313a07..a9df37a8b8 100644 --- a/src/components/structures/LeftPanel.js +++ b/src/components/structures/LeftPanel.js @@ -19,11 +19,9 @@ limitations under the License. var React = require('react'); var DragDropContext = require('react-dnd').DragDropContext; var HTML5Backend = require('react-dnd-html5-backend'); -var KeyCode = require('matrix-react-sdk/lib/KeyCode'); var sdk = require('matrix-react-sdk') var dis = require('matrix-react-sdk/lib/dispatcher'); - var VectorConferenceHandler = require('../../VectorConferenceHandler'); var CallHandler = require("matrix-react-sdk/lib/CallHandler"); @@ -42,10 +40,6 @@ var LeftPanel = React.createClass({ }; }, - componentWillMount: function() { - this.focusedElement = null; - }, - componentDidMount: function() { this.dispatcherRef = dis.register(this.onAction); }, @@ -68,91 +62,6 @@ var LeftPanel = React.createClass({ } }, - _onFocus: function(ev) { - this.focusedElement = ev.target; - }, - - _onBlur: function(ev) { - this.focusedElement = null; - }, - - _onKeyDown: function(ev) { - if (!this.focusedElement) return; - let handled = false; - - switch (ev.keyCode) { - case KeyCode.UP: - this._onMoveFocus(true); - handled = true; - break; - case KeyCode.DOWN: - this._onMoveFocus(false); - handled = true; - break; - } - - if (handled) { - ev.stopPropagation(); - ev.preventDefault(); - } - }, - - _onMoveFocus: function(up) { - var element = this.focusedElement; - - // unclear why this isn't needed - // var descending = (up == this.focusDirection) ? this.focusDescending : !this.focusDescending; - // this.focusDirection = up; - - var descending = false; // are we currently descending or ascending through the DOM tree? - var classes; - - do { - var child = up ? element.lastElementChild : element.firstElementChild; - var sibling = up ? element.previousElementSibling : element.nextElementSibling; - - if (descending) { - if (child) { - element = child; - } - else if (sibling) { - element = sibling; - } - else { - descending = false; - element = element.parentElement; - } - } - else { - if (sibling) { - element = sibling; - descending = true; - } - else { - element = element.parentElement; - } - } - - if (element) { - classes = element.classList; - if (classes.contains("mx_LeftPanel")) { // we hit the top - element = up ? element.lastElementChild : element.firstElementChild; - descending = true; - } - } - - } while(element && !( - classes.contains("mx_RoomTile") || - classes.contains("mx_SearchBox_search") || - classes.contains("mx_RoomSubList_ellipsis"))); - - if (element) { - element.focus(); - this.focusedElement = element; - this.focusedDescending = descending; - } - }, - _recheckCallElement: function(selectedRoomId) { // if we aren't viewing a room with an ongoing call, but there is an // active call, show the call element - we need to do this to make @@ -211,8 +120,7 @@ var LeftPanel = React.createClass({ } return ( -
diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index 04a981196b..6a099bf3a0 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -16,14 +16,15 @@ limitations under the License. 'use strict'; -var React = require('react'); -var sdk = require('matrix-react-sdk'); -var Matrix = require("matrix-js-sdk"); -var dis = require('matrix-react-sdk/lib/dispatcher'); -var MatrixClientPeg = require("matrix-react-sdk/lib/MatrixClientPeg"); -var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc'); -var Modal = require('matrix-react-sdk/lib/Modal'); -var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); +import React from 'react'; +import _t from 'counterpart-riot'; +import sdk from 'matrix-react-sdk'; +import Matrix from "matrix-js-sdk"; +import dis from 'matrix-react-sdk/lib/dispatcher'; +import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; +import rate_limited_func from 'matrix-react-sdk/lib/ratelimitedfunc'; +import Modal from 'matrix-react-sdk/lib/Modal'; +import AccessibleButton from 'matrix-react-sdk/lib/components/views/elements/AccessibleButton'; module.exports = React.createClass({ displayName: 'RightPanel', @@ -34,7 +35,7 @@ module.exports = React.createClass({ collapsed: React.PropTypes.bool, // currently unused property to request for a minimized view of the panel }, - Phase : { + Phase: { MemberList: 'MemberList', FilePanel: 'FilePanel', NotificationPanel: 'NotificationPanel', @@ -91,8 +92,8 @@ module.exports = React.createClass({ if (MatrixClientPeg.get().isGuest()) { var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog"); Modal.createDialog(NeedToRegisterDialog, { - title: "Please Register", - description: "Guest users can't invite users. Please register to invite." + title: _t('Please Register'), + description: _t('Guest users can\'t invite users. Please register to invite') + '.' }); return; } @@ -188,7 +189,7 @@ module.exports = React.createClass({
-
Invite to this room
+
{ _t('Invite to this room') }
; } @@ -197,30 +198,30 @@ module.exports = React.createClass({ if (this.props.roomId) { buttonGroup =
- -
{ membersBadge ? membersBadge :  }
- - { membersHighlight } -
- -
 
- - { filesHighlight } -
- -
 
- - { notificationsHighlight } -
-
- -
-
; + +
{ membersBadge ? membersBadge :  }
+ + { membersHighlight } +
+ +
 
+ + { filesHighlight } +
+ +
 
+ + { notificationsHighlight } +
+
+ +
+
; } if (!this.props.collapsed) { diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index 523ee56efe..efd61ef9c9 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -30,6 +30,8 @@ var linkifyMatrix = require('matrix-react-sdk/lib/linkify-matrix'); var sanitizeHtml = require('sanitize-html'); var q = require('q'); +import _t from 'counterpart-riot'; + import {instanceForInstanceId, protocolNameForInstanceId} from '../../utils/DirectoryUtils'; linkifyMatrix(linkify); @@ -80,8 +82,8 @@ module.exports = React.createClass({ } const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Failed to get protocol list from Home Server", - description: "The Home Server may be too old to support third party networks", + title: _t('Failed to get protocol list from Home Server'), + description: _t('The Home Server may be too old to support third party networks'), }); }); @@ -176,8 +178,8 @@ module.exports = React.createClass({ console.error("Failed to get publicRooms: %s", JSON.stringify(err)); var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Failed to get public room list", - description: ((err && err.message) ? err.message : "The server may be unavailable or overloaded"), + title: _t('Failed to get public room list'), + description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')) }); }); }, @@ -191,31 +193,31 @@ module.exports = React.createClass({ */ removeFromDirectory: function(room) { var alias = get_display_alias_for_room(room); - var name = room.name || alias || "Unnamed room"; + var name = room.name || alias || _t('Unnamed room'); var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); var desc; if (alias) { - desc = `Delete the room alias '${alias}' and remove '${name}' from the directory?`; + desc = _t('Delete the room alias %(alias)s and remove %(name)s from the directory?', {alias: alias, name: name}); } else { - desc = `Remove '${name}' from the directory?`; + desc = _t('Remove %(name)s from the directory?', {name: name}); } Modal.createDialog(QuestionDialog, { - title: "Remove from Directory", + title: _t('Remove from Directory'), description: desc, onFinished: (should_delete) => { if (!should_delete) return; var Loader = sdk.getComponent("elements.Spinner"); var modal = Modal.createDialog(Loader); - var step = `remove '${name}' from the directory.`; + var step = _t('remove %(name)s from the directory', {name: name}) + '.'; MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(() => { if (!alias) return; - step = 'delete the alias.'; + step = _t('delete the alias') + '.'; return MatrixClientPeg.get().deleteAlias(alias); }).done(() => { modal.close(); @@ -225,8 +227,8 @@ module.exports = React.createClass({ this.refreshRoomList(); console.error("Failed to " + step + ": " + err); Modal.createDialog(ErrorDialog, { - title: "Failed to " + step, - description: ((err && err.message) ? err.message : "The server may be unavailable or overloaded"), + title: _t('Error'), + description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')) }); }); } @@ -314,8 +316,8 @@ module.exports = React.createClass({ if (!fields) { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Unable to join network", - description: "Riot does not know how to join a room on this network", + title: _t('Unable to join network'), + description: _t('Riot does not know how to join a room on this network'), }); return; } @@ -325,15 +327,15 @@ module.exports = React.createClass({ } else { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Room not found", - description: "Couldn't find a matching Matrix room", + title: _t('Room not found'), + description: _t('Couldn\'t find a matching Matrix room'), }); } }, (e) => { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Fetching third party location failed", - description: "Unable to look up room ID from server", + title: _t('Fetching third party location failed'), + description: _t('Unable to look up room ID from server'), }); }); } @@ -353,8 +355,8 @@ module.exports = React.createClass({ if (!room.world_readable && !room.guest_can_join) { var NeedToRegisterDialog = sdk.getComponent("dialogs.NeedToRegisterDialog"); Modal.createDialog(NeedToRegisterDialog, { - title: "Failed to join the room", - description: "This room is inaccessible to guests. You may be able to join if you register." + title: _t('Failed to join the room'), + description: _t('This room is inaccessible to guests. You may be able to join if you register') + '.' }); return; } @@ -368,7 +370,7 @@ module.exports = React.createClass({ avatarUrl: room.avatar_url, // XXX: This logic is duplicated from the JS SDK which // would normally decide what the name is. - name: room.name || room_alias || "Unnamed room", + name: room.name || room_alias || _t('Unnamed room'), }; } // It's not really possible to join Matrix rooms by ID because the HS has no way to know @@ -393,18 +395,18 @@ module.exports = React.createClass({ var self = this; var guestRead, guestJoin, perms; for (var i = 0; i < rooms.length; i++) { - var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || "Unnamed room"; + var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || _t('Unnamed room'); guestRead = null; guestJoin = null; if (rooms[i].world_readable) { guestRead = ( -
World readable
+
{ _t('World readable') }
); } if (rooms[i].guest_can_join) { guestJoin = ( -
Guests can join
+
{ _t('Guests can join') }
); } @@ -493,7 +495,7 @@ module.exports = React.createClass({ if (this.state.protocolsLoading) { return (
- +
); @@ -511,7 +513,7 @@ module.exports = React.createClass({ // request from the scrollpanel because there isn't one let scrollpanel_content; if (rows.length == 0) { - scrollpanel_content = No rooms to show; + scrollpanel_content = { _t('No rooms to show') }; } else { scrollpanel_content = @@ -545,9 +547,9 @@ module.exports = React.createClass({ } - let placeholder = 'Search for a room'; + let placeholder = _t('Search for a room'); if (!this.state.instanceId) { - placeholder = '#example:' + this.state.roomServer; + placeholder = _t('#example') + ':' + this.state.roomServer; } else if (instance_expected_field_type) { placeholder = instance_expected_field_type.placeholder; } @@ -564,7 +566,7 @@ module.exports = React.createClass({ const DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox'); return (
- +
-
more
+
{ _t("more") }
{ content }
); @@ -509,8 +510,8 @@ var RoomSubList = React.createClass({ var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to add tag " + self.props.tagName + " to room" + err); Modal.createDialog(ErrorDialog, { - title: "Failed to add tag " + self.props.tagName + " to room", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to add tag %(tagName)s to room', {tagName: self.props.tagName}), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); break; @@ -530,7 +531,7 @@ var RoomSubList = React.createClass({ var target; if (this.state.sortedList.length == 0 && this.props.editable) { - target = ; + target = ; } if (this.state.sortedList.length > 0 || this.props.editable) { diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index 729e7ef772..42777ed005 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -17,6 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); +import _t from 'counterpart-riot'; var sdk = require('matrix-react-sdk') var dis = require('matrix-react-sdk/lib/dispatcher'); var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc'); @@ -134,7 +135,7 @@ module.exports = React.createClass({ className="mx_SearchBox_search" value={ this.state.searchTerm } onChange={ this.onChange } - placeholder="Filter room names" + placeholder={ _t('Filter room names') } /> ]; } diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index db416b8a06..73934cabdd 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -21,6 +21,7 @@ var React = require('react'); var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); var dis = require('matrix-react-sdk/lib/dispatcher'); var sdk = require('matrix-react-sdk'); +import _t from 'counterpart-riot'; var Modal = require('matrix-react-sdk/lib/Modal'); var Resend = require("matrix-react-sdk/lib/Resend"); import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; @@ -74,8 +75,8 @@ module.exports = React.createClass({ // display error message stating you couldn't delete this. var code = e.errcode || e.statusCode; Modal.createDialog(ErrorDialog, { - title: "Error", - description: "You cannot delete this message. (" + code + ")" + title: _t('Error'), + description: _t('You cannot delete this message. (%(code)s)', {code: code}) }); }).done(); }, @@ -121,7 +122,7 @@ module.exports = React.createClass({ if (eventStatus === 'not_sent') { resendButton = (
- Resend + { _t('Resend') }
); } @@ -129,7 +130,7 @@ module.exports = React.createClass({ if (!eventStatus && !this.props.mxEvent.isRedacted()) { // sent and not redacted redactButton = (
- Redact + { _t('Redact') }
); } @@ -137,21 +138,21 @@ module.exports = React.createClass({ if (eventStatus === "queued" || eventStatus === "not_sent") { cancelButton = (
- Cancel Sending + { _t('Cancel Sending') }
); } viewSourceButton = (
- View Source + { _t('View Source') }
); if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) { viewClearSourceButton = (
- View Decrypted Source + { _t('View Decrypted Source') }
); } @@ -160,7 +161,7 @@ module.exports = React.createClass({ if (this.props.eventTileOps.isWidgetHidden()) { unhidePreviewButton = (
- Unhide Preview + { _t('Unhide Preview') }
) } @@ -170,13 +171,13 @@ module.exports = React.createClass({ permalinkButton = (
Permalink + target="_blank" rel="noopener" onClick={ this.closeMenu }>{ _t('Permalink') }
); const quoteButton = (
- Quote + { _t('Quote') }
); @@ -185,7 +186,7 @@ module.exports = React.createClass({ externalURLButton = (
Source URL + rel="noopener" target="_blank" onClick={ this.closeMenu }>{ _t('Source URL') }
); } diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js index 7efa68485c..4401e2644f 100644 --- a/src/components/views/context_menus/RoomTileContextMenu.js +++ b/src/components/views/context_menus/RoomTileContextMenu.js @@ -21,6 +21,7 @@ import q from 'q'; import React from 'react'; import classNames from 'classnames'; import sdk from 'matrix-react-sdk'; +import _t from 'counterpart-riot'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import dis from 'matrix-react-sdk/lib/dispatcher'; import DMRoomMap from 'matrix-react-sdk/lib/utils/DMRoomMap'; @@ -70,8 +71,8 @@ module.exports = React.createClass({ }).fail(function(err) { var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Failed to remove tag " + tagNameOff + " from room", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to remove tag %(tagName)s from room', {tagName: tagNameOff}), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); } @@ -87,8 +88,8 @@ module.exports = React.createClass({ }).fail(function(err) { var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Failed to add tag " + tagNameOn + " to room", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to remove tag %(tagName)s from room', {tagName: tagNameOn}), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); } @@ -148,8 +149,8 @@ module.exports = React.createClass({ }, (err) => { var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Failed to set Direct Message status of room", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to set Direct Message status of room'), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); }, @@ -187,8 +188,8 @@ module.exports = React.createClass({ var errCode = err.errcode || "unknown error code"; var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: `Failed to forget room (${errCode})`, - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to forget room %(errCode)s', {errCode: errCode}), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); @@ -274,22 +275,22 @@ module.exports = React.createClass({
- All messages (loud) + { _t('All messages (loud)') }
- All messages + { _t('All messages') }
- Mentions only + { _t('Mentions only') }
- Mute + { _t('Mute') }
); @@ -306,16 +307,16 @@ module.exports = React.createClass({ switch (membership) { case "join": leaveClickHandler = this._onClickLeave; - leaveText = "Leave"; + leaveText = _t('Leave'); break; case "leave": case "ban": leaveClickHandler = this._onClickForget; - leaveText = "Forget"; + leaveText = _t('Forget'); break; case "invite": leaveClickHandler = this._onClickReject; - leaveText = "Reject"; + leaveText = _t('Reject'); break; } @@ -353,17 +354,17 @@ module.exports = React.createClass({
- Favourite + { _t('Favourite') }
- Low Priority + { _t('Low Priority') }
- Direct Chat + { _t('Direct Chat') }
); diff --git a/src/components/views/elements/ImageView.js b/src/components/views/elements/ImageView.js index ab3e9ee8f0..187a7bfc34 100644 --- a/src/components/views/elements/ImageView.js +++ b/src/components/views/elements/ImageView.js @@ -25,6 +25,7 @@ var filesize = require('filesize'); var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); const Modal = require('matrix-react-sdk/lib/Modal'); const sdk = require('matrix-react-sdk'); +import _t from 'counterpart-riot'; module.exports = React.createClass({ displayName: 'ImageView', @@ -76,8 +77,8 @@ module.exports = React.createClass({ // display error message stating you couldn't delete this. var code = e.errcode || e.statusCode; Modal.createDialog(ErrorDialog, { - title: "Error", - description: "You cannot delete this image. (" + code + ")" + title: _t('Error'), + description: _t('You cannot delete this image. (%(code)s)', {code: code}) }); }).done(); } @@ -150,14 +151,14 @@ module.exports = React.createClass({ var eventMeta; if(showEventMeta) { eventMeta = (
- Uploaded on { DateUtils.formatDate(new Date(this.props.mxEvent.getTs())) } by { this.props.mxEvent.getSender() } + { _t('Uploaded on %(date)s by %(user)s', {date: DateUtils.formatDate(new Date(this.props.mxEvent.getTs())), user: this.props.mxEvent.getSender()}) }
); } var eventRedact; if(showEventMeta) { eventRedact = (
- Redact + { _t('Redact') }
); } @@ -169,7 +170,7 @@ module.exports = React.createClass({
- Close + {
@@ -178,7 +179,7 @@ module.exports = React.createClass({ { eventMeta }
- Download this file
+ { _t('Download this file') }
{ size_res }
diff --git a/src/components/views/globals/MatrixToolbar.js b/src/components/views/globals/MatrixToolbar.js index dbe4196aad..aef32d99d7 100644 --- a/src/components/views/globals/MatrixToolbar.js +++ b/src/components/views/globals/MatrixToolbar.js @@ -17,6 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); +import _t from 'counterpart-riot'; var Notifier = require("matrix-react-sdk/lib/Notifier"); var sdk = require('matrix-react-sdk') var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); @@ -37,7 +38,7 @@ module.exports = React.createClass({
/!\
- You are not receiving desktop notifications. Enable them now + { _t('You are not receiving desktop notifications') } { _t('Enable them now') }
diff --git a/src/components/views/login/VectorCustomServerDialog.js b/src/components/views/login/VectorCustomServerDialog.js index 65ec1f84ba..1190c69e57 100644 --- a/src/components/views/login/VectorCustomServerDialog.js +++ b/src/components/views/login/VectorCustomServerDialog.js @@ -15,6 +15,7 @@ limitations under the License. */ var React = require("react"); +import _t from 'counterpart-riot'; module.exports = React.createClass({ displayName: 'VectorCustomServerDialog', @@ -26,24 +27,14 @@ module.exports = React.createClass({ return (
- Custom Server Options + { _t('Custom Server Options') }
- - You can use the custom server options to sign into other Matrix - servers by specifying a different Home server URL. -
- This allows you to use Riot with an existing Matrix account on - a different home server. -
-
- You can also set a custom identity server but you won't be able to - invite users by email address, or be invited by email address yourself. -
+
diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/login/VectorLoginFooter.js index 1382a86277..32929d43d5 100644 --- a/src/components/views/login/VectorLoginFooter.js +++ b/src/components/views/login/VectorLoginFooter.js @@ -17,6 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); +import _t from 'counterpart-riot'; module.exports = React.createClass({ displayName: 'VectorLoginFooter', @@ -30,7 +31,7 @@ module.exports = React.createClass({ blog  ·   twitter  ·   github  ·   - powered by Matrix + { _t('powered by Matrix') }
); } diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index 89cc44db89..0810b18b11 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -14,19 +14,23 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; +// 'use strict'; -var React = require('react'); +import React from 'react'; +import _t from 'counterpart-riot'; +import DateUtils from 'matrix-react-sdk/lib/DateUtils'; -var days = [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" -]; +function getdaysArray() { + var days = []; + days.push(_t('Sunday')); + days.push(_t('Monday')); + days.push(_t('Tuesday')); + days.push(_t('Wednesday')); + days.push(_t('Thursday')); + days.push(_t('Friday')); + days.push(_t('Saturday')); + return days; +} module.exports = React.createClass({ displayName: 'DateSeparator', @@ -34,19 +38,20 @@ module.exports = React.createClass({ var date = new Date(this.props.ts); var today = new Date(); var yesterday = new Date(); + var days = getdaysArray(); yesterday.setDate(today.getDate() - 1); var label; if (date.toDateString() === today.toDateString()) { - label = "Today"; + label = _t('Today'); } else if (date.toDateString() === yesterday.toDateString()) { - label = "Yesterday"; + label = _t('Yesterday'); } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) { label = days[date.getDay()]; } else { - label = date.toDateString(); + label = DateUtils.formatFullDate(date); } return ( diff --git a/src/components/views/rooms/DNDRoomTile.js b/src/components/views/rooms/DNDRoomTile.js index 4bcf29ed9a..3180103eab 100644 --- a/src/components/views/rooms/DNDRoomTile.js +++ b/src/components/views/rooms/DNDRoomTile.js @@ -23,6 +23,7 @@ import {DropTarget} from 'react-dnd'; import dis from 'matrix-react-sdk/lib/dispatcher'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import sdk from 'matrix-react-sdk'; +import _t from 'counterpart-riot'; import RoomTile from 'matrix-react-sdk/lib/components/views/rooms/RoomTile'; import * as Rooms from 'matrix-react-sdk/lib/Rooms'; import Modal from 'matrix-react-sdk/lib/Modal'; @@ -90,8 +91,8 @@ var roomTileSource = { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to set direct chat tag " + err); Modal.createDialog(ErrorDialog, { - title: "Failed to set direct chat tag", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to set direct chat tag'), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); return; @@ -115,8 +116,8 @@ var roomTileSource = { var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to remove tag " + prevTag + " from room: " + err); Modal.createDialog(ErrorDialog, { - title: "Failed to remove tag " + prevTag + " from room", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to remove tag %(tagName)s from room', {tagName: prevTag}), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); } @@ -137,8 +138,8 @@ var roomTileSource = { var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to add tag " + newTag + " to room: " + err); Modal.createDialog(ErrorDialog, { - title: "Failed to add tag " + newTag + " to room", - description: ((err && err.message) ? err.message : "Operation failed"), + title: _t('Failed to add tag %(tagName)s to room', {tagName: newTag}), + description: ((err && err.message) ? err.message : _t('Operation failed')), }); }); } @@ -241,4 +242,3 @@ DragSource('RoomTile', roomTileSource, function(connect, monitor) { isDragging: monitor.isDragging() }; })(RoomTile)); - diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index 11dc79ac20..2599cf18a4 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -16,6 +16,7 @@ limitations under the License. 'use strict'; var React = require('react'); +import _t from 'counterpart-riot'; var q = require("q"); var sdk = require('matrix-react-sdk'); var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); @@ -131,8 +132,8 @@ module.exports = React.createClass({ }, (error) => { var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { - title: "Error saving email notification preferences", - description: "An error occurred whilst saving your email notification preferences.", + title: _t('Error saving email notification preferences'), + description: _t('An error occurred whilst saving your email notification preferences') + '.', }); }); }, @@ -175,9 +176,10 @@ module.exports = React.createClass({ var TextInputDialog = sdk.getComponent("dialogs.TextInputDialog"); Modal.createDialog(TextInputDialog, { - title: "Keywords", - description: "Enter keywords separated by a comma:", + title: _t('Keywords'), + description: _t('Enter keywords separated by a comma') + ':', value: keywords, + button: _t('OK'), onFinished: function onFinished(should_leave, newValue) { if (should_leave && newValue !== keywords) { @@ -240,8 +242,8 @@ module.exports = React.createClass({ var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to change settings: " + error); Modal.createDialog(ErrorDialog, { - title: "Failed to change settings", - description: ((error && error.message) ? error.message : "Operation failed"), + title: _t('Failed to change settings'), + description: ((error && error.message) ? error.message : _t('Operation failed')), onFinished: self._refreshFromServer }); }); @@ -310,8 +312,8 @@ module.exports = React.createClass({ var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Can't update user notification settings: " + error); Modal.createDialog(ErrorDialog, { - title: "Can't update user notification settings", - description: ((error && error.message) ? error.message : "Operation failed"), + title: _t('Can\'t update user notification settings'), + description: ((error && error.message) ? error.message : _t('Operation failed')), onFinished: self._refreshFromServer }); }); @@ -352,8 +354,8 @@ module.exports = React.createClass({ var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); console.error("Failed to update keywords: " + error); Modal.createDialog(ErrorDialog, { - title: "Failed to update keywords", - description: ((error && error.message) ? error.message : "Operation failed"), + title: _t('Failed to update keywords'), + description: ((error && error.message) ? error.message : _t('Operation failed')), onFinished: self._refreshFromServer }); } @@ -562,8 +564,8 @@ module.exports = React.createClass({ // Build the rules not managed by Vector UI var otherRulesDescriptions = { - '.m.rule.message': "Notify for all other messages/rooms", - '.m.rule.fallback': "Notify me for anything else" + '.m.rule.message': _t('Notify for all other messages/rooms'), + '.m.rule.fallback': _t('Notify me for anything else'), }; for (var i in defaultRules.others) { @@ -698,7 +700,7 @@ module.exports = React.createClass({
@@ -713,7 +715,7 @@ module.exports = React.createClass({ {masterPushRuleDiv}
- All notifications are currently disabled for all targets. + { _t('All notifications are currently disabled for all targets') }.
); @@ -723,13 +725,13 @@ module.exports = React.createClass({ let emailNotificationsRow; if (emailThreepids.length === 0) { emailNotificationsRow =
- Add an email address above to configure email notifications + { _t('Add an email address above to configure email notifications') }
; } else { // This only supports the first email address in your profile for now emailNotificationsRow = this.emailNotificationsRow( emailThreepids[0].address, - "Enable email notifications ("+emailThreepids[0].address+")" + _t('Enable email notifications') + ' (' + emailThreepids[0].address + ')' ); } @@ -737,7 +739,7 @@ module.exports = React.createClass({ var externalRules = []; for (var i in this.state.externalPushRules) { var rule = this.state.externalPushRules[i]; - externalRules.push(
  • { rule.description }
  • ); + externalRules.push(
  • { _t(rule.description) }
  • ); } // Show keywords not displayed by the vector UI as a single external push rule @@ -748,12 +750,12 @@ module.exports = React.createClass({ } if (externalKeyWords.length) { externalKeyWords = externalKeyWords.join(", "); - externalRules.push(
  • Notifications on the following keywords follow rules which can’t be displayed here: { externalKeyWords }
  • ); + externalRules.push(
  • { _t('Notifications on the following keywords follow rules which can’t be displayed here:') } { externalKeyWords }
  • ); } var devicesSection; if (this.state.pushers === undefined) { - devicesSection =
    Unable to fetch notification target list
    + devicesSection =
    { _t('Unable to fetch notification target list') }
    } else if (this.state.pushers.length == 0) { devicesSection = null; } else { @@ -774,7 +776,7 @@ module.exports = React.createClass({ } if (devicesSection) { devicesSection = (
    -

    Notification targets

    +

    { _t('Notification targets') }

    { devicesSection }
    ); } @@ -783,9 +785,9 @@ module.exports = React.createClass({ if (externalRules.length) { advancedSettings = (
    -

    Advanced notifications settings

    - There are advanced notifications which are not shown here.
    - You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply. +

    { _t('Advanced notifications settings') }

    + { _t('There are advanced notifications which are not shown here') }.
    + { _t('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply') }.
      { externalRules }
    @@ -812,7 +814,7 @@ module.exports = React.createClass({
    @@ -830,7 +832,7 @@ module.exports = React.createClass({
    @@ -842,9 +844,9 @@ module.exports = React.createClass({ - - - + + + diff --git a/src/i18n/basefile.json b/src/i18n/basefile.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/basefile.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/i18n/be.json b/src/i18n/be.json new file mode 100644 index 0000000000..e6e824b4bd --- /dev/null +++ b/src/i18n/be.json @@ -0,0 +1,88 @@ +{ + "Add an email address above to configure email notifications": "Дадайце адрас электроннай пошты вышэй, каб наладзіць апавяшчэнні", + "All messages": "Усе паведамленні", + "All messages (loud)": "Усе паведамленні (гучна)", + "All notifications are currently disabled for all targets.": "Усе апавяшчэнні ў цяперашні час адключаныя для ўсіх мэтаў.", + "An error occurred whilst saving your email notification preferences": "Адбылася памылка падчас захавання налады апавяшчэнняў па электроннай пошце", + "Cancel Sending": "Адмяніць адпраўку", + "Can't update user notification settings": "Немагчыма абнавіць налады апавяшчэнняў карыстальніка", + "Close": "Зачыніць", + "Create new room": "Стварыць новы пакой", + "Couldn't find a matching Matrix room": "Не атрымалася знайсці адпаведны пакой Matrix", + "Custom Server Options": "Карыстальніцкія параметры сервера", + "delete the alias": "выдаліць псеўданім", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Выдаліць псеўданім пакоя %(alias)s і выдаліць %(name)s з каталога?", + "Direct Chat": "Прамы чат", + "Directory": "Каталог", + "Dismiss": "Aдхіліць", + "Download this file": "Спампаваць гэты файл", + "Drop here to %(verb)s": "Перацягнуць сюды %(verb)s", + "Enable audible notifications in web client": "Ўключыць гукавыя апавяшчэнні ў вэб-кліенце", + "Enable desktop notifications": "Ўключыць апавяшчэнні на працоўным стале", + "Enable email notifications": "Ўключыць паведамлення па электроннай пошце", + "Enable notifications for this account": "Ўключыць апавяшчэнні для гэтага ўліковага запісу", + "Enable them now": "Уключыць іх зараз", + "Enter keywords separated by a comma": "Калі ласка, увядзіце ключавыя словы, падзеленыя коскамі", + "Error": "Памылка", + "Error saving email notification preferences": "Памылка захавання налад апавяшчэнняў па электроннай пошце", + "#example": "#прыклад", + "Failed to": "Не атрымалася", + "Failed to add tag %(tagName)s to room": "Не атрымалася дадаць %(tagName)s ў пакоі", + "Failed to change settings": "Не атрымалася змяніць налады", + "Failed to forget room %(errCode)s": "Не атрымалася забыць пакой %(errCode)s", + "Failed to update keywords": "Не атрымалася абнавіць ключавыя словы", + "Failed to get protocol list from Home Server": "Не ўдалося атрымаць спіс пратаколаў ад хатняга сервера", + "Failed to get public room list": "Не ўдалося атрымаць спіс агульных пакояў", + "Failed to join the room": "Не ўдалося далучыцца да пакоя", + "Failed to remove tag %(prevTag)s from room": "Не ўдалося выдаліць %(prevTag)s з пакоя", + "Failed to set direct chat tag": "Не ўдалося ўсталяваць тэг прамога чата", + "Failed to set Direct Message status of room": "Не ўдалося ўсталяваць статут прамога паведамлення пакою", + "Favourite": "Улюбёнае", + "Fetching third party location failed": "Не ўдалося атрымаць месцазнаходжанне трэцяга боку", + "Files": "Файлы", + "Filter room names": "Фільтр iмёнаў пакояў", + "Forget": "Забыць", + " from room": " з пакоя", + "Guests can join": "Госці могуць далучыцца", + "Guest users can't invite users. Please register to invite": "Госцi не могуць запрашаць карыстальнікаў. Калі ласка, зарэгіструйцеся, каб запрасiць", + "Invite to this room": "Запрасіць у гэты пакой", + "Keywords": "Ключавыя словы", + "Leave": "Пакінуць", + "Low Priority": "Нізкі прыярытэт", + "Members": "Удзельнікі", + "Mentions only": "Толькі згадкі", + "Mute": "Без гуку", + "No rooms to show": "Няма пакояў для паказу", + "Noisy": "Шумна", + "Notification targets": "Мэты апавяшчэння", + "Notifications": "Апавяшчэнні", + "Notifications on the following keywords follow rules which can’t be displayed here": "Апавяшчэнні па наступных ключавых словах прытрымліваюцца правілаў, якія не могуць быць адлюстраваны тут", + "Notify for all other messages/rooms": "Апавяшчаць для ўсіх іншых паведамленняў/пакояў", + "Notify me for anything else": "Паведаміць мне што-небудзь яшчэ", + "Off": "Выключыць", + "On": "Уключыць", + "Operation failed": "Не атрымалася выканаць аперацыю", + "Permalink": "Пастаянная спасылка", + "Please Register": "Калі ласка, зарэгіструйцеся", + "powered by Matrix": "працуе на Matrix", + "Quote": "Цытата", + "Redact": "Адрэдагаваць", + "Reject": "Адхіліць", + "Remove %(name)s from the directory?": "Выдаліць %(name)s з каталога?", + "Remove": "Выдалiць", + "remove %(name)s from the directory": "выдаліць %(name)s з каталога", + "Remove from Directory": "Выдалiць з каталога", + "Resend": "Паўторна", + "Riot does not know how to join a room on this network": "Riot не ведае, як увайсці ў пакой у гэтай сетке", + "Room directory": "Каталог пакояў", + "Room not found": "Пакой не знойдзены", + "Search for a room": "Пошук па пакоі", + "Settings": "Налады", + "Source URL": "URL-адрас крыніцы", + "Start chat": "Пачаць чат", + "The Home Server may be too old to support third party networks": "Хатні сервер можа быць занадта стары для падтрымкі іншых сетак", + "There are advanced notifications which are not shown here": "Ёсць пашыраныя апавяшчэння, якія не паказаныя тут", + "The server may be unavailable or overloaded": "Сервер можа быць недаступны ці перагружаны", + "This room is inaccessible to guests. You may be able to join if you register": "Гэты пакой недаступны для гасцей. Вы можаце далучыцца, калі вы зарэгіструецеся", + " to room": " ў пакоі" +} \ No newline at end of file diff --git a/src/i18n/da.json b/src/i18n/da.json new file mode 100644 index 0000000000..890ab7bb92 --- /dev/null +++ b/src/i18n/da.json @@ -0,0 +1,84 @@ +{ + "Add an email address above to configure email notifications": "Tilføj en emailadresse ovenfor for at konfigurere e-mail-underretninger", + "All notifications are currently disabled for all targets.": "Alle meddelelser er for øjeblikket deaktiveret for alle mål.", + "An error occurred whilst saving your email notification preferences": "Der opstod en fejl under opbevaring af dine e-mail-underretningsindstillinger", + "and remove": "Og fjern", + "Can't update user notification settings": "Kan ikke opdatere brugermeddelelsesindstillinger", + "Create new room": "Opret nyt rum", + "Couldn't find a matching Matrix room": "Kunne ikke finde et matchende Matrix-rum", + "Custom Server Options": "Brugerdefinerede serverindstillinger", + "delete the alias": "Slet aliaset", + "Delete the room alias": "Slet room alias", + "Direct Chat": "Personligt Chat", + "Directory": "Rum fortegnelse", + "Dismiss": "Afskedige", + "Drop here to": "Drop her til", + "Enable audible notifications in web client": "Aktivér hørbare underretninger i webklienten", + "Enable desktop notifications": "Aktivér desktop meddelelser", + "Enable email notifications": "Aktivér e-mail-underretninger", + "Enable notifications for this account": "Aktivér underretninger for dette brugernavn", + "Enable them now": "Aktivér dem nu", + "Enter keywords separated by a comma": "Indtast søgeord adskilt af et komma", + "Error": "Fejl", + "Error saving email notification preferences": "Fejl ved at gemme e-mail-underretningsindstillinger", + "#example": "#eksempel", + "Failed to": "Var ikke i stand til at", + "Failed to add tag ": "Kunne ikke tilføje tag ", + "Failed to change settings": "Kunne ikke ændre indstillinger", + "Failed to update keywords": "Kunne ikke opdatere søgeord", + "Failed to get protocol list from Home Server": "Kunne ikke få protokolliste fra Home Server", + "Failed to get public room list": "Kunne ikke få offentlig rumliste", + "Failed to join the room": "Kunne ikke komme ind i rumet", + "Failed to remove tag ": "Kunne ikke fjerne tag ", + "Failed to set Direct Message status of room": "Kunne ikke indstille direkte beskedstatus for rumet", + "Favourite": "Favorit", + "Fetching third party location failed": "Hentning af tredjeparts placering mislykkedes", + "Files": "Filer", + "Filter room names": "Filtrer rumnavne", + "Forget": "Glem", + "from the directory": "fra fortegnelsen", + " from room": " fra rum", + "Guests can join": "Gæster kan deltage", + "Guest users can't invite users. Please register to invite": "Gæstebrugere kan ikke invitere brugere. Tilmeld dig venligst for at invitere", + "Invite to this room": "Inviter til dette rum", + "Keywords": "Søgeord", + "Leave": "Forlade", + "Low Priority": "Lav prioritet", + "Members": "Medlemmer", + "No rooms to show": "Ingen rum at vise", + "Noisy": "Støjende", + "Notification targets": "Meddelelsesmål", + "Notifications": "Meddelser", + "Notifications on the following keywords follow rules which can’t be displayed here": "Meddelelser om følgende søgeord følger regler, der ikke kan vises her", + "Notify for all other messages/rooms": "Underret om alle andre meddelelser / rum", + "Notify me for anything else": "Underret mig om noget andet", + "Off": "Slukket", + "On": "Tændt", + "Operation failed": "Operation mislykkedes", + "Please Register": "Vær venlig at registrere", + "powered by Matrix": "Drevet af Matrix", + "Reject": "Afvise", + "Remove": "Fjerne", + "remove": "fjerner", + "Remove from Directory": "Fjern fra fortegnelse", + "Riot does not know how to join a room on this network": "Riot ved ikke, hvordan man kan deltage i et rum på dette netværk", + "Room directory": "Rum fortegnelse", + "Room not found": "Rumet ikke fundet", + "Search for a room": "Søg efter et rum", + "Settings": "Indstillinger", + "Start chat": "Begyndt chat", + "The Home Server may be too old to support third party networks": "Hjemmeserveren kan være for gammel til at understøtte tredjepartsnetværk", + "There are advanced notifications which are not shown here": "Der er avancerede meddelelser, som ikke vises her", + "The server may be unavailable or overloaded": "Serveren kan være utilgængelig eller overbelastet", + "This room is inaccessible to guests. You may be able to join if you register": "Dette rum er utilgængeligt for gæster. Du kan være i stand til at deltage, hvis du registrerer dig", + " to room": " til rum", + "Unable to fetch notification target list": "Kan ikke hente meddelelsesmålliste", + "Unable to join network": "Kan ikke deltage i netværket", + "Unable to look up room ID from server": "Kunne ikke slå op på rum-id fra server", + "unknown error code": "Ukendt fejlkode", + "Unnamed room": "Unnamed rum", + "World readable": "Læselig til alle", + "You are not receiving desktop notifications": "Du modtager ikke desktop meddelelser", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du har muligvis konfigureret dem i en anden klient end Riot. Du kan ikke tune dem i Riot, men de gælder stadig", + "Close": "Luk" +} diff --git a/src/i18n/de_DE.json b/src/i18n/de_DE.json new file mode 100644 index 0000000000..2bc23bee07 --- /dev/null +++ b/src/i18n/de_DE.json @@ -0,0 +1,122 @@ +{ + "Please Register": "Bitte registrieren", + "Guest users can't invite users. Please register to invite.": "Gäste können keine User einladen. Zum Einladen bitte anmelden.", + "Members": "Mitglieder", + "Files": "Dateien", + "Notifications": "Benachrichtigungen", + "Invite to this room": "In diesen Raum einladen", + "Filter room names": "Raum Namen filtern", + "Start chat": "Neuen Chat starten", + "Room directory": "Raum Verzeichnis", + "Create new room": "Neuen Raum erstellen", + "Settings": "Einstellungen", + "powered by Matrix": "gebaut mit Matrix", + "Custom Server Options": "Optionen für eigenen Server", + "customServer_text": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
    This allows you to use Riot with an existing Matrix account on a different home server.

    You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", + "Dismiss": "ausblenden", + "Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokollliste vom Home Server", + "The Home Server may be too old to support third party networks": "Der Home Server kann zu alt sein, um Drittanbieter-Netzwerke zu unterstützen", + "Directory": "Raum Verzeichnis", + "#example:": "#beispiel:", + "Search for a room": "Suche einen Raum", + "No rooms to show": "Keine Räume zum anzeigen", + "World readable": "Jeder kann lesen", + "Guests can join": "Gäste können beitreten", + "You are not receiving desktop notifications": "Du erhältst keine Desktop Benachrichtigungen", + "Enable them now": "Aktiviere diese jetzt", + "Add an email address above to configure email notifications": "Füge eine E-Mail Adresse hinzu um Benachrichtigungen via E-Mail zu erhalten", + "All notifications are currently disabled for all targets.": "Im Moment sind alle Benachrichtigungen für alle Ziele deaktiviert.", + "An error occurred whilst saving your email notification preferences": "Ein Fehler trat auf während deine E-Mail Einstellungen gespeichert wurden", + "and remove": "und entfernen", + "Can't update user notification settings": "Kann Benutzerdefinierte Einstellungen nicht aktualisieren", + "Couldn't find a matching Matrix room": "Kann keinen entsprechenden Matrix Raum finden", + "delete the alias": "Lösche den Alias", + "Delete the room alias": "Lösche den Raum Alias", + "Direct Chat": "Privater Chat", + "Drop here to": "Hier ablegen", + "Enable audible notifications in web client": "Aktiviere Audio Benachrichtigungen", + "Enable desktop notifications": "Aktiviere Desktop Benachrichtigungen", + "Enable email notifications": "Aktiviere E-Mail Benachrichtigungen", + "Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer", + "Enter keywords separated by a comma": "Gebe Suchbegriffe getrennt durch Kommata ein", + "Error": "Fehler", + "Error saving email notification preferences": "Fehler beim Speichern der E-Mail Benachrichtigungseinstellungen", + "#example": "#Beispiel", + "Failed to": "Konnte nicht", + "Failed to add tag ": "Konnte Tag nicht hinzufügen ", + "Failed to change settings": "Konnte Einstellungen nicht ändern", + "Failed to update keywords": "Konnte Suchbegriff nicht aktualisieren", + "Failed to get public room list": "Konnte keine öffentliche Raumliste laden", + "Failed to join the room": "Fehler beim Betreten des Raumes", + "Failed to remove tag ": "Konnte Tag nicht entfernen ", + "Failed to set Direct Message status of room": "Konnte den direkten Benachrichtigungsstatus nicht setzen", + "Favourite": "Favorit", + "Fetching third party location failed": "Das Abrufen des Drittanbieterstandorts ist fehlgeschlagen", + "Forget": "Lösche", + "from the directory": "aus dem Verzeichnis", + " from room": " aus dem Raum", + "Guest users can't invite users. Please register to invite": "Gastnutzer können keine Nutzer einladen. Bitte registriere dich um Nutzer einzuladen", + "Keywords": "Suchbegriff", + "Leave": "Verlassen", + "Low Priority": "Niedrige Priorität", + "Noisy": "Laut", + "Notification targets": "Benachrichtigungsziel", + "Notifications on the following keywords follow rules which can’t be displayed here": "Benachrichtigungen zu folgenden Stichwörtern folgen Regeln, die hier nicht angezeigt werden können", + "Notify for all other messages/rooms": "Benachrichtigung für alle anderen Mitteilungen/ Räume", + "Operation failed": "Ausführung fehlgeschlagen", + "Reject": "ablehnen", + "Remove": "Entferne", + "remove": "Entferner", + "Remove from Directory": "Vom Raum Verzeichnis entfernen", + "Riot does not know how to join a room on this network": "Riot weiß nicht, wie es einem Raum auf diesem Netzwerk beitreten soll", + "Room not found": "Raum nicht gefunden", + "There are advanced notifications which are not shown here": "Es existieren erweiterte Benachrichtigungen, welche hier nicht angezeigt werden", + "The server may be unavailable or overloaded": "Der Server ist vermutlich nicht erreichbar oder überlastet", + "This room is inaccessible to guests. You may be able to join if you register": "Dieser Raum ist nicht verfügbar für Gäste. Vermutlich klappt es wenn du dich anmeldest", + "Unable to fetch notification target list": "Nicht möglich die Zielliste für Benachrichtigungen zu erhalten", + "Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten", + "unknown error code": "Unbekannter Fehlercode", + "Unnamed room": "Unbenannter Raum", + "Notify me for anything else": "Benachrichtige mich für alles andere", + "Off": "Aus", + "On": "An", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Client als Riot konfiguriert. Sie sind in Riot nicht anpassbar gelten aber trotzdem", + " to room": " an Raum", + "Drop here to %(verb)s": "%(verb)s hierher ziehen", + "All messages": "Alle Nachrichten", + "All messages (loud)": "Alle Nachrichten (laut)", + "Cancel Sending": "Senden abbrechen", + "Close": "Schließen", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raumalias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?", + "Download this file": "Datei Herunterladen", + "Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen", + "Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen", + "Failed to remove tag %(prevTag)s from room": "Das Entfernen des Tags %(prevTag)s für den Raum ist fehlgeschlagen", + "Failed to set direct chat tag": "Fehler beim setzen der Direct Chat Kennzeichnung", + "Mentions only": "Nur, wenn du erwähnt wirst", + "Mute": "Lautlos", + "Permalink": "Permanenter Link", + "Quote": "Zitat", + "Redact": "Redaktionell entfernen", + "Remove %(name)s from the directory?": "Soll der Raum %(name)s aus dem Verzeichnis entfernt werden?", + "remove %(name)s from the directory": "entferne %(name)s aus dem Verzeichnis", + "Resend": "Erneut Senden", + "Source URL": "Quell-URL", + "Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen", + "Unhide Preview": "Vorschau wieder anzeigen", + "Uploaded on %(date)s by %(user)s": "Hochgeladen am %(date)s durch %(user)s", + "View Decrypted Source": "Entschlüsselten Quellcode ansehen", + "View Source": "Quellcode ansehen", + "You cannot delete this image. (%(code)s)": "Das Bild kann nicht gelöscht werden. (%(code)s)", + "You cannot delete this message. (%(code)s)": "Die Nachricht kann nicht gelöscht werden. (%(code)s)", + "Today": "Heute", + "Wednesday": "Mittwoch", + "Thursday": "Donnerstag", + "Friday": "Freitag", + "Saturday": "Samstag", + "Tuesday": "Dienstag", + "Sunday": "Sonntag", + "Monday": "Montag", + "Yesterday": "Gestern", + "Welcome page": "Willkommensseite" +} diff --git a/src/i18n/en_EN.json b/src/i18n/en_EN.json new file mode 100644 index 0000000000..67d498648c --- /dev/null +++ b/src/i18n/en_EN.json @@ -0,0 +1,120 @@ +{ + "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", + "All messages": "All messages", + "All messages (loud)": "All messages (loud)", + "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", + "An error occurred whilst saving your email notification preferences": "An error occurred whilst saving your email notification preferences", + "Call invitation": "Call invitation", + "Cancel Sending": "Cancel Sending", + "Can't update user notification settings": "Can't update user notification settings", + "Close": "Close", + "Create new room": "Create new room", + "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", + "Custom Server Options": "Custom Server Options", + "delete the alias": "delete the alias", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", + "Direct Chat": "Direct Chat", + "Directory": "Directory", + "Dismiss": "Dismiss", + "Download this file": "Download this file", + "Drop here to %(verb)s": "Drop here to %(verb)s", + "Enable audible notifications in web client": "Enable audible notifications in web client", + "Enable desktop notifications": "Enable desktop notifications", + "Enable email notifications": "Enable email notifications", + "Enable notifications for this account": "Enable notifications for this account", + "Enable them now": "Enable them now", + "Enter keywords separated by a comma": "Enter keywords separated by a comma", + "Error": "Error", + "Error saving email notification preferences": "Error saving email notification preferences", + "#example": "#example", + "Failed to": "Failed to", + "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", + "Failed to change settings": "Failed to change settings", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "Failed to update keywords": "Failed to update keywords", + "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", + "Failed to get public room list": "Failed to get public room list", + "Failed to join the room": "Failed to join the room", + "Failed to remove tag %(prevTag)s from room": "Failed to remove tag %(prevTag)s from room", + "Failed to set direct chat tag": "Failed to set direct chat tag", + "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", + "Favourite": "Favourite", + "Fetching third party location failed": "Fetching third party location failed", + "Files": "Files", + "Filter room names": "Filter room names", + "Forget": "Forget", + " from room": " from room", + "Guests can join": "Guests can join", + "Guest users can't invite users. Please register to invite": "Guest users can't invite users. Please register to invite", + "Invite to this room": "Invite to this room", + "Keywords": "Keywords", + "Leave": "Leave", + "Low Priority": "Low Priority", + "Members": "Members", + "Mentions only": "Mentions only", + "Messages containing my display name": "Messages containing my display name", + "Messages containing my user name": "Messages containing my user name", + "Messages in group chats": "Messages in group chats", + "Messages in one-to-one chats": "Messages in one-to-one chats", + "Messages sent by bot": "Messages sent by bot", + "more": "more", + "Mute": "Mute", + "No rooms to show": "No rooms to show", + "Noisy": "Noisy", + "Notification targets": "Notification targets", + "Notifications": "Notifications", + "Notifications on the following keywords follow rules which can’t be displayed here": "Notifications on the following keywords follow rules which can’t be displayed here", + "Notify for all other messages/rooms": "Notify for all other messages/rooms", + "Notify me for anything else": "Notify me for anything else", + "Off": "Off", + "On": "On", + "Operation failed": "Operation failed", + "Permalink": "Permalink", + "Please Register": "Please Register", + "powered by Matrix": "powered by Matrix", + "Quote": "Quote", + "Redact": "Redact", + "Reject": "Reject", + "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", + "Remove": "Remove", + "remove %(name)s from the directory": "remove %(name)s from the directory", + "Remove from Directory": "Remove from Directory", + "Resend": "Resend", + "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", + "Room directory": "Room directory", + "Room not found": "Room not found", + "Search for a room": "Search for a room", + "Settings": "Settings", + "Source URL": "Source URL", + "Start chat": "Start chat", + "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", + "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", + "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", + "This room is inaccessible to guests. You may be able to join if you register": "This room is inaccessible to guests. You may be able to join if you register", + " to room": " to room", + "Unable to fetch notification target list": "Unable to fetch notification target list", + "Unable to join network": "Unable to join network", + "Unable to look up room ID from server": "Unable to look up room ID from server", + "Unhide Preview": "Unhide Preview", + "unknown error code": "unknown error code", + "Unnamed room": "Unnamed room", + "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", + "View Decrypted Source": "View Decrypted Source", + "View Source": "View Source", + "When I'm invited to a room": "When I'm invited to a room", + "World readable": "World readable", + "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", + "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", + "You are not receiving desktop notifications": "You are not receiving desktop notifications", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", + "Sunday": "Sunday", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Today": "Today", + "Yesterday": "Yesterday", + "Welcome page": "Welcome page" +} diff --git a/src/i18n/fr.json b/src/i18n/fr.json new file mode 100644 index 0000000000..db39ac9fdf --- /dev/null +++ b/src/i18n/fr.json @@ -0,0 +1,66 @@ +{ + "Add an email address above to configure email notifications": "Ajouter une adresse email pour la configuration des notifications par email", + "All messages": "Tous les messages", + "All messages (loud)": "Tous les messages (fort)", + "All notifications are currently disabled for all targets.": "Toutes les notification sont désactivées pour tous les appareils.", + "An error occurred whilst saving your email notification preferences": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mails", + "Cancel Sending": "Annuler Envois", + "Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur", + "Close": "Fermer", + "Create new room": "Créer un nouveau salon", + "Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix", + "Custom Server Options": "Options de Serveur Personnalisé", + "delete the alias": "Supprimer l'alias", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer le salon alias %(alias)s et supprimer %(name)s du répertoire?", + "Direct Chat": "Chat direct", + "Directory": "Dossier", + "Dismiss": "Rejeter", + "Download this file": "Télécharger ce fichier", + "Drop here to %(verb)s": "Déposer ici pour %(verb)s", + "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", + "Enable desktop notifications": "Activer les notifications de bureau", + "Enable email notifications": "Activer les notifications par e-mail", + "Enable notifications for this account": "Activer les notifications pour ce compte", + "Enable them now": "Les activer maintenant", + "Enter keywords separated by a comma": "Entrez les mots clés séparés par une virgule", + "Error": "Erreur", + "Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email", + "#example": "#exemple", + "Failed to": "Echec pour", + "Failed to add tag %(tagName)s to room": "Echec lors de l'ajout du tag %(tagName)s pour le salon", + "Failed to change settings": "Changement de configuration échouée", + "Failed to forget room %(errCode)s": "Echec lors de l'oublie du salon %(errCode)s", + "Failed to update keywords": "Échec dans la mise à jour des mots clés", + "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison", + "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics", + "Failed to join the room": "Échec pour joindre le salon", + "Failed to remove tag %(prevTag)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", + "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct", + "Favourite": "Favouris", + "Operation failed": "L'opération a échoué", + "Please Register": "Veuillez vous enregistrer", + "powered by Matrix": "propulsé par Matrix", + "Quote": "Citer", + "Redact": "Rédiger", + "Reject": "Rejeter", + "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire?", + "Remove": "Supprimer", + "Resend": "Renvoyer", + "Settings": "Paramètres", + "Start chat": "Démarrer la discussion", + "unknown error code": "Code erreur inconnu", + "View Source": "Voir la Source", + "You cannot delete this image. (%(code)s)": "Vous ne pouvez pas supprimer cette image. (%(code)s)", + "You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)", + "You are not receiving desktop notifications": "Vous ne recevez pas les notifications sur votre bureau", + "Sunday": "Dimanche", + "Monday": "Lundi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi", + "Thursday": "Jeudi", + "Friday": "Vendredi", + "Saturday": "Samedi", + "Today": "Aujourd'hui", + "Yesterday": "Hier", + "Welcome page": "Page de bienvenue" +} diff --git a/src/i18n/ml.json b/src/i18n/ml.json new file mode 100644 index 0000000000..e67ece484c --- /dev/null +++ b/src/i18n/ml.json @@ -0,0 +1,5 @@ +{ + "Add an email address above to configure email notifications": "ഇ മെയില്‍ അറിയിപ്പുകൾ ലഭിക്കാന്‍ മുകളില്‍ ഇ-മെയില്‍ വിലാസം നല്‍കൂ", + "All messages": "എല്ലാ സന്ദേശങ്ങളും", + "All messages (loud)": "എല്ലാ സന്ദേശങ്ങളും (ഉച്ചത്തിൽ)" +} \ No newline at end of file diff --git a/src/i18n/pl.json b/src/i18n/pl.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/pl.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/i18n/pt.json b/src/i18n/pt.json new file mode 100644 index 0000000000..befbb6a798 --- /dev/null +++ b/src/i18n/pt.json @@ -0,0 +1,116 @@ +{ + "Add an email address above to configure email notifications": "Adicione um endereço de email acima para configurar as notificações por email", + "All messages": "Todas as mensagens", + "All messages (loud)": "Todas as mensagens (alto)", + "All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos", + "An error occurred whilst saving your email notification preferences": "Um erro ocorreu enquanto salvava suas preferências de notificação por email", + "Cancel Sending": "Cancelar o envio", + "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", + "Close": "Fechar", + "Create new room": "Criar nova sala", + "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", + "Custom Server Options": "Opções de customização do servidor", + "delete the alias": "apagar o apelido da sala", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(nome)s da lista pública?", + "Direct Chat": "Conversa pessoal", + "Directory": "Diretório", + "Dismiss": "Encerrar", + "Download this file": "Baixar este arquivo", + "Drop here to %(verb)s": "Arraste aqui para %(verb)s", + "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", + "Enable desktop notifications": "Ativar notificações no desktop", + "Enable email notifications": "Ativar notificações por email", + "Enable notifications for this account": "Ativar notificações para esta conta", + "Enable them now": "Habilitar agora", + "Enter keywords separated by a comma": "Coloque cada palavras-chave separada por vírgula", + "Error": "Erro", + "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", + "#example:": "#exemplo", + "Failed to": "Falha ao", + "Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala", + "Failed to change settings": "Falha ao mudar as preferências", + "Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s", + "Failed to update keywords": "Falha ao alterar as palavras-chave", + "Failed to get protocol list from Home Server": "Falha em acessar a lista de protocolos do servidor padrão", + "Failed to get public room list": "Falha ao acessar a lista pública de salas", + "Failed to join the room": "Falha ao entrar na sala", + "Failed to remove tag %(tag)s from room": "Falha ao remover a palavra-chave %(tag)s da sala", + "Failed to set direct chat tag": "Falha ao definir conversa como pessoal", + "Failed to set Direct Message status of room": "Falha em definr a mensagem de status da sala", + "Favourite": "Favorito", + "Fetching third party location failed": "Falha ao acessar localização de terceiros", + "Files": "Arquivos", + "Filter room names": "Filtrar salas por título", + "Forget": "Esquecer", + " from room": " da sala", + "Guests can join": "Convidados podem entrar", + "Guest users can't invite users. Please register to invite": "Usuários convidados não podem convidar outros usuários. Por gentileza se registre para enviar convites", + "Invite to this room": "Convidar para esta sala", + "Keywords": "Palavras-chave", + "Leave": "Sair", + "Low Priority": "Baixa prioridade", + "Members": "Membros", + "Mentions only": "Apenas menções", + "Mute": "Mudo", + "No rooms to show": "Não existem salas a serem exibidas", + "Noisy": "Barulhento", + "Notification targets": "Alvos de notificação", + "Notifications": "Notificações", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui", + "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", + "Notify me for anything else": "Notificar-me sobre qualquer outro evento", + "Off": "Desativado", + "On": "Ativado", + "Operation failed": "A operação falhou", + "Permalink": "Link permanente", + "Please Register": "Por favor, cadastre-se", + "powered by Matrix": "distribuído por Matrix", + "Quote": "Citar", + "Redact": "Remover", + "Reject": "Rejeitar", + "Remove": "Remover", + "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", + "remove %(name)s from the directory": "remover %(name)s da lista pública de salas", + "Remove from Directory": "Remover da lista pública de salas", + "Resend": "Reenviar", + "Riot does not know how to join a room on this network": "O sistema não sabe como entrar na sala desta rede", + "Room directory": "Lista de salas públicas", + "Room not found": "Sala não encontrada", + "Search for a room": "Procurar por uma sala", + "Settings": "Configurações", + "Source URL": "URL fonte", + "Start chat": "Começar conversa", + "The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros", + "There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui", + "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", + "This room is inaccessible to guests. You may be able to join if you register": "Esta sala é inacessível para convidados. Você poderá entrar caso se registre", + " to room": " na sala", + "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", + "Unable to join network": "Não foi possível conectar na rede", + "Unable to look up room ID from server": "Não foi possivel buscar identificação da sala no servidor", + "Unhide Preview": "Mostrar a pré-visualização novamente", + "unknown error code": "código de erro desconhecido", + "Unnamed room": "Sala sem nome", + "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", + "View Decrypted Source": "Ver a fonte descriptografada", + "View Source": "Ver a fonte", + "World readable": "Público", + "You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)", + "You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)", + "You are not receiving desktop notifications": "Você não está recebendo notificações desktop", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Você pode te-las configurado em outro cliente além do Riot. Você não pode ajustá-las no Riot, mas ainda assim elas se aplicam aqui", + "Sunday": "Domingo", + "Monday": "Segunda", + "Tuesday": "Terça", + "Wednesday": "Quarta", + "Thursday": "Quinta", + "Friday": "Sexta", + "Saturday": "Sábado", + "Today": "Hoje", + "Yesterday": "Ontem", + "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os recipientes.", + "#example": "#exemplo", + "Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", + "Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui", + "Welcome page": "Página de boas vindas" +} diff --git a/src/i18n/pt_BR.json b/src/i18n/pt_BR.json new file mode 100644 index 0000000000..ce1bd6c06d --- /dev/null +++ b/src/i18n/pt_BR.json @@ -0,0 +1,124 @@ +{ + "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar suas notificações por email", + "All messages": "Todas as mensagens", + "All messages (loud)": "Todas as mensagens (alto)", + "All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos", + "An error occurred whilst saving your email notification preferences": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email", + "Call invitation": "Convite para chamada", + "Cancel Sending": "Cancelar o envio", + "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", + "Close": "Fechar", + "Create new room": "Criar nova sala", + "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", + "Custom Server Options": "Opções de personalização do servidor", + "delete the alias": "apagar o apelido da sala", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(nome)s da lista pública?", + "Direct Chat": "Conversa pessoal", + "Directory": "Diretório", + "Dismiss": "Encerrar", + "Download this file": "Baixar este arquivo", + "Drop here to %(verb)s": "Arraste aqui para %(verb)s", + "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", + "Enable desktop notifications": "Ativar notificações no desktop", + "Enable email notifications": "Ativar notificações por email", + "Enable notifications for this account": "Ativar notificações para esta conta", + "Enable them now": "Habilitar agora", + "Enter keywords separated by a comma": "Coloque cada palavras-chave separada por vírgula", + "Error": "Erro", + "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", + "#example:": "#exemplo", + "Failed to": "Falha ao", + "Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala", + "Failed to change settings": "Falhou ao mudar as preferências", + "Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s", + "Failed to update keywords": "Falhou ao alterar as palavras-chave", + "Failed to get protocol list from Home Server": "Falha em acessar a lista de protocolos do servidor padrão", + "Failed to get public room list": "Falha ao acessar a lista pública de salas", + "Failed to join the room": "Falhou ao entrar na sala", + "Failed to remove tag %(tag)s from room": "Falha ao remover a palavra-chave %(tag)s da sala", + "Failed to set direct chat tag": "Falha ao definir conversa como pessoal", + "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", + "Favourite": "Favorito", + "Fetching third party location failed": "Falha ao acessar localização de terceiros", + "Files": "Arquivos", + "Filter room names": "Filtrar salas por título", + "Forget": "Esquecer", + " from room": " da sala", + "Guests can join": "Convidados podem entrar", + "Guest users can't invite users. Please register to invite": "Usuários convidados não podem convidar outros usuários. Por gentileza se registre para enviar convites", + "Invite to this room": "Convidar para esta sala", + "Keywords": "Palavras-chave", + "Leave": "Sair", + "Low Priority": "Baixa prioridade", + "Members": "Membros", + "Mentions only": "Apenas menções", + "Messages containing my display name": "Mensagens contendo meu nome público", + "Messages containing my user name": "Mensagens contendo meu nome de usuário", + "Messages in group chats": "Mensagens em salas", + "Messages in one-to-one chats": "Mensagens em conversas pessoais", + "Messages sent by bot": "Mensagens enviadas por bots", + "more": "ver mais", + "Mute": "Mudo", + "No rooms to show": "Não existem salas a serem exibidas", + "Noisy": "Barulhento", + "Notification targets": "Alvos de notificação", + "Notifications": "Notificações", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui", + "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", + "Notify me for anything else": "Notificar-me sobre qualquer outro evento", + "Off": "Desativado", + "On": "Ativado", + "Operation failed": "A operação falhou", + "Permalink": "Link permanente", + "Please Register": "Por favor, cadastre-se", + "powered by Matrix": "distribuído por Matrix", + "Quote": "Citar", + "Redact": "Remover", + "Reject": "Rejeitar", + "Remove": "Remover", + "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", + "remove %(name)s from the directory": "remover %(name)s da lista pública de salas", + "Remove from Directory": "Remover da lista pública de salas", + "Resend": "Reenviar", + "Riot does not know how to join a room on this network": "O sistema não sabe como entrar na sala desta rede", + "Room directory": "Lista de salas públicas", + "Room not found": "Sala não encontrada", + "Search for a room": "Procurar por uma sala", + "Settings": "Configurações", + "Source URL": "URL fonte", + "Start chat": "Começar conversa", + "The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros", + "There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui", + "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", + "This room is inaccessible to guests. You may be able to join if you register": "Esta sala é inacessível para convidados. Você poderá entrar caso se registre", + " to room": " para sala", + "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", + "Unable to join network": "Não foi possível conectar na rede", + "Unable to look up room ID from server": "Não foi possível buscar identificação da sala no servidor", + "Unhide Preview": "Mostrar a pré-visualização novamente", + "unknown error code": "código de erro desconhecido", + "Unnamed room": "Sala sem nome", + "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", + "View Decrypted Source": "Ver a fonte descriptografada", + "View Source": "Ver a fonte", + "When I'm invited to a room": "Quando sou convidada(o) a uma sala", + "World readable": "Público", + "You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)", + "You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)", + "You are not receiving desktop notifications": "Você não está recebendo notificações desktop", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Você pode te-las configurado em outro cliente além do Riot. Você não pode ajustá-las no Riot, mas ainda assim elas se aplicam aqui", + "Sunday": "Domingo", + "Monday": "Segunda", + "Tuesday": "Terça", + "Wednesday": "Quarta", + "Thursday": "Quinta", + "Friday": "Sexta", + "Saturday": "Sábado", + "Today": "Hoje", + "Yesterday": "Ontem", + "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os destinatários.", + "#example": "#exemplo", + "Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", + "Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui", + "Welcome page": "Página de boas vindas" +} diff --git a/src/i18n/ru.json b/src/i18n/ru.json new file mode 100644 index 0000000000..2b0f7119e1 --- /dev/null +++ b/src/i18n/ru.json @@ -0,0 +1,119 @@ +{ + "Add an email address above to configure email notifications": "Добавьте email адресс для настройки оповещений", + "All notifications are currently disabled for all targets.": "Все оповещения отключены.", + "An error occurred whilst saving your email notification preferences": "Возникла ошибка при сохранении настроек оповещения вашего email", + "and remove": "и удалить", + "Can't update user notification settings": "Не возможно обновить пользовательские настройки оповещения", + "Create new room": "Создать комнату", + "Couldn't find a matching Matrix room": "Не возможно найти подходящую Матрикс комнату", + "Custom Server Options": "Настройки пользовательского сервера", + "delete the alias": "удалить привязку", + "Delete the room alias": "Удалить привязку комнаты", + "Direct Chat": "Персональное сообщение", + "Directory": "Каталог", + "Dismiss": "Отелонено", + "Drop here to": "Перетащите сюда", + "Enable audible notifications in web client": "Включить звуковые оповещения в веб клиенте", + "Enable desktop notifications": "Включить оповещения на рабочем столе", + "Enable email notifications": "Включить email оповещения", + "Enable notifications for this account": "Включить оповещения для этого аккаунта", + "Enable them now": "Включить сейчас", + "Enter keywords separated by a comma": "Введите ключевые слова, разделенные запятой", + "Error": "Ошибка", + "Error saving email notification preferences": "Ошибка сохранения настроек email оповещений", + "#example": "#пример", + "Failed to": "Не удалось", + "Failed to add tag ": "Не удалось добавить тег ", + "Failed to change settings": "Не удалось изменить настройки", + "Failed to update keywords": "Не удалось обновить ключевые слова", + "Failed to get protocol list from Home Server": "Не удалось получить список протоколов с Пользовательского Сервера", + "Failed to get public room list": "Не удалось получить список публичных комнат", + "Failed to join the room": "Не удалось присоединиться к комнате", + "Failed to remove tag ": "Не удалось удалить тег ", + "Failed to set Direct Message status of room": "Не удалось задать статус комнаты Персональное Сообщение", + "Favourite": "Фаворит", + "Fetching third party location failed": "Не удалось получить местоположение", + "Files": "Файлы", + "Filter room names": "Отфильтровать по названию комнаты", + "Forget": "Забыть", + "from the directory": "из каталога", + " from room": " из комнаты", + "Guests can join": "Гость может присоединиться", + "Guest users can't invite users. Please register to invite": "Гость не может приглашать пользователей. Зарегистрируйтесь для приглошений", + "Invite to this room": "Пригласить в эту комнату", + "Keywords": "Ключевые слова", + "Leave": "Покинуть", + "Low Priority": "Низкий приоритет", + "Members": "Пользователи", + "No rooms to show": "Нет комнат для отображения", + "Noisy": "Шумный", + "Notification targets": "Цели уведомления", + "Notifications": "Уведомления", + "Notifications on the following keywords follow rules which can’t be displayed here": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь", + "Notify for all other messages/rooms": "Уведомить обо всех других сообщениях/комнатах", + "Notify me for anything else": "Уведомить меня обо всем кроме", + "Off": "Выключить", + "On": "Включить", + "Operation failed": "Операция не удалась", + "Please Register": "Пожалуйста зарегистрируйтесь", + "powered by Matrix": "разработано в Matrix", + "Reject": "Отклонить", + "Remove": "Удалить", + "remove": "удалить", + "Remove from Directory": "Удалить из каталога", + "Riot does not know how to join a room on this network": "Riot не знает как присоединиться к этой сети", + "Room directory": "Каталог комнат", + "Room not found": "Комната не найдена", + "Search for a room": "Искать комнату", + "Settings": "Настройки", + "Start chat": "Начать чат", + "The Home Server may be too old to support third party networks": "Пользовательский сервер может быть слишком старым для поддержки сторонних сетей", + "There are advanced notifications which are not shown here": "TЗдесь представлены расширенные уведомления, которые здесь не показаны", + "The server may be unavailable or overloaded": "Возможно, сервер недоступен или перегружен", + "This room is inaccessible to guests. You may be able to join if you register": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь", + " to room": " к комнате", + "Unable to fetch notification target list": "Не удалось получить список целевых уведомлений", + "Unable to join network": "Не возможно присоединиться к сети", + "Unable to look up room ID from server": "Не возможно найти ID комнаты на сервере", + "unknown error code": "неизвестная ошибка", + "Unnamed room": "Комната без названия", + "World readable": "Читаем мир", + "You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Вы могли настроить их в клиенте, отличном от Riot. Вы не можете настроить их в Riot, но они все еще применяются", + "All messages": "Все сообщения", + "All messages (loud)": "Все сообщения (громко)", + "Cancel Sending": "Отмена отправки", + "Close": "Закрыть", + "Download this file": "Скачать этот файл", + "Drop here to %(verb)s": "Вставить сюда для %(verb)s", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и очистить %(name)s из каталога?", + "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", + "Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s", + "Failed to remove tag %(prevTag)s from room": "Не удалось удалить тег %(prevTag)s из комнаты", + "Failed to set direct chat tag": "Не удалось установить прямой чат тег", + "Unhide Preview": "Показать пред. просмотр", + "Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s", + "View Decrypted Source": "Просмотр зашыфрованного источника", + "View Source": "Просмотр источника", + "You cannot delete this image. (%(code)s)": "Вы не можете удалить это изображение. (%(code)s)", + "You cannot delete this message. (%(code)s)": "Вы не можете удалить это сообщение. (%(code)s)", + "Sunday": "Воскресенье", + "Monday": "Понедельник", + "Tuesday": "Вторник", + "Wednesday": "Среда", + "Thursday": "Четверг", + "Friday": "Пятница", + "Saturday": "Субота", + "Today": "Сегодня", + "Yesterday": "Вчера", + "Mentions only": "Только упоминание", + "Mute": "Беззвучный", + "Permalink": "Пстоянная ссылка", + "Quote": "Цитата", + "Redact": "Удалить", + "Remove %(name)s from the directory?": "Удалить %(name)s из каталога?", + "remove %(name)s from the directory": "удалить %(name)s из каталога", + "Resend": "Переслать снова", + "Source URL": "Источник URL", + "Welcome page": "Домашняя страница" +} diff --git a/src/notifications/VectorPushRulesDefinitions.js b/src/notifications/VectorPushRulesDefinitions.js index d696451d56..6aea713776 100644 --- a/src/notifications/VectorPushRulesDefinitions.js +++ b/src/notifications/VectorPushRulesDefinitions.js @@ -18,6 +18,7 @@ limitations under the License. var StandardActions = require('./StandardActions'); var PushRuleVectorState = require('./PushRuleVectorState'); +import _t from 'counterpart-riot'; class VectorPushRuleDefinition { constructor(opts) { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss index ebd59a1c24..b81f3979a9 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/login/_Login.scss @@ -175,7 +175,8 @@ limitations under the License. } .mx_Login_type_dropdown { - width: 125px; + display: inline-block; + min-width: 125px; align-self: flex-end; } diff --git a/src/vector/index.js b/src/vector/index.js index 02713afca7..ba06de3371 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -55,6 +55,9 @@ if (process.env.NODE_ENV !== 'production') { var RunModernizrTests = require("./modernizr"); // this side-effects a global var ReactDOM = require("react-dom"); +// Workaround for broken export +import * as counterpart from 'counterpart-riot'; +var languageHandler = require("matrix-react-sdk/lib/languageHandler"); var sdk = require("matrix-react-sdk"); var PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg"); sdk.loadSkin(require('../component-index')); @@ -62,6 +65,7 @@ var VectorConferenceHandler = require('../VectorConferenceHandler'); var UpdateChecker = require("./updater"); var q = require('q'); var request = require('browser-request'); +import Modal from 'matrix-react-sdk/lib/Modal'; import url from 'url'; @@ -214,6 +218,20 @@ function getConfig() { return deferred.promise; } + +// This is needed to not load the UserSettingsStore before languages are laoded +function getLocalSettings() { + const localSettingsString = localStorage.getItem('mx_local_settings') || '{}'; + return JSON.parse(localSettingsString); +} +// This is needed to not load the UserSettingsStore before languages are laoded +function setLocalSetting(type, value) { + const settings = getLocalSettings(); + settings[type] = value; + // FIXME: handle errors + localStorage.setItem('mx_local_settings', JSON.stringify(settings)); +} + function onLoadCompleted() { // if we did a token login, we're now left with the token, hs and is // url as query params in the url; a little nasty but let's redirect to @@ -228,8 +246,8 @@ function onLoadCompleted() { } } - async function loadApp() { + const fragparts = parseQsFromFragment(window.location); const params = parseQs(window.location); @@ -263,6 +281,17 @@ async function loadApp() { configError = e; } + if (!configJson.languages) { + let languages; + try { + languages = await languageHandler.getAllLanguageKeysFromJson(); + } catch (e) { + console.log("couldn't load languages from languages.json: error = "+e); + languages = ['en']; + } + configJson.languages = languages; + } + if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) { console.log('User has previously accepted risks in using an unsupported browser'); validBrowser = true; @@ -309,4 +338,17 @@ async function loadApp() { } } -loadApp(); +function loadLanguage(callback) { + const _localSettings = getLocalSettings(); + var languages = []; + if (!_localSettings.hasOwnProperty('language')) { + languages = languageHandler.getNormalizedLanguageKeys(languageHandler.getLanguageFromBrowser()); + }else { + languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language); + } + languageHandler.setLanguage(languages, counterpart); + setLocalSetting('language', languages[0]); + callback(); +} + +loadLanguage(loadApp); diff --git a/yarn-error.log b/yarn-error.log new file mode 100644 index 0000000000..ff994d1289 --- /dev/null +++ b/yarn-error.log @@ -0,0 +1,200 @@ +Arguments: + C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js install + +PATH: + C:\Users\marce\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\marce\bin;C:\ProgramData\Oracle\Java\javapath;C:\Python27;C:\Python27\Scripts;C:\Program Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\PuTTY;C:\Program Files (x86)\QuickTime\QTSystem;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Program Files\Java\jdk1.8.0_131\bin;C:\Android\android-sdk\tools;C:\Android\android-sdk\platform-tools;C:\Program Files\nodejs;C:\Program Files (x86)\Yarn\bin;C:\Ruby23\bin;C:\Users\marce\.cargo\bin;C:\Users\marce\AppData\Local\Microsoft\WindowsApps;C:\Users\marce\AppData\Local\atom\bin;C:\Program Files\Docker Toolbox;C:\Users\marce\AppData\Roaming\npm;C:\Users\marce\AppData\Local\Yarn\.bin;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl + +Yarn version: + 0.23.4 + +Node version: + 7.10.0 + +Platform: + win32 x64 + +npm manifest: + { + "name": "riot-web", + "productName": "Riot", + "main": "electron/src/electron-main.js", + "version": "0.9.9", + "description": "A feature-rich client for Matrix.org", + "author": "Vector Creations Ltd.", + "repository": { + "type": "git", + "url": "https://github.com/vector-im/riot-web" + }, + "license": "Apache-2.0", + "files": [ + "AUTHORS.rst", + "CONTRIBUTING.rst", + "deploy", + "docs", + "karma.conf.js", + "lib", + "release.sh", + "scripts", + "src", + "test", + "webpack.config.js" + ], + "style": "bundle.css", + "matrix-react-parent": "matrix-react-sdk", + "scripts": { + "reskindex": "reskindex -h src/header", + "build:res": "node scripts/copy-res.js", + "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", + "build:compile": "babel --source-maps -d lib src", + "build:bundle": "cross-env NODE_ENV=production webpack -p --progress", + "build:bundle:dev": "webpack --optimize-occurence-order --progress", + "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", + "build": "npm run build:res && npm run build:bundle", + "build:dev": "npm run build:res && npm run build:bundle:dev", + "dist": "scripts/package.sh", + "install:electron": "install-app-deps", + "electron": "npm run install:electron && electron .", + "start:res": "node scripts/copy-res.js -w", + "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", + "start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress", + "start": "parallelshell \"npm run start:res\" \"npm run start:js\"", + "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", + "lint": "eslint src/", + "lintall": "eslint src/ test/", + "clean": "rimraf lib webapp electron/dist", + "prepublish": "npm run build:compile", + "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", + "test-multi": "karma start" + }, + "dependencies": { + "babel-polyfill": "^6.5.0", + "babel-runtime": "^6.11.6", + "browser-request": "^0.3.3", + "classnames": "^2.1.2", + "counterpart": "Nordgedanken/counterpart#develop", + "draft-js": "^0.8.1", + "extract-text-webpack-plugin": "^0.9.1", + "favico.js": "^0.3.10", + "filesize": "3.5.6", + "flux": "~2.0.3", + "gfm.css": "^1.1.1", + "highlight.js": "^9.0.0", + "linkifyjs": "^2.1.3", + "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", + "modernizr": "^3.1.0", + "pako": "^1.0.5", + "q": "^1.4.1", + "react": "^15.4.0", + "react-dnd": "^2.1.4", + "react-dnd-html5-backend": "^2.1.2", + "react-dom": "^15.4.0", + "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#39d858c", + "sanitize-html": "^1.11.1", + "ua-parser-js": "^0.7.10", + "url": "^0.11.0" + }, + "devDependencies": { + "autoprefixer": "^6.6.0", + "babel-cli": "^6.5.2", + "babel-core": "^6.14.0", + "babel-eslint": "^6.1.0", + "babel-loader": "^6.2.5", + "babel-plugin-add-module-exports": "^0.2.1", + "babel-plugin-transform-async-to-generator": "^6.16.0", + "babel-plugin-transform-class-properties": "^6.16.0", + "babel-plugin-transform-object-rest-spread": "^6.16.0", + "babel-plugin-transform-runtime": "^6.15.0", + "babel-preset-es2015": "^6.16.0", + "babel-preset-es2016": "^6.16.0", + "babel-preset-es2017": "^6.16.0", + "babel-preset-react": "^6.16.0", + "babel-preset-stage-2": "^6.17.0", + "chokidar": "^1.6.1", + "cpx": "^1.3.2", + "cross-env": "^4.0.0", + "css-raw-loader": "^0.1.1", + "electron-builder": "^11.2.4", + "electron-builder-squirrel-windows": "^11.2.1", + "emojione": "^2.2.7", + "eslint": "^3.14.0", + "eslint-config-google": "^0.7.1", + "eslint-plugin-flowtype": "^2.30.0", + "eslint-plugin-react": "^6.9.0", + "expect": "^1.16.0", + "fs-extra": "^0.30.0", + "html-webpack-plugin": "^2.24.0", + "json-loader": "^0.5.3", + "karma": "^0.13.22", + "karma-chrome-launcher": "^0.2.3", + "karma-cli": "^0.1.2", + "karma-junit-reporter": "^0.4.1", + "karma-mocha": "^0.2.2", + "karma-phantomjs-launcher": "^1.0.0", + "karma-webpack": "^1.7.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "mocha": "^2.4.5", + "parallelshell": "^1.2.0", + "phantomjs-prebuilt": "^2.1.7", + "postcss-extend": "^1.0.5", + "postcss-import": "^9.0.0", + "postcss-loader": "^1.2.2", + "postcss-mixins": "^5.4.1", + "postcss-nested": "^1.0.0", + "postcss-scss": "^0.4.0", + "postcss-simple-vars": "^3.0.0", + "postcss-strip-inline-comments": "^0.1.5", + "react-addons-perf": "^15.4.0", + "react-addons-test-utils": "^15.4.0", + "rimraf": "^2.4.3", + "source-map-loader": "^0.1.5", + "webpack": "^1.12.14", + "webpack-dev-server": "^1.16.2" + }, + "optionalDependencies": { + "olm": "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz" + }, + "build": { + "appId": "im.riot.app", + "category": "Network", + "electronVersion": "1.6.2", + "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", + "asar": false, + "dereference": true, + "//files": "We bundle everything, so we only need to include webapp/", + "files": [ + "node_modules/**", + "src/**", + "img/**" + ], + "extraResources": [ + "webapp/**/*" + ], + "linux": { + "target": "deb", + "maintainer": "support@riot.im", + "desktop": { + "StartupWMClass": "riot-web" + } + }, + "win": { + "target": "squirrel" + }, + "directories": { + "buildResources": "electron/build", + "output": "electron/dist", + "app": "electron" + } + } + } + +yarn manifest: + No manifest + +Lockfile: + No lockfile + +Trace: + Error: https://registry.yarnpkg.com/emojione/-/emojione-2.2.7.tgz: unexpected end of file + at Zlib._handle.onerror (zlib.js:355:17) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..fa7e9e36a2 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,6076 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"7zip-bin-linux@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/7zip-bin-linux/-/7zip-bin-linux-1.0.3.tgz#66724d7bb7526381574393888f62566ed537151c" + +"7zip-bin-mac@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/7zip-bin-mac/-/7zip-bin-mac-1.0.1.tgz#3e68778bbf0926adc68159427074505d47555c02" + +"7zip-bin-win@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/7zip-bin-win/-/7zip-bin-win-2.0.2.tgz#4c36399413922f111b8e80df3065a4069cfc0a64" + +"7zip-bin@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-2.0.4.tgz#0cd28ac3301b1302fbd99922bacb8bad98103e12" + optionalDependencies: + "7zip-bin-linux" "^1.0.3" + "7zip-bin-mac" "^1.0.1" + "7zip-bin-win" "^2.0.2" + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +accepts@1.3.3, accepts@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.0, acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +ajv-keywords@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv@^4.7.0, ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +another-json@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" + +ansi-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" + dependencies: + string-width "^1.0.1" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +any-promise@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" + +anymatch@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" + dependencies: + arrify "^1.0.0" + micromatch "^2.1.5" + +aproba@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" + +archiver-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" + dependencies: + glob "^7.0.0" + graceful-fs "^4.1.0" + lazystream "^1.0.0" + lodash "^4.8.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +archiver@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" + dependencies: + archiver-utils "^1.3.0" + async "^2.0.0" + buffer-crc32 "^0.2.1" + glob "^7.0.0" + lodash "^4.8.0" + readable-stream "^2.0.0" + tar-stream "^1.5.0" + walkdir "^0.0.11" + zip-stream "^1.1.0" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +argparse@~0.1.15: + version "0.1.16" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" + dependencies: + underscore "~1.7.0" + underscore.string "~2.4.0" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +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" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array.prototype.find@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@^2.0.3, asap@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" + +asar-electron-builder@^0.13.5: + version "0.13.5" + resolved "https://registry.yarnpkg.com/asar-electron-builder/-/asar-electron-builder-0.13.5.tgz#4ccd4d11fd7c9d3b3cffc782fde3deed9ef91af6" + dependencies: + chromium-pickle-js "^0.2.0" + commander "^2.9.0" + cuint "^0.2.1" + minimatch "^3.0.2" + mkdirp "^0.5.1" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +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" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@^0.9.0, async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +async@^1.3.0, async@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" + dependencies: + lodash "^4.14.0" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +autolinker@~0.15.0: + version "0.15.3" + resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832" + +autoprefixer@^6.6.0: + version "6.7.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" + dependencies: + browserslist "^1.7.6" + caniuse-db "^1.0.30000634" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^5.2.16" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-cli@^6.5.2: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" + dependencies: + babel-core "^6.24.1" + babel-polyfill "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + commander "^2.8.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.0.0" + glob "^7.0.0" + lodash "^4.2.0" + output-file-sync "^1.1.0" + path-is-absolute "^1.0.0" + slash "^1.0.0" + source-map "^0.5.0" + v8flags "^2.0.10" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" + dependencies: + chalk "^1.1.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +babel-core@^6.14.0, babel-core@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" + dependencies: + babel-code-frame "^6.22.0" + babel-generator "^6.24.1" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + convert-source-map "^1.1.0" + debug "^2.1.1" + json5 "^0.5.0" + lodash "^4.2.0" + minimatch "^3.0.2" + path-is-absolute "^1.0.0" + private "^0.1.6" + slash "^1.0.0" + source-map "^0.5.0" + +babel-eslint@^6.1.0: + version "6.1.2" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f" + dependencies: + babel-traverse "^6.0.20" + babel-types "^6.0.19" + babylon "^6.0.18" + lodash.assign "^4.0.0" + lodash.pickby "^4.0.0" + +babel-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +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" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + esutils "^2.0.0" + +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" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.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" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + 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" + 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" + 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" + 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" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + lodash "^4.2.0" + +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" + 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" + 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" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^6.2.5: + version "6.4.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca" + dependencies: + find-cache-dir "^0.1.1" + loader-utils "^0.2.16" + mkdirp "^0.5.1" + object-assign "^4.0.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + 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" + +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" + 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" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +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" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +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" + +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" + +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" + +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" + +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" + +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" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.16.0, 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" + 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-class-properties@^6.16.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" + 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-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^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" + 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" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + lodash "^4.2.0" + +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" + 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" + 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" + 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" + 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" + 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" + 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" + 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" + 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.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +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" + 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" + 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" + 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" + 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" + 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" + 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" + 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" + 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" + 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" + 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" + 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" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.16.0, babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-display-name@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37" + 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" + 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" + 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" + 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.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" + dependencies: + regenerator-transform "0.9.11" + +babel-plugin-transform-runtime@^6.15.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" + 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" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.23.0, babel-polyfill@^6.5.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-preset-es2015@^6.16.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + 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.16.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" + dependencies: + babel-plugin-transform-exponentiation-operator "^6.24.1" + +babel-preset-es2017@^6.16.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" + 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" + dependencies: + babel-plugin-transform-flow-strip-types "^6.22.0" + +babel-preset-react@^6.16.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + 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-preset-stage-2@^6.17.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" + dependencies: + babel-core "^6.24.1" + babel-runtime "^6.22.0" + core-js "^2.4.0" + home-or-tmp "^2.0.0" + lodash "^4.2.0" + mkdirp "^0.5.1" + source-map-support "^0.4.2" + +babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.9.2: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + +babel-template@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.11.0" + lodash "^4.2.0" + +babel-traverse@^6.0.20, babel-traverse@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" + dependencies: + babel-code-frame "^6.22.0" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + babylon "^6.15.0" + debug "^2.2.0" + globals "^9.0.0" + invariant "^2.2.0" + lodash "^4.2.0" + +babel-types@^6.0.19, babel-types@^6.19.0, babel-types@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" + dependencies: + babel-runtime "^6.22.0" + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^1.0.1" + +babylon@^6.0.18, babylon@^6.11.0, babylon@^6.15.0: + version "6.17.1" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64-js@1.2.0, base64-js@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + +batch@0.5.3, batch@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + 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" + dependencies: + callsite "1.0.0" + +big.js@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" + +binary-extensions@^1.0.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" + +bl@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" + dependencies: + readable-stream "^2.0.5" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird-lst-c@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/bluebird-lst-c/-/bluebird-lst-c-1.0.6.tgz#81f881d13f9df700f67d577f13480bc32d84bba9" + dependencies: + bluebird "^3.4.7" + +bluebird@^2.9.27: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + +bluebird@^3.4.7: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + +blueimp-canvas-to-blob@^3.5.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.7.0.tgz#6e985b935c0223410c3a2ad96c0ba3ea214c2b13" + +body-parser@^1.12.4: + version "1.17.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" + dependencies: + bytes "2.4.0" + content-type "~1.0.2" + debug "2.6.1" + depd "~1.1.0" + http-errors "~1.6.1" + iconv-lite "0.4.15" + on-finished "~2.3.0" + qs "6.4.0" + raw-body "~2.2.0" + type-is "~1.6.14" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boxen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" + dependencies: + ansi-align "^1.1.0" + camelcase "^2.1.0" + chalk "^1.1.1" + cli-boxes "^1.0.0" + filled-array "^1.0.0" + object-assign "^4.0.1" + repeating "^2.0.0" + string-width "^1.0.1" + widest-line "^1.0.0" + +brace-expansion@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" + dependencies: + balanced-match "^0.4.1" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browser-encrypt-attachment@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/browser-encrypt-attachment/-/browser-encrypt-attachment-0.3.0.tgz#205a94caadf0dc7e81413941812f655bd190ff1c" + +browser-request@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" + +browserify-aes@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c" + dependencies: + inherits "^2.0.1" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" + dependencies: + caniuse-db "^1.0.30000639" + electron-to-chromium "^1.2.7" + +buffer-crc32@^0.2.1: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-shims@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + +buffer@^4.9.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +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" + +bytes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-css@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0, camelcase@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: + version "1.0.30000666" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000666.tgz#951ed9f3d3bfaa08a06dafbb5089ab07cce6ab90" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + 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" + +chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.6.0, chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + 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" + +chromium-pickle-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + +ci-info@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" + +circular-json@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" + +classnames@^2.1.2: + version "2.2.5" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + +clean-css@4.0.x: + version "4.0.13" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.13.tgz#feb2a176062d72a6c3e624d9213cac6a0c485e80" + dependencies: + source-map "0.5.x" + +clean-css@^3.2.10: + version "3.4.26" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.26.tgz#55323b344ff3bcee684a2eac81c93df8fa73deeb" + dependencies: + commander "2.8.x" + source-map "0.4.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +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" + +color-convert@~0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" + +colors@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" + +commander@2.8.x: + version "2.8.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commander@2.9.x, commander@^2.8.1, commander@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +commonmark@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.27.0.tgz#d86c262b962821e9483c69c547bc58840c047b34" + dependencies: + entities "~ 1.1.1" + mdurl "~ 1.0.1" + minimist "~ 1.2.0" + string.prototype.repeat "^0.2.0" + +compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +compress-commons@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.0.tgz#58587092ef20d37cb58baf000112c9278ff73b9f" + dependencies: + buffer-crc32 "^0.2.1" + crc32-stream "^2.0.0" + normalize-path "^2.0.0" + readable-stream "^2.0.0" + +compressible@~2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" + dependencies: + mime-db ">= 1.27.0 < 2" + +compression@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" + dependencies: + accepts "~1.3.3" + bytes "2.3.0" + compressible "~2.0.8" + debug "~2.2.0" + on-headers "~1.0.1" + vary "~1.1.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" + dependencies: + inherits "~2.0.1" + readable-stream "~2.0.0" + typedarray "~0.0.5" + +concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" + dependencies: + dot-prop "^3.0.0" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + object-assign "^4.0.1" + os-tmpdir "^1.0.0" + osenv "^0.1.0" + uuid "^2.0.1" + write-file-atomic "^1.1.2" + xdg-basedir "^2.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" + +connect@^3.3.5: + version "3.6.1" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.1.tgz#b7760693a74f0454face1d9378edb3f885b43227" + dependencies: + debug "2.6.3" + finalhandler "1.0.1" + parseurl "~1.3.1" + utils-merge "1.0.0" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" + +convert-source-map@^1.1.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.1.0, core-js@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.3.tgz#952771eb0dddc1cb3fa2f6fbe51a522e93b3ee0a" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +counterpart@Nordgedanken/counterpart#develop: + version "0.17.8" + resolved "https://codeload.github.com/Nordgedanken/counterpart/tar.gz/63dadf4d3d809b41f2a62e407462c5fbbc62cece" + dependencies: + date-names "^0.1.8" + except "^0.1.3" + extend "^3.0.1" + pluralizers "^0.1.5" + sprintf-js "^1.1.0" + +cpx@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + +crc32-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" + dependencies: + crc "^3.4.4" + readable-stream "^2.0.0" + +crc@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" + +create-error-class@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +cross-env@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-4.0.0.tgz#16083862d08275a4628b0b243b121bedaa55dd80" + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +crypto-browserify@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c" + dependencies: + browserify-aes "0.4.0" + pbkdf2-compat "2.0.1" + ripemd160 "0.2.0" + sha.js "2.2.6" + +css-raw-loader@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-raw-loader/-/css-raw-loader-0.1.1.tgz#40391ffd18bdb5cc01036e88fdf97de40982708d" + dependencies: + clean-css "^3.2.10" + loader-utils "~0.2.7" + source-list-map "~0.1.5" + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + 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.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cuint@^0.2.1, cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + 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" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-names@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/date-names/-/date-names-0.1.8.tgz#56c916622b658f60185c998719419084c0b0db4b" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +debug@2.2.0, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +debug@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" + dependencies: + ms "0.7.2" + +debug@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" + dependencies: + ms "0.7.2" + +debug@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" + dependencies: + ms "0.7.2" + +debug@2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" + dependencies: + ms "0.7.3" + +debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.2, debug@^2.6.0, debug@^2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" + dependencies: + ms "0.7.3" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-extend@~0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2, define-properties@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.0, depd@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" + +disposables@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.1.tgz#064727a25b54f502bd82b89aa2dfb8df9f1b39e3" + +dnd-core@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.4.0.tgz#c4a5bc2aea75164f8a295d769d5f551810e7d411" + dependencies: + asap "^2.0.3" + invariant "^2.0.0" + lodash "^4.2.0" + redux "^3.2.0" + +doctrine@1.2.3, doctrine@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.2.3.tgz#6aec6bbd62cf89dd498cae70c0ed9f49da873a6a" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domhandler@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + +draft-js-export-html@^0.5.0: + version "0.5.4" + resolved "https://registry.yarnpkg.com/draft-js-export-html/-/draft-js-export-html-0.5.4.tgz#e24927da3efe6f3df17f1d7606a9dc6141dbf72d" + dependencies: + draft-js-utils "^0.1.5" + +draft-js-export-markdown@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/draft-js-export-markdown/-/draft-js-export-markdown-0.2.2.tgz#5b0a1a10591d8b96199dcb70b04b1ab7deb72a33" + dependencies: + draft-js-utils "^0.1.5" + +draft-js-utils@^0.1.5: + version "0.1.7" + resolved "https://registry.yarnpkg.com/draft-js-utils/-/draft-js-utils-0.1.7.tgz#e2b6927ca620edf1855a4bfc1cf1d21080a70f16" + +draft-js@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.8.1.tgz#484256414c963dd1f5309700ddada10f2aa1f6ff" + dependencies: + fbjs "^0.8.3" + immutable "~3.7.4" + object-assign "^4.1.0" + +duplexer2@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + dependencies: + readable-stream "^2.0.2" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.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" + +electron-builder-core@11.2.1, electron-builder-core@~11.2.1: + version "11.2.1" + resolved "https://registry.yarnpkg.com/electron-builder-core/-/electron-builder-core-11.2.1.tgz#1dca8c1a1cee8b51750b7708a04913aeffacf8a8" + +electron-builder-http@11.5.0, electron-builder-http@~11.5.0: + version "11.5.0" + resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-11.5.0.tgz#b77396634903444329eda3bbcd02321440e06038" + dependencies: + debug "2.6.0" + fs-extra-p "^3.1.0" + +electron-builder-squirrel-windows@^11.2.1: + version "11.6.1" + resolved "https://registry.yarnpkg.com/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-11.6.1.tgz#a51612d28883b9eb0af0842e3eb26844cf5a6a52" + dependencies: + archiver "^1.3.0" + bluebird-lst-c "^1.0.6" + electron-builder-core "~11.2.1" + electron-builder-util "~11.6.1" + fs-extra-p "^3.1.0" + +electron-builder-util@11.6.1, electron-builder-util@~11.6.1: + version "11.6.1" + resolved "https://registry.yarnpkg.com/electron-builder-util/-/electron-builder-util-11.6.1.tgz#0f556f67a70e4c8d75185569ef2a7566db015ecc" + dependencies: + "7zip-bin" "^2.0.4" + bluebird-lst-c "^1.0.6" + chalk "^1.1.3" + debug "2.6.0" + electron-builder-http "~11.5.0" + fs-extra-p "^3.1.0" + is-ci "^1.0.10" + node-emoji "^1.5.1" + source-map-support "^0.4.10" + stat-mode "^0.2.2" + +electron-builder@^11.2.4: + version "11.7.0" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-11.7.0.tgz#d52912f6e84ac52a065de197a92def931bd9dc25" + dependencies: + "7zip-bin" "^2.0.4" + asar-electron-builder "^0.13.5" + bluebird-lst-c "^1.0.6" + chalk "^1.1.3" + chromium-pickle-js "^0.2.0" + cuint "^0.2.2" + electron-builder-core "11.2.1" + electron-builder-http "11.5.0" + electron-builder-util "11.6.1" + electron-download-tf "3.1.0" + electron-macos-sign "~1.5.0" + fs-extra-p "^3.1.0" + hosted-git-info "^2.1.5" + ini "^1.3.4" + is-ci "^1.0.10" + isbinaryfile "^3.0.2" + js-yaml "^3.7.0" + mime "^1.3.4" + minimatch "^3.0.3" + normalize-package-data "^2.3.5" + parse-color "^1.0.0" + plist "^2.0.1" + progress "^1.1.8" + sanitize-filename "^1.6.1" + semver "^5.3.0" + tunnel-agent "^0.4.3" + update-notifier "^1.0.3" + uuid-1345 "^0.99.6" + yargs "^6.6.0" + +electron-download-tf@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/electron-download-tf/-/electron-download-tf-3.1.0.tgz#c6d62c0e0a4c63b67295f57b6b66514c13b8ed8d" + dependencies: + debug "^2.3.2" + fs-extra "^1.0.0" + minimist "^1.2.0" + nugget "^2.0.1" + path-exists "^3.0.0" + rc "^1.1.6" + semver "^5.3.0" + sumchecker "^1.2.0" + +electron-macos-sign@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/electron-macos-sign/-/electron-macos-sign-1.5.0.tgz#fe3a8acb755b5f568f1fe144e9e66cee44019448" + dependencies: + bluebird "^3.4.7" + compare-version "^0.1.2" + debug "^2.6.0" + isbinaryfile "^3.0.2" + plist "^2.0.1" + +electron-to-chromium@^1.2.7: + version "1.3.9" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.9.tgz#db1cba2a26aebcca2f7f5b8b034554468609157d" + +emojione@2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/emojione/-/emojione-2.2.3.tgz#04383203bf51e6a6c00f1fbddc3309e9543ce78f" + +emojione@^2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/emojione/-/emojione-2.2.7.tgz#46457cf6b9b2f8da13ae8a2e4e547de06ee15e96" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" + dependencies: + once "^1.4.0" + +engine.io-client@~1.8.4: + version "1.8.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.4.tgz#9fe85dee25853ca6babe25bd2ad68710863e91c2" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + +engine.io@~1.8.4: + version "1.8.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.4.tgz#77bce12b80e5d60429337fec3b0daf691ebc9003" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.4" + +enhanced-resolve@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.2.0" + tapable "^0.1.8" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.6.1, es-abstract@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.0" + is-callable "^1.1.3" + is-regex "^1.0.3" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.16" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.16.tgz#1ef1b04f3d09db6a5d630226d62202f2e425e45a" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@^4.0.5, es6-promise@~4.0.3: + version "4.0.5" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@1.0.2, escape-string-regexp@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" + +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" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.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" + +eslint-plugin-flowtype@^2.30.0: + version "2.32.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.32.1.tgz#bbee185dedf97e5f63ec975cdcddd199bd2a2501" + dependencies: + lodash "^4.15.0" + +eslint-plugin-react@^6.9.0: + version "6.10.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" + dependencies: + array.prototype.find "^2.0.1" + doctrine "^1.2.2" + has "^1.0.1" + jsx-ast-utils "^1.3.4" + object.assign "^4.0.4" + +eslint@^3.14.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.5.2" + debug "^2.1.1" + doctrine "^2.0.0" + escope "^3.6.0" + espree "^3.4.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~2.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.4.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" + dependencies: + acorn "^5.0.1" + acorn-jsx "^3.0.0" + +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + dependencies: + estraverse "~4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estraverse@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@1.x.x: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +except@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/except/-/except-0.1.3.tgz#98261c91958551536b44482238e9783fb73d292a" + dependencies: + indexof "0.0.1" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expect@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-1.20.2.tgz#d458fe4c56004036bae3232416a3f6361f04f965" + dependencies: + define-properties "~1.1.2" + has "^1.0.1" + is-equal "^1.5.1" + is-regex "^1.0.3" + object-inspect "^1.1.0" + object-keys "^1.0.9" + tmatch "^2.0.1" + +express@^4.13.3: + version "4.15.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" + dependencies: + accepts "~1.3.3" + array-flatten "1.1.1" + content-disposition "0.5.2" + content-type "~1.0.2" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.1" + depd "~1.1.0" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.0" + finalhandler "~1.0.0" + fresh "0.5.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.1" + path-to-regexp "0.1.7" + proxy-addr "~1.1.3" + qs "6.4.0" + range-parser "~1.2.0" + send "0.15.1" + serve-static "1.12.1" + setprototypeof "1.0.3" + statuses "~1.3.1" + type-is "~1.6.14" + utils-merge "1.0.0" + vary "~1.1.0" + +extend@^3.0.0, extend@^3.0.1, extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extract-text-webpack-plugin@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-0.9.1.tgz#ef6dc508cb35ed0dcf8a4009abbe853f7a7622b5" + dependencies: + async "^1.5.0" + loader-utils "^0.2.3" + +extract-zip@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" + dependencies: + concat-stream "1.5.0" + debug "0.7.4" + mkdirp "0.5.0" + yauzl "2.4.1" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +favico.js@^0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/favico.js/-/favico.js-0.3.10.tgz#80586e27a117f24a8d51c18a99bdc714d4339301" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +fbjs@^0.8.3, fbjs@^0.8.4, fbjs@^0.8.9: + version "0.8.12" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +fd-slicer@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-saver@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.3.tgz#cdd4c44d3aa264eac2f68ec165bc791c34af1232" + +file@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/file/-/file-0.2.2.tgz#c3dfd8f8cf3535ae455c2b423c2e52635d76b4d3" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +filesize@3.5.6: + version "3.5.6" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +filled-array@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" + +finalhandler@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" + dependencies: + debug "2.6.3" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.1" + statuses "~1.3.1" + unpipe "~1.0.0" + +finalhandler@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.2.tgz#d0e36f9dbc557f2de14423df6261889e9d60c93a" + dependencies: + debug "2.6.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.1" + statuses "~1.3.1" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-parent-dir@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flux@^2.0.3, flux@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-2.0.3.tgz#787e1aedffb34a322a60b49c57a2d23856a6de27" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +forwarded@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" + +fresh@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + +fs-extra-p@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-3.1.0.tgz#eddf7bb8d9385d79014decb21f45b1d0c57900d3" + dependencies: + bluebird-lst-c "^1.0.6" + fs-extra "^2.0.0" + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^1.0.0, fs-extra@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + +fs-readdir-recursive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.29" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" + +fuse.js@^2.2.0: + version "2.7.4" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-2.7.4.tgz#96e420fde7ef011ac49c258a621314fe576536f9" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gemini-scrollbar@matrix-org/gemini-scrollbar#91e1e566: + version "1.4.3" + resolved "https://codeload.github.com/matrix-org/gemini-scrollbar/tar.gz/91e1e566" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +gfm.css@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/gfm.css/-/gfm.css-1.1.1.tgz#16b0ef08637f2495b66c84c5024593d71ebeac46" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + 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" + dependencies: + is-glob "^2.0.0" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@3.2.11: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +glob@^5.0.14: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.0.0, globals@^9.14.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +got@^5.0.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" + dependencies: + create-error-class "^3.0.1" + duplexer2 "^0.1.4" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + node-status-codes "^1.0.0" + object-assign "^4.0.1" + parse-json "^2.1.0" + pinkie-promise "^2.0.0" + read-all-stream "^3.0.0" + readable-stream "^2.0.5" + timed-out "^3.0.0" + unzip-response "^1.0.2" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + +growl@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.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" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hasha@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" + dependencies: + is-stream "^1.0.1" + pinkie-promise "^2.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +highlight.js@^8.9.1: + version "8.9.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" + +highlight.js@^9.0.0: + version "9.11.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.11.0.tgz#47f98c7399918700db2caf230ded12cec41a84ae" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoist-non-react-statics@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" + +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" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.1.5: + version "2.4.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" + +html-minifier@^3.2.3: + version "3.4.4" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.4.4.tgz#616fe3e3ef16da02b393d9a6099eeff468a35df0" + dependencies: + camel-case "3.0.x" + clean-css "4.0.x" + commander "2.9.x" + he "1.1.x" + ncname "1.0.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "~2.8.22" + +html-webpack-plugin@^2.24.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" + dependencies: + bluebird "^3.4.7" + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + toposort "^1.0.0" + +htmlparser2@^3.9.0: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-errors@~1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" + dependencies: + inherits "2.0.3" + setprototypeof "1.0.2" + statuses ">= 1.3.1 < 2" + +http-errors@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" + dependencies: + depd "1.1.0" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-proxy-middleware@~0.17.1: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + dependencies: + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" + +http-proxy@^1.13.0, http-proxy@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + dependencies: + eventemitter3 "1.x.x" + requires-port "1.x.x" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +iconv-lite@0.4.15, iconv-lite@~0.4.13: + version "0.4.15" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.0.tgz#3812d22cbe9125f2c2b4915755a1b8abd745a001" + +immutable@~3.7.4: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^0.6.4: + version "0.6.6" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ipaddr.js@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-arrow-function@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-arrow-function/-/is-arrow-function-2.0.3.tgz#29be2c2d8d9450852b8bbafb635ba7b8d8e87ec2" + dependencies: + is-callable "^1.0.4" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.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" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.0.4, is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + +is-dotfile@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" + +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" + dependencies: + is-primitive "^2.0.0" + +is-equal@^1.5.1: + version "1.5.5" + resolved "https://registry.yarnpkg.com/is-equal/-/is-equal-1.5.5.tgz#5e85f1957e052883247feb386965a3bba15fbb3d" + dependencies: + has "^1.0.1" + is-arrow-function "^2.0.3" + is-boolean-object "^1.0.0" + is-callable "^1.1.3" + is-date-object "^1.0.1" + is-generator-function "^1.0.6" + is-number-object "^1.0.3" + is-regex "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.1" + object.entries "^1.0.4" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + 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" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-generator-function@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.6.tgz#9e71653cd15fff341c79c4151460a131d31e9fc4" + +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" + 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" + dependencies: + is-extglob "^2.1.0" + +is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: + version "2.16.0" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number-object@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.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" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-string@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +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" + +isbinaryfile@^3.0.0, isbinaryfile@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +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" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jade@0.26.3: + version "0.26.3" + resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" + dependencies: + commander "0.6.1" + mkdirp "0.3.0" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +"jquery@>= 1.4.3", jquery@>=1.9.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" + +js-base64@^2.1.9: + version "2.1.9" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" + +js-tokens@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" + +js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0: + version "3.8.4" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.3: + version "0.5.4" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2, json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + dependencies: + assert-plus "1.0.0" + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +jsx-ast-utils@^1.3.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" + +karma-chrome-launcher@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz#4c6d700d163a9d34c618efd87918be49e7a4a8c9" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-cli@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-0.1.2.tgz#cacea84371ece19876265c8fa102ebbb9fee4a8c" + dependencies: + resolve "^1.1.6" + +karma-junit-reporter@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/karma-junit-reporter/-/karma-junit-reporter-0.4.2.tgz#492a236728fe4c92aacf419fcd0110a4327e9d7f" + dependencies: + path-is-absolute "^1.0.0" + xmlbuilder "3.1.0" + +karma-mocha@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-0.2.2.tgz#388ed917da15dcb196d1b915c1934ef803193f8e" + +karma-phantomjs-launcher@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" + dependencies: + lodash "^4.0.1" + phantomjs-prebuilt "^2.1.7" + +karma-webpack@^1.7.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-1.8.1.tgz#39d5fd2edeea3cc3ef5b405989b37d5b0e6a3b4e" + dependencies: + async "~0.9.0" + loader-utils "^0.2.5" + lodash "^3.8.0" + source-map "^0.1.41" + webpack-dev-middleware "^1.0.11" + +karma@^0.13.22: + version "0.13.22" + resolved "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz#07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744" + dependencies: + batch "^0.5.3" + bluebird "^2.9.27" + body-parser "^1.12.4" + chokidar "^1.4.1" + colors "^1.1.0" + connect "^3.3.5" + core-js "^2.1.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.0.0" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.0" + optimist "^0.6.1" + rimraf "^2.3.3" + socket.io "^1.4.5" + source-map "^0.5.3" + useragent "^2.1.6" + +kew@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" + +kind-of@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +latest-version@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" + dependencies: + package-json "^2.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lazy-req@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +linkifyjs@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-2.1.4.tgz#b04aac3f327afc871deb205546f612d80bd784b5" + optionalDependencies: + jquery ">=1.9.0" + react ">=0.14.0" + react-dom ">=0.14.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0.2.3, loader-utils@^0.2.5, loader-utils@~0.2.2, loader-utils@~0.2.7: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +lodash-es@^4.2.1: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" + +lodash.assign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.pickby@^4.0.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + +lodash@4.17.4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +lodash@^3.5.0, lodash@^3.8.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +log4js@^0.6.31: + version "0.6.38" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +lru-cache@2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" + +lru-cache@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +macaddress@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +matrix-js-sdk@matrix-org/matrix-js-sdk#develop: + version "0.7.7" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/6021c1c6b11d8bad2b38ce1d70c9d4ff27f17f9c" + dependencies: + another-json "^0.2.0" + browser-request "^0.3.3" + q "^1.4.1" + request "^2.53.0" + optionalDependencies: + olm "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz" + +matrix-react-sdk@matrix-org/matrix-react-sdk#develop: + version "0.8.8" + resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/8a76c0c14207797bf9f41398e6f55708f8513f22" + dependencies: + babel-runtime "^6.11.6" + blueimp-canvas-to-blob "^3.5.0" + browser-encrypt-attachment "^0.3.0" + browser-request "^0.3.3" + classnames "^2.1.2" + commonmark "^0.27.0" + draft-js "^0.8.1" + draft-js-export-html "^0.5.0" + draft-js-export-markdown "^0.2.0" + emojione "2.2.3" + file-saver "^1.3.3" + filesize "3.5.6" + flux "^2.0.3" + fuse.js "^2.2.0" + glob "^5.0.14" + highlight.js "^8.9.1" + isomorphic-fetch "^2.2.1" + linkifyjs "^2.1.3" + lodash "^4.13.1" + matrix-js-sdk matrix-org/matrix-js-sdk#develop + optimist "^0.6.1" + prop-types "^15.5.8" + q "^1.4.1" + react "^15.4.0" + react-addons-css-transition-group "15.3.2" + react-dom "^15.4.0" + react-gemini-scrollbar matrix-org/react-gemini-scrollbar#39d858c + sanitize-html "^1.11.1" + text-encoding-utf-8 "^1.0.1" + velocity-vector vector-im/velocity#059e3b2 + whatwg-fetch "^1.0.0" + +"mdurl@~ 1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +memory-fs@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" + +memory-fs@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.1.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + 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" + +"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +mime@1.3.4, mime@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +minimatch@0.3: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, "minimist@~ 1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +mkdirp@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" + dependencies: + minimist "0.0.8" + +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@^2.4.5: + version "2.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" + dependencies: + commander "2.3.0" + debug "2.2.0" + diff "1.4.0" + escape-string-regexp "1.0.2" + glob "3.2.11" + growl "1.9.2" + jade "0.26.3" + mkdirp "0.5.1" + supports-color "1.2.0" + to-iso-string "0.0.2" + +modernizr@^3.1.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/modernizr/-/modernizr-3.5.0.tgz#396a02231bdc54628bbde2c0813a8e884c7e8060" + dependencies: + doctrine "1.2.3" + file "0.2.2" + find-parent-dir "0.3.0" + lodash "4.17.4" + mkdirp "0.5.1" + remarkable "^1.6.2" + requirejs "2.1.22" + yargs "7.0.2" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +nan@^2.3.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +ncname@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" + dependencies: + xml-char-classes "^1.0.0" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +no-case@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" + dependencies: + lower-case "^1.1.1" + +node-emoji@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.5.1.tgz#fd918e412769bf8c448051238233840b2aff16a1" + dependencies: + string.prototype.codepointat "^0.2.0" + +node-fetch@^1.0.1: + version "1.6.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-libs-browser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.9.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "3.3.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.29: + version "0.6.34" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-status-codes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +npmlog@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +nugget@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" + dependencies: + debug "^2.1.3" + minimist "^1.1.0" + pretty-bytes "^1.0.2" + progress-stream "^1.1.0" + request "^2.45.0" + single-line-log "^1.1.2" + throttleit "0.0.2" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object-inspect@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.2.2.tgz#c82115e4fcc888aea14d64c22e4f17f6a70d5e5a" + +object-keys@^1.0.10, object-keys@^1.0.8, object-keys@^1.0.9: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + +object.assign@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.0" + object-keys "^1.0.10" + +object.entries@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +"olm@https://matrix.org/packages/npm/olm/olm-2.2.1.tgz": + version "2.2.1" + resolved "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz#5e5db50d0a142b7c7a0650d9b3d8acc3d37e697b" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +open@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" + +optimist@^0.6.1, optimist@~0.6.0, optimist@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.0, osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +package-json@^2.0.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" + dependencies: + got "^5.0.0" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.5.tgz#d2205dfe5b9da8af797e7c163db4d1f84e4600bc" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +parallelshell@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallelshell/-/parallelshell-1.2.0.tgz#df114c05e9c8eba92dc5607c5eb1e1ff04a2e17c" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-color@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" + dependencies: + color-convert "~0.5.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.1.0, parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +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" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pbkdf2-compat@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +phantomjs-prebuilt@^2.1.7: + version "2.1.14" + resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" + dependencies: + es6-promise "~4.0.3" + extract-zip "~1.5.0" + fs-extra "~1.0.0" + hasha "~2.2.0" + kew "~0.7.0" + progress "~1.1.8" + request "~2.79.0" + request-progress "~2.0.1" + which "~1.2.10" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +plist@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/plist/-/plist-2.1.0.tgz#57ccdb7a0821df21831217a3cad54e3e146a1025" + dependencies: + base64-js "1.2.0" + xmlbuilder "8.2.2" + xmldom "0.1.x" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +pluralizers@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/pluralizers/-/pluralizers-0.1.5.tgz#9b5de28afe16b92c9c056cdf5100acddd752be0d" + +postcss-extend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7" + dependencies: + postcss "^5.0.4" + +postcss-import@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-9.1.0.tgz#95fe9876a1e79af49fbdc3589f01fe5aa7cc1e80" + dependencies: + object-assign "^4.0.1" + postcss "^5.0.14" + postcss-value-parser "^3.2.3" + promise-each "^2.2.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-0.2.0.tgz#56e6db0cd910a6dffec3dfb34462693ac72e3882" + dependencies: + camelcase-css "^1.0.1" + postcss "^5.2.6" + +postcss-load-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + +postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + +postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + +postcss-loader@^1.2.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-1.3.3.tgz#a621ea1fa29062a83972a46f54486771301916eb" + dependencies: + loader-utils "^1.0.2" + object-assign "^4.1.1" + postcss "^5.2.15" + postcss-load-config "^1.2.0" + +postcss-mixins@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-5.4.1.tgz#004c0acc54328b86bbcb3471f9eb3b52ed70f4a8" + dependencies: + globby "^6.1.0" + postcss "^5.2.6" + postcss-js "^0.2.0" + postcss-simple-vars "^3.0.0" + sugarss "^0.2.0" + +postcss-nested@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-1.0.1.tgz#91f28f4e6e23d567241ac154558a0cfab4cc0d8f" + dependencies: + postcss "^5.2.17" + +postcss-scss@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.1.tgz#ad771b81f0f72f5f4845d08aa60f93557653d54c" + dependencies: + postcss "^5.2.13" + +postcss-simple-vars@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-3.1.0.tgz#62c0657214ef1f43a3c5893ade89de414f31b6ff" + dependencies: + postcss "^5.2.16" + +postcss-strip-inline-comments@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/postcss-strip-inline-comments/-/postcss-strip-inline-comments-0.1.5.tgz#7ff6bcdc14e633ed4cdfa020bae3eddad4f84b90" + dependencies: + postcss "^5.0.18" + +postcss-value-parser@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss@^5.0.14, postcss@^5.0.18, postcss@^5.0.4, postcss@^5.2.13, postcss@^5.2.15, postcss@^5.2.16, postcss@^5.2.17, postcss@^5.2.4, postcss@^5.2.6: + version "5.2.17" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-bytes@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" + dependencies: + get-stdin "^4.0.1" + meow "^3.1.0" + +pretty-error@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.0.tgz#87f4e9d706a24c87d6cbee9fabec001fcf8c75d8" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress-stream@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" + dependencies: + speedometer "~0.1.2" + through2 "~0.2.3" + +progress@^1.1.8, progress@~1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promise-each@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz#3353174eff2694481037e04e01f77aa0fb6d1b60" + dependencies: + any-promise "^0.1.0" + +promise@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7: + version "15.5.9" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.9.tgz#d478eef0e761396942f70c78e772f76e8be747c9" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + +proxy-addr@~1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" + dependencies: + forwarded "~0.1.0" + ipaddr.js "1.3.0" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@1.3.2, punycode@^1.2.4: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qs@6.4.0, qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" + +randomatic@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" + dependencies: + is-number "^2.0.2" + kind-of "^3.0.2" + +range-parser@^1.0.3, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.15" + unpipe "1.0.0" + +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-addons-css-transition-group@15.3.2: + version "15.3.2" + resolved "https://registry.yarnpkg.com/react-addons-css-transition-group/-/react-addons-css-transition-group-15.3.2.tgz#d8fa52bec9bb61bdfde8b9e4652b80297cbff667" + +react-addons-perf@^15.4.0: + version "15.4.2" + resolved "https://registry.yarnpkg.com/react-addons-perf/-/react-addons-perf-15.4.2.tgz#110bdcf5c459c4f77cb85ed634bcd3397536383b" + dependencies: + fbjs "^0.8.4" + object-assign "^4.1.0" + +react-addons-test-utils@^15.4.0: + version "15.5.1" + resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7" + dependencies: + fbjs "^0.8.4" + object-assign "^4.1.0" + +react-dnd-html5-backend@^2.1.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-2.4.1.tgz#439d2bcaf8bd8b87a51386beb51c128826182ddd" + dependencies: + lodash "^4.2.0" + +react-dnd@^2.1.4: + version "2.4.0" + resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.4.0.tgz#96f0042cd4cd375b4f0c3413f6ec84d267b7d792" + dependencies: + disposables "^1.0.1" + dnd-core "^2.4.0" + hoist-non-react-statics "^1.2.0" + invariant "^2.1.0" + lodash "^4.2.0" + prop-types "^15.5.8" + +react-dom@>=0.14.0, react-dom@^15.4.0: + version "15.5.4" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "~15.5.7" + +react-gemini-scrollbar@matrix-org/react-gemini-scrollbar#39d858c: + version "2.1.5" + resolved "https://codeload.github.com/matrix-org/react-gemini-scrollbar/tar.gz/39d858c" + dependencies: + gemini-scrollbar matrix-org/gemini-scrollbar#91e1e566 + +react@>=0.14.0, react@^15.4.0: + version "15.5.4" + resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.7" + +read-all-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" + dependencies: + pinkie-promise "^2.0.0" + readable-stream "^2.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + dependencies: + pify "^2.3.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@1.0, readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: + version "2.2.9" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" + dependencies: + buffer-shims "~1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~1.0.0" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +redux@^3.2.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d" + dependencies: + lodash "^4.2.1" + lodash-es "^4.2.1" + loose-envify "^1.1.0" + symbol-observable "^1.0.2" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-transform@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.3" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" + dependencies: + is-equal-shallow "^0.1.3" + is-primitive "^2.0.0" + +regexp-quote@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/regexp-quote/-/regexp-quote-0.0.0.tgz#1e0f4650c862dcbfed54fd42b148e9bb1721fcf2" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remarkable@^1.6.2: + version "1.7.1" + resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.1.tgz#aaca4972100b66a642a63a1021ca4bac1be3bff6" + dependencies: + argparse "~0.1.15" + autolinker "~0.15.0" + +remove-trailing-separator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request-progress@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" + dependencies: + throttleit "^1.0.0" + +request@^2.45.0, request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@^2.53.0, request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requirejs@2.1.22: + version "2.1.22" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.1.22.tgz#dd78fd2d34180c0d62c724b5b8aebc0664e0366f" + +requires-port@1.0.x, requires-port@1.x.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@^1.1.6, resolve@^1.1.7: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +ripemd160@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +sanitize-filename@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.1.tgz#612da1c96473fa02dccda92dcd5b4ab164a6772a" + dependencies: + truncate-utf8-bytes "^1.0.0" + +sanitize-html@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.14.1.tgz#730ffa2249bdf18333effe45b286173c9c5ad0b8" + dependencies: + htmlparser2 "^3.9.0" + regexp-quote "0.0.0" + xtend "^4.0.0" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +send@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" + dependencies: + debug "2.6.1" + depd "~1.1.0" + destroy "~1.0.4" + encodeurl "~1.0.1" + escape-html "~1.0.3" + etag "~1.8.0" + fresh "0.5.0" + http-errors "~1.6.1" + mime "1.3.4" + ms "0.7.2" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.3.1" + +serve-index@^1.7.2: + version "1.8.0" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" + dependencies: + accepts "~1.3.3" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.5.0" + mime-types "~2.1.11" + parseurl "~1.3.1" + +serve-static@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" + dependencies: + encodeurl "~1.0.1" + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.15.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +sha.js@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shelljs@^0.7.5: + version "0.7.7" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +single-line-log@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364" + dependencies: + string-width "^1.0.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz#ec9f820356ed99ef6d357f0756d648717bdd4281" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "~1.8.4" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@^1.4.5: + version "1.7.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz#2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00" + dependencies: + debug "2.3.3" + engine.io "~1.8.4" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.4" + socket.io-parser "2.3.1" + +sockjs-client@^1.0.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@^0.3.15: + version "0.3.18" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" + dependencies: + faye-websocket "^0.10.0" + uuid "^2.0.2" + +source-list-map@~0.1.5, source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-map-loader@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91" + dependencies: + async "^0.9.0" + loader-utils "~0.2.2" + source-map "~0.1.33" + +source-map-support@^0.4.10, source-map-support@^0.4.2: + version "0.4.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" + dependencies: + source-map "^0.5.6" + +source-map@0.4.x, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + +source-map@^0.1.41, source-map@~0.1.33: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +speedometer@~0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" + +sprintf-js@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.0.tgz#cffcaf702daf65ea39bb4e0fa2b299cec1a1be46" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stat-mode@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" + +"statuses@>= 1.3.1 < 2", statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-cache@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stream-cache/-/stream-cache-0.0.2.tgz#1ac5ad6832428ca55667dbdee395dad4e6db118f" + +stream-http@^2.3.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^3.0.0" + +string.prototype.codepointat@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78" + +string.prototype.repeat@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" + +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" + dependencies: + buffer-shims "~1.0.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + +sugarss@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-0.2.0.tgz#ac34237563327c6ff897b64742bf6aec190ad39e" + dependencies: + postcss "^5.2.4" + +sumchecker@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" + dependencies: + debug "^2.2.0" + es6-promise "^4.0.5" + +supports-color@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +symbol-observable@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +tapable@^0.1.8, tapable@~0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar-stream@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" + dependencies: + bl "^1.0.0" + end-of-stream "^1.0.0" + readable-stream "^2.0.0" + xtend "^4.0.0" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +text-encoding-utf-8@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz#51ea6c7a7eb2fb4f67467b763735661f5603492d" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +throttleit@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + +through2@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" + dependencies: + readable-stream "~1.1.9" + xtend "~2.1.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timed-out@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" + +timers-browserify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" + dependencies: + setimmediate "^1.0.4" + +tmatch@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-2.0.1.tgz#0c56246f33f30da1b8d3d72895abaf16660f38cf" + +tmp@0.0.x: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-iso-string@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" + +toposort@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + dependencies: + utf8-byte-length "^1.0.1" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.4.3, tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.14: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6, typedarray@~0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.10, ua-parser-js@^0.7.9: + version "0.7.12" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" + +uglify-js@~2.7.3: + version "2.7.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-js@~2.8.22: + version "2.8.23" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.23.tgz#8230dd9783371232d62a7821e2cf9a817270a8a0" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +underscore.string@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" + +underscore@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unzip-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" + +update-notifier@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" + dependencies: + boxen "^0.6.0" + chalk "^1.0.0" + configstore "^2.0.0" + is-npm "^1.0.0" + latest-version "^2.0.0" + lazy-req "^1.1.0" + semver-diff "^2.0.0" + xdg-basedir "^2.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.1.9" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" + dependencies: + querystringify "~1.0.0" + requires-port "1.0.x" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +useragent@^2.1.6: + version "2.1.13" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10" + dependencies: + lru-cache "2.2.x" + tmp "0.0.x" + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid-1345@^0.99.6: + version "0.99.6" + resolved "https://registry.yarnpkg.com/uuid-1345/-/uuid-1345-0.99.6.tgz#b1270ae015a7721c7adec6c46ec169c6098aed40" + dependencies: + macaddress "^0.2.7" + +uuid@^2.0.1, uuid@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +v8flags@^2.0.10: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vary@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" + +velocity-vector@vector-im/velocity#059e3b2: + version "1.2.3" + resolved "https://codeload.github.com/vector-im/velocity/tar.gz/059e3b2" + dependencies: + jquery ">= 1.4.3" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + +walkdir@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" + +watchpack@^0.2.1: + version "0.2.9" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b" + dependencies: + async "^0.9.0" + chokidar "^1.0.0" + graceful-fs "^4.1.2" + +webpack-core@~0.6.9: + version "0.6.9" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + dependencies: + source-list-map "~0.1.7" + source-map "~0.4.1" + +webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + +webpack-dev-server@^1.16.2: + version "1.16.5" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz#0cbd5f2d2ac8d4e593aacd5c9702e7bbd5e59892" + dependencies: + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + express "^4.13.3" + http-proxy-middleware "~0.17.1" + open "0.0.5" + optimist "~0.6.1" + serve-index "^1.7.2" + sockjs "^0.3.15" + sockjs-client "^1.0.3" + stream-cache "~0.0.1" + strip-ansi "^3.0.0" + supports-color "^3.1.1" + webpack-dev-middleware "^1.10.2" + +webpack@^1.12.14: + version "1.15.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.15.0.tgz#4ff31f53db03339e55164a9d468ee0324968fe98" + dependencies: + acorn "^3.0.0" + async "^1.3.0" + clone "^1.0.2" + enhanced-resolve "~0.9.0" + interpret "^0.6.4" + loader-utils "^0.2.11" + memory-fs "~0.3.0" + mkdirp "~0.5.0" + node-libs-browser "^0.7.0" + optimist "~0.6.0" + supports-color "^3.1.0" + tapable "~0.1.8" + uglify-js "~2.7.3" + watchpack "^0.2.1" + webpack-core "~0.6.9" + +websocket-driver@>=0.5.1: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + dependencies: + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" + +whatwg-fetch@>=0.10.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + +whatwg-fetch@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which@^1.2.1, which@^1.2.9, which@~1.2.10: + version "1.2.14" + resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" + dependencies: + string-width "^1.0.1" + +widest-line@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + dependencies: + string-width "^1.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.1.2: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xdg-basedir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" + dependencies: + os-homedir "^1.0.0" + +xml-char-classes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + +xmlbuilder@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-3.1.0.tgz#2c86888f2d4eade850fa38ca7f7223f7209516e1" + dependencies: + lodash "^3.5.0" + +xmlbuilder@8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" + +xmldom@0.1.x: + version "0.1.27" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + dependencies: + object-keys "~0.4.0" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.0.2.tgz#115b97df1321823e8b8648e8968c782521221f67" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@^6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yauzl@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" + dependencies: + fd-slicer "~1.0.1" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +zip-stream@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.1.1.tgz#5216b48bbb4d2651f64d5c6e6f09eb4a7399d557" + dependencies: + archiver-utils "^1.3.0" + compress-commons "^1.1.0" + lodash "^4.8.0" + readable-stream "^2.0.0" From 3f3f230a77226688618b11e9c2db5afddf6f3e99 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 May 2017 14:20:51 +0100 Subject: [PATCH 147/220] Remove accidentally comitted yarn stuff --- yarn-error.log | 200 -- yarn.lock | 6076 ------------------------------------------------ 2 files changed, 6276 deletions(-) delete mode 100644 yarn-error.log delete mode 100644 yarn.lock diff --git a/yarn-error.log b/yarn-error.log deleted file mode 100644 index ff994d1289..0000000000 --- a/yarn-error.log +++ /dev/null @@ -1,200 +0,0 @@ -Arguments: - C:\Program Files\nodejs\node.exe C:\Program Files (x86)\Yarn\bin\yarn.js install - -PATH: - C:\Users\marce\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\local\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\usr\bin;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Users\marce\bin;C:\ProgramData\Oracle\Java\javapath;C:\Python27;C:\Python27\Scripts;C:\Program Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\PuTTY;C:\Program Files (x86)\QuickTime\QTSystem;C:\Program Files\Git\cmd;C:\ProgramData\chocolatey\bin;C:\Program Files\Java\jdk1.8.0_131\bin;C:\Android\android-sdk\tools;C:\Android\android-sdk\platform-tools;C:\Program Files\nodejs;C:\Program Files (x86)\Yarn\bin;C:\Ruby23\bin;C:\Users\marce\.cargo\bin;C:\Users\marce\AppData\Local\Microsoft\WindowsApps;C:\Users\marce\AppData\Local\atom\bin;C:\Program Files\Docker Toolbox;C:\Users\marce\AppData\Roaming\npm;C:\Users\marce\AppData\Local\Yarn\.bin;C:\Program Files\Git\usr\bin\vendor_perl;C:\Program Files\Git\usr\bin\core_perl - -Yarn version: - 0.23.4 - -Node version: - 7.10.0 - -Platform: - win32 x64 - -npm manifest: - { - "name": "riot-web", - "productName": "Riot", - "main": "electron/src/electron-main.js", - "version": "0.9.9", - "description": "A feature-rich client for Matrix.org", - "author": "Vector Creations Ltd.", - "repository": { - "type": "git", - "url": "https://github.com/vector-im/riot-web" - }, - "license": "Apache-2.0", - "files": [ - "AUTHORS.rst", - "CONTRIBUTING.rst", - "deploy", - "docs", - "karma.conf.js", - "lib", - "release.sh", - "scripts", - "src", - "test", - "webpack.config.js" - ], - "style": "bundle.css", - "matrix-react-parent": "matrix-react-sdk", - "scripts": { - "reskindex": "reskindex -h src/header", - "build:res": "node scripts/copy-res.js", - "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", - "build:compile": "babel --source-maps -d lib src", - "build:bundle": "cross-env NODE_ENV=production webpack -p --progress", - "build:bundle:dev": "webpack --optimize-occurence-order --progress", - "build:electron": "npm run clean && npm run build && build -wml --ia32 --x64", - "build": "npm run build:res && npm run build:bundle", - "build:dev": "npm run build:res && npm run build:bundle:dev", - "dist": "scripts/package.sh", - "install:electron": "install-app-deps", - "electron": "npm run install:electron && electron .", - "start:res": "node scripts/copy-res.js -w", - "start:js": "webpack-dev-server --output-filename=bundles/_dev_/[name].js --output-chunk-file=bundles/_dev_/[name].js -w --progress", - "start:js:prod": "cross-env NODE_ENV=production webpack-dev-server -w --progress", - "start": "parallelshell \"npm run start:res\" \"npm run start:js\"", - "start:prod": "parallelshell \"npm run start:res\" \"npm run start:js:prod\"", - "lint": "eslint src/", - "lintall": "eslint src/ test/", - "clean": "rimraf lib webapp electron/dist", - "prepublish": "npm run build:compile", - "test": "karma start --single-run=true --autoWatch=false --browsers PhantomJS --colors=false", - "test-multi": "karma start" - }, - "dependencies": { - "babel-polyfill": "^6.5.0", - "babel-runtime": "^6.11.6", - "browser-request": "^0.3.3", - "classnames": "^2.1.2", - "counterpart": "Nordgedanken/counterpart#develop", - "draft-js": "^0.8.1", - "extract-text-webpack-plugin": "^0.9.1", - "favico.js": "^0.3.10", - "filesize": "3.5.6", - "flux": "~2.0.3", - "gfm.css": "^1.1.1", - "highlight.js": "^9.0.0", - "linkifyjs": "^2.1.3", - "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", - "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", - "modernizr": "^3.1.0", - "pako": "^1.0.5", - "q": "^1.4.1", - "react": "^15.4.0", - "react-dnd": "^2.1.4", - "react-dnd-html5-backend": "^2.1.2", - "react-dom": "^15.4.0", - "react-gemini-scrollbar": "matrix-org/react-gemini-scrollbar#39d858c", - "sanitize-html": "^1.11.1", - "ua-parser-js": "^0.7.10", - "url": "^0.11.0" - }, - "devDependencies": { - "autoprefixer": "^6.6.0", - "babel-cli": "^6.5.2", - "babel-core": "^6.14.0", - "babel-eslint": "^6.1.0", - "babel-loader": "^6.2.5", - "babel-plugin-add-module-exports": "^0.2.1", - "babel-plugin-transform-async-to-generator": "^6.16.0", - "babel-plugin-transform-class-properties": "^6.16.0", - "babel-plugin-transform-object-rest-spread": "^6.16.0", - "babel-plugin-transform-runtime": "^6.15.0", - "babel-preset-es2015": "^6.16.0", - "babel-preset-es2016": "^6.16.0", - "babel-preset-es2017": "^6.16.0", - "babel-preset-react": "^6.16.0", - "babel-preset-stage-2": "^6.17.0", - "chokidar": "^1.6.1", - "cpx": "^1.3.2", - "cross-env": "^4.0.0", - "css-raw-loader": "^0.1.1", - "electron-builder": "^11.2.4", - "electron-builder-squirrel-windows": "^11.2.1", - "emojione": "^2.2.7", - "eslint": "^3.14.0", - "eslint-config-google": "^0.7.1", - "eslint-plugin-flowtype": "^2.30.0", - "eslint-plugin-react": "^6.9.0", - "expect": "^1.16.0", - "fs-extra": "^0.30.0", - "html-webpack-plugin": "^2.24.0", - "json-loader": "^0.5.3", - "karma": "^0.13.22", - "karma-chrome-launcher": "^0.2.3", - "karma-cli": "^0.1.2", - "karma-junit-reporter": "^0.4.1", - "karma-mocha": "^0.2.2", - "karma-phantomjs-launcher": "^1.0.0", - "karma-webpack": "^1.7.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "mocha": "^2.4.5", - "parallelshell": "^1.2.0", - "phantomjs-prebuilt": "^2.1.7", - "postcss-extend": "^1.0.5", - "postcss-import": "^9.0.0", - "postcss-loader": "^1.2.2", - "postcss-mixins": "^5.4.1", - "postcss-nested": "^1.0.0", - "postcss-scss": "^0.4.0", - "postcss-simple-vars": "^3.0.0", - "postcss-strip-inline-comments": "^0.1.5", - "react-addons-perf": "^15.4.0", - "react-addons-test-utils": "^15.4.0", - "rimraf": "^2.4.3", - "source-map-loader": "^0.1.5", - "webpack": "^1.12.14", - "webpack-dev-server": "^1.16.2" - }, - "optionalDependencies": { - "olm": "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz" - }, - "build": { - "appId": "im.riot.app", - "category": "Network", - "electronVersion": "1.6.2", - "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", - "asar": false, - "dereference": true, - "//files": "We bundle everything, so we only need to include webapp/", - "files": [ - "node_modules/**", - "src/**", - "img/**" - ], - "extraResources": [ - "webapp/**/*" - ], - "linux": { - "target": "deb", - "maintainer": "support@riot.im", - "desktop": { - "StartupWMClass": "riot-web" - } - }, - "win": { - "target": "squirrel" - }, - "directories": { - "buildResources": "electron/build", - "output": "electron/dist", - "app": "electron" - } - } - } - -yarn manifest: - No manifest - -Lockfile: - No lockfile - -Trace: - Error: https://registry.yarnpkg.com/emojione/-/emojione-2.2.7.tgz: unexpected end of file - at Zlib._handle.onerror (zlib.js:355:17) diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fa7e9e36a2..0000000000 --- a/yarn.lock +++ /dev/null @@ -1,6076 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"7zip-bin-linux@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/7zip-bin-linux/-/7zip-bin-linux-1.0.3.tgz#66724d7bb7526381574393888f62566ed537151c" - -"7zip-bin-mac@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/7zip-bin-mac/-/7zip-bin-mac-1.0.1.tgz#3e68778bbf0926adc68159427074505d47555c02" - -"7zip-bin-win@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/7zip-bin-win/-/7zip-bin-win-2.0.2.tgz#4c36399413922f111b8e80df3065a4069cfc0a64" - -"7zip-bin@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-2.0.4.tgz#0cd28ac3301b1302fbd99922bacb8bad98103e12" - optionalDependencies: - "7zip-bin-linux" "^1.0.3" - "7zip-bin-mac" "^1.0.1" - "7zip-bin-win" "^2.0.2" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - -accepts@1.3.3, accepts@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" - dependencies: - mime-types "~2.1.11" - negotiator "0.6.1" - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.0, acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" - -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - -ajv@^4.7.0, ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -another-json@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/another-json/-/another-json-0.2.0.tgz#b5f4019c973b6dd5c6506a2d93469cb6d32aeedc" - -ansi-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" - dependencies: - string-width "^1.0.1" - -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -any-promise@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-0.1.0.tgz#830b680aa7e56f33451d4b049f3bd8044498ee27" - -anymatch@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - -aproba@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" - -archiver-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - dependencies: - glob "^7.0.0" - graceful-fs "^4.1.0" - lazystream "^1.0.0" - lodash "^4.8.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -archiver@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-1.3.0.tgz#4f2194d6d8f99df3f531e6881f14f15d55faaf22" - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - walkdir "^0.0.11" - zip-stream "^1.1.0" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -argparse@~0.1.15: - version "0.1.16" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" - dependencies: - underscore "~1.7.0" - underscore.string "~2.4.0" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1" - -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - -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" - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - -array-slice@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -array.prototype.find@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -arraybuffer.slice@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@^2.0.3, asap@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f" - -asar-electron-builder@^0.13.5: - version "0.13.5" - resolved "https://registry.yarnpkg.com/asar-electron-builder/-/asar-electron-builder-0.13.5.tgz#4ccd4d11fd7c9d3b3cffc782fde3deed9ef91af6" - dependencies: - chromium-pickle-js "^0.2.0" - commander "^2.9.0" - cuint "^0.2.1" - minimatch "^3.0.2" - mkdirp "^0.5.1" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -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" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" - -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - -async@^0.9.0, async@~0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - -async@^1.3.0, async@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" - dependencies: - lodash "^4.14.0" - -async@~0.2.6: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -autolinker@~0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832" - -autoprefixer@^6.6.0: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-cli@^6.5.2: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283" - dependencies: - babel-core "^6.24.1" - babel-polyfill "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - commander "^2.8.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.0.0" - glob "^7.0.0" - lodash "^4.2.0" - output-file-sync "^1.1.0" - path-is-absolute "^1.0.0" - slash "^1.0.0" - source-map "^0.5.0" - v8flags "^2.0.10" - optionalDependencies: - chokidar "^1.6.1" - -babel-code-frame@^6.16.0, babel-code-frame@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" - dependencies: - chalk "^1.1.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -babel-core@^6.14.0, babel-core@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.24.1.tgz#8c428564dce1e1f41fb337ec34f4c3b022b5ad83" - dependencies: - babel-code-frame "^6.22.0" - babel-generator "^6.24.1" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - convert-source-map "^1.1.0" - debug "^2.1.1" - json5 "^0.5.0" - lodash "^4.2.0" - minimatch "^3.0.2" - path-is-absolute "^1.0.0" - private "^0.1.6" - slash "^1.0.0" - source-map "^0.5.0" - -babel-eslint@^6.1.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f" - dependencies: - babel-traverse "^6.0.20" - babel-types "^6.0.19" - babylon "^6.0.18" - lodash.assign "^4.0.0" - lodash.pickby "^4.0.0" - -babel-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.24.1.tgz#e715f486c58ded25649d888944d52aa07c5d9497" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.2.0" - source-map "^0.5.0" - trim-right "^1.0.1" - -babel-helper-bindify-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -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" - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz#0ad7917e33c8d751e646daca4e77cc19377d2cbc" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - esutils "^2.0.0" - -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" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz#7a9747f258d8947d32d515f6aa1c7bd02204a080" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.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" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-explode-class@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" - dependencies: - babel-helper-bindify-decorators "^6.24.1" - 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" - 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" - 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" - 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" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz#d36e22fab1008d79d88648e32116868128456ce8" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - lodash "^4.2.0" - -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" - 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" - 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" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-loader@^6.2.5: - version "6.4.1" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-6.4.1.tgz#0b34112d5b0748a8dcdbf51acf6f9bd42d50b8ca" - dependencies: - find-cache-dir "^0.1.1" - loader-utils "^0.2.16" - mkdirp "^0.5.1" - object-assign "^4.0.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - 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" - -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" - 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" - -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - -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" - -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - -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" - -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" - -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" - -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" - -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" - -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" - -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.16.0, 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" - 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-class-properties@^6.16.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" - 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-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" - dependencies: - babel-helper-explode-class "^6.24.1" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^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" - 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" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz#76c295dc3a4741b1665adfd3167215dcff32a576" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - lodash "^4.2.0" - -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" - 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" - 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" - 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" - 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" - 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" - 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" - 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" - 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.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz#d3e310b40ef664a36622200097c6d440298f2bfe" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -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" - 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" - 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" - 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" - 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" - 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" - 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" - 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" - 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" - 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" - 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" - 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" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.16.0, babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz#875d6bc9be761c58a2ae3feee5dc4895d8c7f921" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-display-name@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.23.0.tgz#4398910c358441dc4cef18787264d0412ed36b37" - 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" - 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" - 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" - 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.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz#b8da305ad43c3c99b4848e4fe4037b770d23c418" - dependencies: - regenerator-transform "0.9.11" - -babel-plugin-transform-runtime@^6.15.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - 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" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.23.0, babel-polyfill@^6.5.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" - dependencies: - babel-runtime "^6.22.0" - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-preset-es2015@^6.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - 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.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2016/-/babel-preset-es2016-6.24.1.tgz#f900bf93e2ebc0d276df9b8ab59724ebfd959f8b" - dependencies: - babel-plugin-transform-exponentiation-operator "^6.24.1" - -babel-preset-es2017@^6.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz#597beadfb9f7f208bcfd8a12e9b2b29b8b2f14d1" - 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" - dependencies: - babel-plugin-transform-flow-strip-types "^6.22.0" - -babel-preset-react@^6.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" - 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-preset-stage-2@^6.17.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.24.1" - babel-plugin-transform-decorators "^6.24.1" - babel-preset-stage-3 "^6.24.1" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.24.1.tgz#7e10e13a2f71065bdfad5a1787ba45bca6ded75f" - dependencies: - babel-core "^6.24.1" - babel-runtime "^6.22.0" - core-js "^2.4.0" - home-or-tmp "^2.0.0" - lodash "^4.2.0" - mkdirp "^0.5.1" - source-map-support "^0.4.2" - -babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.9.2: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-template@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.11.0" - lodash "^4.2.0" - -babel-traverse@^6.0.20, babel-traverse@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" - dependencies: - babel-code-frame "^6.22.0" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - babylon "^6.15.0" - debug "^2.2.0" - globals "^9.0.0" - invariant "^2.2.0" - lodash "^4.2.0" - -babel-types@^6.0.19, babel-types@^6.19.0, babel-types@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" - dependencies: - babel-runtime "^6.22.0" - esutils "^2.0.2" - lodash "^4.2.0" - to-fast-properties "^1.0.1" - -babylon@^6.0.18, babylon@^6.11.0, babylon@^6.15.0: - version "6.17.1" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" - -backo2@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - -balanced-match@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - -base64-js@1.2.0, base64-js@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" - -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" - -batch@0.5.3, batch@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - 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" - dependencies: - callsite "1.0.0" - -big.js@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" - -binary-extensions@^1.0.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" - -bl@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" - dependencies: - readable-stream "^2.0.5" - -blob@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird-lst-c@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/bluebird-lst-c/-/bluebird-lst-c-1.0.6.tgz#81f881d13f9df700f67d577f13480bc32d84bba9" - dependencies: - bluebird "^3.4.7" - -bluebird@^2.9.27: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" - -bluebird@^3.4.7: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" - -blueimp-canvas-to-blob@^3.5.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.7.0.tgz#6e985b935c0223410c3a2ad96c0ba3ea214c2b13" - -body-parser@^1.12.4: - version "1.17.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47" - dependencies: - bytes "2.4.0" - content-type "~1.0.2" - debug "2.6.1" - depd "~1.1.0" - http-errors "~1.6.1" - iconv-lite "0.4.15" - on-finished "~2.3.0" - qs "6.4.0" - raw-body "~2.2.0" - type-is "~1.6.14" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -boxen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" - dependencies: - ansi-align "^1.1.0" - camelcase "^2.1.0" - chalk "^1.1.1" - cli-boxes "^1.0.0" - filled-array "^1.0.0" - object-assign "^4.0.1" - repeating "^2.0.0" - string-width "^1.0.1" - widest-line "^1.0.0" - -brace-expansion@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" - dependencies: - balanced-match "^0.4.1" - concat-map "0.0.1" - -braces@^0.1.2: - version "0.1.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" - dependencies: - expand-range "^0.1.0" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -browser-encrypt-attachment@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/browser-encrypt-attachment/-/browser-encrypt-attachment-0.3.0.tgz#205a94caadf0dc7e81413941812f655bd190ff1c" - -browser-request@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" - -browserify-aes@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-0.4.0.tgz#067149b668df31c4b58533e02d01e806d8608e2c" - dependencies: - inherits "^2.0.1" - -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - dependencies: - pako "~0.2.0" - -browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -buffer-crc32@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - -buffer-shims@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - -buffer@^4.9.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -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" - -bytes@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" - -bytes@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase-css@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^2.0.0, camelcase@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000666" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000666.tgz#951ed9f3d3bfaa08a06dafbb5089ab07cce6ab90" - -capture-stack-trace@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" - -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - 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" - -chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.6.0, chokidar@^1.6.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - 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" - -chromium-pickle-js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" - -ci-info@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534" - -circular-json@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" - -classnames@^2.1.2: - version "2.2.5" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" - -clean-css@4.0.x: - version "4.0.13" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.0.13.tgz#feb2a176062d72a6c3e624d9213cac6a0c485e80" - dependencies: - source-map "0.5.x" - -clean-css@^3.2.10: - version "3.4.26" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.26.tgz#55323b344ff3bcee684a2eac81c93df8fa73deeb" - dependencies: - commander "2.8.x" - source-map "0.4.x" - -cli-boxes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" - -cli-width@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -clone@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -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" - -color-convert@~0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - -colors@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" - -commander@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" - -commander@2.8.x: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commander@2.9.x, commander@^2.8.1, commander@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - -commonmark@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.27.0.tgz#d86c262b962821e9483c69c547bc58840c047b34" - dependencies: - entities "~ 1.1.1" - mdurl "~ 1.0.1" - minimist "~ 1.2.0" - string.prototype.repeat "^0.2.0" - -compare-version@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" - -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - -component-emitter@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - -compress-commons@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.0.tgz#58587092ef20d37cb58baf000112c9278ff73b9f" - dependencies: - buffer-crc32 "^0.2.1" - crc32-stream "^2.0.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -compressible@~2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.10.tgz#feda1c7f7617912732b29bf8cf26252a20b9eecd" - dependencies: - mime-db ">= 1.27.0 < 2" - -compression@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" - dependencies: - accepts "~1.3.3" - bytes "2.3.0" - compressible "~2.0.8" - debug "~2.2.0" - on-headers "~1.0.1" - vary "~1.1.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.0.tgz#53f7d43c51c5e43f81c8fdd03321c631be68d611" - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" - -concat-stream@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-2.1.0.tgz#737a3a7036e9886102aa6099e47bb33ab1aba1a1" - dependencies: - dot-prop "^3.0.0" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - object-assign "^4.0.1" - os-tmpdir "^1.0.0" - osenv "^0.1.0" - uuid "^2.0.1" - write-file-atomic "^1.1.2" - xdg-basedir "^2.0.0" - -connect-history-api-fallback@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" - -connect@^3.3.5: - version "3.6.1" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.1.tgz#b7760693a74f0454face1d9378edb3f885b43227" - dependencies: - debug "2.6.3" - finalhandler "1.0.1" - parseurl "~1.3.1" - utils-merge "1.0.0" - -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - -content-type@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - -convert-source-map@^1.1.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - -core-js@^2.1.0, core-js@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.3.tgz#952771eb0dddc1cb3fa2f6fbe51a522e93b3ee0a" - dependencies: - is-directory "^0.3.1" - js-yaml "^3.4.3" - minimist "^1.2.0" - object-assign "^4.1.0" - os-homedir "^1.0.1" - parse-json "^2.2.0" - require-from-string "^1.1.0" - -counterpart@Nordgedanken/counterpart#develop: - version "0.17.8" - resolved "https://codeload.github.com/Nordgedanken/counterpart/tar.gz/63dadf4d3d809b41f2a62e407462c5fbbc62cece" - dependencies: - date-names "^0.1.8" - except "^0.1.3" - extend "^3.0.1" - pluralizers "^0.1.5" - sprintf-js "^1.1.0" - -cpx@^1.3.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" - dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" - -crc32-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - dependencies: - crc "^3.4.4" - readable-stream "^2.0.0" - -crc@^3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" - -create-error-class@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - dependencies: - capture-stack-trace "^1.0.0" - -cross-env@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-4.0.0.tgz#16083862d08275a4628b0b243b121bedaa55dd80" - dependencies: - cross-spawn "^5.1.0" - is-windows "^1.0.0" - -cross-spawn@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-browserify@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.3.0.tgz#b9fc75bb4a0ed61dcf1cd5dae96eb30c9c3e506c" - dependencies: - browserify-aes "0.4.0" - pbkdf2-compat "2.0.1" - ripemd160 "0.2.0" - sha.js "2.2.6" - -css-raw-loader@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-raw-loader/-/css-raw-loader-0.1.1.tgz#40391ffd18bdb5cc01036e88fdf97de40982708d" - dependencies: - clean-css "^3.2.10" - loader-utils "~0.2.7" - source-list-map "~0.1.5" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - 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.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" - -cuint@^0.2.1, cuint@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - 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" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -date-names@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/date-names/-/date-names-0.1.8.tgz#56c916622b658f60185c998719419084c0b0db4b" - -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - -debug@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - -debug@2.2.0, debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -debug@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" - dependencies: - ms "0.7.2" - -debug@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" - dependencies: - ms "0.7.2" - -debug@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" - dependencies: - ms "0.7.2" - -debug@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" - dependencies: - ms "0.7.2" - -debug@2.6.4: - version "2.6.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" - dependencies: - ms "0.7.3" - -debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.2, debug@^2.6.0, debug@^2.6.6: - version "2.6.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" - dependencies: - ms "0.7.3" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-extend@~0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -define-properties@^1.1.2, define-properties@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -depd@1.1.0, depd@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - -diff@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" - -disposables@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/disposables/-/disposables-1.0.1.tgz#064727a25b54f502bd82b89aa2dfb8df9f1b39e3" - -dnd-core@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-2.4.0.tgz#c4a5bc2aea75164f8a295d769d5f551810e7d411" - dependencies: - asap "^2.0.3" - invariant "^2.0.0" - lodash "^4.2.0" - redux "^3.2.0" - -doctrine@1.2.3, doctrine@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.2.3.tgz#6aec6bbd62cf89dd498cae70c0ed9f49da873a6a" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -dom-converter@~0.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" - dependencies: - utila "~0.3" - -dom-serialize@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - -dom-serializer@0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - dependencies: - domelementtype "~1.1.1" - entities "~1.1.1" - -domain-browser@^1.1.1: - version "1.1.7" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" - -domelementtype@1, domelementtype@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - -domelementtype@~1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - -domhandler@2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - dependencies: - domelementtype "1" - -domhandler@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" - dependencies: - domelementtype "1" - -domutils@1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" - dependencies: - dom-serializer "0" - domelementtype "1" - -dot-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" - dependencies: - is-obj "^1.0.0" - -draft-js-export-html@^0.5.0: - version "0.5.4" - resolved "https://registry.yarnpkg.com/draft-js-export-html/-/draft-js-export-html-0.5.4.tgz#e24927da3efe6f3df17f1d7606a9dc6141dbf72d" - dependencies: - draft-js-utils "^0.1.5" - -draft-js-export-markdown@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/draft-js-export-markdown/-/draft-js-export-markdown-0.2.2.tgz#5b0a1a10591d8b96199dcb70b04b1ab7deb72a33" - dependencies: - draft-js-utils "^0.1.5" - -draft-js-utils@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/draft-js-utils/-/draft-js-utils-0.1.7.tgz#e2b6927ca620edf1855a4bfc1cf1d21080a70f16" - -draft-js@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/draft-js/-/draft-js-0.8.1.tgz#484256414c963dd1f5309700ddada10f2aa1f6ff" - dependencies: - fbjs "^0.8.3" - immutable "~3.7.4" - object-assign "^4.1.0" - -duplexer2@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - dependencies: - readable-stream "^2.0.2" - -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.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" - -electron-builder-core@11.2.1, electron-builder-core@~11.2.1: - version "11.2.1" - resolved "https://registry.yarnpkg.com/electron-builder-core/-/electron-builder-core-11.2.1.tgz#1dca8c1a1cee8b51750b7708a04913aeffacf8a8" - -electron-builder-http@11.5.0, electron-builder-http@~11.5.0: - version "11.5.0" - resolved "https://registry.yarnpkg.com/electron-builder-http/-/electron-builder-http-11.5.0.tgz#b77396634903444329eda3bbcd02321440e06038" - dependencies: - debug "2.6.0" - fs-extra-p "^3.1.0" - -electron-builder-squirrel-windows@^11.2.1: - version "11.6.1" - resolved "https://registry.yarnpkg.com/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-11.6.1.tgz#a51612d28883b9eb0af0842e3eb26844cf5a6a52" - dependencies: - archiver "^1.3.0" - bluebird-lst-c "^1.0.6" - electron-builder-core "~11.2.1" - electron-builder-util "~11.6.1" - fs-extra-p "^3.1.0" - -electron-builder-util@11.6.1, electron-builder-util@~11.6.1: - version "11.6.1" - resolved "https://registry.yarnpkg.com/electron-builder-util/-/electron-builder-util-11.6.1.tgz#0f556f67a70e4c8d75185569ef2a7566db015ecc" - dependencies: - "7zip-bin" "^2.0.4" - bluebird-lst-c "^1.0.6" - chalk "^1.1.3" - debug "2.6.0" - electron-builder-http "~11.5.0" - fs-extra-p "^3.1.0" - is-ci "^1.0.10" - node-emoji "^1.5.1" - source-map-support "^0.4.10" - stat-mode "^0.2.2" - -electron-builder@^11.2.4: - version "11.7.0" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-11.7.0.tgz#d52912f6e84ac52a065de197a92def931bd9dc25" - dependencies: - "7zip-bin" "^2.0.4" - asar-electron-builder "^0.13.5" - bluebird-lst-c "^1.0.6" - chalk "^1.1.3" - chromium-pickle-js "^0.2.0" - cuint "^0.2.2" - electron-builder-core "11.2.1" - electron-builder-http "11.5.0" - electron-builder-util "11.6.1" - electron-download-tf "3.1.0" - electron-macos-sign "~1.5.0" - fs-extra-p "^3.1.0" - hosted-git-info "^2.1.5" - ini "^1.3.4" - is-ci "^1.0.10" - isbinaryfile "^3.0.2" - js-yaml "^3.7.0" - mime "^1.3.4" - minimatch "^3.0.3" - normalize-package-data "^2.3.5" - parse-color "^1.0.0" - plist "^2.0.1" - progress "^1.1.8" - sanitize-filename "^1.6.1" - semver "^5.3.0" - tunnel-agent "^0.4.3" - update-notifier "^1.0.3" - uuid-1345 "^0.99.6" - yargs "^6.6.0" - -electron-download-tf@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/electron-download-tf/-/electron-download-tf-3.1.0.tgz#c6d62c0e0a4c63b67295f57b6b66514c13b8ed8d" - dependencies: - debug "^2.3.2" - fs-extra "^1.0.0" - minimist "^1.2.0" - nugget "^2.0.1" - path-exists "^3.0.0" - rc "^1.1.6" - semver "^5.3.0" - sumchecker "^1.2.0" - -electron-macos-sign@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/electron-macos-sign/-/electron-macos-sign-1.5.0.tgz#fe3a8acb755b5f568f1fe144e9e66cee44019448" - dependencies: - bluebird "^3.4.7" - compare-version "^0.1.2" - debug "^2.6.0" - isbinaryfile "^3.0.2" - plist "^2.0.1" - -electron-to-chromium@^1.2.7: - version "1.3.9" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.9.tgz#db1cba2a26aebcca2f7f5b8b034554468609157d" - -emojione@2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/emojione/-/emojione-2.2.3.tgz#04383203bf51e6a6c00f1fbddc3309e9543ce78f" - -emojione@^2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/emojione/-/emojione-2.2.7.tgz#46457cf6b9b2f8da13ae8a2e4e547de06ee15e96" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - -encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" - -engine.io-client@~1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.4.tgz#9fe85dee25853ca6babe25bd2ad68710863e91c2" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "2.3.3" - engine.io-parser "1.3.2" - has-cors "1.1.0" - indexof "0.0.1" - parsejson "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - ws "1.1.2" - xmlhttprequest-ssl "1.5.3" - yeast "0.1.2" - -engine.io-parser@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary "0.1.7" - wtf-8 "1.0.0" - -engine.io@~1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.4.tgz#77bce12b80e5d60429337fec3b0daf691ebc9003" - dependencies: - accepts "1.3.3" - base64id "1.0.0" - cookie "0.3.1" - debug "2.3.3" - engine.io-parser "1.3.2" - ws "1.1.4" - -enhanced-resolve@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.2.0" - tapable "^0.1.8" - -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - -entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" - -errno@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.6.1, es-abstract@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.16" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.16.tgz#1ef1b04f3d09db6a5d630226d62202f2e425e45a" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-promise@^4.0.5, es6-promise@~4.0.3: - version "4.0.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.0.5.tgz#7882f30adde5b240ccfa7f7d78c548330951ae42" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@1.0.2, escape-string-regexp@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" - -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" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.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" - -eslint-plugin-flowtype@^2.30.0: - version "2.32.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.32.1.tgz#bbee185dedf97e5f63ec975cdcddd199bd2a2501" - dependencies: - lodash "^4.15.0" - -eslint-plugin-react@^6.9.0: - version "6.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" - dependencies: - array.prototype.find "^2.0.1" - doctrine "^1.2.2" - has "^1.0.1" - jsx-ast-utils "^1.3.4" - object.assign "^4.0.4" - -eslint@^3.14.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - -espree@^3.4.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" - dependencies: - acorn "^5.0.1" - acorn-jsx "^3.0.0" - -esprima@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esquery@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" - dependencies: - estraverse "~4.1.0" - object-assign "^4.0.1" - -estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -estraverse@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" - -esutils@^2.0.0, esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -eventsource@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" - dependencies: - original ">=0.0.5" - -except@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/except/-/except-0.1.3.tgz#98261c91958551536b44482238e9783fb73d292a" - dependencies: - indexof "0.0.1" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - -expand-braces@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" - dependencies: - array-slice "^0.2.3" - array-unique "^0.2.1" - braces "^0.1.2" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" - dependencies: - is-number "^0.1.1" - repeat-string "^0.2.2" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expect@^1.16.0: - version "1.20.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-1.20.2.tgz#d458fe4c56004036bae3232416a3f6361f04f965" - dependencies: - define-properties "~1.1.2" - has "^1.0.1" - is-equal "^1.5.1" - is-regex "^1.0.3" - object-inspect "^1.1.0" - object-keys "^1.0.9" - tmatch "^2.0.1" - -express@^4.13.3: - version "4.15.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" - dependencies: - accepts "~1.3.3" - array-flatten "1.1.1" - content-disposition "0.5.2" - content-type "~1.0.2" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.1" - depd "~1.1.0" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - finalhandler "~1.0.0" - fresh "0.5.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.1" - path-to-regexp "0.1.7" - proxy-addr "~1.1.3" - qs "6.4.0" - range-parser "~1.2.0" - send "0.15.1" - serve-static "1.12.1" - setprototypeof "1.0.3" - statuses "~1.3.1" - type-is "~1.6.14" - utils-merge "1.0.0" - vary "~1.1.0" - -extend@^3.0.0, extend@^3.0.1, extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extract-text-webpack-plugin@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-0.9.1.tgz#ef6dc508cb35ed0dcf8a4009abbe853f7a7622b5" - dependencies: - async "^1.5.0" - loader-utils "^0.2.3" - -extract-zip@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.5.0.tgz#92ccf6d81ef70a9fa4c1747114ccef6d8688a6c4" - dependencies: - concat-stream "1.5.0" - debug "0.7.4" - mkdirp "0.5.0" - yauzl "2.4.1" - -extsprintf@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -favico.js@^0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/favico.js/-/favico.js-0.3.10.tgz#80586e27a117f24a8d51c18a99bdc714d4339301" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - dependencies: - websocket-driver ">=0.5.1" - -fbjs@^0.8.3, fbjs@^0.8.4, fbjs@^0.8.9: - version "0.8.12" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.9" - -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - dependencies: - pend "~1.2.0" - -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-saver@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-1.3.3.tgz#cdd4c44d3aa264eac2f68ec165bc791c34af1232" - -file@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/file/-/file-0.2.2.tgz#c3dfd8f8cf3535ae455c2b423c2e52635d76b4d3" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -filesize@3.5.6: - version "3.5.6" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.6.tgz#5fd98f3eac94ec9516ef8ed5782fad84a01a0a1a" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -filled-array@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" - -finalhandler@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" - dependencies: - debug "2.6.3" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" - -finalhandler@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.2.tgz#d0e36f9dbc557f2de14423df6261889e9d60c93a" - dependencies: - debug "2.6.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.1" - statuses "~1.3.1" - unpipe "~1.0.0" - -find-cache-dir@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" - dependencies: - commondir "^1.0.1" - mkdirp "^0.5.1" - pkg-dir "^1.0.0" - -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - -find-parent-dir@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -flux@^2.0.3, flux@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/flux/-/flux-2.0.3.tgz#787e1aedffb34a322a60b49c57a2d23856a6de27" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -forwarded@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" - -fresh@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" - -fs-access@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" - dependencies: - null-check "^1.0.0" - -fs-extra-p@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-3.1.0.tgz#eddf7bb8d9385d79014decb21f45b1d0c57900d3" - dependencies: - bluebird-lst-c "^1.0.6" - fs-extra "^2.0.0" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^1.0.0, fs-extra@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs-extra@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - -fs-readdir-recursive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.29" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.0.2, function-bind@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" - -fuse.js@^2.2.0: - version "2.7.4" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-2.7.4.tgz#96e420fde7ef011ac49c258a621314fe576536f9" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gemini-scrollbar@matrix-org/gemini-scrollbar#91e1e566: - version "1.4.3" - resolved "https://codeload.github.com/matrix-org/gemini-scrollbar/tar.gz/91e1e566" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -gfm.css@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/gfm.css/-/gfm.css-1.1.1.tgz#16b0ef08637f2495b66c84c5024593d71ebeac46" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - 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" - dependencies: - is-glob "^2.0.0" - -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - dependencies: - find-index "^0.1.1" - -glob@3.2.11: - version "3.2.11" - resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" - dependencies: - inherits "2" - minimatch "0.3" - -glob@^5.0.14: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.0.0, globals@^9.14.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -got@^5.0.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-5.7.1.tgz#5f81635a61e4a6589f180569ea4e381680a51f35" - dependencies: - create-error-class "^3.0.1" - duplexer2 "^0.1.4" - is-redirect "^1.0.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - lowercase-keys "^1.0.0" - node-status-codes "^1.0.0" - object-assign "^4.0.1" - parse-json "^2.1.0" - pinkie-promise "^2.0.0" - read-all-stream "^3.0.0" - readable-stream "^2.0.5" - timed-out "^3.0.0" - unzip-response "^1.0.2" - url-parse-lax "^1.0.0" - -graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-binary@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" - dependencies: - isarray "0.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" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hasha@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-2.2.0.tgz#78d7cbfc1e6d66303fe79837365984517b2f6ee1" - dependencies: - is-stream "^1.0.1" - pinkie-promise "^2.0.0" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -he@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - -highlight.js@^8.9.1: - version "8.9.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" - -highlight.js@^9.0.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.11.0.tgz#47f98c7399918700db2caf230ded12cec41a84ae" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -hoist-non-react-statics@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" - -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" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4, hosted-git-info@^2.1.5: - version "2.4.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" - -html-minifier@^3.2.3: - version "3.4.4" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.4.4.tgz#616fe3e3ef16da02b393d9a6099eeff468a35df0" - dependencies: - camel-case "3.0.x" - clean-css "4.0.x" - commander "2.9.x" - he "1.1.x" - ncname "1.0.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "~2.8.22" - -html-webpack-plugin@^2.24.0: - version "2.28.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.28.0.tgz#2e7863b57e5fd48fe263303e2ffc934c3064d009" - dependencies: - bluebird "^3.4.7" - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - toposort "^1.0.0" - -htmlparser2@^3.9.0: - version "3.9.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" - dependencies: - domelementtype "^1.3.0" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^2.0.2" - -htmlparser2@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - dependencies: - domelementtype "1" - domhandler "2.1" - domutils "1.1" - readable-stream "1.0" - -http-errors@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" - dependencies: - inherits "2.0.3" - setprototypeof "1.0.2" - statuses ">= 1.3.1 < 2" - -http-errors@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" - dependencies: - depd "1.1.0" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - -http-proxy-middleware@~0.17.1: - version "0.17.4" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" - dependencies: - http-proxy "^1.16.2" - is-glob "^3.1.0" - lodash "^4.17.2" - micromatch "^2.3.11" - -http-proxy@^1.13.0, http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" - dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" - -iconv-lite@0.4.15, iconv-lite@~0.4.13: - version "0.4.15" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" - -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - -ignore@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.0.tgz#3812d22cbe9125f2c2b4915755a1b8abd745a001" - -immutable@~3.7.4: - version "3.7.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@^1.3.4, ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -interpret@^0.6.4: - version "0.6.6" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b" - -interpret@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" - -invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -ipaddr.js@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-arrow-function@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-arrow-function/-/is-arrow-function-2.0.3.tgz#29be2c2d8d9450852b8bbafb635ba7b8d8e87ec2" - dependencies: - is-callable "^1.0.4" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.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" - -is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.0.4, is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-ci@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - dependencies: - ci-info "^1.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - -is-dotfile@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" - -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" - dependencies: - is-primitive "^2.0.0" - -is-equal@^1.5.1: - version "1.5.5" - resolved "https://registry.yarnpkg.com/is-equal/-/is-equal-1.5.5.tgz#5e85f1957e052883247feb386965a3bba15fbb3d" - dependencies: - has "^1.0.1" - is-arrow-function "^2.0.3" - is-boolean-object "^1.0.0" - is-callable "^1.1.3" - is-date-object "^1.0.1" - is-generator-function "^1.0.6" - is-number-object "^1.0.3" - is-regex "^1.0.3" - is-string "^1.0.4" - is-symbol "^1.0.1" - object.entries "^1.0.4" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-extglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - 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" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-generator-function@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.6.tgz#9e71653cd15fff341c79c4151460a131d31e9fc4" - -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" - 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" - dependencies: - is-extglob "^2.1.0" - -is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-npm@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - -is-number-object@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.3.tgz#f265ab89a9f445034ef6aff15a8f00b00f551799" - -is-number@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" - -is-number@^2.0.2, is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - dependencies: - path-is-inside "^1.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" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-redirect@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - -is-regex@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-resolvable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" - dependencies: - tryit "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - -is-stream@^1.0.0, is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-string@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -is-windows@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -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" - -isbinaryfile@^3.0.0, isbinaryfile@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -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" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -jade@0.26.3: - version "0.26.3" - resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" - dependencies: - commander "0.6.1" - mkdirp "0.3.0" - -jodid25519@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" - dependencies: - jsbn "~0.1.0" - -"jquery@>= 1.4.3", jquery@>=1.9.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" - -js-base64@^2.1.9: - version "2.1.9" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" - -js-tokens@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" - -js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0: - version "3.8.4" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" - dependencies: - argparse "^1.0.7" - esprima "^3.1.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-loader@^0.5.3: - version "0.5.4" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json3@3.3.2, json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsprim@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" - dependencies: - assert-plus "1.0.0" - extsprintf "1.0.2" - json-schema "0.2.3" - verror "1.3.6" - -jsx-ast-utils@^1.3.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" - -karma-chrome-launcher@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz#4c6d700d163a9d34c618efd87918be49e7a4a8c9" - dependencies: - fs-access "^1.0.0" - which "^1.2.1" - -karma-cli@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-0.1.2.tgz#cacea84371ece19876265c8fa102ebbb9fee4a8c" - dependencies: - resolve "^1.1.6" - -karma-junit-reporter@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/karma-junit-reporter/-/karma-junit-reporter-0.4.2.tgz#492a236728fe4c92aacf419fcd0110a4327e9d7f" - dependencies: - path-is-absolute "^1.0.0" - xmlbuilder "3.1.0" - -karma-mocha@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-0.2.2.tgz#388ed917da15dcb196d1b915c1934ef803193f8e" - -karma-phantomjs-launcher@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/karma-phantomjs-launcher/-/karma-phantomjs-launcher-1.0.4.tgz#d23ca34801bda9863ad318e3bb4bd4062b13acd2" - dependencies: - lodash "^4.0.1" - phantomjs-prebuilt "^2.1.7" - -karma-webpack@^1.7.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-1.8.1.tgz#39d5fd2edeea3cc3ef5b405989b37d5b0e6a3b4e" - dependencies: - async "~0.9.0" - loader-utils "^0.2.5" - lodash "^3.8.0" - source-map "^0.1.41" - webpack-dev-middleware "^1.0.11" - -karma@^0.13.22: - version "0.13.22" - resolved "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz#07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744" - dependencies: - batch "^0.5.3" - bluebird "^2.9.27" - body-parser "^1.12.4" - chokidar "^1.4.1" - colors "^1.1.0" - connect "^3.3.5" - core-js "^2.1.0" - di "^0.0.1" - dom-serialize "^2.2.0" - expand-braces "^0.1.1" - glob "^7.0.0" - graceful-fs "^4.1.2" - http-proxy "^1.13.0" - isbinaryfile "^3.0.0" - lodash "^3.8.0" - log4js "^0.6.31" - mime "^1.3.4" - minimatch "^3.0.0" - optimist "^0.6.1" - rimraf "^2.3.3" - socket.io "^1.4.5" - source-map "^0.5.3" - useragent "^2.1.6" - -kew@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" - -kind-of@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" - dependencies: - is-buffer "^1.1.5" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -latest-version@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-2.0.0.tgz#56f8d6139620847b8017f8f1f4d78e211324168b" - dependencies: - package-json "^2.0.0" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lazy-req@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-1.1.0.tgz#bdaebead30f8d824039ce0ce149d4daa07ba1fac" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -linkifyjs@^2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-2.1.4.tgz#b04aac3f327afc871deb205546f612d80bd784b5" - optionalDependencies: - jquery ">=1.9.0" - react ">=0.14.0" - react-dom ">=0.14.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -loader-utils@^0.2.11, loader-utils@^0.2.16, loader-utils@^0.2.3, loader-utils@^0.2.5, loader-utils@~0.2.2, loader-utils@~0.2.7: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -loader-utils@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -lodash-es@^4.2.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.4.tgz#dcc1d7552e150a0640073ba9cb31d70f032950e7" - -lodash.assign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - -lodash.pickby@^4.0.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - -lodash@4.17.4, lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -lodash@^3.5.0, lodash@^3.8.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -log4js@^0.6.31: - version "0.6.38" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" - dependencies: - readable-stream "~1.0.2" - semver "~4.3.3" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - -lowercase-keys@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - -lru-cache@2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" - -lru-cache@2.2.x: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" - -lru-cache@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -macaddress@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - -matrix-js-sdk@matrix-org/matrix-js-sdk#develop: - version "0.7.7" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/6021c1c6b11d8bad2b38ce1d70c9d4ff27f17f9c" - dependencies: - another-json "^0.2.0" - browser-request "^0.3.3" - q "^1.4.1" - request "^2.53.0" - optionalDependencies: - olm "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz" - -matrix-react-sdk@matrix-org/matrix-react-sdk#develop: - version "0.8.8" - resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/8a76c0c14207797bf9f41398e6f55708f8513f22" - dependencies: - babel-runtime "^6.11.6" - blueimp-canvas-to-blob "^3.5.0" - browser-encrypt-attachment "^0.3.0" - browser-request "^0.3.3" - classnames "^2.1.2" - commonmark "^0.27.0" - draft-js "^0.8.1" - draft-js-export-html "^0.5.0" - draft-js-export-markdown "^0.2.0" - emojione "2.2.3" - file-saver "^1.3.3" - filesize "3.5.6" - flux "^2.0.3" - fuse.js "^2.2.0" - glob "^5.0.14" - highlight.js "^8.9.1" - isomorphic-fetch "^2.2.1" - linkifyjs "^2.1.3" - lodash "^4.13.1" - matrix-js-sdk matrix-org/matrix-js-sdk#develop - optimist "^0.6.1" - prop-types "^15.5.8" - q "^1.4.1" - react "^15.4.0" - react-addons-css-transition-group "15.3.2" - react-dom "^15.4.0" - react-gemini-scrollbar matrix-org/react-gemini-scrollbar#39d858c - sanitize-html "^1.11.1" - text-encoding-utf-8 "^1.0.1" - velocity-vector vector-im/velocity#059e3b2 - whatwg-fetch "^1.0.0" - -"mdurl@~ 1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -memory-fs@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.2.0.tgz#f2bb25368bc121e391c2520de92969caee0a0290" - -memory-fs@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -meow@^3.1.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -micromatch@^2.1.5, micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - 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" - -"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - dependencies: - mime-db "~1.27.0" - -mime@1.3.4, mime@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - -minimatch@0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" - dependencies: - lru-cache "2" - sigmund "~1.0.0" - -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, "minimist@~ 1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -mkdirp@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" - -mkdirp@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" - dependencies: - minimist "0.0.8" - -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -mocha@^2.4.5: - version "2.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" - dependencies: - commander "2.3.0" - debug "2.2.0" - diff "1.4.0" - escape-string-regexp "1.0.2" - glob "3.2.11" - growl "1.9.2" - jade "0.26.3" - mkdirp "0.5.1" - supports-color "1.2.0" - to-iso-string "0.0.2" - -modernizr@^3.1.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/modernizr/-/modernizr-3.5.0.tgz#396a02231bdc54628bbde2c0813a8e884c7e8060" - dependencies: - doctrine "1.2.3" - file "0.2.2" - find-parent-dir "0.3.0" - lodash "4.17.4" - mkdirp "0.5.1" - remarkable "^1.6.2" - requirejs "2.1.22" - yargs "7.0.2" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" - -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - -nan@^2.3.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - dependencies: - xml-char-classes "^1.0.0" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -no-case@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081" - dependencies: - lower-case "^1.1.1" - -node-emoji@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.5.1.tgz#fd918e412769bf8c448051238233840b2aff16a1" - dependencies: - string.prototype.codepointat "^0.2.0" - -node-fetch@^1.0.1: - version "1.6.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-libs-browser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-0.7.0.tgz#3e272c0819e308935e26674408d7af0e1491b83b" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.1.4" - buffer "^4.9.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "3.3.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "0.0.1" - os-browserify "^0.2.0" - path-browserify "0.0.0" - process "^0.11.0" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.0.5" - stream-browserify "^2.0.1" - stream-http "^2.3.1" - string_decoder "^0.10.25" - timers-browserify "^2.0.2" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.6.29: - version "0.6.34" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -node-status-codes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: - version "2.3.8" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - -npmlog@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.0.tgz#dc59bee85f64f00ed424efb2af0783df25d1c0b5" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" - dependencies: - boolbase "~1.0.0" - -nugget@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" - dependencies: - debug "^2.1.3" - minimist "^1.1.0" - pretty-bytes "^1.0.2" - progress-stream "^1.1.0" - request "^2.45.0" - single-line-log "^1.1.2" - throttleit "0.0.2" - -null-check@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - -object-inspect@^1.1.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.2.2.tgz#c82115e4fcc888aea14d64c22e4f17f6a70d5e5a" - -object-keys@^1.0.10, object-keys@^1.0.8, object-keys@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - -object.assign@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - object-keys "^1.0.10" - -object.entries@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.6.1" - function-bind "^1.1.0" - has "^1.0.1" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -"olm@https://matrix.org/packages/npm/olm/olm-2.2.1.tgz": - version "2.2.1" - resolved "https://matrix.org/packages/npm/olm/olm-2.2.1.tgz#5e5db50d0a142b7c7a0650d9b3d8acc3d37e697b" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@^1.3.0, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - -open@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" - -optimist@^0.6.1, optimist@~0.6.0, optimist@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - -original@>=0.0.5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" - dependencies: - url-parse "1.0.x" - -os-browserify@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" - -os-homedir@^1.0.0, os-homedir@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.0, osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -output-file-sync@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" - dependencies: - graceful-fs "^4.1.4" - mkdirp "^0.5.1" - object-assign "^4.1.0" - -package-json@^2.0.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb" - dependencies: - got "^5.0.0" - registry-auth-token "^3.0.1" - registry-url "^3.0.3" - semver "^5.1.0" - -pako@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.5.tgz#d2205dfe5b9da8af797e7c163db4d1f84e4600bc" - -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - -parallelshell@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallelshell/-/parallelshell-1.2.0.tgz#df114c05e9c8eba92dc5607c5eb1e1ff04a2e17c" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - dependencies: - no-case "^2.2.0" - -parse-color@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" - dependencies: - color-convert "~0.5.0" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.1.0, parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parsejson@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" - dependencies: - better-assert "~1.0.0" - -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - dependencies: - better-assert "~1.0.0" - -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - dependencies: - better-assert "~1.0.0" - -parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -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" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -pbkdf2-compat@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288" - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -phantomjs-prebuilt@^2.1.7: - version "2.1.14" - resolved "https://registry.yarnpkg.com/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz#d53d311fcfb7d1d08ddb24014558f1188c516da0" - dependencies: - es6-promise "~4.0.3" - extract-zip "~1.5.0" - fs-extra "~1.0.0" - hasha "~2.2.0" - kew "~0.7.0" - progress "~1.1.8" - request "~2.79.0" - request-progress "~2.0.1" - which "~1.2.10" - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -plist@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/plist/-/plist-2.1.0.tgz#57ccdb7a0821df21831217a3cad54e3e146a1025" - dependencies: - base64-js "1.2.0" - xmlbuilder "8.2.2" - xmldom "0.1.x" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - -pluralizers@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/pluralizers/-/pluralizers-0.1.5.tgz#9b5de28afe16b92c9c056cdf5100acddd752be0d" - -postcss-extend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7" - dependencies: - postcss "^5.0.4" - -postcss-import@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-9.1.0.tgz#95fe9876a1e79af49fbdc3589f01fe5aa7cc1e80" - dependencies: - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - promise-each "^2.2.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-0.2.0.tgz#56e6db0cd910a6dffec3dfb34462693ac72e3882" - dependencies: - camelcase-css "^1.0.1" - postcss "^5.2.6" - -postcss-load-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - postcss-load-options "^1.2.0" - postcss-load-plugins "^2.3.0" - -postcss-load-options@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" - dependencies: - cosmiconfig "^2.1.0" - object-assign "^4.1.0" - -postcss-load-plugins@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" - dependencies: - cosmiconfig "^2.1.1" - object-assign "^4.1.0" - -postcss-loader@^1.2.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-1.3.3.tgz#a621ea1fa29062a83972a46f54486771301916eb" - dependencies: - loader-utils "^1.0.2" - object-assign "^4.1.1" - postcss "^5.2.15" - postcss-load-config "^1.2.0" - -postcss-mixins@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-5.4.1.tgz#004c0acc54328b86bbcb3471f9eb3b52ed70f4a8" - dependencies: - globby "^6.1.0" - postcss "^5.2.6" - postcss-js "^0.2.0" - postcss-simple-vars "^3.0.0" - sugarss "^0.2.0" - -postcss-nested@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-1.0.1.tgz#91f28f4e6e23d567241ac154558a0cfab4cc0d8f" - dependencies: - postcss "^5.2.17" - -postcss-scss@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-0.4.1.tgz#ad771b81f0f72f5f4845d08aa60f93557653d54c" - dependencies: - postcss "^5.2.13" - -postcss-simple-vars@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-3.1.0.tgz#62c0657214ef1f43a3c5893ade89de414f31b6ff" - dependencies: - postcss "^5.2.16" - -postcss-strip-inline-comments@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/postcss-strip-inline-comments/-/postcss-strip-inline-comments-0.1.5.tgz#7ff6bcdc14e633ed4cdfa020bae3eddad4f84b90" - dependencies: - postcss "^5.0.18" - -postcss-value-parser@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" - -postcss@^5.0.14, postcss@^5.0.18, postcss@^5.0.4, postcss@^5.2.13, postcss@^5.2.15, postcss@^5.2.16, postcss@^5.2.17, postcss@^5.2.4, postcss@^5.2.6: - version "5.2.17" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.17.tgz#cf4f597b864d65c8a492b2eabe9d706c879c388b" - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-bytes@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" - dependencies: - get-stdin "^4.0.1" - meow "^3.1.0" - -pretty-error@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.0.tgz#87f4e9d706a24c87d6cbee9fabec001fcf8c75d8" - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -private@^0.1.6: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@^0.11.0: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - -progress-stream@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" - dependencies: - speedometer "~0.1.2" - through2 "~0.2.3" - -progress@^1.1.8, progress@~1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -promise-each@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/promise-each/-/promise-each-2.2.0.tgz#3353174eff2694481037e04e01f77aa0fb6d1b60" - dependencies: - any-promise "^0.1.0" - -promise@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf" - dependencies: - asap "~2.0.3" - -prop-types@^15.5.7, prop-types@^15.5.8, prop-types@~15.5.7: - version "15.5.9" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.9.tgz#d478eef0e761396942f70c78e772f76e8be747c9" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - -proxy-addr@~1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" - dependencies: - forwarded "~0.1.0" - ipaddr.js "1.3.0" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -punycode@1.3.2, punycode@^1.2.4: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -q@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" - -qs@6.4.0, qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - -querystringify@0.0.x: - version "0.0.4" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" - -querystringify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" - -randomatic@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" - dependencies: - is-number "^2.0.2" - kind-of "^3.0.2" - -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - -raw-body@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.15" - unpipe "1.0.0" - -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-addons-css-transition-group@15.3.2: - version "15.3.2" - resolved "https://registry.yarnpkg.com/react-addons-css-transition-group/-/react-addons-css-transition-group-15.3.2.tgz#d8fa52bec9bb61bdfde8b9e4652b80297cbff667" - -react-addons-perf@^15.4.0: - version "15.4.2" - resolved "https://registry.yarnpkg.com/react-addons-perf/-/react-addons-perf-15.4.2.tgz#110bdcf5c459c4f77cb85ed634bcd3397536383b" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-addons-test-utils@^15.4.0: - version "15.5.1" - resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.5.1.tgz#e0d258cda2a122ad0dff69f838260d0c3958f5f7" - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-dnd-html5-backend@^2.1.2: - version "2.4.1" - resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-2.4.1.tgz#439d2bcaf8bd8b87a51386beb51c128826182ddd" - dependencies: - lodash "^4.2.0" - -react-dnd@^2.1.4: - version "2.4.0" - resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-2.4.0.tgz#96f0042cd4cd375b4f0c3413f6ec84d267b7d792" - dependencies: - disposables "^1.0.1" - dnd-core "^2.4.0" - hoist-non-react-statics "^1.2.0" - invariant "^2.1.0" - lodash "^4.2.0" - prop-types "^15.5.8" - -react-dom@>=0.14.0, react-dom@^15.4.0: - version "15.5.4" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.5.4.tgz#ba0c28786fd52ed7e4f2135fe0288d462aef93da" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "~15.5.7" - -react-gemini-scrollbar@matrix-org/react-gemini-scrollbar#39d858c: - version "2.1.5" - resolved "https://codeload.github.com/matrix-org/react-gemini-scrollbar/tar.gz/39d858c" - dependencies: - gemini-scrollbar matrix-org/gemini-scrollbar#91e1e566 - -react@>=0.14.0, react@^15.4.0: - version "15.5.4" - resolved "https://registry.yarnpkg.com/react/-/react-15.5.4.tgz#fa83eb01506ab237cdc1c8c3b1cea8de012bf047" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.7" - -read-all-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/read-all-stream/-/read-all-stream-3.1.0.tgz#35c3e177f2078ef789ee4bfafa4373074eaef4fa" - dependencies: - pinkie-promise "^2.0.0" - readable-stream "^2.0.0" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - dependencies: - pify "^2.3.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -readable-stream@1.0, readable-stream@~1.0.2: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: - version "2.2.9" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" - dependencies: - buffer-shims "~1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~1.0.0" - util-deprecate "~1.0.1" - -readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" - dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -redux@^3.2.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.6.0.tgz#887c2b3d0b9bd86eca2be70571c27654c19e188d" - dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.2" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.0: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regenerator-transform@0.9.11: - version "0.9.11" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.11.tgz#3a7d067520cb7b7176769eb5ff868691befe1283" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" - dependencies: - is-equal-shallow "^0.1.3" - is-primitive "^2.0.0" - -regexp-quote@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/regexp-quote/-/regexp-quote-0.0.0.tgz#1e0f4650c862dcbfed54fd42b148e9bb1721fcf2" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -registry-auth-token@^3.0.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" - dependencies: - rc "^1.1.6" - safe-buffer "^5.0.1" - -registry-url@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - dependencies: - rc "^1.0.1" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - -remarkable@^1.6.2: - version "1.7.1" - resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.1.tgz#aaca4972100b66a642a63a1021ca4bac1be3bff6" - dependencies: - argparse "~0.1.15" - autolinker "~0.15.0" - -remove-trailing-separator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" - -renderkid@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" - dependencies: - css-select "^1.1.0" - dom-converter "~0.1" - htmlparser2 "~3.3.0" - strip-ansi "^3.0.0" - utila "~0.3" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -request-progress@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" - dependencies: - throttleit "^1.0.0" - -request@^2.45.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@^2.53.0, request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -requirejs@2.1.22: - version "2.1.22" - resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.1.22.tgz#dd78fd2d34180c0d62c724b5b8aebc0664e0366f" - -requires-port@1.0.x, requires-port@1.x.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve@^1.1.6, resolve@^1.1.7: - version "1.3.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.3, rimraf@^2.5.1, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -ripemd160@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce" - -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - -safe-buffer@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - -sanitize-filename@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.1.tgz#612da1c96473fa02dccda92dcd5b4ab164a6772a" - dependencies: - truncate-utf8-bytes "^1.0.0" - -sanitize-html@^1.11.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.14.1.tgz#730ffa2249bdf18333effe45b286173c9c5ad0b8" - dependencies: - htmlparser2 "^3.9.0" - regexp-quote "0.0.0" - xtend "^4.0.0" - -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - dependencies: - semver "^5.0.3" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -semver@~4.3.3: - version "4.3.6" - resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" - -send@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" - dependencies: - debug "2.6.1" - depd "~1.1.0" - destroy "~1.0.4" - encodeurl "~1.0.1" - escape-html "~1.0.3" - etag "~1.8.0" - fresh "0.5.0" - http-errors "~1.6.1" - mime "1.3.4" - ms "0.7.2" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.3.1" - -serve-index@^1.7.2: - version "1.8.0" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" - dependencies: - accepts "~1.3.3" - batch "0.5.3" - debug "~2.2.0" - escape-html "~1.0.3" - http-errors "~1.5.0" - mime-types "~2.1.11" - parseurl "~1.3.1" - -serve-static@1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" - dependencies: - encodeurl "~1.0.1" - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.15.1" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -setprototypeof@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" - -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - -sha.js@2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - -shelljs@^0.7.5: - version "0.7.7" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -sigmund@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -single-line-log@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364" - dependencies: - string-width "^1.0.1" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -socket.io-adapter@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" - dependencies: - debug "2.3.3" - socket.io-parser "2.3.1" - -socket.io-client@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.4.tgz#ec9f820356ed99ef6d357f0756d648717bdd4281" - dependencies: - backo2 "1.0.2" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "2.3.3" - engine.io-client "~1.8.4" - has-binary "0.1.7" - indexof "0.0.1" - object-component "0.0.3" - parseuri "0.0.5" - socket.io-parser "2.3.1" - to-array "0.1.4" - -socket.io-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" - dependencies: - component-emitter "1.1.2" - debug "2.2.0" - isarray "0.0.1" - json3 "3.3.2" - -socket.io@^1.4.5: - version "1.7.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.4.tgz#2f7ecedc3391bf2d5c73e291fe233e6e34d4dd00" - dependencies: - debug "2.3.3" - engine.io "~1.8.4" - has-binary "0.1.7" - object-assign "4.1.0" - socket.io-adapter "0.5.0" - socket.io-client "1.7.4" - socket.io-parser "2.3.1" - -sockjs-client@^1.0.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" - dependencies: - debug "^2.6.6" - eventsource "0.1.6" - faye-websocket "~0.11.0" - inherits "^2.0.1" - json3 "^3.3.2" - url-parse "^1.1.8" - -sockjs@^0.3.15: - version "0.3.18" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207" - dependencies: - faye-websocket "^0.10.0" - uuid "^2.0.2" - -source-list-map@~0.1.5, source-list-map@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" - -source-map-loader@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.1.6.tgz#c09903da6d73b9e53b7ed8ee5245597051e98e91" - dependencies: - async "^0.9.0" - loader-utils "~0.2.2" - source-map "~0.1.33" - -source-map-support@^0.4.10, source-map-support@^0.4.2: - version "0.4.15" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1" - dependencies: - source-map "^0.5.6" - -source-map@0.4.x, source-map@~0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - -source-map@^0.1.41, source-map@~0.1.33: - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - dependencies: - amdefine ">=0.0.4" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -speedometer@~0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" - -sprintf-js@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.0.tgz#cffcaf702daf65ea39bb4e0fa2b299cec1a1be46" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jodid25519 "^1.0.0" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stat-mode@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" - -"statuses@>= 1.3.1 < 2", statuses@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-cache@~0.0.1: - version "0.0.2" - resolved "https://registry.yarnpkg.com/stream-cache/-/stream-cache-0.0.2.tgz#1ac5ad6832428ca55667dbdee395dad4e6db118f" - -stream-http@^2.3.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.1.tgz#546a51741ad5a6b07e9e31b0b10441a917df528a" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.2.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^3.0.0" - -string.prototype.codepointat@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz#6b26e9bd3afcaa7be3b4269b526de1b82000ac78" - -string.prototype.repeat@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" - -string_decoder@^0.10.25, string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" - dependencies: - buffer-shims "~1.0.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - dependencies: - minimist "^1.1.0" - -sugarss@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-0.2.0.tgz#ac34237563327c6ff897b64742bf6aec190ad39e" - dependencies: - postcss "^5.2.4" - -sumchecker@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" - dependencies: - debug "^2.2.0" - es6-promise "^4.0.5" - -supports-color@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -symbol-observable@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" - -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -tapable@^0.1.8, tapable@~0.1.8: - version "0.1.10" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.1.10.tgz#29c35707c2b70e50d07482b5d202e8ed446dafd4" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar-stream@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.2.tgz#fbc6c6e83c1a19d4cb48c7d96171fc248effc7bf" - dependencies: - bl "^1.0.0" - end-of-stream "^1.0.0" - readable-stream "^2.0.0" - xtend "^4.0.0" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -text-encoding-utf-8@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.1.tgz#51ea6c7a7eb2fb4f67467b763735661f5603492d" - -text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -throttleit@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" - -throttleit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" - -through2@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" - dependencies: - readable-stream "~1.1.9" - xtend "~2.1.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -timed-out@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217" - -timers-browserify@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" - dependencies: - setimmediate "^1.0.4" - -tmatch@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-2.0.1.tgz#0c56246f33f30da1b8d3d72895abaf16660f38cf" - -tmp@0.0.x: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - dependencies: - os-tmpdir "~1.0.1" - -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - -to-fast-properties@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -to-iso-string@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" - -toposort@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" - -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -truncate-utf8-bytes@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" - dependencies: - utf8-byte-length "^1.0.1" - -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - -tunnel-agent@^0.4.3, tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-is@~1.6.14: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray@^0.0.6, typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -ua-parser-js@^0.7.10, ua-parser-js@^0.7.9: - version "0.7.12" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" - -uglify-js@~2.7.3: - version "2.7.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" - dependencies: - async "~0.2.6" - source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" - -uglify-js@~2.8.22: - version "2.8.23" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.23.tgz#8230dd9783371232d62a7821e2cf9a817270a8a0" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - -underscore.string@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" - -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -unzip-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" - -update-notifier@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-1.0.3.tgz#8f92c515482bd6831b7c93013e70f87552c7cf5a" - dependencies: - boxen "^0.6.0" - chalk "^1.0.0" - configstore "^2.0.0" - is-npm "^1.0.0" - latest-version "^2.0.0" - lazy-req "^1.1.0" - semver-diff "^2.0.0" - xdg-basedir "^2.0.0" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - dependencies: - prepend-http "^1.0.1" - -url-parse@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" - dependencies: - querystringify "0.0.x" - requires-port "1.0.x" - -url-parse@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.9.tgz#c67f1d775d51f0a18911dd7b3ffad27bb9e5bd19" - dependencies: - querystringify "~1.0.0" - requires-port "1.0.x" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -user-home@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" - -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - -useragent@^2.1.6: - version "2.1.13" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10" - dependencies: - lru-cache "2.2.x" - tmp "0.0.x" - -utf8-byte-length@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -util@0.10.3, util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - -utila@~0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - -uuid-1345@^0.99.6: - version "0.99.6" - resolved "https://registry.yarnpkg.com/uuid-1345/-/uuid-1345-0.99.6.tgz#b1270ae015a7721c7adec6c46ec169c6098aed40" - dependencies: - macaddress "^0.2.7" - -uuid@^2.0.1, uuid@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" - -uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - -v8flags@^2.0.10: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" - dependencies: - user-home "^1.1.1" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -vary@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -velocity-vector@vector-im/velocity#059e3b2: - version "1.2.3" - resolved "https://codeload.github.com/vector-im/velocity/tar.gz/059e3b2" - dependencies: - jquery ">= 1.4.3" - -verror@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" - dependencies: - extsprintf "1.0.2" - -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - dependencies: - indexof "0.0.1" - -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - -walkdir@^0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532" - -watchpack@^0.2.1: - version "0.2.9" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-0.2.9.tgz#62eaa4ab5e5ba35fdfc018275626e3c0f5e3fb0b" - dependencies: - async "^0.9.0" - chokidar "^1.0.0" - graceful-fs "^4.1.2" - -webpack-core@~0.6.9: - version "0.6.9" - resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" - dependencies: - source-list-map "~0.1.7" - source-map "~0.4.1" - -webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.10.2.tgz#2e252ce1dfb020dbda1ccb37df26f30ab014dbd1" - dependencies: - memory-fs "~0.4.1" - mime "^1.3.4" - path-is-absolute "^1.0.0" - range-parser "^1.0.3" - -webpack-dev-server@^1.16.2: - version "1.16.5" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-1.16.5.tgz#0cbd5f2d2ac8d4e593aacd5c9702e7bbd5e59892" - dependencies: - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" - express "^4.13.3" - http-proxy-middleware "~0.17.1" - open "0.0.5" - optimist "~0.6.1" - serve-index "^1.7.2" - sockjs "^0.3.15" - sockjs-client "^1.0.3" - stream-cache "~0.0.1" - strip-ansi "^3.0.0" - supports-color "^3.1.1" - webpack-dev-middleware "^1.10.2" - -webpack@^1.12.14: - version "1.15.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-1.15.0.tgz#4ff31f53db03339e55164a9d468ee0324968fe98" - dependencies: - acorn "^3.0.0" - async "^1.3.0" - clone "^1.0.2" - enhanced-resolve "~0.9.0" - interpret "^0.6.4" - loader-utils "^0.2.11" - memory-fs "~0.3.0" - mkdirp "~0.5.0" - node-libs-browser "^0.7.0" - optimist "~0.6.0" - supports-color "^3.1.0" - tapable "~0.1.8" - uglify-js "~2.7.3" - watchpack "^0.2.1" - webpack-core "~0.6.9" - -websocket-driver@>=0.5.1: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - dependencies: - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7" - -whatwg-fetch@>=0.10.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" - -whatwg-fetch@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which@^1.2.1, which@^1.2.9, which@~1.2.10: - version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" - dependencies: - string-width "^1.0.1" - -widest-line@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" - dependencies: - string-width "^1.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.1.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -ws@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -ws@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -wtf-8@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" - -xdg-basedir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2" - dependencies: - os-homedir "^1.0.0" - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" - -xmlbuilder@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-3.1.0.tgz#2c86888f2d4eade850fa38ca7f7223f7209516e1" - dependencies: - lodash "^3.5.0" - -xmlbuilder@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" - -xmldom@0.1.x: - version "0.1.27" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" - -xmlhttprequest-ssl@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - dependencies: - object-keys "~0.4.0" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - dependencies: - camelcase "^3.0.0" - -yargs@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.0.2.tgz#115b97df1321823e8b8648e8968c782521221f67" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yauzl@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - dependencies: - fd-slicer "~1.0.1" - -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - -zip-stream@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.1.1.tgz#5216b48bbb4d2651f64d5c6e6f09eb4a7399d557" - dependencies: - archiver-utils "^1.3.0" - compress-commons "^1.1.0" - lodash "^4.8.0" - readable-stream "^2.0.0" From a6b11968a476bf690250fd59ed568ccf72142499 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 May 2017 16:15:52 +0100 Subject: [PATCH 148/220] s/tabs/spaces/ --- src/vector/index.js | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index ba06de3371..f1af7ebcf8 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -282,14 +282,14 @@ async function loadApp() { } if (!configJson.languages) { - let languages; - try { - languages = await languageHandler.getAllLanguageKeysFromJson(); - } catch (e) { - console.log("couldn't load languages from languages.json: error = "+e); - languages = ['en']; - } - configJson.languages = languages; + let languages; + try { + languages = await languageHandler.getAllLanguageKeysFromJson(); + } catch (e) { + console.log("couldn't load languages from languages.json: error = "+e); + languages = ['en']; + } + configJson.languages = languages; } if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) { @@ -339,16 +339,16 @@ async function loadApp() { } function loadLanguage(callback) { - const _localSettings = getLocalSettings(); - var languages = []; - if (!_localSettings.hasOwnProperty('language')) { - languages = languageHandler.getNormalizedLanguageKeys(languageHandler.getLanguageFromBrowser()); - }else { - languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language); - } - languageHandler.setLanguage(languages, counterpart); - setLocalSetting('language', languages[0]); - callback(); + const _localSettings = getLocalSettings(); + var languages = []; + if (!_localSettings.hasOwnProperty('language')) { + languages = languageHandler.getNormalizedLanguageKeys(languageHandler.getLanguageFromBrowser()); + }else { + languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language); + } + languageHandler.setLanguage(languages, counterpart); + setLocalSetting('language', languages[0]); + callback(); } loadLanguage(loadApp); From 241d95293e1dcd1452dc4c07a314bfa609ae205c Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 May 2017 16:44:54 +0100 Subject: [PATCH 149/220] Code style fixes Use async/await consistently rather than flipping between that and callbacks, s/var/let/, indenting --- src/vector/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index f1af7ebcf8..62595c2277 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -247,6 +247,7 @@ function onLoadCompleted() { } async function loadApp() { + await loadLanguage(); const fragparts = parseQsFromFragment(window.location); const params = parseQs(window.location); @@ -338,17 +339,16 @@ async function loadApp() { } } -function loadLanguage(callback) { +async function loadLanguage() { const _localSettings = getLocalSettings(); - var languages = []; + let languages = []; if (!_localSettings.hasOwnProperty('language')) { languages = languageHandler.getNormalizedLanguageKeys(languageHandler.getLanguageFromBrowser()); - }else { - languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language); + } else { + languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language); } languageHandler.setLanguage(languages, counterpart); setLocalSetting('language', languages[0]); - callback(); } -loadLanguage(loadApp); +loadApp(); From caca5cc00bc39828421b2c779c03255bb09cae20 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 May 2017 17:06:02 +0100 Subject: [PATCH 150/220] Remove c+ped UserSettingsStore functions as they don't seem to be necessary --- src/vector/index.js | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 62595c2277..d1bf914b67 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -57,7 +57,6 @@ var RunModernizrTests = require("./modernizr"); // this side-effects a global var ReactDOM = require("react-dom"); // Workaround for broken export import * as counterpart from 'counterpart-riot'; -var languageHandler = require("matrix-react-sdk/lib/languageHandler"); var sdk = require("matrix-react-sdk"); var PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg"); sdk.loadSkin(require('../component-index')); @@ -66,6 +65,8 @@ var UpdateChecker = require("./updater"); var q = require('q'); var request = require('browser-request'); import Modal from 'matrix-react-sdk/lib/Modal'; +import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; +import languageHandler from 'matrix-react-sdk/lib/languageHandler'; import url from 'url'; @@ -218,20 +219,6 @@ function getConfig() { return deferred.promise; } - -// This is needed to not load the UserSettingsStore before languages are laoded -function getLocalSettings() { - const localSettingsString = localStorage.getItem('mx_local_settings') || '{}'; - return JSON.parse(localSettingsString); -} -// This is needed to not load the UserSettingsStore before languages are laoded -function setLocalSetting(type, value) { - const settings = getLocalSettings(); - settings[type] = value; - // FIXME: handle errors - localStorage.setItem('mx_local_settings', JSON.stringify(settings)); -} - function onLoadCompleted() { // if we did a token login, we're now left with the token, hs and is // url as query params in the url; a little nasty but let's redirect to @@ -340,13 +327,8 @@ async function loadApp() { } async function loadLanguage() { - const _localSettings = getLocalSettings(); - let languages = []; - if (!_localSettings.hasOwnProperty('language')) { - languages = languageHandler.getNormalizedLanguageKeys(languageHandler.getLanguageFromBrowser()); - } else { - languages = languageHandler.getNormalizedLanguageKeys(_localSettings.language); - } + const lang = UserSettingsStore.getLocalSetting('language', languageHandler.getLanguageFromBrowser()); + const languages = languageHandler.getNormalizedLanguageKeys(lang); languageHandler.setLanguage(languages, counterpart); setLocalSetting('language', languages[0]); } From af6cc7bf9c1dc9fdc2fd5c145713a126a60c1830 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 May 2017 17:06:49 +0100 Subject: [PATCH 151/220] I don't really see why this is necessary --- src/vector/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index d1bf914b67..37d444ffe5 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -330,7 +330,6 @@ async function loadLanguage() { const lang = UserSettingsStore.getLocalSetting('language', languageHandler.getLanguageFromBrowser()); const languages = languageHandler.getNormalizedLanguageKeys(lang); languageHandler.setLanguage(languages, counterpart); - setLocalSetting('language', languages[0]); } loadApp(); From ff1567ed2a73bb09776223cb89f2fc762d4b42ad Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 May 2017 17:09:09 +0100 Subject: [PATCH 152/220] Remove spurious import --- src/vector/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vector/index.js b/src/vector/index.js index 37d444ffe5..ad1592e83e 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -64,7 +64,6 @@ var VectorConferenceHandler = require('../VectorConferenceHandler'); var UpdateChecker = require("./updater"); var q = require('q'); var request = require('browser-request'); -import Modal from 'matrix-react-sdk/lib/Modal'; import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; import languageHandler from 'matrix-react-sdk/lib/languageHandler'; From d5425b62a18c55821e4dc3215f2c775a5624856d Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 24 May 2017 11:27:06 +0100 Subject: [PATCH 153/220] Don't inject languages into the config If we're defaulting this it should really be by the component itself or with the other defaukts in SdkConfig, but we've decided to leave out support for reading languages from the config file as it's only useful for a Riot admin to restrict the choice of languages available to users which is of debateable use. --- src/vector/index.js | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index ad1592e83e..f1ddfd66d2 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -65,7 +65,7 @@ var UpdateChecker = require("./updater"); var q = require('q'); var request = require('browser-request'); import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; -import languageHandler from 'matrix-react-sdk/lib/languageHandler'; +import * as languageHandler from 'matrix-react-sdk/lib/languageHandler'; import url from 'url'; @@ -268,17 +268,6 @@ async function loadApp() { configError = e; } - if (!configJson.languages) { - let languages; - try { - languages = await languageHandler.getAllLanguageKeysFromJson(); - } catch (e) { - console.log("couldn't load languages from languages.json: error = "+e); - languages = ['en']; - } - configJson.languages = languages; - } - if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) { console.log('User has previously accepted risks in using an unsupported browser'); validBrowser = true; From d4aa428321ec8536c4fcf2fdb9a94ef94b0c082c Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 24 May 2017 14:23:34 +0100 Subject: [PATCH 154/220] Move translation status image to i18n section --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c65cca8231..4c5452e146 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ Riot Riot (formerly known as Vector) is a Matrix web client built using the Matrix React SDK (https://github.com/matrix-org/matrix-react-sdk). -[Translationsstatus](https://translate.nordgedanken.de/engage/riot-web/?utm_source=widget) - Getting Started =============== @@ -286,6 +284,9 @@ You'll need to do this in each new terminal you open before building Riot. How to add a new translation? ============================= +[translationsstatus](https://translate.nordgedanken.de/engage/riot-web/?utm_source=widget) + + Head to the [translating doc](docs/translating.md) Adding Strings to the translations (Developer Guide) From aaf948017a81448f64034ce979f366d9b3e7242e Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 24 May 2017 14:37:12 +0100 Subject: [PATCH 155/220] Make language dropdown a more sensible width --- .../vector/css/matrix-react-sdk/structures/_UserSettings.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss index fe60aacb9f..f72a6f0858 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_UserSettings.scss @@ -131,6 +131,10 @@ limitations under the License. position: absolute; } +.mx_UserSettings_language { + width: 200px; +} + .mx_UserSettings_profileTable { display: table; From ee85eb961a36b13effec8d2d23373c14a0f2d2d3 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 11:39:56 +0100 Subject: [PATCH 156/220] Bulk change counterpart imports to use react-sdk wrapper function, rather than using counterpart directly. --- src/components/structures/BottomLeftMenu.js | 2 +- src/components/structures/RightPanel.js | 2 +- src/components/structures/RoomDirectory.js | 2 +- src/components/structures/RoomSubList.js | 2 +- src/components/structures/SearchBox.js | 2 +- src/components/views/context_menus/MessageContextMenu.js | 2 +- src/components/views/context_menus/RoomTileContextMenu.js | 2 +- src/components/views/elements/ImageView.js | 2 +- src/components/views/globals/MatrixToolbar.js | 2 +- src/components/views/login/VectorCustomServerDialog.js | 2 +- src/components/views/login/VectorLoginFooter.js | 2 +- src/components/views/messages/DateSeparator.js | 2 +- src/components/views/rooms/DNDRoomTile.js | 2 +- src/components/views/settings/Notifications.js | 2 +- src/notifications/VectorPushRulesDefinitions.js | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/structures/BottomLeftMenu.js b/src/components/structures/BottomLeftMenu.js index 57da85ebdb..c8c7ba2c06 100644 --- a/src/components/structures/BottomLeftMenu.js +++ b/src/components/structures/BottomLeftMenu.js @@ -19,7 +19,7 @@ limitations under the License. var React = require('react'); var ReactDOM = require('react-dom'); var sdk = require('matrix-react-sdk'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; var dis = require('matrix-react-sdk/lib/dispatcher'); var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index 6a099bf3a0..c12952fbdd 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -17,7 +17,7 @@ limitations under the License. 'use strict'; import React from 'react'; -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; import sdk from 'matrix-react-sdk'; import Matrix from "matrix-js-sdk"; import dis from 'matrix-react-sdk/lib/dispatcher'; diff --git a/src/components/structures/RoomDirectory.js b/src/components/structures/RoomDirectory.js index efd61ef9c9..e935084742 100644 --- a/src/components/structures/RoomDirectory.js +++ b/src/components/structures/RoomDirectory.js @@ -30,7 +30,7 @@ var linkifyMatrix = require('matrix-react-sdk/lib/linkify-matrix'); var sanitizeHtml = require('sanitize-html'); var q = require('q'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; import {instanceForInstanceId, protocolNameForInstanceId} from '../../utils/DirectoryUtils'; diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index 2dec274ecd..b368948cd0 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -21,7 +21,7 @@ var ReactDOM = require('react-dom'); var classNames = require('classnames'); var DropTarget = require('react-dnd').DropTarget; var sdk = require('matrix-react-sdk'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; var dis = require('matrix-react-sdk/lib/dispatcher'); var Unread = require('matrix-react-sdk/lib/Unread'); var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); diff --git a/src/components/structures/SearchBox.js b/src/components/structures/SearchBox.js index 42777ed005..faee0b5f71 100644 --- a/src/components/structures/SearchBox.js +++ b/src/components/structures/SearchBox.js @@ -17,7 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; var sdk = require('matrix-react-sdk') var dis = require('matrix-react-sdk/lib/dispatcher'); var rate_limited_func = require('matrix-react-sdk/lib/ratelimitedfunc'); diff --git a/src/components/views/context_menus/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js index 73934cabdd..227cee10bf 100644 --- a/src/components/views/context_menus/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -21,7 +21,7 @@ var React = require('react'); var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); var dis = require('matrix-react-sdk/lib/dispatcher'); var sdk = require('matrix-react-sdk'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; var Modal = require('matrix-react-sdk/lib/Modal'); var Resend = require("matrix-react-sdk/lib/Resend"); import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; diff --git a/src/components/views/context_menus/RoomTileContextMenu.js b/src/components/views/context_menus/RoomTileContextMenu.js index 4401e2644f..a7b19689fe 100644 --- a/src/components/views/context_menus/RoomTileContextMenu.js +++ b/src/components/views/context_menus/RoomTileContextMenu.js @@ -21,7 +21,7 @@ import q from 'q'; import React from 'react'; import classNames from 'classnames'; import sdk from 'matrix-react-sdk'; -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import dis from 'matrix-react-sdk/lib/dispatcher'; import DMRoomMap from 'matrix-react-sdk/lib/utils/DMRoomMap'; diff --git a/src/components/views/elements/ImageView.js b/src/components/views/elements/ImageView.js index 187a7bfc34..dd0490ac0c 100644 --- a/src/components/views/elements/ImageView.js +++ b/src/components/views/elements/ImageView.js @@ -25,7 +25,7 @@ var filesize = require('filesize'); var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); const Modal = require('matrix-react-sdk/lib/Modal'); const sdk = require('matrix-react-sdk'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; module.exports = React.createClass({ displayName: 'ImageView', diff --git a/src/components/views/globals/MatrixToolbar.js b/src/components/views/globals/MatrixToolbar.js index aef32d99d7..6d47ad1b9e 100644 --- a/src/components/views/globals/MatrixToolbar.js +++ b/src/components/views/globals/MatrixToolbar.js @@ -17,7 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; var Notifier = require("matrix-react-sdk/lib/Notifier"); var sdk = require('matrix-react-sdk') var AccessibleButton = require('matrix-react-sdk/lib/components/views/elements/AccessibleButton'); diff --git a/src/components/views/login/VectorCustomServerDialog.js b/src/components/views/login/VectorCustomServerDialog.js index 1190c69e57..d7fe545a0a 100644 --- a/src/components/views/login/VectorCustomServerDialog.js +++ b/src/components/views/login/VectorCustomServerDialog.js @@ -15,7 +15,7 @@ limitations under the License. */ var React = require("react"); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; module.exports = React.createClass({ displayName: 'VectorCustomServerDialog', diff --git a/src/components/views/login/VectorLoginFooter.js b/src/components/views/login/VectorLoginFooter.js index 32929d43d5..e905afc1de 100644 --- a/src/components/views/login/VectorLoginFooter.js +++ b/src/components/views/login/VectorLoginFooter.js @@ -17,7 +17,7 @@ limitations under the License. 'use strict'; var React = require('react'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; module.exports = React.createClass({ displayName: 'VectorLoginFooter', diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index 0810b18b11..f2ea3ffa9a 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -17,7 +17,7 @@ limitations under the License. // 'use strict'; import React from 'react'; -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; import DateUtils from 'matrix-react-sdk/lib/DateUtils'; function getdaysArray() { diff --git a/src/components/views/rooms/DNDRoomTile.js b/src/components/views/rooms/DNDRoomTile.js index 3180103eab..6abb5bd06c 100644 --- a/src/components/views/rooms/DNDRoomTile.js +++ b/src/components/views/rooms/DNDRoomTile.js @@ -23,7 +23,7 @@ import {DropTarget} from 'react-dnd'; import dis from 'matrix-react-sdk/lib/dispatcher'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; import sdk from 'matrix-react-sdk'; -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; import RoomTile from 'matrix-react-sdk/lib/components/views/rooms/RoomTile'; import * as Rooms from 'matrix-react-sdk/lib/Rooms'; import Modal from 'matrix-react-sdk/lib/Modal'; diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index 2599cf18a4..cbffe2795c 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -16,7 +16,7 @@ limitations under the License. 'use strict'; var React = require('react'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; var q = require("q"); var sdk = require('matrix-react-sdk'); var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); diff --git a/src/notifications/VectorPushRulesDefinitions.js b/src/notifications/VectorPushRulesDefinitions.js index 6aea713776..b9ec3321e5 100644 --- a/src/notifications/VectorPushRulesDefinitions.js +++ b/src/notifications/VectorPushRulesDefinitions.js @@ -18,7 +18,7 @@ limitations under the License. var StandardActions = require('./StandardActions'); var PushRuleVectorState = require('./PushRuleVectorState'); -import _t from 'counterpart-riot'; +import { _t } from 'matrix-react-sdk/lib/languageHandler'; class VectorPushRuleDefinition { constructor(opts) { From b95da4a40c495566b090badd6c455ebd4c245a2c Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 11:40:31 +0100 Subject: [PATCH 157/220] No longer need counterpart We now use stock counterpart, but indirectly via react-sdk so no need to depend on it directly. --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index fcd568c2cb..79b0bc1057 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,6 @@ "babel-runtime": "^6.11.6", "browser-request": "^0.3.3", "classnames": "^2.1.2", - "counterpart-riot": "^0.17.9", "draft-js": "^0.8.1", "extract-text-webpack-plugin": "^0.9.1", "favico.js": "^0.3.10", From 7636212bed961ba2b44f8ec5104dc20eb59fa7d9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 12:08:47 +0100 Subject: [PATCH 158/220] Remove refs to counterpart and remove extCounterpart which is unnecessary now we just use a single counterpart instance --- src/vector/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index f1ddfd66d2..193738e2cd 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -55,8 +55,6 @@ if (process.env.NODE_ENV !== 'production') { var RunModernizrTests = require("./modernizr"); // this side-effects a global var ReactDOM = require("react-dom"); -// Workaround for broken export -import * as counterpart from 'counterpart-riot'; var sdk = require("matrix-react-sdk"); var PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg"); sdk.loadSkin(require('../component-index')); @@ -317,7 +315,7 @@ async function loadApp() { async function loadLanguage() { const lang = UserSettingsStore.getLocalSetting('language', languageHandler.getLanguageFromBrowser()); const languages = languageHandler.getNormalizedLanguageKeys(lang); - languageHandler.setLanguage(languages, counterpart); + languageHandler.setLanguage(languages); } loadApp(); From c4c78c9b3e2e6cf3bf78d57886a174bf6f9499b2 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 25 May 2017 12:42:53 +0100 Subject: [PATCH 159/220] split webContents context handling into own file, as main was growing add handlers for editable fields, with Cut Copy Paste Undo Redo etc add Copy Image feature to all images, working on not only the download buttons now Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/electron-main.js | 60 +---------- electron_app/src/webcontents-handler.js | 126 ++++++++++++++++++++++++ 2 files changed, 128 insertions(+), 58 deletions(-) create mode 100644 electron_app/src/webcontents-handler.js diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index ab844bd371..26f8f972f3 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -24,11 +24,11 @@ const check_squirrel_hooks = require('./squirrelhooks'); if (check_squirrel_hooks()) return; const electron = require('electron'); -const url = require('url'); const tray = require('./tray'); const VectorMenu = require('./vectormenu'); +const webContentsHandler = require('./webcontents-handler'); const windowStateKeeper = require('electron-window-state'); @@ -42,60 +42,12 @@ try { // Continue with the defaults (ie. an empty config) } -const PERMITTED_URL_SCHEMES = [ - 'http:', - 'https:', - 'mailto:', -]; - const UPDATE_POLL_INTERVAL_MS = 60 * 60 * 1000; const INITIAL_UPDATE_DELAY_MS = 30 * 1000; let mainWindow = null; let appQuitting = false; -function safeOpenURL(target) { - // openExternal passes the target to open/start/xdg-open, - // so put fairly stringent limits on what can be opened - // (for instance, open /bin/sh does indeed open a terminal - // with a shell, albeit with no arguments) - const parsed_url = url.parse(target); - if (PERMITTED_URL_SCHEMES.indexOf(parsed_url.protocol) > -1) { - // explicitly use the URL re-assembled by the url library, - // so we know the url parser has understood all the parts - // of the input string - const new_target = url.format(parsed_url); - electron.shell.openExternal(new_target); - } -} - -function onWindowOrNavigate(ev, target) { - // always prevent the default: if something goes wrong, - // we don't want to end up opening it in the electron - // app, as we could end up opening any sort of random - // url in a window that has node scripting access. - ev.preventDefault(); - safeOpenURL(target); -} - -function onLinkContextMenu(ev, params) { - const popup_menu = new electron.Menu(); - popup_menu.append(new electron.MenuItem({ - label: params.linkURL, - click() { - safeOpenURL(params.linkURL); - }, - })); - popup_menu.append(new electron.MenuItem({ - label: 'Copy Link Address', - click() { - electron.clipboard.writeText(params.linkURL); - }, - })); - popup_menu.popup(); - ev.preventDefault(); -} - function installUpdate() { // for some reason, quitAndInstall does not fire the // before-quit event, so we need to set the flag here. @@ -259,15 +211,7 @@ electron.app.on('ready', () => { } }); - mainWindow.webContents.on('new-window', onWindowOrNavigate); - mainWindow.webContents.on('will-navigate', onWindowOrNavigate); - - mainWindow.webContents.on('context-menu', function(ev, params) { - if (params.linkURL) { - onLinkContextMenu(ev, params); - } - }); - + webContentsHandler(mainWindow.webContents); mainWindowState.manage(mainWindow); }); diff --git a/electron_app/src/webcontents-handler.js b/electron_app/src/webcontents-handler.js new file mode 100644 index 0000000000..35785e8b35 --- /dev/null +++ b/electron_app/src/webcontents-handler.js @@ -0,0 +1,126 @@ +const {clipboard, nativeImage, Menu, MenuItem, shell} = require('electron'); +const url = require('url'); + +let webContents; + +const PERMITTED_URL_SCHEMES = [ + 'http:', + 'https:', + 'mailto:', +]; + +function safeOpenURL(target) { + // openExternal passes the target to open/start/xdg-open, + // so put fairly stringent limits on what can be opened + // (for instance, open /bin/sh does indeed open a terminal + // with a shell, albeit with no arguments) + const parsedUrl = url.parse(target); + if (PERMITTED_URL_SCHEMES.indexOf(parsedUrl.protocol) > -1) { + // explicitly use the URL re-assembled by the url library, + // so we know the url parser has understood all the parts + // of the input string + const newTarget = url.format(parsedUrl); + shell.openExternal(newTarget); + } +} + +function onWindowOrNavigate(ev, target) { + // always prevent the default: if something goes wrong, + // we don't want to end up opening it in the electron + // app, as we could end up opening any sort of random + // url in a window that has node scripting access. + ev.preventDefault(); + safeOpenURL(target); +} + +function onLinkContextMenu(ev, params) { + const url = params.linkURL || params.srcURL; + + const popupMenu = new Menu(); + popupMenu.append(new MenuItem({ + label: url, + click() { + safeOpenURL(url); + }, + })); + + if (params.mediaType && params.mediaType === 'image' && !url.startsWith('file://')) { + popupMenu.append(new MenuItem({ + label: 'Copy Image', + click() { + if (url.startsWith('data:')) { + clipboard.writeImage(nativeImage.createFromDataURL(url)); + } else { + ev.sender.copyImageAt(params.x, params.y); + } + }, + })); + } + + popupMenu.append(new MenuItem({ + label: 'Copy Link Address', + click() { + clipboard.writeText(url); + }, + })); + popupMenu.popup(); + ev.preventDefault(); +} + +function _CutCopyPasteSelectContextMenus(params) { + return [{ + role: 'cut', + enabled: params.editFlags.canCut, + }, { + role: 'copy', + enabled: params.editFlags.canCopy, + }, { + role: 'paste', + enabled: params.editFlags.canPaste, + }, { + role: 'pasteandmatchstyle', + enabled: params.editFlags.canPaste, + }, { + role: 'selectall', + enabled: params.editFlags.canSelectAll, + }]; +} + +function onSelectedContextMenu(ev, params) { + const items = _CutCopyPasteSelectContextMenus(params); + const popupMenu = Menu.buildFromTemplate(items); + + popupMenu.popup(); + ev.preventDefault(); +} + +function onEditableContextMenu(ev, params) { + const items = [ + { role: 'undo' }, + { role: 'redo', enabled: params.editFlags.canRedo }, + { type: 'separator' }, + ].concat(_CutCopyPasteSelectContextMenus(params)); + + const popupMenu = Menu.buildFromTemplate(items); + + popupMenu.popup(); + ev.preventDefault(); +} + + +module.exports = (_webContents) => { + webContents = _webContents; + + webContents.on('new-window', onWindowOrNavigate); + webContents.on('will-navigate', onWindowOrNavigate); + + webContents.on('context-menu', function(ev, params) { + if (params.linkURL || params.srcURL) { + onLinkContextMenu(ev, params); + } else if (params.selectionText) { + onSelectedContextMenu(ev, params); + } else if (params.isEditable) { + onEditableContextMenu(ev, params); + } + }); +}; From 727e2678537c05b6ce72bf1a3f43ff3f517a92eb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 25 May 2017 12:47:36 +0100 Subject: [PATCH 160/220] we don't really need a webContents like that, so pass if needed Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- electron_app/src/webcontents-handler.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/electron_app/src/webcontents-handler.js b/electron_app/src/webcontents-handler.js index 35785e8b35..37416ebe96 100644 --- a/electron_app/src/webcontents-handler.js +++ b/electron_app/src/webcontents-handler.js @@ -1,8 +1,6 @@ const {clipboard, nativeImage, Menu, MenuItem, shell} = require('electron'); const url = require('url'); -let webContents; - const PERMITTED_URL_SCHEMES = [ 'http:', 'https:', @@ -108,9 +106,7 @@ function onEditableContextMenu(ev, params) { } -module.exports = (_webContents) => { - webContents = _webContents; - +module.exports = (webContents) => { webContents.on('new-window', onWindowOrNavigate); webContents.on('will-navigate', onWindowOrNavigate); From 9cd04509bf551fad45dbbf9354dd463b716994cc Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@googlemail.com> Date: Thu, 25 May 2017 13:22:01 +0100 Subject: [PATCH 161/220] Add `Chat` to Linux app categories most dists inc Arch have Chat and IRCClient, though the latter isn't exactly correct so missing it --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 79b0bc1057..5575803387 100644 --- a/package.json +++ b/package.json @@ -158,7 +158,7 @@ ], "linux": { "target": "deb", - "category": "Network;InstantMessaging;", + "category": "Network;InstantMessaging;Chat", "maintainer": "support@riot.im", "desktop": { "StartupWMClass": "riot-web" From 003238c1e73127b83d537fb1ddaa9e2a9a2c31c5 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 16:47:12 +0100 Subject: [PATCH 162/220] Update for new API in react-sdk We now get multiple languages from the browser as there may be a whole preference list --- src/vector/index.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/vector/index.js b/src/vector/index.js index 193738e2cd..14f8bb4b36 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -313,9 +313,21 @@ async function loadApp() { } async function loadLanguage() { - const lang = UserSettingsStore.getLocalSetting('language', languageHandler.getLanguageFromBrowser()); - const languages = languageHandler.getNormalizedLanguageKeys(lang); - languageHandler.setLanguage(languages); + const prefLang = UserSettingsStore.getLocalSetting('language'); + let langs = []; + + if (!prefLang) { + languageHandler.getLanguagesFromBrowser().forEach((l) => { + langs.push(...languageHandler.getNormalizedLanguageKeys(l)); + }); + } else { + langs = [prefLang]; + } + try { + await languageHandler.setLanguage(langs); + } catch (e) { + console.error("Unable to set language", e); + } } loadApp(); From c15a66d1d4dfe268d9f8490d0eaea7ddb2741986 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 17:21:41 +0100 Subject: [PATCH 163/220] Fix up notification settings strings --- src/components/views/settings/Notifications.js | 2 +- src/i18n/be.json | 4 ++-- src/i18n/da.json | 2 +- src/i18n/de_DE.json | 2 +- src/i18n/en_EN.json | 3 ++- src/i18n/pt.json | 2 +- src/i18n/pt_BR.json | 3 +-- src/i18n/ru.json | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index cbffe2795c..d69a78cffd 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -785,7 +785,7 @@ module.exports = React.createClass({ if (externalRules.length) { advancedSettings = (
    -

    { _t('Advanced notifications settings') }

    +

    { _t('Advanced notification settings') }

    { _t('There are advanced notifications which are not shown here') }.
    { _t('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply') }.
      diff --git a/src/i18n/be.json b/src/i18n/be.json index e6e824b4bd..0c6e9e30ed 100644 --- a/src/i18n/be.json +++ b/src/i18n/be.json @@ -56,7 +56,7 @@ "Noisy": "Шумна", "Notification targets": "Мэты апавяшчэння", "Notifications": "Апавяшчэнні", - "Notifications on the following keywords follow rules which can’t be displayed here": "Апавяшчэнні па наступных ключавых словах прытрымліваюцца правілаў, якія не могуць быць адлюстраваны тут", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Апавяшчэнні па наступных ключавых словах прытрымліваюцца правілаў, якія не могуць быць адлюстраваны тут", "Notify for all other messages/rooms": "Апавяшчаць для ўсіх іншых паведамленняў/пакояў", "Notify me for anything else": "Паведаміць мне што-небудзь яшчэ", "Off": "Выключыць", @@ -85,4 +85,4 @@ "The server may be unavailable or overloaded": "Сервер можа быць недаступны ці перагружаны", "This room is inaccessible to guests. You may be able to join if you register": "Гэты пакой недаступны для гасцей. Вы можаце далучыцца, калі вы зарэгіструецеся", " to room": " ў пакоі" -} \ No newline at end of file +} diff --git a/src/i18n/da.json b/src/i18n/da.json index 890ab7bb92..74c6439603 100644 --- a/src/i18n/da.json +++ b/src/i18n/da.json @@ -49,7 +49,7 @@ "Noisy": "Støjende", "Notification targets": "Meddelelsesmål", "Notifications": "Meddelser", - "Notifications on the following keywords follow rules which can’t be displayed here": "Meddelelser om følgende søgeord følger regler, der ikke kan vises her", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Meddelelser om følgende søgeord følger regler, der ikke kan vises her:", "Notify for all other messages/rooms": "Underret om alle andre meddelelser / rum", "Notify me for anything else": "Underret mig om noget andet", "Off": "Slukket", diff --git a/src/i18n/de_DE.json b/src/i18n/de_DE.json index 2bc23bee07..0831ff8e2e 100644 --- a/src/i18n/de_DE.json +++ b/src/i18n/de_DE.json @@ -61,7 +61,7 @@ "Low Priority": "Niedrige Priorität", "Noisy": "Laut", "Notification targets": "Benachrichtigungsziel", - "Notifications on the following keywords follow rules which can’t be displayed here": "Benachrichtigungen zu folgenden Stichwörtern folgen Regeln, die hier nicht angezeigt werden können", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Benachrichtigungen zu folgenden Stichwörtern folgen Regeln, die hier nicht angezeigt werden können:", "Notify for all other messages/rooms": "Benachrichtigung für alle anderen Mitteilungen/ Räume", "Operation failed": "Ausführung fehlgeschlagen", "Reject": "ablehnen", diff --git a/src/i18n/en_EN.json b/src/i18n/en_EN.json index 67d498648c..89df1d225f 100644 --- a/src/i18n/en_EN.json +++ b/src/i18n/en_EN.json @@ -1,5 +1,6 @@ { "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", + "Advanced notification settings": "Advanced notification settings", "All messages": "All messages", "All messages (loud)": "All messages (loud)", "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", @@ -63,7 +64,7 @@ "Noisy": "Noisy", "Notification targets": "Notification targets", "Notifications": "Notifications", - "Notifications on the following keywords follow rules which can’t be displayed here": "Notifications on the following keywords follow rules which can’t be displayed here", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", "Notify for all other messages/rooms": "Notify for all other messages/rooms", "Notify me for anything else": "Notify me for anything else", "Off": "Off", diff --git a/src/i18n/pt.json b/src/i18n/pt.json index befbb6a798..7f3aa82e0f 100644 --- a/src/i18n/pt.json +++ b/src/i18n/pt.json @@ -56,7 +56,7 @@ "Noisy": "Barulhento", "Notification targets": "Alvos de notificação", "Notifications": "Notificações", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", "Notify me for anything else": "Notificar-me sobre qualquer outro evento", "Off": "Desativado", diff --git a/src/i18n/pt_BR.json b/src/i18n/pt_BR.json index ce1bd6c06d..33a407643e 100644 --- a/src/i18n/pt_BR.json +++ b/src/i18n/pt_BR.json @@ -63,7 +63,7 @@ "Noisy": "Barulhento", "Notification targets": "Alvos de notificação", "Notifications": "Notificações", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", "Notify me for anything else": "Notificar-me sobre qualquer outro evento", "Off": "Desativado", @@ -119,6 +119,5 @@ "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os destinatários.", "#example": "#exemplo", "Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", - "Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui", "Welcome page": "Página de boas vindas" } diff --git a/src/i18n/ru.json b/src/i18n/ru.json index 2b0f7119e1..c0a7a28486 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -49,7 +49,7 @@ "Noisy": "Шумный", "Notification targets": "Цели уведомления", "Notifications": "Уведомления", - "Notifications on the following keywords follow rules which can’t be displayed here": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь", "Notify for all other messages/rooms": "Уведомить обо всех других сообщениях/комнатах", "Notify me for anything else": "Уведомить меня обо всем кроме", "Off": "Выключить", From 2982174028e3079640c040dce16f5b4dff7b9557 Mon Sep 17 00:00:00 2001 From: David Baker Date: Thu, 25 May 2017 18:21:40 +0100 Subject: [PATCH 164/220] No need for repeated OKs anymore --- src/components/views/settings/Notifications.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index d69a78cffd..0c114e40f2 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -179,7 +179,6 @@ module.exports = React.createClass({ title: _t('Keywords'), description: _t('Enter keywords separated by a comma') + ':', value: keywords, - button: _t('OK'), onFinished: function onFinished(should_leave, newValue) { if (should_leave && newValue !== keywords) { From bde501a9ce6b89b035030b02fff846ba55bd8077 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:10:57 +0100 Subject: [PATCH 165/220] Languages on config file is no longer a thing --- config.sample.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config.sample.json b/config.sample.json index e8239df9d3..3c513f7ab2 100644 --- a/config.sample.json +++ b/config.sample.json @@ -10,6 +10,5 @@ "servers": [ "matrix.org" ] - }, - "languages": ["en", "de", "pt-br", "ru", "da"] + } } From 5356eab1593b0d9c01b526860bdcff9db1b59ad9 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:16:36 +0100 Subject: [PATCH 166/220] Correct docs Change array.push guideline to not using _t at class-load time which was probably the actual problem. Update guidelines to include punctuation. --- docs/translating-dev.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/translating-dev.md b/docs/translating-dev.md index 8bebd0bcf4..80d4b64a3a 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -22,5 +22,5 @@ ## Things to know/Style Guides - Do not use it inside ``getDefaultProps`` at the point where ``getDefaultProps`` is initialized the translations aren't loaded yet and it causes missing translations. -- Do use ``Array.push()`` instead of directly defining it inside the array. Arrays are not able to access ``_t()`` at runtime. -- Do not include full stops, Emoji or similiar miscellaneous Things to the strings. They are not required to be translated. +- If using translated strings as constants, translated strings can't be in constants loaded at class-load time since the translations won't be loaded. +- If a string is presented in the UI with punctuation like a full stop, include this in the translation strings, since punctuation varies between languages too. From 810fb42458627a240651c6756754a65ba5a83cf6 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:25:46 +0100 Subject: [PATCH 167/220] Fix indenting --- src/components/structures/RightPanel.js | 46 ++++++++++++------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index c12952fbdd..c7f5394bf1 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -198,29 +198,29 @@ module.exports = React.createClass({ if (this.props.roomId) { buttonGroup =
      - -
      { membersBadge ? membersBadge :  }
      - - { membersHighlight } -
      - -
       
      - - { filesHighlight } -
      - -
       
      - - { notificationsHighlight } -
      -
      - -
      + +
      { membersBadge ? membersBadge :  }
      + + { membersHighlight } +
      + +
       
      + + { filesHighlight } +
      + +
       
      + + { notificationsHighlight } +
      +
      + +
      ; } From 82b2741ed9ddec996b4d567909fd87dcaee57566 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:33:00 +0100 Subject: [PATCH 168/220] Move english custom server text to en file As it is in English and not German --- src/i18n/de_DE.json | 1 - src/i18n/en_EN.json | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/de_DE.json b/src/i18n/de_DE.json index 0831ff8e2e..d0eff4c5bc 100644 --- a/src/i18n/de_DE.json +++ b/src/i18n/de_DE.json @@ -12,7 +12,6 @@ "Settings": "Einstellungen", "powered by Matrix": "gebaut mit Matrix", "Custom Server Options": "Optionen für eigenen Server", - "customServer_text": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
      This allows you to use Riot with an existing Matrix account on a different home server.

      You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", "Dismiss": "ausblenden", "Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokollliste vom Home Server", "The Home Server may be too old to support third party networks": "Der Home Server kann zu alt sein, um Drittanbieter-Netzwerke zu unterstützen", diff --git a/src/i18n/en_EN.json b/src/i18n/en_EN.json index 89df1d225f..c4fdf44bd1 100644 --- a/src/i18n/en_EN.json +++ b/src/i18n/en_EN.json @@ -12,6 +12,7 @@ "Create new room": "Create new room", "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", "Custom Server Options": "Custom Server Options", + "customServer_text": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
      This allows you to use Riot with an existing Matrix account on a different home server.

      You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", "delete the alias": "delete the alias", "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", "Direct Chat": "Direct Chat", From d688eade43bb1eac7682351f70edf217841a7fa4 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:34:18 +0100 Subject: [PATCH 169/220] Remove commented use strict It's even less use in a comment --- src/components/views/messages/DateSeparator.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index f2ea3ffa9a..d1d588ce2d 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -14,8 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// 'use strict'; - import React from 'react'; import { _t } from 'matrix-react-sdk/lib/languageHandler'; import DateUtils from 'matrix-react-sdk/lib/DateUtils'; From 92579cf4630c609d3bf5e500640258198e76d653 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:36:58 +0100 Subject: [PATCH 170/220] Array literal --- src/components/views/messages/DateSeparator.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index d1d588ce2d..7acc9bd61e 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -19,15 +19,15 @@ import { _t } from 'matrix-react-sdk/lib/languageHandler'; import DateUtils from 'matrix-react-sdk/lib/DateUtils'; function getdaysArray() { - var days = []; - days.push(_t('Sunday')); - days.push(_t('Monday')); - days.push(_t('Tuesday')); - days.push(_t('Wednesday')); - days.push(_t('Thursday')); - days.push(_t('Friday')); - days.push(_t('Saturday')); - return days; + return [ + _t('Sunday'), + _t('Monday'), + _t('Tuesday'), + _t('Wednesday'), + _t('Thursday'), + _t('Friday'), + _t('Saturday'), + ]; } module.exports = React.createClass({ From 8ad189c79d28a76b616039c3a2895eb63255ab82 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:45:46 +0100 Subject: [PATCH 171/220] Remove unused _t import --- src/notifications/VectorPushRulesDefinitions.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/notifications/VectorPushRulesDefinitions.js b/src/notifications/VectorPushRulesDefinitions.js index b9ec3321e5..d696451d56 100644 --- a/src/notifications/VectorPushRulesDefinitions.js +++ b/src/notifications/VectorPushRulesDefinitions.js @@ -18,7 +18,6 @@ limitations under the License. var StandardActions = require('./StandardActions'); var PushRuleVectorState = require('./PushRuleVectorState'); -import { _t } from 'matrix-react-sdk/lib/languageHandler'; class VectorPushRuleDefinition { constructor(opts) { From ee2a49ad41d04c37e3945046aa7879a980c6ac41 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 13:46:01 +0100 Subject: [PATCH 172/220] Punctuation in translation strings --- src/components/views/settings/Notifications.js | 4 ++-- src/i18n/be.json | 4 ++-- src/i18n/da.json | 4 ++-- src/i18n/de_DE.json | 4 ++-- src/i18n/en_EN.json | 2 +- src/i18n/fr.json | 4 ++-- src/i18n/pt.json | 4 ++-- src/i18n/pt_BR.json | 4 ++-- src/i18n/ru.json | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index 0c114e40f2..131f47594b 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -133,7 +133,7 @@ module.exports = React.createClass({ var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); Modal.createDialog(ErrorDialog, { title: _t('Error saving email notification preferences'), - description: _t('An error occurred whilst saving your email notification preferences') + '.', + description: _t('An error occurred whilst saving your email notification preferences.'), }); }); }, @@ -177,7 +177,7 @@ module.exports = React.createClass({ var TextInputDialog = sdk.getComponent("dialogs.TextInputDialog"); Modal.createDialog(TextInputDialog, { title: _t('Keywords'), - description: _t('Enter keywords separated by a comma') + ':', + description: _t('Enter keywords separated by a comma:'), value: keywords, onFinished: function onFinished(should_leave, newValue) { diff --git a/src/i18n/be.json b/src/i18n/be.json index 0c6e9e30ed..47e566fbc7 100644 --- a/src/i18n/be.json +++ b/src/i18n/be.json @@ -3,7 +3,7 @@ "All messages": "Усе паведамленні", "All messages (loud)": "Усе паведамленні (гучна)", "All notifications are currently disabled for all targets.": "Усе апавяшчэнні ў цяперашні час адключаныя для ўсіх мэтаў.", - "An error occurred whilst saving your email notification preferences": "Адбылася памылка падчас захавання налады апавяшчэнняў па электроннай пошце", + "An error occurred whilst saving your email notification preferences.": "Адбылася памылка падчас захавання налады апавяшчэнняў па электроннай пошце.", "Cancel Sending": "Адмяніць адпраўку", "Can't update user notification settings": "Немагчыма абнавіць налады апавяшчэнняў карыстальніка", "Close": "Зачыніць", @@ -22,7 +22,7 @@ "Enable email notifications": "Ўключыць паведамлення па электроннай пошце", "Enable notifications for this account": "Ўключыць апавяшчэнні для гэтага ўліковага запісу", "Enable them now": "Уключыць іх зараз", - "Enter keywords separated by a comma": "Калі ласка, увядзіце ключавыя словы, падзеленыя коскамі", + "Enter keywords separated by a comma:": "Калі ласка, увядзіце ключавыя словы, падзеленыя коскамі:", "Error": "Памылка", "Error saving email notification preferences": "Памылка захавання налад апавяшчэнняў па электроннай пошце", "#example": "#прыклад", diff --git a/src/i18n/da.json b/src/i18n/da.json index 74c6439603..780d0bbb41 100644 --- a/src/i18n/da.json +++ b/src/i18n/da.json @@ -1,7 +1,7 @@ { "Add an email address above to configure email notifications": "Tilføj en emailadresse ovenfor for at konfigurere e-mail-underretninger", "All notifications are currently disabled for all targets.": "Alle meddelelser er for øjeblikket deaktiveret for alle mål.", - "An error occurred whilst saving your email notification preferences": "Der opstod en fejl under opbevaring af dine e-mail-underretningsindstillinger", + "An error occurred whilst saving your email notification preferences.": "Der opstod en fejl under opbevaring af dine e-mail-underretningsindstillinger.", "and remove": "Og fjern", "Can't update user notification settings": "Kan ikke opdatere brugermeddelelsesindstillinger", "Create new room": "Opret nyt rum", @@ -18,7 +18,7 @@ "Enable email notifications": "Aktivér e-mail-underretninger", "Enable notifications for this account": "Aktivér underretninger for dette brugernavn", "Enable them now": "Aktivér dem nu", - "Enter keywords separated by a comma": "Indtast søgeord adskilt af et komma", + "Enter keywords separated by a comma:": "Indtast søgeord adskilt af et komma:", "Error": "Fejl", "Error saving email notification preferences": "Fejl ved at gemme e-mail-underretningsindstillinger", "#example": "#eksempel", diff --git a/src/i18n/de_DE.json b/src/i18n/de_DE.json index d0eff4c5bc..e7f9b3c26c 100644 --- a/src/i18n/de_DE.json +++ b/src/i18n/de_DE.json @@ -25,7 +25,7 @@ "Enable them now": "Aktiviere diese jetzt", "Add an email address above to configure email notifications": "Füge eine E-Mail Adresse hinzu um Benachrichtigungen via E-Mail zu erhalten", "All notifications are currently disabled for all targets.": "Im Moment sind alle Benachrichtigungen für alle Ziele deaktiviert.", - "An error occurred whilst saving your email notification preferences": "Ein Fehler trat auf während deine E-Mail Einstellungen gespeichert wurden", + "An error occurred whilst saving your email notification preferences.": "Ein Fehler trat auf während deine E-Mail Einstellungen gespeichert wurden.", "and remove": "und entfernen", "Can't update user notification settings": "Kann Benutzerdefinierte Einstellungen nicht aktualisieren", "Couldn't find a matching Matrix room": "Kann keinen entsprechenden Matrix Raum finden", @@ -37,7 +37,7 @@ "Enable desktop notifications": "Aktiviere Desktop Benachrichtigungen", "Enable email notifications": "Aktiviere E-Mail Benachrichtigungen", "Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer", - "Enter keywords separated by a comma": "Gebe Suchbegriffe getrennt durch Kommata ein", + "Enter keywords separated by a comma:": "Gebe Suchbegriffe getrennt durch Kommata ein:", "Error": "Fehler", "Error saving email notification preferences": "Fehler beim Speichern der E-Mail Benachrichtigungseinstellungen", "#example": "#Beispiel", diff --git a/src/i18n/en_EN.json b/src/i18n/en_EN.json index c4fdf44bd1..e4f799948f 100644 --- a/src/i18n/en_EN.json +++ b/src/i18n/en_EN.json @@ -4,7 +4,7 @@ "All messages": "All messages", "All messages (loud)": "All messages (loud)", "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", - "An error occurred whilst saving your email notification preferences": "An error occurred whilst saving your email notification preferences", + "An error occurred whilst saving your email notification preferences.": "An error occurred whilst saving your email notification preferences.", "Call invitation": "Call invitation", "Cancel Sending": "Cancel Sending", "Can't update user notification settings": "Can't update user notification settings", diff --git a/src/i18n/fr.json b/src/i18n/fr.json index db39ac9fdf..958a10d10c 100644 --- a/src/i18n/fr.json +++ b/src/i18n/fr.json @@ -3,7 +3,7 @@ "All messages": "Tous les messages", "All messages (loud)": "Tous les messages (fort)", "All notifications are currently disabled for all targets.": "Toutes les notification sont désactivées pour tous les appareils.", - "An error occurred whilst saving your email notification preferences": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mails", + "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mails.", "Cancel Sending": "Annuler Envois", "Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur", "Close": "Fermer", @@ -22,7 +22,7 @@ "Enable email notifications": "Activer les notifications par e-mail", "Enable notifications for this account": "Activer les notifications pour ce compte", "Enable them now": "Les activer maintenant", - "Enter keywords separated by a comma": "Entrez les mots clés séparés par une virgule", + "Enter keywords separated by a comma:": "Entrez les mots clés séparés par une virgule:", "Error": "Erreur", "Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email", "#example": "#exemple", diff --git a/src/i18n/pt.json b/src/i18n/pt.json index 7f3aa82e0f..89385f5d7f 100644 --- a/src/i18n/pt.json +++ b/src/i18n/pt.json @@ -3,7 +3,7 @@ "All messages": "Todas as mensagens", "All messages (loud)": "Todas as mensagens (alto)", "All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos", - "An error occurred whilst saving your email notification preferences": "Um erro ocorreu enquanto salvava suas preferências de notificação por email", + "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto salvava suas preferências de notificação por email.", "Cancel Sending": "Cancelar o envio", "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", "Close": "Fechar", @@ -22,7 +22,7 @@ "Enable email notifications": "Ativar notificações por email", "Enable notifications for this account": "Ativar notificações para esta conta", "Enable them now": "Habilitar agora", - "Enter keywords separated by a comma": "Coloque cada palavras-chave separada por vírgula", + "Enter keywords separated by a comma:": "Coloque cada palavras-chave separada por vírgula:", "Error": "Erro", "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", "#example:": "#exemplo", diff --git a/src/i18n/pt_BR.json b/src/i18n/pt_BR.json index 33a407643e..7ec5999707 100644 --- a/src/i18n/pt_BR.json +++ b/src/i18n/pt_BR.json @@ -3,7 +3,7 @@ "All messages": "Todas as mensagens", "All messages (loud)": "Todas as mensagens (alto)", "All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos", - "An error occurred whilst saving your email notification preferences": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email", + "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email.", "Call invitation": "Convite para chamada", "Cancel Sending": "Cancelar o envio", "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", @@ -23,7 +23,7 @@ "Enable email notifications": "Ativar notificações por email", "Enable notifications for this account": "Ativar notificações para esta conta", "Enable them now": "Habilitar agora", - "Enter keywords separated by a comma": "Coloque cada palavras-chave separada por vírgula", + "Enter keywords separated by a comma:": "Coloque cada palavras-chave separada por vírgula:", "Error": "Erro", "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", "#example:": "#exemplo", diff --git a/src/i18n/ru.json b/src/i18n/ru.json index c0a7a28486..95949eecff 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -1,7 +1,7 @@ { "Add an email address above to configure email notifications": "Добавьте email адресс для настройки оповещений", "All notifications are currently disabled for all targets.": "Все оповещения отключены.", - "An error occurred whilst saving your email notification preferences": "Возникла ошибка при сохранении настроек оповещения вашего email", + "An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек оповещения вашего email.", "and remove": "и удалить", "Can't update user notification settings": "Не возможно обновить пользовательские настройки оповещения", "Create new room": "Создать комнату", @@ -18,7 +18,7 @@ "Enable email notifications": "Включить email оповещения", "Enable notifications for this account": "Включить оповещения для этого аккаунта", "Enable them now": "Включить сейчас", - "Enter keywords separated by a comma": "Введите ключевые слова, разделенные запятой", + "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:", "Error": "Ошибка", "Error saving email notification preferences": "Ошибка сохранения настроек email оповещений", "#example": "#пример", From 9c7731e1418ad3b906213f2a9e0c3e3e786ea39a Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 14:02:03 +0100 Subject: [PATCH 173/220] Don't include src in the test resolve root As https://github.com/matrix-org/matrix-react-sdk/pull/931 --- karma.conf.js | 1 - test/skin-sdk.js | 2 +- test/unit-tests/notifications/ContentRules-test.js | 2 +- test/unit-tests/notifications/PushRuleVectorState-test.js | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/karma.conf.js b/karma.conf.js index b0a48c92ba..1e04366313 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -47,7 +47,6 @@ webpack_config.module.noParse.push(/sinon\/pkg\/sinon\.js$/); webpack_config.resolve.alias['sinon'] = 'sinon/pkg/sinon.js'; webpack_config.resolve.root = [ - path.resolve('./src'), path.resolve('./test'), ]; diff --git a/test/skin-sdk.js b/test/skin-sdk.js index a5a7233c31..3421d5d07d 100644 --- a/test/skin-sdk.js +++ b/test/skin-sdk.js @@ -5,4 +5,4 @@ */ var sdk = require('matrix-react-sdk'); -sdk.loadSkin(require('component-index')); +sdk.loadSkin(require('../src/component-index')); diff --git a/test/unit-tests/notifications/ContentRules-test.js b/test/unit-tests/notifications/ContentRules-test.js index e7928147f6..c1cdc40a8b 100644 --- a/test/unit-tests/notifications/ContentRules-test.js +++ b/test/unit-tests/notifications/ContentRules-test.js @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -var notifications = require('notifications'); +var notifications = require('../../../src/notifications'); var ContentRules = notifications.ContentRules; var PushRuleVectorState = notifications.PushRuleVectorState; diff --git a/test/unit-tests/notifications/PushRuleVectorState-test.js b/test/unit-tests/notifications/PushRuleVectorState-test.js index 6b0f81c60c..68e7044f60 100644 --- a/test/unit-tests/notifications/PushRuleVectorState-test.js +++ b/test/unit-tests/notifications/PushRuleVectorState-test.js @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -var notifications = require('notifications'); +var notifications = require('../../../src/notifications'); var prvs = notifications.PushRuleVectorState; From e07f9a8bc90913c45e7807e380856e8321f031ab Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 15:29:58 +0100 Subject: [PATCH 174/220] Pass through i18n keys in karma tests --- test/app-tests/loading.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/app-tests/loading.js b/test/app-tests/loading.js index d3844522b9..86fad11866 100644 --- a/test/app-tests/loading.js +++ b/test/app-tests/loading.js @@ -28,6 +28,7 @@ import jssdk from 'matrix-js-sdk'; import sdk from 'matrix-react-sdk'; import MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg'; +import * as languageHandler from 'matrix-react-sdk/lib/languageHandler'; import test_utils from '../test-utils'; import MockHttpBackend from '../mock-request'; @@ -61,6 +62,10 @@ describe('loading:', function () { windowLocation = null; matrixChat = null; + + languageHandler.setMissingEntryGenerator(function(key) { + return key.split('|', 2)[1]; + }); }); afterEach(function() { From 6c3c4fc547e5ce673f8b53c7cae04e029d542321 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 16:48:21 +0100 Subject: [PATCH 175/220] Language generation and file structure * Move language files to strings/ subdir to be consistent with react-sdk * Only copy static list of languages (to avoid including languages that are only a few percent translated) * Make copy-res script work with watch mode * Other general cleanups like only write each language file once, rather than n times. --- scripts/copy-res.js | 160 ++++++++++++++------------- src/i18n/{ => strings}/basefile.json | 0 src/i18n/{ => strings}/be.json | 0 src/i18n/{ => strings}/da.json | 0 src/i18n/{ => strings}/de_DE.json | 0 src/i18n/{ => strings}/en_EN.json | 0 src/i18n/{ => strings}/fr.json | 0 src/i18n/{ => strings}/ml.json | 0 src/i18n/{ => strings}/pl.json | 0 src/i18n/{ => strings}/pt.json | 0 src/i18n/{ => strings}/pt_BR.json | 0 src/i18n/{ => strings}/ru.json | 0 12 files changed, 81 insertions(+), 79 deletions(-) rename src/i18n/{ => strings}/basefile.json (100%) rename src/i18n/{ => strings}/be.json (100%) rename src/i18n/{ => strings}/da.json (100%) rename src/i18n/{ => strings}/de_DE.json (100%) rename src/i18n/{ => strings}/en_EN.json (100%) rename src/i18n/{ => strings}/fr.json (100%) rename src/i18n/{ => strings}/ml.json (100%) rename src/i18n/{ => strings}/pl.json (100%) rename src/i18n/{ => strings}/pt.json (100%) rename src/i18n/{ => strings}/pt_BR.json (100%) rename src/i18n/{ => strings}/ru.json (100%) diff --git a/scripts/copy-res.js b/scripts/copy-res.js index 4736d401d3..9672a98ce7 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -3,6 +3,23 @@ // copies the resources into the webapp directory. // +// Languages are listed manually so we can choose when to include +// a translation in the app (because having a translation with only +// 3 strings translated is just frustrating) +// This could readily be automated, but it's nice to explicitly +// control when we languages are available. +const INCLUDE_LANGS = [ + //'be' Omitted because no translations in react-sdk + 'en_EN', + 'da', + 'de_DE', + 'fr', + 'be', + 'pt', + 'pt_BR', + 'ru', +]; + // cpx includes globbed parts of the filename in the destination, but excludes // common parents. Hence, "res/{a,b}/**": the output will be "dest/a/..." and // "dest/b/...". @@ -14,32 +31,20 @@ const COPY_LIST = [ ["node_modules/emojione/assets/svg/*", "webapp/emojione/svg/"], ["node_modules/emojione/assets/png/*", "webapp/emojione/png/"], ["./config.json", "webapp", { directwatch: 1 }], - ["src/i18n/", "webapp/i18n/", { languages: 1 }], - ["node_modules/matrix-react-sdk/src/i18n/strings/", "webapp/i18n/", { languages: 1 }], ]; +INCLUDE_LANGS.forEach(function(l) { + COPY_LIST.push([ + l, "webapp/i18n/", { lang: 1 }, + ]); +}); + const parseArgs = require('minimist'); const Cpx = require('cpx'); const chokidar = require('chokidar'); const fs = require('fs'); const rimraf = require('rimraf'); -// cleanup language files before copying them. -//rimraf("webapp/", function () { console.log('cleanup language files'); }); - -//From http://stackoverflow.com/a/20525865/4929236 -function generateFileArray(dir, files_) { - files_ = files_ || []; - var files = fs.readdirSync(dir); - for (var i in files) { - var name = files[i]; - if (name != 'basefile.json') { - files_.push(name); - } - } - return files_; -} - const argv = parseArgs( process.argv.slice(2), {} ); @@ -54,6 +59,15 @@ function errCheck(err) { } } +// Check if webapp exists +if (!fs.existsSync('webapp')) { + fs.mkdirSync('webapp'); +} +// Check if i18n exists +if (!fs.existsSync('webapp/i18n/')) { + fs.mkdirSync('webapp/i18n/'); +} + function next(i, err) { errCheck(err); @@ -67,32 +81,11 @@ function next(i, err) { const opts = ent[2] || {}; let cpx = undefined; - if (opts.languages) { - const sourceFiles = generateFileArray(source); - let Sourcelanguages = {}; - if (!fs.existsSync(dest)) { - fs.mkdirSync(dest); - } - sourceFiles.forEach(file => { - const fileContents = fs.readFileSync(source + file).toString(); - Sourcelanguages[file] = JSON.parse(fileContents); - }); - sourceFiles.forEach(file => { - if (!fs.existsSync(dest + file)) { - let o = Object.assign({}, Sourcelanguages[file]); - fs.writeFileSync(dest + file, JSON.stringify(o, null, 4)); - } else { - const fileContents = fs.readFileSync(dest + file).toString(); - let o = Object.assign(JSON.parse(fileContents), Sourcelanguages[file]); - fs.writeFileSync(dest + file, JSON.stringify(o, null, 4)); - } - }); - - } else { + if (!opts.lang) { cpx = new Cpx.Cpx(source, dest); } - if (verbose) { + if (verbose && cpx) { cpx.on("copy", (event) => { console.log(`Copied: ${event.srcPath} --> ${event.dstPath}`); }); @@ -115,59 +108,68 @@ function next(i, err) { .on('change', copy) .on('ready', cb) .on('error', errCheck); - } else if (opts.languages) { - if (verbose) { - console.log('don\'t copy language file'); - } + } else if (opts.lang) { + const reactSdkFile = 'node_modules/matrix-react-sdk/src/i18n/strings/' + source + '.json'; + const riotWebFile = 'src/i18n/strings/' + source + '.json'; + + const translations = {}; + const makeLang = () => { genLangFile(source, dest) }; + [reactSdkFile, riotWebFile].forEach(function(f) { + chokidar.watch(f) + .on('add', makeLang) + .on('change', makeLang) + //.on('ready', cb) We'd have to do this when both files are ready + .on('error', errCheck); + }); next(i + 1, err); } else { cpx.on('watch-ready', cb); cpx.on("watch-error", cb); cpx.watch(); } - } else if (opts.languages) { - if (verbose) { - console.log('don\'t copy language file'); - } + } else if (opts.lang) { + genLangFile(source, dest); next(i + 1, err); } else { cpx.copy(cb); } } -// Generate Language List +function genLangFile(lang, dest) { + const reactSdkFile = 'node_modules/matrix-react-sdk/src/i18n/strings/' + lang + '.json'; + const riotWebFile = 'src/i18n/strings/' + lang + '.json'; -const testFolder = 'src/i18n/'; -let languages = {}; -// Check if webapp exists -if (!fs.existsSync('webapp')) { - fs.mkdirSync('webapp'); -} -// Check if i18n exists -if (!fs.existsSync('webapp/i18n/')) { - fs.mkdirSync('webapp/i18n/'); -} - -if (!fs.existsSync('webapp/i18n/languages.json')) { - rimraf("webapp/i18n/languages.json", function() { console.log('cleanup languages.json file'); }); -} - -fs.readdir(testFolder, function(err, files) { - if (err) { - throw err; + const translations = {}; + [reactSdkFile, riotWebFile].forEach(function(f) { + if (fs.existsSync(f)) { + Object.assign( + translations, + JSON.parse(fs.readFileSync(f).toString()) + ); + } + }); + fs.writeFileSync(dest + lang + '.json', JSON.stringify(translations, null, 4)); + if (verbose) { + console.log("Generated language file: " + lang); } - files.forEach(function(file) { - var normalizedLanguage = file.toLowerCase().replace("_", "-").split('.json')[0]; - var languageParts = normalizedLanguage.split('-'); - if (file != 'basefile.json') { - if (languageParts.length == 2 && languageParts[0] == languageParts[1]) { - languages[languageParts[0]] = file; - } else { - languages[normalizedLanguage] = file; - } +} + +function genLangList() { + const languages = {}; + INCLUDE_LANGS.forEach(function(lang) { + const normalizedLanguage = lang.toLowerCase().replace("_", "-"); + const languageParts = normalizedLanguage.split('-'); + if (languageParts.length == 2 && languageParts[0] == languageParts[1]) { + languages[languageParts[0]] = lang; + } else { + languages[normalizedLanguage] = lang; } }); fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4)); -}) + if (verbose) { + console.log("Generated language list"); + } +} -next(0); \ No newline at end of file +genLangList(); +next(0); diff --git a/src/i18n/basefile.json b/src/i18n/strings/basefile.json similarity index 100% rename from src/i18n/basefile.json rename to src/i18n/strings/basefile.json diff --git a/src/i18n/be.json b/src/i18n/strings/be.json similarity index 100% rename from src/i18n/be.json rename to src/i18n/strings/be.json diff --git a/src/i18n/da.json b/src/i18n/strings/da.json similarity index 100% rename from src/i18n/da.json rename to src/i18n/strings/da.json diff --git a/src/i18n/de_DE.json b/src/i18n/strings/de_DE.json similarity index 100% rename from src/i18n/de_DE.json rename to src/i18n/strings/de_DE.json diff --git a/src/i18n/en_EN.json b/src/i18n/strings/en_EN.json similarity index 100% rename from src/i18n/en_EN.json rename to src/i18n/strings/en_EN.json diff --git a/src/i18n/fr.json b/src/i18n/strings/fr.json similarity index 100% rename from src/i18n/fr.json rename to src/i18n/strings/fr.json diff --git a/src/i18n/ml.json b/src/i18n/strings/ml.json similarity index 100% rename from src/i18n/ml.json rename to src/i18n/strings/ml.json diff --git a/src/i18n/pl.json b/src/i18n/strings/pl.json similarity index 100% rename from src/i18n/pl.json rename to src/i18n/strings/pl.json diff --git a/src/i18n/pt.json b/src/i18n/strings/pt.json similarity index 100% rename from src/i18n/pt.json rename to src/i18n/strings/pt.json diff --git a/src/i18n/pt_BR.json b/src/i18n/strings/pt_BR.json similarity index 100% rename from src/i18n/pt_BR.json rename to src/i18n/strings/pt_BR.json diff --git a/src/i18n/ru.json b/src/i18n/strings/ru.json similarity index 100% rename from src/i18n/ru.json rename to src/i18n/strings/ru.json From 4fcaccbc7fe8b444182f4cdae01ba22e8b4099a2 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 16:56:49 +0100 Subject: [PATCH 176/220] Merge https://github.com/MTRNord/riot-web/pull/69 --- src/i18n/strings/fr.json | 182 +++++++++++++++++++++++++-------------- 1 file changed, 118 insertions(+), 64 deletions(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 958a10d10c..7017e4a983 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -1,66 +1,120 @@ { - "Add an email address above to configure email notifications": "Ajouter une adresse email pour la configuration des notifications par email", - "All messages": "Tous les messages", - "All messages (loud)": "Tous les messages (fort)", - "All notifications are currently disabled for all targets.": "Toutes les notification sont désactivées pour tous les appareils.", - "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mails.", - "Cancel Sending": "Annuler Envois", - "Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur", - "Close": "Fermer", - "Create new room": "Créer un nouveau salon", - "Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix", - "Custom Server Options": "Options de Serveur Personnalisé", - "delete the alias": "Supprimer l'alias", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer le salon alias %(alias)s et supprimer %(name)s du répertoire?", - "Direct Chat": "Chat direct", - "Directory": "Dossier", - "Dismiss": "Rejeter", - "Download this file": "Télécharger ce fichier", - "Drop here to %(verb)s": "Déposer ici pour %(verb)s", - "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", - "Enable desktop notifications": "Activer les notifications de bureau", - "Enable email notifications": "Activer les notifications par e-mail", - "Enable notifications for this account": "Activer les notifications pour ce compte", - "Enable them now": "Les activer maintenant", - "Enter keywords separated by a comma:": "Entrez les mots clés séparés par une virgule:", - "Error": "Erreur", - "Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email", - "#example": "#exemple", - "Failed to": "Echec pour", - "Failed to add tag %(tagName)s to room": "Echec lors de l'ajout du tag %(tagName)s pour le salon", - "Failed to change settings": "Changement de configuration échouée", - "Failed to forget room %(errCode)s": "Echec lors de l'oublie du salon %(errCode)s", - "Failed to update keywords": "Échec dans la mise à jour des mots clés", - "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison", - "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics", - "Failed to join the room": "Échec pour joindre le salon", - "Failed to remove tag %(prevTag)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", - "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct", - "Favourite": "Favouris", - "Operation failed": "L'opération a échoué", - "Please Register": "Veuillez vous enregistrer", - "powered by Matrix": "propulsé par Matrix", - "Quote": "Citer", - "Redact": "Rédiger", - "Reject": "Rejeter", - "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire?", - "Remove": "Supprimer", - "Resend": "Renvoyer", - "Settings": "Paramètres", - "Start chat": "Démarrer la discussion", - "unknown error code": "Code erreur inconnu", - "View Source": "Voir la Source", - "You cannot delete this image. (%(code)s)": "Vous ne pouvez pas supprimer cette image. (%(code)s)", - "You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)", - "You are not receiving desktop notifications": "Vous ne recevez pas les notifications sur votre bureau", - "Sunday": "Dimanche", - "Monday": "Lundi", - "Tuesday": "Mardi", - "Wednesday": "Mercredi", - "Thursday": "Jeudi", - "Friday": "Vendredi", - "Saturday": "Samedi", - "Today": "Aujourd'hui", - "Yesterday": "Hier", - "Welcome page": "Page de bienvenue" + "Add an email address above to configure email notifications": "Ajouter une adresse email pour la configuration des notifications par email", + "All messages": "Tous les messages", + "All messages (loud)": "Tous les messages (fort)", + "All notifications are currently disabled for all targets.": "Toutes les notifications sont désactivées pour tous les appareils.", + "An error occurred whilst saving your email notification preferences": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications par e-mail", + "Cancel Sending": "Annuler l'envoi", + "Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur", + "Close": "Fermer", + "Create new room": "Créer un nouveau salon", + "Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix", + "Custom Server Options": "Options de Serveur Personnalisé", + "delete the alias": "Supprimer l'alias", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire?", + "Direct Chat": "Chat direct", + "Directory": "Répertoire", + "Dismiss": "Rejeter", + "Download this file": "Télécharger ce fichier", + "Drop here to %(verb)s": "Déposer ici pour %(verb)s", + "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", + "Enable desktop notifications": "Activer les notifications de bureau", + "Enable email notifications": "Activer les notifications par e-mail", + "Enable notifications for this account": "Activer les notifications pour ce compte", + "Enable them now": "Les activer maintenant", + "Enter keywords separated by a comma": "Entrez les mots clés séparés par une virgule", + "Error": "Erreur", + "Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email", + "#example": "#exemple", + "Failed to": "Echec pour", + "Failed to add tag %(tagName)s to room": "Echec lors de l'ajout du tag %(tagName)s pour le salon", + "Failed to change settings": "Changement de configuration échouée", + "Failed to forget room %(errCode)s": "Echec lors de l'oublie du salon %(errCode)s", + "Failed to update keywords": "Échec dans la mise à jour des mots clés", + "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison", + "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics", + "Failed to join the room": "Échec pour joindre le salon", + "Failed to remove tag %(prevTag)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", + "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct", + "Favourite": "Favoris", + "Operation failed": "L'opération a échoué", + "Please Register": "Veuillez vous enregistrer", + "powered by Matrix": "propulsé par Matrix", + "Quote": "Citer", + "Redact": "Rédiger", + "Reject": "Rejeter", + "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire?", + "Remove": "Supprimer", + "Resend": "Renvoyer", + "Settings": "Paramètres", + "Start chat": "Démarrer une discussion", + "unknown error code": "Code erreur inconnu", + "View Source": "Voir la source", + "You cannot delete this image. (%(code)s)": "Vous ne pouvez pas supprimer cette image. (%(code)s)", + "You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)", + "You are not receiving desktop notifications": "Vous ne recevez pas les notifications sur votre bureau", + "Sunday": "Dimanche", + "Monday": "Lundi", + "Tuesday": "Mardi", + "Wednesday": "Mercredi", + "Thursday": "Jeudi", + "Friday": "Vendredi", + "Saturday": "Samedi", + "Today": "Aujourd'hui", + "Yesterday": "Hier", + "Welcome page": "Page d'accueil", + "Call invitation": "Appel entrant", + "Failed to set Direct Message status of room": "Échec de la configuration de l'état de Message Direct du salon", + "Fetching third party location failed": "Échec de la récupération de la localisation tierce", + "Files": "Fichiers", + "Filter room names": "Filtrer les noms des salons", + "Forget": "Oublier", + " from room": " du salon", + "Guest users can't invite users. Please register to invite": "Les invités ne peuvent démarrer une discussion. Merci de vous enregistrer pour pouvoir démarrer une discussion", + "Invite to this room": "Inviter dans ce salon", + "Keywords": "Mots-clés", + "Leave": "Quitter", + "Low Priority": "Priorité Basse", + "Members": "Membres", + "Mentions only": "Seulement les mentions", + "Messages containing my display name": "Messages contenant mon nom", + "Messages containing my user name": "Message contenant mon nom d'utilisateur", + "Messages in group chats": "Messages dans les conversations de groupe", + "Messages in one-to-one chats": "Messages dans les conversations directes", + "Messages sent by bot": "Messages envoyés par des robots", + "more": "plus", + "Mute": "Muet", + "No rooms to show": "Aucun salon à afficher", + "Noisy": "Sonore", + "Notification targets": "Appareils recevant les notifications", + "Notifications": "Notifications", + "Notifications on the following keywords follow rules which can’t be displayed here": "Les mots-clés suivants suivent des règles de notification qui ne peuvent être affichées ici", + "Notify for all other messages/rooms": "Me notifier pour tous les autres messages/salons", + "Notify me for anything else": "Me notifier pour tout le reste", + "Off": "Désactivé", + "On": "Activé", + "Permalink": "Permalien", + "remove %(name)s from the directory": "supprimer %(name)s du répertoire", + "Remove from Directory": "Supprimer du répertoire", + "Riot does not know how to join a room on this network": "Riot ne peut pas joindre un salon sur ce réseau", + "Room directory": "Répertoire des salons", + "Room not found": "Salon non trouvé", + "Search for a room": "Chercher un salon", + "Source URL": "URL source", + "The Home Server may be too old to support third party networks": "Le Home Server semble trop ancien pour supporter des réseaux tiers", + "There are advanced notifications which are not shown here": "Il existe une configuration avancée des notifications qui ne peut être affichée ici", + "The server may be unavailable or overloaded": "Le serveur est indisponible ou surchargé", + "This room is inaccessible to guests. You may be able to join if you register": "Ce salon n'est pas ouvert aux invités. Vous pourrez peut-être le rejoindre si vous vous enregistrez", + "Unable to fetch notification target list": "Impossible de récupérer la liste des appareils recevant les notifications", + "Unable to join network": "Impossible de rejoindre le réseau", + "Unable to look up room ID from server": "Impossible de récupérer l'ID du salon sur le serveur", + "Unhide Preview": "Dévoiler l'aperçu", + "Unnamed room": "Salon anonyme", + "Uploaded on %(date)s by %(user)s": "Téléchargé le %(date)s par %(user)s", + "View Decrypted Source": "Voir la source décryptée", + "When I'm invited to a room": "Quand je suis invité dans un salon", + "World readable": "Visible par tout le monde", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même", + "Guests can join": "Ouvert aux invités", + " to room": " au salon" } From d3875ec794506ef296c36b8c5c7d19c3ef7a0f3b Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 17:11:11 +0100 Subject: [PATCH 177/220] Oops, include file extension in language list --- scripts/copy-res.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/copy-res.js b/scripts/copy-res.js index 9672a98ce7..8554b14674 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -160,9 +160,9 @@ function genLangList() { const normalizedLanguage = lang.toLowerCase().replace("_", "-"); const languageParts = normalizedLanguage.split('-'); if (languageParts.length == 2 && languageParts[0] == languageParts[1]) { - languages[languageParts[0]] = lang; + languages[languageParts[0]] = lang + '.json'; } else { - languages[normalizedLanguage] = lang; + languages[normalizedLanguage] = lang + '.json'; } }); fs.writeFile('webapp/i18n/languages.json', JSON.stringify(languages, null, 4)); From e26422ef1007158ed2c90d7c4cececf493751919 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 26 May 2017 18:22:53 +0100 Subject: [PATCH 178/220] fix a typo --- .../vector/css/matrix-react-sdk/views/rooms/_EventTile.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index 3ea25ba2c8..2dd037eba2 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -94,7 +94,7 @@ limitations under the License. */ .mx_EventTile_selected .mx_EventTile_line { border-left: $accent-color 5px solid; - padding-left: px; + padding-left: 60px; background-color: $event-selected-color; } From d313f4c7b64be55b244d38c849ed4bd913fc2040 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 18:44:08 +0100 Subject: [PATCH 179/220] Merge https://github.com/MTRNord/riot-web/pull/70/ --- src/i18n/strings/fr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 7017e4a983..8de03d727d 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -11,8 +11,8 @@ "Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix", "Custom Server Options": "Options de Serveur Personnalisé", "delete the alias": "Supprimer l'alias", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire?", - "Direct Chat": "Chat direct", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire ?", + "Direct Chat": "Conversation Directe", "Directory": "Répertoire", "Dismiss": "Rejeter", "Download this file": "Télécharger ce fichier", @@ -33,7 +33,7 @@ "Failed to update keywords": "Échec dans la mise à jour des mots clés", "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison", "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics", - "Failed to join the room": "Échec pour joindre le salon", + "Failed to join the room": "Échec de l'adhésion au salon", "Failed to remove tag %(prevTag)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct", "Favourite": "Favoris", @@ -43,7 +43,7 @@ "Quote": "Citer", "Redact": "Rédiger", "Reject": "Rejeter", - "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire?", + "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire ?", "Remove": "Supprimer", "Resend": "Renvoyer", "Settings": "Paramètres", From 09adfbd6d6ae70f262985825abfbcac00a9518b2 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 26 May 2017 19:39:05 +0100 Subject: [PATCH 180/220] remove stale i18n instructions --- docs/translating.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/translating.md b/docs/translating.md index d79a582392..a83d7ce711 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -34,7 +34,6 @@ Head to the explanations under Steb 2b 3. Select our language 4. Start translating like in 2a.3 5. Repeat these steps for the other projects which are listed at the link of step 2b.1 -6. Add your language to the array at the [config example](../../blob/develop/config.sample.json#L14) ### What means the green button under the text field? From 281979984394dfd3d043b57e6f1495f44c22dc91 Mon Sep 17 00:00:00 2001 From: Krombel Date: Fri, 26 May 2017 18:43:08 +0000 Subject: [PATCH 181/220] Translated using Weblate (German) Currently translated at 97.5% (117 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/de/ --- src/i18n/strings/de_DE.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index e7f9b3c26c..1c28eeee91 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -117,5 +117,13 @@ "Sunday": "Sonntag", "Monday": "Montag", "Yesterday": "Gestern", - "Welcome page": "Willkommensseite" + "Welcome page": "Willkommensseite", + "Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen", + "Call invitation": "Anruf-Einladung", + "Enter keywords separated by a comma": "Trage Schlagworte, mit Komma getrennt, ein", + "Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten", + "Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten", + "Messages in group chats": "Nachrichten in Chat-Gruppen", + "Messages in one-to-one chats": "Nachrichten in Eins-zu-Eins-Chats", + "Messages sent by bot": "Nachrichten von Bots" } From d626542baf61d118bd2624df4825de5ffb992ec9 Mon Sep 17 00:00:00 2001 From: Krombel Date: Fri, 26 May 2017 18:43:23 +0000 Subject: [PATCH 182/220] Translated using Weblate (German) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/de/ --- src/i18n/strings/de_DE.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 1c28eeee91..443bf7f902 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -125,5 +125,8 @@ "Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten", "Messages in group chats": "Nachrichten in Chat-Gruppen", "Messages in one-to-one chats": "Nachrichten in Eins-zu-Eins-Chats", - "Messages sent by bot": "Nachrichten von Bots" + "Messages sent by bot": "Nachrichten von Bots", + "more": "mehr", + "When I'm invited to a room": "Wenn ich in einen Raum eingeladen werde", + "customServer_text": "Du kannst die erweiterten Server-Optioen nutzen um dich an anderen Matrix-Servern mittels anderer Heimserver-URL anzumelden.
      Dies erlaubt dir Riot mit einem existierendem Konto auf einem anderen Heimserver zu nutzen.

      Du kannst auch einen benutzerdefinierten Identitäts-Server setzen, aber du wirst dann nicht in der Lage sein, Nutzer per E-Mail-Adresse einzuladen oder selbst mit E-Mail-Adresse eingeladen zu werden." } From 963c90c833a9f129e3e01e8da3022a2225556783 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 26 May 2017 19:51:04 +0100 Subject: [PATCH 183/220] switch to develop deps... --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5575803387..0f0ffe3653 100644 --- a/package.json +++ b/package.json @@ -65,8 +65,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.7.8", - "matrix-react-sdk": "0.8.9", + "matrix-js-sdk": "matrix-org/matrix-js-sdk#develop", + "matrix-react-sdk": "matrix-org/matrix-react-sdk#develop", "modernizr": "^3.1.0", "pako": "^1.0.5", "q": "^1.4.1", From 8ddf4ced648ec546926cf1258d3a1908b0981d1a Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 26 May 2017 13:09:40 -0600 Subject: [PATCH 184/220] Update translating.md: Minor suggestions Primarily spelling, wording, and grammar. A little bit of formatting too. --- docs/translating.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/translating.md b/docs/translating.md index a83d7ce711..cd8dd4f6b7 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -9,21 +9,21 @@ ## Step 1: Preparing your Weblate Profile 1. Head to https://translate.nordgedanken.de and register either via Github or email -2. After register check if you got a email to verify your account and click the link (if there is none head to step 1.4) +2. After registering check if you got an email to verify your account and click the link (if there is none head to step 1.4) 3. Log into weblate 4. Head to https://translate.nordgedanken.de/accounts/profile/ and select the languages you know and maybe another language you know too. 6. Head to https://translate.nordgedanken.de/accounts/profile/#subscriptions and select Riot Web as Project ## How to check if your language already is being translated -Go to https://translate.nordgedanken.de/projects/riot-web/ and in all 3 sub projects if your language is listed. -If it is listed go to Step 2a if not go to Step 2b +Go to https://translate.nordgedanken.de/projects/riot-web/ and visit the 2 sub-projects. +If your language is listed go to Step 2a and if not go to Step 2b ## Step 2a: Helping on existing languages. 1. Head to one of the projects listed https://translate.nordgedanken.de/projects/riot-web/ 2. Click on the ``translate`` button on the right side of your language -3. Fill in the translations in the writeable field. You will see the original English string and the String of your second language above. +3. Fill in the translations in the writeable field. You will see the original English string and the string of your second language above. Head to the explanations under Steb 2b @@ -31,7 +31,7 @@ Head to the explanations under Steb 2b 1. Go to one of the projects listed https://translate.nordgedanken.de/projects/riot-web/ 2. Click the ``Start new language`` button at the bottom -3. Select our language +3. Select a language 4. Start translating like in 2a.3 5. Repeat these steps for the other projects which are listed at the link of step 2b.1 @@ -41,7 +41,7 @@ The green button let you save our translations directly. Please only use it if y ### What means the yellow button under the text field? -The yellow button has to be used if you are unsure about the translation but you have a rough idea. It ads a new suggestion to the string which can than be reviewed by others. +The yellow button has to be used if you are unsure about the translation but you have a rough idea. It adds a new suggestion to the string which can than be reviewed by others. ### What are "%(something)s"? From de07654f2d778d986fc3e351aa1c4ae8b54eb431 Mon Sep 17 00:00:00 2001 From: dambador Date: Fri, 26 May 2017 19:52:01 +0000 Subject: [PATCH 185/220] Translated using Weblate (Russian) Currently translated at 90.8% (109 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/ru/ --- src/i18n/strings/ru.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 95949eecff..981e3a6cfb 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1,5 +1,5 @@ { - "Add an email address above to configure email notifications": "Добавьте email адресс для настройки оповещений", + "Add an email address above to configure email notifications": "Добавьте email адрес для оповещений", "All notifications are currently disabled for all targets.": "Все оповещения отключены.", "An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек оповещения вашего email.", "and remove": "и удалить", @@ -81,7 +81,7 @@ "You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Вы могли настроить их в клиенте, отличном от Riot. Вы не можете настроить их в Riot, но они все еще применяются", "All messages": "Все сообщения", - "All messages (loud)": "Все сообщения (громко)", + "All messages (loud)": "", "Cancel Sending": "Отмена отправки", "Close": "Закрыть", "Download this file": "Скачать этот файл", @@ -115,5 +115,6 @@ "remove %(name)s from the directory": "удалить %(name)s из каталога", "Resend": "Переслать снова", "Source URL": "Источник URL", - "Welcome page": "Домашняя страница" + "Welcome page": "Домашняя страница", + "Advanced notification settings": "Настройки уведомлений" } From 3a7888e8a8c012edf7cf0063cb2e44e8c859d71a Mon Sep 17 00:00:00 2001 From: Stanislav N Date: Fri, 26 May 2017 20:07:23 +0000 Subject: [PATCH 186/220] Translated using Weblate (Russian) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/ru/ --- src/i18n/strings/ru.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 981e3a6cfb..b01f8d9f11 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -11,7 +11,7 @@ "Delete the room alias": "Удалить привязку комнаты", "Direct Chat": "Персональное сообщение", "Directory": "Каталог", - "Dismiss": "Отелонено", + "Dismiss": "Отмена", "Drop here to": "Перетащите сюда", "Enable audible notifications in web client": "Включить звуковые оповещения в веб клиенте", "Enable desktop notifications": "Включить оповещения на рабочем столе", @@ -81,7 +81,7 @@ "You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Вы могли настроить их в клиенте, отличном от Riot. Вы не можете настроить их в Riot, но они все еще применяются", "All messages": "Все сообщения", - "All messages (loud)": "", + "All messages (loud)": "Все сообщения (громко)", "Cancel Sending": "Отмена отправки", "Close": "Закрыть", "Download this file": "Скачать этот файл", @@ -116,5 +116,15 @@ "Resend": "Переслать снова", "Source URL": "Источник URL", "Welcome page": "Домашняя страница", - "Advanced notification settings": "Настройки уведомлений" + "Advanced notification settings": "Настройки уведомлений", + "Call invitation": "Звонок", + "customServer_text": "Вы можете войти с помощью вашего сервера.
      Это позволяет вам использовать Riot с уже существующей учетной записью на другом сервере.

      Вы также можете задать свой сервер идентификации, но тогда вы не можете приглашать пользователей с помощью email-адреса и не можете быть приглашены по нему.", + "Enter keywords separated by a comma": "Введите ключевые слова, разделенные запятой", + "Messages containing my display name": "Сообщения, содержащие мое отображаемое имя", + "Messages containing my user name": "Сообщение, содержащие мое имя пользователя", + "Messages in group chats": "Сообщения в групповых чатах", + "Messages in one-to-one chats": "Сообщения в приватных чатах", + "Messages sent by bot": "Сообщения, отправленные ботом", + "more": "больше", + "When I'm invited to a room": "Когда я приглашен в комнату" } From 930e8af48bf28182dd666e43204d4b1b5c0948d2 Mon Sep 17 00:00:00 2001 From: Stanislav N Date: Fri, 26 May 2017 20:08:38 +0000 Subject: [PATCH 187/220] Translated using Weblate (Russian) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/ru/ --- src/i18n/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index b01f8d9f11..63ee526b08 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -77,7 +77,7 @@ "Unable to look up room ID from server": "Не возможно найти ID комнаты на сервере", "unknown error code": "неизвестная ошибка", "Unnamed room": "Комната без названия", - "World readable": "Читаем мир", + "World readable": "Доступно всем", "You are not receiving desktop notifications": "Вы не получаете уведомления на рабочем столе", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Вы могли настроить их в клиенте, отличном от Riot. Вы не можете настроить их в Riot, но они все еще применяются", "All messages": "Все сообщения", From 411a8be61dd4ae8850f2005046cc761c863ad4a5 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Fri, 26 May 2017 20:17:46 +0000 Subject: [PATCH 188/220] Added translation using Weblate (Hungarian) --- src/i18n/strings/hu.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/hu.json diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/hu.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 34af9f9b4b32e8eea0e55a925b4aa5204d0f177e Mon Sep 17 00:00:00 2001 From: Max Sandholm Date: Fri, 26 May 2017 21:20:15 +0000 Subject: [PATCH 189/220] Added translation using Weblate (Swedish) --- src/i18n/strings/sv.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/sv.json diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/sv.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 96393f69b6a5aa832a6591d77048d62e02629c2c Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 22:37:44 +0100 Subject: [PATCH 190/220] Remove old versions before linking react/js sdk --- scripts/fetch-develop.deps.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/fetch-develop.deps.sh b/scripts/fetch-develop.deps.sh index c3bfb4e169..bbbc834152 100755 --- a/scripts/fetch-develop.deps.sh +++ b/scripts/fetch-develop.deps.sh @@ -40,11 +40,13 @@ dodep matrix-org matrix-react-sdk mkdir -p node_modules cd node_modules +rm -r matrix-js-sdk 2> /dev/null ln -s ../matrix-js-sdk ./ pushd matrix-js-sdk npm install popd +rm -r matrix-react-sdk 2> /dev/null ln -s ../matrix-react-sdk ./ pushd matrix-react-sdk mkdir -p node_modules From 35a671d43c53760698a6131b38c6628e2799dbe9 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Fri, 26 May 2017 22:45:14 +0100 Subject: [PATCH 191/220] more i18n instructions --- docs/translating.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/translating.md b/docs/translating.md index cd8dd4f6b7..ca9920d323 100644 --- a/docs/translating.md +++ b/docs/translating.md @@ -6,6 +6,11 @@ - Be able to understand English - Be able to understand the language you want to translate riot-web into +## Step 0: Join #riotweb-translations:matrix.org + +1. Come and join https://riot.im/develop/#/room/#riotweb-translations:matrix.org +2. Read scrollback and/or ask if anyone else is working on your language, and co-ordinate if needed. In general little-or-no coordination is needed though :) + ## Step 1: Preparing your Weblate Profile 1. Head to https://translate.nordgedanken.de and register either via Github or email @@ -45,12 +50,15 @@ The yellow button has to be used if you are unsure about the translation but you ### What are "%(something)s"? -These things are variables that are filled inside the code. They can be room names, usernames or similiar. If you find one use it for changing the word order but do not delete it as thing are missing if you do so. +These things are variables that are expanded when displayed by Riot. They can be room names, usernames or similar. If you find one, you can move to the right place for your language, but not delete it as the variable will be missing if you do. + +A special case is `%(urlStart)s` and `%(urlEnd)s` which are used to mark the beginning of a hyperlink (i.e. `` and ``. You must keep these markers surrounding the equivalent string in your language that needs to be hyperlinked. ### "I want to come back to this string. How?" You can use inside the translation field "Review needed" checkbox. It will be shown as Strings that need to be reviewed. + ### Further reading -The official Doc provides some more in-deepth explanation on how to do translations and talks about do and don't's. You can find it at: https://docs.weblate.org/en/latest/user/translating.html +The official Weblate doc provides some more in-deepth explanation on how to do translations and talks about do and don'ts. You can find it at: https://docs.weblate.org/en/latest/user/translating.html From 22e5e2126b823a615a4a0355cad00e52ebe3480e Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 22:51:55 +0100 Subject: [PATCH 192/220] rev-parse the commit from the deps Because it's not added to package.json by npm anymore --- scripts/jenkins.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/scripts/jenkins.sh b/scripts/jenkins.sh index 17f86fe126..4f2e940564 100755 --- a/scripts/jenkins.sh +++ b/scripts/jenkins.sh @@ -34,11 +34,9 @@ npm run lintall -- -f checkstyle -o eslint.xml || true rm dist/riot-*.tar.gz || true # rm previous artifacts without failing if it doesn't exist - # node_modules deps from 'npm install' don't have a .git dir so can't - # rev-parse; but they do set the commit in package.json under 'gitHead' which - # we're grabbing here. -REACT_SHA=$(grep 'gitHead' node_modules/matrix-react-sdk/package.json | cut -d \" -f 4 | head -c 12) -JSSDK_SHA=$(grep 'gitHead' node_modules/matrix-js-sdk/package.json | cut -d \" -f 4 | head -c 12) +# Since the deps are fetched from git, we can rev-parse +REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD) +JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD) VECTOR_SHA=$(git rev-parse --short=12 HEAD) # use the ACTUAL SHA rather than assume develop From d0395b939a213b9bd1a8dbd0770c4d1741fd0158 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 26 May 2017 22:59:40 +0100 Subject: [PATCH 193/220] Add babel eslint plugin As our linter has been failing because it needs it --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 0f0ffe3653..29b5beee07 100644 --- a/package.json +++ b/package.json @@ -104,6 +104,7 @@ "emojione": "^2.2.7", "eslint": "^3.14.0", "eslint-config-google": "^0.7.1", + "eslint-plugin-babel": "^4.1.1", "eslint-plugin-flowtype": "^2.30.0", "eslint-plugin-react": "^6.9.0", "expect": "^1.16.0", From 1ff6d4846c840b66aa1247a40b80cf45d9d484b5 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 27 May 2017 00:13:59 +0100 Subject: [PATCH 194/220] css for alwaysShowTimestamps --- .../vector/css/matrix-react-sdk/views/rooms/_EventTile.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss index 2dd037eba2..9d970ad454 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EventTile.scss @@ -183,6 +183,10 @@ limitations under the License. visibility: visible; } +.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { + visibility: visible; +} + .mx_EventTile_selected .mx_MessageTimestamp { left: 3px; } From 8e250531ce03e0f948f7fdc556fee94f332ae948 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Fri, 26 May 2017 20:31:02 +0000 Subject: [PATCH 195/220] Translated using Weblate (Hungarian) Currently translated at 11.6% (14 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/hu/ --- src/i18n/strings/hu.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 9e26dfeeb6..8d836886ec 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -1 +1,16 @@ -{} \ No newline at end of file +{ + "Add an email address above to configure email notifications": "E-mail értesítés beállításához írd be az e-mail címed", + "Advanced notification settings": "Haladó értesítési beállítások", + "All messages": "Minden üzenet", + "All messages (loud)": "Minden üzenet (hangos)", + "All notifications are currently disabled for all targets.": "Minden céleszközön minden értesítés tiltva van.", + "An error occurred whilst saving your email notification preferences.": "Hiba történt az e-mail értesítés beállításánál.", + "Call invitation": "Hívás meghívó", + "Cancel Sending": "Küldés megszakítása", + "Can't update user notification settings": "Nem sikerül frissíteni az értesítési beállításokat", + "Close": "Bezár", + "Create new room": "Új szoba készítés", + "Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba", + "Custom Server Options": "Egyedi szerver beállítások", + "delete the alias": "becenév törlése" +} From 0074fa00ac294ce9529ccc032fe3d79472030034 Mon Sep 17 00:00:00 2001 From: dambador Date: Fri, 26 May 2017 21:39:41 +0000 Subject: [PATCH 196/220] Translated using Weblate (Russian) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/ru/ --- src/i18n/strings/ru.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 63ee526b08..708a9a7637 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -1,7 +1,7 @@ { "Add an email address above to configure email notifications": "Добавьте email адрес для оповещений", "All notifications are currently disabled for all targets.": "Все оповещения отключены.", - "An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек оповещения вашего email.", + "An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек оповещения по электронной почте.", "and remove": "и удалить", "Can't update user notification settings": "Не возможно обновить пользовательские настройки оповещения", "Create new room": "Создать комнату", @@ -15,23 +15,23 @@ "Drop here to": "Перетащите сюда", "Enable audible notifications in web client": "Включить звуковые оповещения в веб клиенте", "Enable desktop notifications": "Включить оповещения на рабочем столе", - "Enable email notifications": "Включить email оповещения", + "Enable email notifications": "Включить оповещения по электронной почте", "Enable notifications for this account": "Включить оповещения для этого аккаунта", "Enable them now": "Включить сейчас", "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:", "Error": "Ошибка", - "Error saving email notification preferences": "Ошибка сохранения настроек email оповещений", + "Error saving email notification preferences": "Ошибка сохранения настроек оповещений по электронной почте", "#example": "#пример", "Failed to": "Не удалось", "Failed to add tag ": "Не удалось добавить тег ", "Failed to change settings": "Не удалось изменить настройки", "Failed to update keywords": "Не удалось обновить ключевые слова", "Failed to get protocol list from Home Server": "Не удалось получить список протоколов с Пользовательского Сервера", - "Failed to get public room list": "Не удалось получить список публичных комнат", - "Failed to join the room": "Не удалось присоединиться к комнате", + "Failed to get public room list": "Не удалось получить список общих комнат", + "Failed to join the room": "Не удалось войти в комнату", "Failed to remove tag ": "Не удалось удалить тег ", "Failed to set Direct Message status of room": "Не удалось задать статус комнаты Персональное Сообщение", - "Favourite": "Фаворит", + "Favourite": "Избранное", "Fetching third party location failed": "Не удалось получить местоположение", "Files": "Файлы", "Filter room names": "Отфильтровать по названию комнаты", @@ -46,7 +46,7 @@ "Low Priority": "Низкий приоритет", "Members": "Пользователи", "No rooms to show": "Нет комнат для отображения", - "Noisy": "Шумный", + "Noisy": "Звук", "Notification targets": "Цели уведомления", "Notifications": "Уведомления", "Notifications on the following keywords follow rules which can’t be displayed here:": "Уведомления по следующим ключевым словам соответствуют правилам, которые нельзя отобразить здесь", @@ -55,24 +55,24 @@ "Off": "Выключить", "On": "Включить", "Operation failed": "Операция не удалась", - "Please Register": "Пожалуйста зарегистрируйтесь", + "Please Register": "Пожалуйста, зарегистрируйтесь", "powered by Matrix": "разработано в Matrix", "Reject": "Отклонить", "Remove": "Удалить", "remove": "удалить", "Remove from Directory": "Удалить из каталога", - "Riot does not know how to join a room on this network": "Riot не знает как присоединиться к этой сети", + "Riot does not know how to join a room on this network": "Riot не знает как войти в комнату в этой сети", "Room directory": "Каталог комнат", "Room not found": "Комната не найдена", "Search for a room": "Искать комнату", "Settings": "Настройки", "Start chat": "Начать чат", "The Home Server may be too old to support third party networks": "Пользовательский сервер может быть слишком старым для поддержки сторонних сетей", - "There are advanced notifications which are not shown here": "TЗдесь представлены расширенные уведомления, которые здесь не показаны", - "The server may be unavailable or overloaded": "Возможно, сервер недоступен или перегружен", + "There are advanced notifications which are not shown here": "Здесь расширенные уведомления, которые здесь не показаны", + "The server may be unavailable or overloaded": "Возможно сервер недоступен или перегружен", "This room is inaccessible to guests. You may be able to join if you register": "Эта комната недоступна для гостей. Вы можете присоединиться, если зарегистрируетесь", " to room": " к комнате", - "Unable to fetch notification target list": "Не удалось получить список целевых уведомлений", + "Unable to fetch notification target list": "Не удалось получить список целей уведомления", "Unable to join network": "Не возможно присоединиться к сети", "Unable to look up room ID from server": "Не возможно найти ID комнаты на сервере", "unknown error code": "неизвестная ошибка", @@ -89,9 +89,9 @@ "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и очистить %(name)s из каталога?", "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", "Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s", - "Failed to remove tag %(prevTag)s from room": "Не удалось удалить тег %(prevTag)s из комнаты", - "Failed to set direct chat tag": "Не удалось установить прямой чат тег", - "Unhide Preview": "Показать пред. просмотр", + "Failed to remove tag %(prevTag)s from room": "Не удалось убрать пометку %(prevTag)s из комнаты", + "Failed to set direct chat tag": "Не удалось пометить прямую беседу", + "Unhide Preview": "Показать предпросмотр", "Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s", "View Decrypted Source": "Просмотр зашыфрованного источника", "View Source": "Просмотр источника", @@ -103,7 +103,7 @@ "Wednesday": "Среда", "Thursday": "Четверг", "Friday": "Пятница", - "Saturday": "Субота", + "Saturday": "Суббота", "Today": "Сегодня", "Yesterday": "Вчера", "Mentions only": "Только упоминание", @@ -114,7 +114,7 @@ "Remove %(name)s from the directory?": "Удалить %(name)s из каталога?", "remove %(name)s from the directory": "удалить %(name)s из каталога", "Resend": "Переслать снова", - "Source URL": "Источник URL", + "Source URL": "Исходный URL", "Welcome page": "Домашняя страница", "Advanced notification settings": "Настройки уведомлений", "Call invitation": "Звонок", From ac42fbbd494bbd63790c264d6395736a361e8d40 Mon Sep 17 00:00:00 2001 From: Max Sandholm Date: Fri, 26 May 2017 21:48:34 +0000 Subject: [PATCH 197/220] Translated using Weblate (Swedish) Currently translated at 31.6% (38 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/sv/ --- src/i18n/strings/sv.json | 41 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 9e26dfeeb6..0f84fc03dd 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1 +1,40 @@ -{} \ No newline at end of file +{ + "Add an email address above to configure email notifications": "Lägg till en epostadress här för att konfigurera epostaviseringar", + "Advanced notification settings": "Avancerade aviseringsinställingar", + "All messages": "Alla meddelanden", + "All messages (loud)": "Alla meddelanden (högljudd)", + "All notifications are currently disabled for all targets.": "Alla aviseringar är för tillfället avstängda för alla mål.", + "An error occurred whilst saving your email notification preferences.": "Ett fel uppstod då epostaviseringsinställningarna sparades.", + "Call invitation": "Inbjudan till samtal", + "Cancel Sending": "Avbryt sändning", + "Can't update user notification settings": "Kan inte uppdatera aviseringsinställningarna", + "Close": "Stäng", + "Create new room": "Nytt rum", + "Couldn't find a matching Matrix room": "Kunde inte hitta ett matchande Matrix-rum", + "Custom Server Options": "Egna serverinställningar", + "customServer_text": "Du kan använda serverinställningarna för att logga in i en annan Matrix-server genom att specifiera en URL till en annan hemserver.
      Så här kan du använda Riot med ett existerande Matrix-konto på en annan hemserver.

      Du kan också specifiera en egen identitetsserver, men du kommer inte att kunna bjuda in andra via epostadress, eller bli inbjuden via epostadress.", + "delete the alias": "radera adressen", + "Direct Chat": "Direkt chatt", + "Directory": "Katalog", + "Dismiss": "Avvisa", + "Download this file": "Ladda ner filen", + "Drop here to %(verb)s": "Dra hit för att %(verb)s", + "Enable audible notifications in web client": "Sätt på högljudda aviseringar i webbklienten", + "Enable desktop notifications": "Sätt på skrivbordsaviseringar", + "Enable email notifications": "Sätt på epostaviseringar", + "Enable notifications for this account": "Sätt på aviseringar för det här kontot", + "Enable them now": "Sätt på nu", + "Enter keywords separated by a comma": "Skriv in nyckelord, separerade med kommatecken", + "Error": "Fel", + "Error saving email notification preferences": "Ett fel uppstod då epostaviseringsinställningarna sparades", + "Failed to": "Det gick inte att", + "Failed to add tag %(tagName)s to room": "Det gick inte att lägga till \"%(tagName)s\" till rummet", + "Failed to change settings": "Det gick inte att spara inställningarna", + "Failed to forget room %(errCode)s": "Det gick inte att glömma bort rummet: %(errCode)s", + "Failed to update keywords": "Det gick inte att uppdatera nyckelorden", + "Failed to get protocol list from Home Server": "Det gick inte att hämta protokollistan från hemservern", + "Failed to get public room list": "Det gick inte att hämta listan över offentliga rum", + "Failed to join the room": "Det gick inte att ansluta till rummet", + "Failed to remove tag %(prevTag)s from room": "Det gick inte att radera taggen %(prevTag)s från rummet", + "Failed to set direct chat tag": "Det gick inte att markera rummet som direkt chatt" +} From a60ab42ee381a0fb90ad1225b88683a997710ab3 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 27 May 2017 07:33:17 +0000 Subject: [PATCH 198/220] Added translation using Weblate (Finnish) --- src/i18n/strings/fi.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/fi.json diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/fi.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 4ff09199d7f34459c4edc3fdc4dfbfb69abef452 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 27 May 2017 07:41:41 +0000 Subject: [PATCH 199/220] Translated using Weblate (Finnish) Currently translated at 0.8% (1 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/fi/ --- src/i18n/strings/fi.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 9e26dfeeb6..d2e594327d 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -1 +1,3 @@ -{} \ No newline at end of file +{ + "Sunday": "Sunnuntai" +} From b33eab0188aa6c22a4d0209843d869b0dceeb777 Mon Sep 17 00:00:00 2001 From: nouts Date: Sat, 27 May 2017 09:41:10 +0000 Subject: [PATCH 200/220] Translated using Weblate (French) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/fr/ --- src/i18n/strings/fr.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 8de03d727d..ee30d98bf7 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -116,5 +116,9 @@ "World readable": "Visible par tout le monde", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même", "Guests can join": "Ouvert aux invités", - " to room": " au salon" + " to room": " au salon", + "Advanced notification settings": "Paramètres de notifications avancés", + "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications mail.", + "customServer_text": "Vous pouvez utiliser l'option de serveur personnalisé pour vous connectez à d'autres serveurs Matrix, en spécifiant une adresse différente pour Home serveur.
      Cela permet d'utiliser Riot avec un compte existant sur un Home serveur différent.

      Vous pouvez aussi indiquer un serveur d'identité personnel mais vous ne pourrez plus inviter des utilisateurs par email, ou être invité par email.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notifications pour les mots clés suivant répondent à des critères qui ne peuvent pas être affichés ici :" } From a526bd95aa848ae2c46f6ea7a1e0aea0bd2d0765 Mon Sep 17 00:00:00 2001 From: Oliver Hunt Date: Sat, 27 May 2017 15:15:45 +0100 Subject: [PATCH 201/220] Fixed an input field's background color in dark theme --- .../matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss index abd4e9c164..d12bcd3712 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ConfirmUserActionDialog.scss @@ -37,6 +37,7 @@ limitations under the License. font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; font-size: 14px; color: $primary-fg-color; + background-color: $primary-bg-color; border-radius: 3px; border: solid 1px $input-border-color; From 4293273e5555f28ebe8c789fc55769f348154dfc Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 27 May 2017 19:26:19 +0100 Subject: [PATCH 202/220] fix a bunch of i18n fails picked up by check-i18n.pl --- src/components/views/settings/Notifications.js | 2 +- src/i18n/strings/be.json | 4 ++-- src/i18n/strings/de_DE.json | 6 +++--- src/i18n/strings/en_EN.json | 6 +++--- src/i18n/strings/fr.json | 8 ++++---- src/i18n/strings/pt.json | 6 +++--- src/i18n/strings/pt_BR.json | 6 +++--- src/i18n/strings/ru.json | 6 +++--- src/i18n/strings/sv.json | 6 +++--- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/components/views/settings/Notifications.js b/src/components/views/settings/Notifications.js index 131f47594b..11948acebe 100644 --- a/src/components/views/settings/Notifications.js +++ b/src/components/views/settings/Notifications.js @@ -714,7 +714,7 @@ module.exports = React.createClass({ {masterPushRuleDiv}
      - { _t('All notifications are currently disabled for all targets') }. + { _t('All notifications are currently disabled for all targets.') }.
    ); diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json index 47e566fbc7..34b31de1e2 100644 --- a/src/i18n/strings/be.json +++ b/src/i18n/strings/be.json @@ -16,7 +16,7 @@ "Directory": "Каталог", "Dismiss": "Aдхіліць", "Download this file": "Спампаваць гэты файл", - "Drop here to %(verb)s": "Перацягнуць сюды %(verb)s", + "Drop here %(toAction)s": "Перацягнуць сюды %(verb)s", "Enable audible notifications in web client": "Ўключыць гукавыя апавяшчэнні ў вэб-кліенце", "Enable desktop notifications": "Ўключыць апавяшчэнні на працоўным стале", "Enable email notifications": "Ўключыць паведамлення па электроннай пошце", @@ -34,7 +34,7 @@ "Failed to get protocol list from Home Server": "Не ўдалося атрымаць спіс пратаколаў ад хатняга сервера", "Failed to get public room list": "Не ўдалося атрымаць спіс агульных пакояў", "Failed to join the room": "Не ўдалося далучыцца да пакоя", - "Failed to remove tag %(prevTag)s from room": "Не ўдалося выдаліць %(prevTag)s з пакоя", + "Failed to remove tag %(tagName)s from room": "Не ўдалося выдаліць %(prevTag)s з пакоя", "Failed to set direct chat tag": "Не ўдалося ўсталяваць тэг прамога чата", "Failed to set Direct Message status of room": "Не ўдалося ўсталяваць статут прамога паведамлення пакою", "Favourite": "Улюбёнае", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 443bf7f902..3f103beee8 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -81,7 +81,7 @@ "On": "An", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Client als Riot konfiguriert. Sie sind in Riot nicht anpassbar gelten aber trotzdem", " to room": " an Raum", - "Drop here to %(verb)s": "%(verb)s hierher ziehen", + "Drop here %(toAction)s": "%(verb)s hierher ziehen", "All messages": "Alle Nachrichten", "All messages (loud)": "Alle Nachrichten (laut)", "Cancel Sending": "Senden abbrechen", @@ -90,7 +90,7 @@ "Download this file": "Datei Herunterladen", "Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen", "Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen", - "Failed to remove tag %(prevTag)s from room": "Das Entfernen des Tags %(prevTag)s für den Raum ist fehlgeschlagen", + "Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(prevTag)s für den Raum ist fehlgeschlagen", "Failed to set direct chat tag": "Fehler beim setzen der Direct Chat Kennzeichnung", "Mentions only": "Nur, wenn du erwähnt wirst", "Mute": "Lautlos", @@ -120,7 +120,7 @@ "Welcome page": "Willkommensseite", "Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen", "Call invitation": "Anruf-Einladung", - "Enter keywords separated by a comma": "Trage Schlagworte, mit Komma getrennt, ein", + "Enter keywords separated by a comma:": "Trage Schlagworte, mit Komma getrennt, ein", "Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten", "Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten", "Messages in group chats": "Nachrichten in Chat-Gruppen", diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e4f799948f..039f5b76d3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -19,13 +19,13 @@ "Directory": "Directory", "Dismiss": "Dismiss", "Download this file": "Download this file", - "Drop here to %(verb)s": "Drop here to %(verb)s", + "Drop here %(toAction)s": "Drop here %(toAction)s", "Enable audible notifications in web client": "Enable audible notifications in web client", "Enable desktop notifications": "Enable desktop notifications", "Enable email notifications": "Enable email notifications", "Enable notifications for this account": "Enable notifications for this account", "Enable them now": "Enable them now", - "Enter keywords separated by a comma": "Enter keywords separated by a comma", + "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", "Error": "Error", "Error saving email notification preferences": "Error saving email notification preferences", "#example": "#example", @@ -37,7 +37,7 @@ "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", "Failed to get public room list": "Failed to get public room list", "Failed to join the room": "Failed to join the room", - "Failed to remove tag %(prevTag)s from room": "Failed to remove tag %(prevTag)s from room", + "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", "Failed to set direct chat tag": "Failed to set direct chat tag", "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", "Favourite": "Favourite", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index ee30d98bf7..111817dd24 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -3,7 +3,7 @@ "All messages": "Tous les messages", "All messages (loud)": "Tous les messages (fort)", "All notifications are currently disabled for all targets.": "Toutes les notifications sont désactivées pour tous les appareils.", - "An error occurred whilst saving your email notification preferences": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications par e-mail", + "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notifications par e-mail", "Cancel Sending": "Annuler l'envoi", "Can't update user notification settings": "Impossible de mettre à jour les notifications utilisateur", "Close": "Fermer", @@ -16,13 +16,13 @@ "Directory": "Répertoire", "Dismiss": "Rejeter", "Download this file": "Télécharger ce fichier", - "Drop here to %(verb)s": "Déposer ici pour %(verb)s", + "Drop here %(toAction)s": "Déposer ici pour %(verb)s", "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", "Enable desktop notifications": "Activer les notifications de bureau", "Enable email notifications": "Activer les notifications par e-mail", "Enable notifications for this account": "Activer les notifications pour ce compte", "Enable them now": "Les activer maintenant", - "Enter keywords separated by a comma": "Entrez les mots clés séparés par une virgule", + "Enter keywords separated by a comma:": "Entrez les mots clés séparés par une virgule", "Error": "Erreur", "Error saving email notification preferences": "Erreur lors de la sauvegarde des notifications par email", "#example": "#exemple", @@ -34,7 +34,7 @@ "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison", "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics", "Failed to join the room": "Échec de l'adhésion au salon", - "Failed to remove tag %(prevTag)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", + "Failed to remove tag %(tagName)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct", "Favourite": "Favoris", "Operation failed": "L'opération a échoué", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 89385f5d7f..bcd7d28108 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -2,7 +2,7 @@ "Add an email address above to configure email notifications": "Adicione um endereço de email acima para configurar as notificações por email", "All messages": "Todas as mensagens", "All messages (loud)": "Todas as mensagens (alto)", - "All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos", + "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os destinos", "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto salvava suas preferências de notificação por email.", "Cancel Sending": "Cancelar o envio", "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", @@ -16,7 +16,7 @@ "Directory": "Diretório", "Dismiss": "Encerrar", "Download this file": "Baixar este arquivo", - "Drop here to %(verb)s": "Arraste aqui para %(verb)s", + "Drop here %(toAction)s": "Arraste aqui para %(verb)s", "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", "Enable desktop notifications": "Ativar notificações no desktop", "Enable email notifications": "Ativar notificações por email", @@ -110,7 +110,7 @@ "Yesterday": "Ontem", "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os recipientes.", "#example": "#exemplo", - "Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", + "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", "Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui", "Welcome page": "Página de boas vindas" } diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 7ec5999707..5fb9c13982 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -2,7 +2,7 @@ "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar suas notificações por email", "All messages": "Todas as mensagens", "All messages (loud)": "Todas as mensagens (alto)", - "All notifications are currently disabled for all targets": "Todas as notificações estão atualmente desativadas para todos os destinos", + "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os destinos", "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email.", "Call invitation": "Convite para chamada", "Cancel Sending": "Cancelar o envio", @@ -17,7 +17,7 @@ "Directory": "Diretório", "Dismiss": "Encerrar", "Download this file": "Baixar este arquivo", - "Drop here to %(verb)s": "Arraste aqui para %(verb)s", + "Drop here %(toAction)s": "Arraste aqui para %(verb)s", "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", "Enable desktop notifications": "Ativar notificações no desktop", "Enable email notifications": "Ativar notificações por email", @@ -118,6 +118,6 @@ "Yesterday": "Ontem", "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os destinatários.", "#example": "#exemplo", - "Failed to remove tag %(prevTag)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", + "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", "Welcome page": "Página de boas vindas" } diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 708a9a7637..2e765d800f 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -85,11 +85,11 @@ "Cancel Sending": "Отмена отправки", "Close": "Закрыть", "Download this file": "Скачать этот файл", - "Drop here to %(verb)s": "Вставить сюда для %(verb)s", + "Drop here %(toAction)s": "Вставить сюда для %(verb)s", "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и очистить %(name)s из каталога?", "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", "Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s", - "Failed to remove tag %(prevTag)s from room": "Не удалось убрать пометку %(prevTag)s из комнаты", + "Failed to remove tag %(tagName)s from room": "Не удалось убрать пометку %(prevTag)s из комнаты", "Failed to set direct chat tag": "Не удалось пометить прямую беседу", "Unhide Preview": "Показать предпросмотр", "Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s", @@ -119,7 +119,7 @@ "Advanced notification settings": "Настройки уведомлений", "Call invitation": "Звонок", "customServer_text": "Вы можете войти с помощью вашего сервера.
    Это позволяет вам использовать Riot с уже существующей учетной записью на другом сервере.

    Вы также можете задать свой сервер идентификации, но тогда вы не можете приглашать пользователей с помощью email-адреса и не можете быть приглашены по нему.", - "Enter keywords separated by a comma": "Введите ключевые слова, разделенные запятой", + "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой", "Messages containing my display name": "Сообщения, содержащие мое отображаемое имя", "Messages containing my user name": "Сообщение, содержащие мое имя пользователя", "Messages in group chats": "Сообщения в групповых чатах", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 0f84fc03dd..1a7ec9a85a 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -18,13 +18,13 @@ "Directory": "Katalog", "Dismiss": "Avvisa", "Download this file": "Ladda ner filen", - "Drop here to %(verb)s": "Dra hit för att %(verb)s", + "Drop here %(toAction)s": "Dra hit för att %(verb)s", "Enable audible notifications in web client": "Sätt på högljudda aviseringar i webbklienten", "Enable desktop notifications": "Sätt på skrivbordsaviseringar", "Enable email notifications": "Sätt på epostaviseringar", "Enable notifications for this account": "Sätt på aviseringar för det här kontot", "Enable them now": "Sätt på nu", - "Enter keywords separated by a comma": "Skriv in nyckelord, separerade med kommatecken", + "Enter keywords separated by a comma:": "Skriv in nyckelord, separerade med kommatecken", "Error": "Fel", "Error saving email notification preferences": "Ett fel uppstod då epostaviseringsinställningarna sparades", "Failed to": "Det gick inte att", @@ -35,6 +35,6 @@ "Failed to get protocol list from Home Server": "Det gick inte att hämta protokollistan från hemservern", "Failed to get public room list": "Det gick inte att hämta listan över offentliga rum", "Failed to join the room": "Det gick inte att ansluta till rummet", - "Failed to remove tag %(prevTag)s from room": "Det gick inte att radera taggen %(prevTag)s från rummet", + "Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(prevTag)s från rummet", "Failed to set direct chat tag": "Det gick inte att markera rummet som direkt chatt" } From 85e6cbe0c779b96bdfc6c21fe5fec285f23ad3c6 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 27 May 2017 19:28:54 +0100 Subject: [PATCH 203/220] oops, fix var names --- src/i18n/strings/be.json | 4 ++-- src/i18n/strings/de_DE.json | 4 ++-- src/i18n/strings/fr.json | 4 ++-- src/i18n/strings/pt.json | 4 ++-- src/i18n/strings/pt_BR.json | 4 ++-- src/i18n/strings/ru.json | 4 ++-- src/i18n/strings/sv.json | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/i18n/strings/be.json b/src/i18n/strings/be.json index 34b31de1e2..18b0179ab8 100644 --- a/src/i18n/strings/be.json +++ b/src/i18n/strings/be.json @@ -16,7 +16,7 @@ "Directory": "Каталог", "Dismiss": "Aдхіліць", "Download this file": "Спампаваць гэты файл", - "Drop here %(toAction)s": "Перацягнуць сюды %(verb)s", + "Drop here %(toAction)s": "Перацягнуць сюды %(toAction)s", "Enable audible notifications in web client": "Ўключыць гукавыя апавяшчэнні ў вэб-кліенце", "Enable desktop notifications": "Ўключыць апавяшчэнні на працоўным стале", "Enable email notifications": "Ўключыць паведамлення па электроннай пошце", @@ -34,7 +34,7 @@ "Failed to get protocol list from Home Server": "Не ўдалося атрымаць спіс пратаколаў ад хатняга сервера", "Failed to get public room list": "Не ўдалося атрымаць спіс агульных пакояў", "Failed to join the room": "Не ўдалося далучыцца да пакоя", - "Failed to remove tag %(tagName)s from room": "Не ўдалося выдаліць %(prevTag)s з пакоя", + "Failed to remove tag %(tagName)s from room": "Не ўдалося выдаліць %(tagName)s з пакоя", "Failed to set direct chat tag": "Не ўдалося ўсталяваць тэг прамога чата", "Failed to set Direct Message status of room": "Не ўдалося ўсталяваць статут прамога паведамлення пакою", "Favourite": "Улюбёнае", diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 3f103beee8..62b28dc69e 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -81,7 +81,7 @@ "On": "An", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Client als Riot konfiguriert. Sie sind in Riot nicht anpassbar gelten aber trotzdem", " to room": " an Raum", - "Drop here %(toAction)s": "%(verb)s hierher ziehen", + "Drop here %(toAction)s": "%(toAction)s hierher ziehen", "All messages": "Alle Nachrichten", "All messages (loud)": "Alle Nachrichten (laut)", "Cancel Sending": "Senden abbrechen", @@ -90,7 +90,7 @@ "Download this file": "Datei Herunterladen", "Failed to add tag %(tagName)s to room": "Das Hinzufügen des Tags %(tagName)s für den Raum ist fehlgeschlagen", "Failed to forget room %(errCode)s": "Das Entfernen des Raums %(errCode)s aus deiner Liste ist fehlgeschlagen", - "Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(prevTag)s für den Raum ist fehlgeschlagen", + "Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(tagName)s für den Raum ist fehlgeschlagen", "Failed to set direct chat tag": "Fehler beim setzen der Direct Chat Kennzeichnung", "Mentions only": "Nur, wenn du erwähnt wirst", "Mute": "Lautlos", diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 111817dd24..dfd38e868a 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -16,7 +16,7 @@ "Directory": "Répertoire", "Dismiss": "Rejeter", "Download this file": "Télécharger ce fichier", - "Drop here %(toAction)s": "Déposer ici pour %(verb)s", + "Drop here %(toAction)s": "Déposer ici pour %(toAction)s", "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", "Enable desktop notifications": "Activer les notifications de bureau", "Enable email notifications": "Activer les notifications par e-mail", @@ -34,7 +34,7 @@ "Failed to get protocol list from Home Server": "Echec lors de la récupération depuis le serveur maison", "Failed to get public room list": "Echec lors de la récupération de la liste des salons publics", "Failed to join the room": "Échec de l'adhésion au salon", - "Failed to remove tag %(tagName)s from room": "Échec dans la suppression de l’étiquette %(prevTag)s du salon", + "Failed to remove tag %(tagName)s from room": "Échec dans la suppression de l’étiquette %(tagName)s du salon", "Failed to set direct chat tag": "Échec dans l'attribution d'une étiquette dans le chat direct", "Favourite": "Favoris", "Operation failed": "L'opération a échoué", diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index bcd7d28108..1f2efa339a 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -16,7 +16,7 @@ "Directory": "Diretório", "Dismiss": "Encerrar", "Download this file": "Baixar este arquivo", - "Drop here %(toAction)s": "Arraste aqui para %(verb)s", + "Drop here %(toAction)s": "Arraste aqui para %(toAction)s", "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", "Enable desktop notifications": "Ativar notificações no desktop", "Enable email notifications": "Ativar notificações por email", @@ -110,7 +110,7 @@ "Yesterday": "Ontem", "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os recipientes.", "#example": "#exemplo", - "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", + "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala", "Notifications on the following keywords follow rules which can’t be displayed here": "As notificações sobre as palavras-chave abaixo seguem regras que não podem ser mostradas aqui", "Welcome page": "Página de boas vindas" } diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 5fb9c13982..ab1f91b792 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -17,7 +17,7 @@ "Directory": "Diretório", "Dismiss": "Encerrar", "Download this file": "Baixar este arquivo", - "Drop here %(toAction)s": "Arraste aqui para %(verb)s", + "Drop here %(toAction)s": "Arraste aqui para %(toAction)s", "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", "Enable desktop notifications": "Ativar notificações no desktop", "Enable email notifications": "Ativar notificações por email", @@ -118,6 +118,6 @@ "Yesterday": "Ontem", "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os destinatários.", "#example": "#exemplo", - "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(prevTag)s desta sala", + "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala", "Welcome page": "Página de boas vindas" } diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 2e765d800f..fe5196ae3f 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -85,11 +85,11 @@ "Cancel Sending": "Отмена отправки", "Close": "Закрыть", "Download this file": "Скачать этот файл", - "Drop here %(toAction)s": "Вставить сюда для %(verb)s", + "Drop here %(toAction)s": "Вставить сюда для %(toAction)s", "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и очистить %(name)s из каталога?", "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", "Failed to forget room %(errCode)s": "Не удалось забыть комнату %(errCode)s", - "Failed to remove tag %(tagName)s from room": "Не удалось убрать пометку %(prevTag)s из комнаты", + "Failed to remove tag %(tagName)s from room": "Не удалось убрать пометку %(tagName)s из комнаты", "Failed to set direct chat tag": "Не удалось пометить прямую беседу", "Unhide Preview": "Показать предпросмотр", "Uploaded on %(date)s by %(user)s": "Загружено %(date)s %(user)s", diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 1a7ec9a85a..0d03a87806 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -18,7 +18,7 @@ "Directory": "Katalog", "Dismiss": "Avvisa", "Download this file": "Ladda ner filen", - "Drop here %(toAction)s": "Dra hit för att %(verb)s", + "Drop here %(toAction)s": "Dra hit för att %(toAction)s", "Enable audible notifications in web client": "Sätt på högljudda aviseringar i webbklienten", "Enable desktop notifications": "Sätt på skrivbordsaviseringar", "Enable email notifications": "Sätt på epostaviseringar", @@ -35,6 +35,6 @@ "Failed to get protocol list from Home Server": "Det gick inte att hämta protokollistan från hemservern", "Failed to get public room list": "Det gick inte att hämta listan över offentliga rum", "Failed to join the room": "Det gick inte att ansluta till rummet", - "Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(prevTag)s från rummet", + "Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(tagName)s från rummet", "Failed to set direct chat tag": "Det gick inte att markera rummet som direkt chatt" } From 4a3480b935465c54b6a08ab457c90448cb28d943 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sat, 27 May 2017 20:17:19 +0100 Subject: [PATCH 204/220] fix broken vars in i18n --- src/i18n/strings/pt.json | 2 +- src/i18n/strings/pt_BR.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 1f2efa339a..44041bc8fc 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -11,7 +11,7 @@ "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", "Custom Server Options": "Opções de customização do servidor", "delete the alias": "apagar o apelido da sala", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(nome)s da lista pública?", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?", "Direct Chat": "Conversa pessoal", "Directory": "Diretório", "Dismiss": "Encerrar", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index ab1f91b792..545ed11a3d 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -12,7 +12,7 @@ "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", "Custom Server Options": "Opções de personalização do servidor", "delete the alias": "apagar o apelido da sala", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(nome)s da lista pública?", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?", "Direct Chat": "Conversa pessoal", "Directory": "Diretório", "Dismiss": "Encerrar", From 664b5c29c3b47ffa9023a417dddec49cef2a5d34 Mon Sep 17 00:00:00 2001 From: Thomas Juberg Date: Sat, 27 May 2017 22:12:59 +0000 Subject: [PATCH 205/220] =?UTF-8?q?Added=20translation=20using=20Weblate?= =?UTF-8?q?=20(Norwegian=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/strings/nb_NO.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/nb_NO.json diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/nb_NO.json @@ -0,0 +1 @@ +{} \ No newline at end of file From c83188be51c4699a35f56b7be7748122b8dbf56a Mon Sep 17 00:00:00 2001 From: Bamstam Date: Sat, 27 May 2017 20:15:28 +0000 Subject: [PATCH 206/220] Translated using Weblate (German) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/de/ --- src/i18n/strings/de_DE.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 62b28dc69e..d030e29d1a 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -7,14 +7,14 @@ "Invite to this room": "In diesen Raum einladen", "Filter room names": "Raum Namen filtern", "Start chat": "Neuen Chat starten", - "Room directory": "Raum Verzeichnis", + "Room directory": "Raum-Verzeichnis", "Create new room": "Neuen Raum erstellen", "Settings": "Einstellungen", "powered by Matrix": "gebaut mit Matrix", "Custom Server Options": "Optionen für eigenen Server", "Dismiss": "ausblenden", "Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokollliste vom Home Server", - "The Home Server may be too old to support third party networks": "Der Home Server kann zu alt sein, um Drittanbieter-Netzwerke zu unterstützen", + "The Home Server may be too old to support third party networks": "Der Home-Server ist eventuell zu alt, um Drittanbieter-Netzwerke zu unterstützen", "Directory": "Raum Verzeichnis", "#example:": "#beispiel:", "Search for a room": "Suche einen Raum", @@ -37,13 +37,13 @@ "Enable desktop notifications": "Aktiviere Desktop Benachrichtigungen", "Enable email notifications": "Aktiviere E-Mail Benachrichtigungen", "Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer", - "Enter keywords separated by a comma:": "Gebe Suchbegriffe getrennt durch Kommata ein:", + "Enter keywords separated by a comma:": "Trage Schlagworte, mit Komma getrennt, ein", "Error": "Fehler", "Error saving email notification preferences": "Fehler beim Speichern der E-Mail Benachrichtigungseinstellungen", "#example": "#Beispiel", "Failed to": "Konnte nicht", "Failed to add tag ": "Konnte Tag nicht hinzufügen ", - "Failed to change settings": "Konnte Einstellungen nicht ändern", + "Failed to change settings": "Einstellungen konnten nicht geändert werden", "Failed to update keywords": "Konnte Suchbegriff nicht aktualisieren", "Failed to get public room list": "Konnte keine öffentliche Raumliste laden", "Failed to join the room": "Fehler beim Betreten des Raumes", @@ -62,7 +62,7 @@ "Notification targets": "Benachrichtigungsziel", "Notifications on the following keywords follow rules which can’t be displayed here:": "Benachrichtigungen zu folgenden Stichwörtern folgen Regeln, die hier nicht angezeigt werden können:", "Notify for all other messages/rooms": "Benachrichtigung für alle anderen Mitteilungen/ Räume", - "Operation failed": "Ausführung fehlgeschlagen", + "Operation failed": "Aktion fehlgeschlagen", "Reject": "ablehnen", "Remove": "Entferne", "remove": "Entferner", @@ -93,7 +93,7 @@ "Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(tagName)s für den Raum ist fehlgeschlagen", "Failed to set direct chat tag": "Fehler beim setzen der Direct Chat Kennzeichnung", "Mentions only": "Nur, wenn du erwähnt wirst", - "Mute": "Lautlos", + "Mute": "Stummschalten", "Permalink": "Permanenter Link", "Quote": "Zitat", "Redact": "Redaktionell entfernen", @@ -120,7 +120,6 @@ "Welcome page": "Willkommensseite", "Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen", "Call invitation": "Anruf-Einladung", - "Enter keywords separated by a comma:": "Trage Schlagworte, mit Komma getrennt, ein", "Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten", "Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten", "Messages in group chats": "Nachrichten in Chat-Gruppen", From 918aa01ee57573dda5134d50a37a5045108809be Mon Sep 17 00:00:00 2001 From: Szimszon Date: Sat, 27 May 2017 20:58:53 +0000 Subject: [PATCH 207/220] Translated using Weblate (Hungarian) Currently translated at 55.0% (66 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/hu/ --- src/i18n/strings/hu.json | 54 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 8d836886ec..09fa3df9e0 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -12,5 +12,57 @@ "Create new room": "Új szoba készítés", "Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba", "Custom Server Options": "Egyedi szerver beállítások", - "delete the alias": "becenév törlése" + "delete the alias": "becenév törlése", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a(z) %(alias)s szobát és kiveszed a könyvtárból ezt: %(name)s?", + "Direct Chat": "Közvetlen csevegés", + "Directory": "Könyvtár", + "Dismiss": "Eltűntet", + "Download this file": "Fájl letöltése", + "Drop here %(toAction)s": "%(toAction)s -t húzd ide", + "Enable audible notifications in web client": "Hallható értesítések engedélyezése a webes kliensben", + "Enable desktop notifications": "Asztali értesítések engedélyezése", + "Enable email notifications": "E-mail értesítések engedélyezése", + "Enable notifications for this account": "Értesítések engedélyezése a fiókhoz", + "Enable them now": "Engedélyezés most", + "Enter keywords separated by a comma:": "Kulcsszavak vesszővel elválasztva:", + "Error": "Hiba", + "Error saving email notification preferences": "Hiba email értesítés beállításának mentésénél", + "#example": "#példa", + "Failed to": "Nem lehet", + "Failed to add tag %(tagName)s to room": "Nem lehet a címkét hozzáadni a szobához: %(tagName)s", + "Failed to change settings": "Nem lehet a beállítást megváltoztatni", + "Failed to forget room %(errCode)s": "Nem lehet eltávolítani a szobát: %(errCode)s", + "Failed to update keywords": "Nem lehet a kulcsszavakat frissíteni", + "Failed to get protocol list from Home Server": "Nem lehet a protokoll listát lekérni a Saját szerverről", + "Failed to get public room list": "Nem lehet lekérdezni a nyílt szobák listáját", + "Failed to join the room": "Nem lehet csatlakozni a szobához", + "Failed to remove tag %(tagName)s from room": "Nem lehet törölni a(z) %(tagName)s címkét a szobáról", + "Failed to set direct chat tag": "Nem lehet a címkét beállítani a közvetlen beszélgetéshez", + "Failed to set Direct Message status of room": "Nem lehet beállítani a Közvetlen beszélgetés státuszt a szobához", + "Favourite": "Kedvenc", + "Fetching third party location failed": "Nem sikerült lekérdezni a harmadik felet", + "Files": "Fájlok", + "Filter room names": "Szoba nevek szűrése", + "Forget": "Elfelejt", + " from room": " szobából", + "Guests can join": "Vendégek csatlakozhatnak", + "Guest users can't invite users. Please register to invite": "Vendég felhasználó nem küldhet meghívót. Kérlek regisztrálj meghívó küldéshez", + "Invite to this room": "Meghívás a szobába", + "Keywords": "Kulcsszavak", + "Leave": "Elhagy", + "Low Priority": "Alacsony priorítás", + "Members": "Résztvevők", + "Mentions only": "Csak ha megemlítenek", + "Messages containing my display name": "Az üzenet tartalmazza a nevem", + "Messages containing my user name": "Az üzenet tartalmazza a felhasználói nevem", + "Messages in group chats": "Üzenetek a csoportszobában", + "Messages in one-to-one chats": "Üzenetek közvetlen beszélgetésekben", + "Messages sent by bot": "Botok által küldött üzenetek", + "more": "további", + "Mute": "Elnémít", + "No rooms to show": "Nincs megjeleníthető szoba", + "Noisy": "Hangos", + "Notification targets": "Értesítések célpontja", + "Notifications": "Értesítések", + "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához" } From 73a811aa9170cc6c4d155ea3e7c567485d363cc9 Mon Sep 17 00:00:00 2001 From: RiotTranslate Date: Sun, 28 May 2017 00:28:44 +0200 Subject: [PATCH 208/220] Update from Weblate. (#4057) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added translation using Weblate (Norwegian Bokmål) * Translated using Weblate (German) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/de/ * Translated using Weblate (Hungarian) Currently translated at 55.0% (66 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/hu/ --- src/i18n/strings/de_DE.json | 13 +++++---- src/i18n/strings/hu.json | 54 ++++++++++++++++++++++++++++++++++++- src/i18n/strings/nb_NO.json | 1 + 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 src/i18n/strings/nb_NO.json diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 62b28dc69e..d030e29d1a 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -7,14 +7,14 @@ "Invite to this room": "In diesen Raum einladen", "Filter room names": "Raum Namen filtern", "Start chat": "Neuen Chat starten", - "Room directory": "Raum Verzeichnis", + "Room directory": "Raum-Verzeichnis", "Create new room": "Neuen Raum erstellen", "Settings": "Einstellungen", "powered by Matrix": "gebaut mit Matrix", "Custom Server Options": "Optionen für eigenen Server", "Dismiss": "ausblenden", "Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokollliste vom Home Server", - "The Home Server may be too old to support third party networks": "Der Home Server kann zu alt sein, um Drittanbieter-Netzwerke zu unterstützen", + "The Home Server may be too old to support third party networks": "Der Home-Server ist eventuell zu alt, um Drittanbieter-Netzwerke zu unterstützen", "Directory": "Raum Verzeichnis", "#example:": "#beispiel:", "Search for a room": "Suche einen Raum", @@ -37,13 +37,13 @@ "Enable desktop notifications": "Aktiviere Desktop Benachrichtigungen", "Enable email notifications": "Aktiviere E-Mail Benachrichtigungen", "Enable notifications for this account": "Aktiviere Benachrichtigungen für diesen Benutzer", - "Enter keywords separated by a comma:": "Gebe Suchbegriffe getrennt durch Kommata ein:", + "Enter keywords separated by a comma:": "Trage Schlagworte, mit Komma getrennt, ein", "Error": "Fehler", "Error saving email notification preferences": "Fehler beim Speichern der E-Mail Benachrichtigungseinstellungen", "#example": "#Beispiel", "Failed to": "Konnte nicht", "Failed to add tag ": "Konnte Tag nicht hinzufügen ", - "Failed to change settings": "Konnte Einstellungen nicht ändern", + "Failed to change settings": "Einstellungen konnten nicht geändert werden", "Failed to update keywords": "Konnte Suchbegriff nicht aktualisieren", "Failed to get public room list": "Konnte keine öffentliche Raumliste laden", "Failed to join the room": "Fehler beim Betreten des Raumes", @@ -62,7 +62,7 @@ "Notification targets": "Benachrichtigungsziel", "Notifications on the following keywords follow rules which can’t be displayed here:": "Benachrichtigungen zu folgenden Stichwörtern folgen Regeln, die hier nicht angezeigt werden können:", "Notify for all other messages/rooms": "Benachrichtigung für alle anderen Mitteilungen/ Räume", - "Operation failed": "Ausführung fehlgeschlagen", + "Operation failed": "Aktion fehlgeschlagen", "Reject": "ablehnen", "Remove": "Entferne", "remove": "Entferner", @@ -93,7 +93,7 @@ "Failed to remove tag %(tagName)s from room": "Das Entfernen des Tags %(tagName)s für den Raum ist fehlgeschlagen", "Failed to set direct chat tag": "Fehler beim setzen der Direct Chat Kennzeichnung", "Mentions only": "Nur, wenn du erwähnt wirst", - "Mute": "Lautlos", + "Mute": "Stummschalten", "Permalink": "Permanenter Link", "Quote": "Zitat", "Redact": "Redaktionell entfernen", @@ -120,7 +120,6 @@ "Welcome page": "Willkommensseite", "Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen", "Call invitation": "Anruf-Einladung", - "Enter keywords separated by a comma:": "Trage Schlagworte, mit Komma getrennt, ein", "Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten", "Messages containing my user name": "Nachrichten, die meinen Nutzernamen enthalten", "Messages in group chats": "Nachrichten in Chat-Gruppen", diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 8d836886ec..09fa3df9e0 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -12,5 +12,57 @@ "Create new room": "Új szoba készítés", "Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba", "Custom Server Options": "Egyedi szerver beállítások", - "delete the alias": "becenév törlése" + "delete the alias": "becenév törlése", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a(z) %(alias)s szobát és kiveszed a könyvtárból ezt: %(name)s?", + "Direct Chat": "Közvetlen csevegés", + "Directory": "Könyvtár", + "Dismiss": "Eltűntet", + "Download this file": "Fájl letöltése", + "Drop here %(toAction)s": "%(toAction)s -t húzd ide", + "Enable audible notifications in web client": "Hallható értesítések engedélyezése a webes kliensben", + "Enable desktop notifications": "Asztali értesítések engedélyezése", + "Enable email notifications": "E-mail értesítések engedélyezése", + "Enable notifications for this account": "Értesítések engedélyezése a fiókhoz", + "Enable them now": "Engedélyezés most", + "Enter keywords separated by a comma:": "Kulcsszavak vesszővel elválasztva:", + "Error": "Hiba", + "Error saving email notification preferences": "Hiba email értesítés beállításának mentésénél", + "#example": "#példa", + "Failed to": "Nem lehet", + "Failed to add tag %(tagName)s to room": "Nem lehet a címkét hozzáadni a szobához: %(tagName)s", + "Failed to change settings": "Nem lehet a beállítást megváltoztatni", + "Failed to forget room %(errCode)s": "Nem lehet eltávolítani a szobát: %(errCode)s", + "Failed to update keywords": "Nem lehet a kulcsszavakat frissíteni", + "Failed to get protocol list from Home Server": "Nem lehet a protokoll listát lekérni a Saját szerverről", + "Failed to get public room list": "Nem lehet lekérdezni a nyílt szobák listáját", + "Failed to join the room": "Nem lehet csatlakozni a szobához", + "Failed to remove tag %(tagName)s from room": "Nem lehet törölni a(z) %(tagName)s címkét a szobáról", + "Failed to set direct chat tag": "Nem lehet a címkét beállítani a közvetlen beszélgetéshez", + "Failed to set Direct Message status of room": "Nem lehet beállítani a Közvetlen beszélgetés státuszt a szobához", + "Favourite": "Kedvenc", + "Fetching third party location failed": "Nem sikerült lekérdezni a harmadik felet", + "Files": "Fájlok", + "Filter room names": "Szoba nevek szűrése", + "Forget": "Elfelejt", + " from room": " szobából", + "Guests can join": "Vendégek csatlakozhatnak", + "Guest users can't invite users. Please register to invite": "Vendég felhasználó nem küldhet meghívót. Kérlek regisztrálj meghívó küldéshez", + "Invite to this room": "Meghívás a szobába", + "Keywords": "Kulcsszavak", + "Leave": "Elhagy", + "Low Priority": "Alacsony priorítás", + "Members": "Résztvevők", + "Mentions only": "Csak ha megemlítenek", + "Messages containing my display name": "Az üzenet tartalmazza a nevem", + "Messages containing my user name": "Az üzenet tartalmazza a felhasználói nevem", + "Messages in group chats": "Üzenetek a csoportszobában", + "Messages in one-to-one chats": "Üzenetek közvetlen beszélgetésekben", + "Messages sent by bot": "Botok által küldött üzenetek", + "more": "további", + "Mute": "Elnémít", + "No rooms to show": "Nincs megjeleníthető szoba", + "Noisy": "Hangos", + "Notification targets": "Értesítések célpontja", + "Notifications": "Értesítések", + "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához" } diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/nb_NO.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 6039e5a2be758b37c70fde0f90e04015c34c0a14 Mon Sep 17 00:00:00 2001 From: PureTryOut Date: Sun, 28 May 2017 11:04:06 +0000 Subject: [PATCH 209/220] Added translation using Weblate (Dutch) --- src/i18n/strings/nl.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/nl.json diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/nl.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 46bca693216474fd924332959e2c50202a700f97 Mon Sep 17 00:00:00 2001 From: Thomas Juberg Date: Sat, 27 May 2017 22:19:52 +0000 Subject: [PATCH 210/220] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 9.1% (11 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/nb_NO/ --- src/i18n/strings/nb_NO.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index 9e26dfeeb6..ed503025b3 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -1 +1,13 @@ -{} \ No newline at end of file +{ + "Add an email address above to configure email notifications": "Legg til en epost adresse for å sette opp epost varsling", + "Advanced notification settings": "Avanserte varslingsinnstillinger", + "All messages": "Alle meldinger", + "All messages (loud)": "Alle meldinger (høy)", + "All notifications are currently disabled for all targets.": "Alle varsler er deaktivert for alle mottakere.", + "An error occurred whilst saving your email notification preferences.": "En feil oppsto i forbindelse med lagring av epost varsel innstillinger.", + "Cancel Sending": "Avbryt sending", + "Can't update user notification settings": "Kan ikke oppdatere brukervarsel innstillinger", + "Close": "Lukk", + "Create new room": "Opprett nytt rom", + "Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom" +} From 03f698ce8c949e9ad59d09dddce7cb0c260b8b3a Mon Sep 17 00:00:00 2001 From: PureTryOut Date: Sun, 28 May 2017 11:17:05 +0000 Subject: [PATCH 211/220] Translated using Weblate (Dutch) Currently translated at 4.1% (5 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/nl/ --- src/i18n/strings/nl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index f9f29cd901..d46e457082 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -2,5 +2,6 @@ "Add an email address above to configure email notifications": "Voeg een email adres toe om email notificaties te ontvangen", "Advanced notification settings": "Geavanceerde notificatie instellingen", "All messages": "Alle berichten", - "All messages (loud)": "Alle berichten (luid)" + "All messages (loud)": "Alle berichten (luid)", + "All notifications are currently disabled for all targets.": "Alle notificaties zijn op het moment uitgeschakeld voor alle doelen." } From c02ee7a0dd9e04ebb6908ac8fe31c92f14a04642 Mon Sep 17 00:00:00 2001 From: PureTryOut Date: Sun, 28 May 2017 11:18:12 +0000 Subject: [PATCH 212/220] Translated using Weblate (Dutch) Currently translated at 5.0% (6 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/nl/ --- src/i18n/strings/nl.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index d46e457082..69ff04d41f 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -3,5 +3,6 @@ "Advanced notification settings": "Geavanceerde notificatie instellingen", "All messages": "Alle berichten", "All messages (loud)": "Alle berichten (luid)", - "All notifications are currently disabled for all targets.": "Alle notificaties zijn op het moment uitgeschakeld voor alle doelen." + "All notifications are currently disabled for all targets.": "Alle notificaties zijn op het moment uitgeschakeld voor alle doelen.", + "An error occurred whilst saving your email notification preferences.": "Er is een fout ontstaan tijdens het opslaan van jouw email notificatie voorkeuren." } From c238fe66050875f264d3bc2377c831c7e0c43b4e Mon Sep 17 00:00:00 2001 From: PureTryOut Date: Sun, 28 May 2017 12:33:11 +0000 Subject: [PATCH 213/220] Translated using Weblate (Dutch) Currently translated at 100.0% (120 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/nl/ --- src/i18n/strings/nl.json | 116 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 115 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 69ff04d41f..28e0ac3010 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -4,5 +4,119 @@ "All messages": "Alle berichten", "All messages (loud)": "Alle berichten (luid)", "All notifications are currently disabled for all targets.": "Alle notificaties zijn op het moment uitgeschakeld voor alle doelen.", - "An error occurred whilst saving your email notification preferences.": "Er is een fout ontstaan tijdens het opslaan van jouw email notificatie voorkeuren." + "An error occurred whilst saving your email notification preferences.": "Er is een fout ontstaan tijdens het opslaan van jouw email notificatie voorkeuren.", + "Call invitation": "Audio gesprek uitnodiging", + "Cancel Sending": "Annuleren verzending", + "Can't update user notification settings": "Het is niet gelukt om de gebruiker notificatie instellingen bij te werken", + "Close": "Sluiten", + "Create new room": "Maak een nieuwe kamer", + "Couldn't find a matching Matrix room": "Het is niet gelukt om een bijbehorende Matrix kamer te vinden", + "Custom Server Options": "Aangepaste server instellingen", + "customServer_text": "Je kunt de aangepaste server instellingen gebruiken om in te loggen bij andere Matrix servers door een andere home server URL in te voeren.
    Dit maakt het mogelijk om Riot te gebruiken met een bestaand Matrix account op een andere home server.

    Je kunt ook een aangepaste identiteit server instellen, maar het is dan niet mogelijk om gebruikers uit te nodigen met behulp van een email adres of zelf uitgenodigt te worden met een email adres.", + "delete the alias": "verwijder de alias", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Verwijder de alias %(alias)s en verwijder %(name)s uit de map?", + "Direct Chat": "Privé gesprek", + "Directory": "Kamer lijst", + "Dismiss": "Afwijzen", + "Download this file": "Download dit bestand", + "Enable audible notifications in web client": "Zet notificaties aan in de web client", + "Enable desktop notifications": "Zet desktop notificaties aan", + "Enable email notifications": "Zet email notificaties aan", + "Enable notifications for this account": "Zet notificaties aan voor dit account", + "Enable them now": "Zet ze nu aan", + "Enter keywords separated by a comma:": "Voeg trefwoorden toe, gesplitst door een komma:", + "Error": "Fout", + "Error saving email notification preferences": "Fout bij het opslaan van de email notificatie voorkeuren", + "#example": "#voorbeeld", + "Failed to": "Mislukt om", + "Failed to add tag %(tagName)s to room": "Mislukt om de label %(tagName)s aan de kamer toe te voegen", + "Failed to change settings": "Het is mislukt om de instellingen te wijzigen", + "Failed to forget room %(errCode)s": "Het is mislukt om de kamer te vergeten %(errCode)s", + "Failed to update keywords": "Het is mislukt om de trefwoorden bij te werken", + "Failed to get protocol list from Home Server": "Het is mislukt om de protocol lijst op te halen van de home server", + "Failed to get public room list": "Het is mislukt om de lijst van publieke kamers op te halen", + "Failed to join the room": "Het is mislukt om de kamer toe te treden", + "Failed to remove tag %(tagName)s from room": "Het is mislukt om de label %(tagName)s van de kamer te verwijderen", + "Failed to set direct chat tag": "Het is mislukt om de privé chat label weg te halen", + "Favourite": "Favoriet", + "Fetching third party location failed": "Het ophalen van de locatie van de derde partij is mislukt", + "Files": "Bestanden", + "Filter room names": "Filter kamer namen", + "Forget": "Vergeten", + " from room": " van kamer", + "Guests can join": "Gasten kunnen toe treden", + "Guest users can't invite users. Please register to invite": "Gasten kunnen geen gebruikers uitnodigen. Om anderen uit te nodigen zult u moeten registreren", + "Invite to this room": "Uitnodigen voor deze kamer", + "Keywords": "Trefwoorden", + "Leave": "Verlaten", + "Low Priority": "Lage prioriteit", + "Members": "Leden", + "Mentions only": "Alleen vermeldingen", + "Messages containing my display name": "Berichten die mijn weergavenaam bevatten", + "Messages containing my user name": "Berichten die mijn gebruikersnaam bevatten", + "Messages in group chats": "Berichten in groep gesprekken", + "Messages in one-to-one chats": "Berichten in één-op-één gesprekken", + "Messages sent by bot": "Berichten verzonden bij een bot", + "more": "meer", + "Mute": "Dempen", + "No rooms to show": "Geen kamers om te laten zien", + "Noisy": "Luidruchtig", + "Notification targets": "Notificatie doelen", + "Notifications": "Notificaties", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificaties op de volgende trefwoorden volgen regels die hier niet kunnen worden laten zien:", + "Notify for all other messages/rooms": "Informeer mij voor alle andere berichten/kamers", + "Notify me for anything else": "Informeer mij voor al het andere", + "Off": "Uit", + "On": "Aan", + "Operation failed": "Actie mislukt", + "Permalink": "Permalink", + "Please Register": "Registreer alsjeblieft", + "powered by Matrix": "aangedreven door Matrix", + "Quote": "Quote", + "Reject": "Afwijzen", + "Remove %(name)s from the directory?": "Verwijder %(name)s uit de kamer lijst?", + "Remove": "Verwijder", + "remove %(name)s from the directory": "verwijder %(name)s uit de kamer lijst", + "Remove from Directory": "Verwijder uit de kamer lijst", + "Resend": "Opnieuw verzenden", + "Riot does not know how to join a room on this network": "Riot weet niet hoe het moet toetreden tot een kamer op dit netwerk", + "Room directory": "Kamer lijst", + "Room not found": "De kamer is niet gevonden", + "Search for a room": "Zoek naar een kamer", + "Settings": "Instellingen", + "Source URL": "Bron URL", + "Start chat": "Start gesprek", + "The Home Server may be too old to support third party networks": "De home server is misschien te oud om netwerken van derde partijen te ondersteunen", + "There are advanced notifications which are not shown here": "Er zijn geavanceerde notificaties die hier niet worden laten zien", + "The server may be unavailable or overloaded": "De server is misschien niet beschikbaar of overbeladen", + "This room is inaccessible to guests. You may be able to join if you register": "Deze kamer is niet toegankelijk voor gasten. Je zou misschien toe kunnen treden als je geregistreerd bent", + " to room": " naar kamer", + "Unable to fetch notification target list": "Het is mislukt om de lijst van notificatie doelen op te halen", + "Unable to join network": "Het is mislukt om toe te treden tot dit netwerk", + "Unable to look up room ID from server": "Het is mislukt om de kamer ID op te halen van de server", + "Unhide Preview": "Zichtbaar maken preview", + "unknown error code": "niet bekende foutcode", + "Unnamed room": "Kamer zonder naam", + "Uploaded on %(date)s by %(user)s": "Geüpload op %(date)s door %(user)s", + "View Decrypted Source": "Bekijk gedecodeerde bron", + "View Source": "Bekijk bron", + "When I'm invited to a room": "Wanneer ik uitgenodigt wordt naar een kamer", + "World readable": "Door iedereen leesbaar", + "You cannot delete this image. (%(code)s)": "Je kunt deze afbeelding niet verwijderen. (%code)s)", + "You cannot delete this message. (%(code)s)": "Je kunt dit bericht niet verwijderen. (%(code)s)", + "You are not receiving desktop notifications": "Je ontvangt momenteel geen desktop notificaties", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Je hebt ze mogelijk ingesteld in een andere client dan Riot. Je kunt ze niet aanpassen in Riot maar ze zijn wel actief", + "Sunday": "Zondag", + "Monday": "Maandag", + "Tuesday": "Dinsdag", + "Wednesday": "Woensdag", + "Thursday": "Donderdag", + "Friday": "Vrijdag", + "Saturday": "Zaterdag", + "Today": "Vandaag", + "Yesterday": "Gisteren", + "Welcome page": "Welkom pagina", + "Drop here %(toAction)s": "%(toAction)s hier naar toe verplaatsen", + "Failed to set Direct Message status of room": "Het is mislukt om de directe berichten status van de kamer in te stellen", + "Redact": "Redigeren" } From 44e58d2eff4b3eca6df6c276e9f66cdf1ca0f43e Mon Sep 17 00:00:00 2001 From: Chazy Chaz Date: Sun, 28 May 2017 12:40:42 +0000 Subject: [PATCH 214/220] Added translation using Weblate (_ES (generated)) --- src/i18n/strings/_ES.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/_ES.json diff --git a/src/i18n/strings/_ES.json b/src/i18n/strings/_ES.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/_ES.json @@ -0,0 +1 @@ +{} \ No newline at end of file From efe3c239e173b176c5fe69bd5fc00660a74968ba Mon Sep 17 00:00:00 2001 From: Chazy Chaz Date: Sun, 28 May 2017 12:41:24 +0000 Subject: [PATCH 215/220] Added translation using Weblate (Spanish) --- src/i18n/strings/es.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/es.json diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/es.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 7b00be7f5747388f2c8d7e32b4be8a3eb99562eb Mon Sep 17 00:00:00 2001 From: RiotTranslate Date: Sun, 28 May 2017 13:34:53 +0000 Subject: [PATCH 216/220] remove wrong generated file --- src/i18n/strings/_ES.json | 1 - src/i18n/strings/es.json | 23 ++++++++++++++++++++++- src/i18n/strings/ru.json | 3 +-- 3 files changed, 23 insertions(+), 4 deletions(-) delete mode 100644 src/i18n/strings/_ES.json diff --git a/src/i18n/strings/_ES.json b/src/i18n/strings/_ES.json deleted file mode 100644 index 9e26dfeeb6..0000000000 --- a/src/i18n/strings/_ES.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 9e26dfeeb6..f97dc5fa2d 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -1 +1,22 @@ -{} \ No newline at end of file +{ + "Add an email address above to configure email notifications": "Añade una dirección de email arriba para configurar las notificaciones por email", + "Advanced notification settings": "Configuración de notificaciones avanzada", + "All messages": "Todos los mensajes", + "An error occurred whilst saving your email notification preferences.": "Se ha producido un error al guardar las preferencias de notificación por email.", + "Call invitation": "Invitación a la llamada", + "Cancel Sending": "Cancelar envío", + "Can't update user notification settings": "No se puede actualizar la configuración de notificación de usuario", + "Close": "Cerrar", + "Create new room": "Crear nueva sala", + "Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincidiera", + "Custom Server Options": "Opciones de Servidor Personalizado", + "customServer_text": "Puedes utilizar las opciones de servidor personalizadas para iniciar sesión en otros servidores Matrix especificando una URL de Home server distinta.
    Esto te permite usar Riot con una cuenta Matrix existente en un Home server distinto.

    También puedes configurar un servidor de identidad personalizado, pero no podrás invitar usuarios por dirección de email, ni ser invitado por email por ti mismo.", + "delete the alias": "borrar el alias", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar la sala alias %(alias)s y retirar %(name)s del directorio?", + "Direct Chat": "Chat Directo", + "Directory": "Directorio", + "Download this file": "Descargar este archivo", + "Drop here %(toAction)s": "Soltar aquí %(toAction)s", + "Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web", + "Enable desktop notifications": "Habilitar notificaciones de escritorio" +} diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index fe5196ae3f..f2f2dbdf36 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -18,7 +18,7 @@ "Enable email notifications": "Включить оповещения по электронной почте", "Enable notifications for this account": "Включить оповещения для этого аккаунта", "Enable them now": "Включить сейчас", - "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:", + "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой", "Error": "Ошибка", "Error saving email notification preferences": "Ошибка сохранения настроек оповещений по электронной почте", "#example": "#пример", @@ -119,7 +119,6 @@ "Advanced notification settings": "Настройки уведомлений", "Call invitation": "Звонок", "customServer_text": "Вы можете войти с помощью вашего сервера.
    Это позволяет вам использовать Riot с уже существующей учетной записью на другом сервере.

    Вы также можете задать свой сервер идентификации, но тогда вы не можете приглашать пользователей с помощью email-адреса и не можете быть приглашены по нему.", - "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой", "Messages containing my display name": "Сообщения, содержащие мое отображаемое имя", "Messages containing my user name": "Сообщение, содержащие мое имя пользователя", "Messages in group chats": "Сообщения в групповых чатах", From 367585cf6f56a364c21ede87db32edeb10acaa40 Mon Sep 17 00:00:00 2001 From: Chazy Chaz Date: Sun, 28 May 2017 13:35:03 +0000 Subject: [PATCH 217/220] Translated using Weblate (Spanish) Currently translated at 18.3% (22 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/es/ --- src/i18n/strings/es.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index f97dc5fa2d..fb84357d0b 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -18,5 +18,7 @@ "Download this file": "Descargar este archivo", "Drop here %(toAction)s": "Soltar aquí %(toAction)s", "Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web", - "Enable desktop notifications": "Habilitar notificaciones de escritorio" + "Enable desktop notifications": "Habilitar notificaciones de escritorio", + "Enable email notifications": "Habilitar notificaciones por email", + "Enable notifications for this account": "Habilitar notificaciones para esta cuenta" } From 0bdbdc2d1cb7a0b57c5b16d87b4c17522e2c5a5f Mon Sep 17 00:00:00 2001 From: Chazy Chaz Date: Sun, 28 May 2017 14:30:38 +0000 Subject: [PATCH 218/220] Translated using Weblate (Spanish) Currently translated at 95.0% (114 of 120 strings) Translation: Riot Web/Riot Web Translate-URL: https://translate.nordgedanken.de/projects/riot-web/riot-web/es/ --- src/i18n/strings/es.json | 94 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index fb84357d0b..beef27c12f 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -20,5 +20,97 @@ "Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web", "Enable desktop notifications": "Habilitar notificaciones de escritorio", "Enable email notifications": "Habilitar notificaciones por email", - "Enable notifications for this account": "Habilitar notificaciones para esta cuenta" + "Enable notifications for this account": "Habilitar notificaciones para esta cuenta", + "Enable them now": "Habilitarlos ahora", + "Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:", + "Error": "Error", + "Error saving email notification preferences": "Error al guardar las preferencias de notificación por email", + "#example": "#ejemplo", + "Failed to add tag %(tagName)s to room": "Error al añadir la etiqueta %(tagName)s a la sala", + "Failed to change settings": "Error al cambiar la configuración", + "Failed to forget room %(errCode)s": "No se pudo olvidar la habitación %(errCode)s", + "Failed to update keywords": "Error al actualizar las palabras clave", + "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos de Home Server", + "Failed to get public room list": "No se pudo obtener la lista de salas públicas", + "Failed to join the room": "No se puede unir a la habitación", + "Failed to remove tag %(tagName)s from room": "Error al eliminar la etiqueta %(tagName)s de la sala", + "Failed to set direct chat tag": "Error al establecer la etiqueta de chat directo", + "Failed to set Direct Message status of room": "No se pudo establecer el estado de Mensaje Directo de la sala", + "Favourite": "Favorito", + "Fetching third party location failed": "Falló la obtención de la ubicación de un tercero", + "Files": "Archivos", + "Filter room names": "Filtrar los nombres de las salas", + "Forget": "Olvidar", + " from room": " de la sala", + "Guests can join": "Los invitados se pueden unir", + "Guest users can't invite users. Please register to invite": "Los usuarios invitados no pueden invitar usuarios. Por favor, regístrate para poder invitar", + "Invite to this room": "Invitar a esta sala", + "Keywords": "Palabras clave", + "Leave": "Salir", + "Low Priority": "Baja Prioridad", + "Members": "Miembros", + "Mentions only": "Sólo menciones", + "Messages containing my display name": "Mensajes que contienen mi nombre para mostrar", + "Messages containing my user name": "Mensajes que contienen mi nombre de usuario", + "Messages in group chats": "Mensajes en chats de grupo", + "Messages in one-to-one chats": "Mensajes en chats uno a uno", + "Messages sent by bot": "Mensajes enviados por bot", + "more": "más", + "Mute": "Mute", + "No rooms to show": "Sin salas para mostrar", + "Noisy": "Ruidoso", + "Notification targets": "Objetivos de notificación", + "Notifications": "Notificaciones", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:", + "Notify me for anything else": "Notificarme para cualquier otra cosa", + "Off": "Apagado", + "On": "Encendido", + "Operation failed": "Operación fallida", + "Permalink": "Enlace permanente", + "Please Register": "Por favor regístrate", + "Quote": "Citar", + "Redact": "Redactar", + "Reject": "Rechazar", + "Remove %(name)s from the directory?": "¿Retirar %(name)s del directorio?", + "Remove": "Eliminar", + "remove %(name)s from the directory": "retirar %(name)s del directorio", + "Remove from Directory": "Retirar del Directorio", + "Resend": "Reenviar", + "Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red", + "Room directory": "Directorio de salas", + "Room not found": "Sala no encontrada", + "Search for a room": "Buscar sala", + "Settings": "Ajustes", + "Source URL": "URL de origen", + "Start chat": "Comenzar chat", + "The Home Server may be too old to support third party networks": "El Home Server puede ser demasiado antiguo para soportar redes de terceros", + "There are advanced notifications which are not shown here": "Hay notificaciones avanzadas que no se muestran aquí", + "The server may be unavailable or overloaded": "El servidor puede estar no disponible o sobrecargado", + "This room is inaccessible to guests. You may be able to join if you register": "Esta sala es inaccesible para los invitados. Puedes unirse si te registras", + " to room": " a la sala", + "Unable to fetch notification target list": "No se puede obtener la lista de objetivos de notificación", + "Unable to join network": "No se puede unir a la red", + "Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor", + "Unhide Preview": "Mostrar Vista Previa", + "unknown error code": "Código de error desconocido", + "Unnamed room": "Sala sin nombre", + "Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s", + "View Decrypted Source": "Ver Fuente Descifrada", + "View Source": "Ver Fuente", + "When I'm invited to a room": "Cuando estoy invitado a una sala", + "World readable": "Legible por todo el mundo", + "You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)", + "You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)", + "You are not receiving desktop notifications": "No estás recibiendo notificaciones de escritorio", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Es posible que los hayas configurado en un cliente que no sea Riot. No puedes ajustarlos en Riot, pero todavía se aplican", + "Sunday": "Domingo", + "Monday": "Lunes", + "Tuesday": "Martes", + "Wednesday": "Miércoles", + "Thursday": "Jueves", + "Friday": "Viernes", + "Saturday": "Sábado", + "Today": "Hoy", + "Yesterday": "Ayer", + "Welcome page": "Página de bienvenida" } From 3df6ecfe8488861b9cb81e2787ce42541e010ab7 Mon Sep 17 00:00:00 2001 From: Radium Date: Sun, 28 May 2017 16:11:35 +0000 Subject: [PATCH 219/220] Added translation using Weblate (Chinese (Traditional)) --- src/i18n/strings/zh_Hant.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/i18n/strings/zh_Hant.json diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/src/i18n/strings/zh_Hant.json @@ -0,0 +1 @@ +{} \ No newline at end of file From ab9ecc4f6428afb27d2af746ddf0f59bce868c23 Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Sun, 28 May 2017 21:35:47 +0100 Subject: [PATCH 220/220] remove duplicate i18n keys --- src/i18n/strings/pt.json | 1 - src/i18n/strings/pt_BR.json | 1 - src/i18n/strings/ru.json | 1 - 3 files changed, 3 deletions(-) diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index 44041bc8fc..d55488059c 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -2,7 +2,6 @@ "Add an email address above to configure email notifications": "Adicione um endereço de email acima para configurar as notificações por email", "All messages": "Todas as mensagens", "All messages (loud)": "Todas as mensagens (alto)", - "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os destinos", "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto salvava suas preferências de notificação por email.", "Cancel Sending": "Cancelar o envio", "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 545ed11a3d..f535bf0e4e 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -2,7 +2,6 @@ "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar suas notificações por email", "All messages": "Todas as mensagens", "All messages (loud)": "Todas as mensagens (alto)", - "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os destinos", "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email.", "Call invitation": "Convite para chamada", "Cancel Sending": "Cancelar o envio", diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index fe5196ae3f..465a3573f9 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -119,7 +119,6 @@ "Advanced notification settings": "Настройки уведомлений", "Call invitation": "Звонок", "customServer_text": "Вы можете войти с помощью вашего сервера.
    Это позволяет вам использовать Riot с уже существующей учетной записью на другом сервере.

    Вы также можете задать свой сервер идентификации, но тогда вы не можете приглашать пользователей с помощью email-адреса и не можете быть приглашены по нему.", - "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой", "Messages containing my display name": "Сообщения, содержащие мое отображаемое имя", "Messages containing my user name": "Сообщение, содержащие мое имя пользователя", "Messages in group chats": "Сообщения в групповых чатах",
    OffOnNoisy{ _t('Off') }{ _t('On') }{ _t('Noisy') }