diff --git a/backends/database.js b/backends/database.js
index 2a259ecd..08b6269a 100644
--- a/backends/database.js
+++ b/backends/database.js
@@ -1,7 +1,9 @@
const frappe = require('frappejs');
+const Observable = require('frappejs/utils/observable');
-module.exports = class Database {
+module.exports = class Database extends Observable {
constructor() {
+ super();
this.initTypeMap();
}
@@ -135,6 +137,10 @@ module.exports = class Database {
return fields;
}
+ triggerChange(doctype, name) {
+ this.trigger(`change:${doctype}`, {name:name});
+ }
+
async insert(doctype, doc) {
let meta = frappe.getMeta(doctype);
@@ -148,9 +154,12 @@ module.exports = class Database {
// insert children
await this.insertChildren(meta, doc, doctype);
+ this.triggerChange(doctype, doc.name);
+
return doc;
}
+
async insertChildren(meta, doc, doctype) {
let tableFields = meta.getTableFields();
for (let field of tableFields) {
@@ -179,6 +188,9 @@ module.exports = class Database {
// insert or update children
await this.updateChildren(meta, doc, doctype);
+
+ this.triggerChange(doctype, doc.name);
+
return doc;
}
@@ -275,6 +287,8 @@ module.exports = class Database {
for (let field of tableFields) {
await this.deleteChildren(field.childtype, name);
}
+
+ this.triggerChange(doctype, name);
}
async deleteOne(doctype, name) {
diff --git a/backends/rest_client.js b/backends/http.js
similarity index 94%
rename from backends/rest_client.js
rename to backends/http.js
index 0caf72df..dd22c367 100644
--- a/backends/rest_client.js
+++ b/backends/http.js
@@ -1,8 +1,10 @@
const frappe = require('frappejs');
-const path = require('path');
+const Observable = require('frappejs/utils/observable');
-module.exports = class RESTClient {
+module.exports = class HTTPClient extends Observable {
constructor({ server, protocol = 'http' }) {
+ super();
+
this.server = server;
this.protocol = protocol;
@@ -99,7 +101,7 @@ module.exports = class RESTClient {
}
getURL(...parts) {
- return this.protocol + '://' + path.join(this.server, ...parts);
+ return this.protocol + '://' + this.server + parts.join('/');
}
getQueryString(params) {
diff --git a/client/desk/formpage.js b/client/desk/formpage.js
index 0d0fff59..d2f756db 100644
--- a/client/desk/formpage.js
+++ b/client/desk/formpage.js
@@ -3,57 +3,57 @@ const view = require('frappejs/client/view');
const frappe = require('frappejs');
module.exports = class FormPage extends Page {
- constructor(doctype) {
- let meta = frappe.getMeta(doctype)
- super({title: `Edit ${meta.name}`});
- this.meta = meta;
+ constructor(doctype) {
+ let meta = frappe.getMeta(doctype)
+ super({title: `Edit ${meta.name}`});
+ this.meta = meta;
- this.form = new (view.getFormClass(doctype))({
- doctype: doctype,
- parent: this.body,
- container: this,
- actions: ['submit', 'delete', 'duplicate', 'settings']
- });
+ this.form = new (view.getFormClass(doctype))({
+ doctype: doctype,
+ parent: this.body,
+ container: this,
+ actions: ['submit', 'delete', 'duplicate', 'settings']
+ });
- this.on('show', async (params) => {
- await this.showDoc(params.doctype, params.name);
- if (frappe.desk.center && !frappe.desk.center.activePage) {
- frappe.desk.showListPage(doctype);
- }
- });
+ this.on('show', async (params) => {
+ await this.showDoc(params.doctype, params.name);
+ if (frappe.desk.center && !frappe.desk.center.activePage) {
+ frappe.desk.showListPage(doctype);
+ }
+ });
- // if name is different after saving, change the route
- this.form.on('submit', async (params) => {
- let route = frappe.router.get_route();
- if (this.form.doc.name && !(route && route[2] === this.form.doc.name)) {
- await frappe.router.setRoute('edit', this.form.doc.doctype, this.form.doc.name);
- this.form.showAlert('Added', 'success');
- }
- });
+ // if name is different after saving, change the route
+ this.form.on('submit', async (params) => {
+ let route = frappe.router.get_route();
+ if (this.form.doc.name && !(route && route[2] === this.form.doc.name)) {
+ await frappe.router.setRoute('edit', this.form.doc.doctype, this.form.doc.name);
+ this.form.showAlert('Added', 'success');
+ }
+ });
- this.form.on('delete', async (params) => {
- await frappe.router.setRoute('list', this.form.doctype);
- });
- }
+ this.form.on('delete', async (params) => {
+ await frappe.router.setRoute('list', this.form.doctype);
+ });
+ }
- async showDoc(doctype, name) {
- try {
- await this.form.setDoc(doctype, name);
- this.setActiveListRow(doctype, name);
- } catch (e) {
- this.renderError(e.status_code, e.message);
- }
- }
+ async showDoc(doctype, name) {
+ try {
+ await this.form.setDoc(doctype, name);
+ this.setActiveListRow(doctype, name);
+ } catch (e) {
+ this.renderError(e.status_code, e.message);
+ }
+ }
- setActiveListRow(doctype, name) {
- let activeListRow = document.querySelector('.list-page .list-body .list-row.active');
- if (activeListRow) {
- activeListRow.classList.remove('active');
- }
+ setActiveListRow(doctype, name) {
+ let activeListRow = document.querySelector('.list-page .list-body .list-row.active');
+ if (activeListRow) {
+ activeListRow.classList.remove('active');
+ }
- let myListRow = document.querySelector(`.list-body[data-doctype="${doctype}"] .list-row[data-name="${name}"]`);
- if (myListRow) {
- myListRow.classList.add('active');
- }
- }
+ let myListRow = document.querySelector(`.list-body[data-doctype="${doctype}"] .list-row[data-name="${name}"]`);
+ if (myListRow) {
+ myListRow.classList.add('active');
+ }
+ }
}
diff --git a/client/desk/listpage.js b/client/desk/listpage.js
index 688bbd37..7757f828 100644
--- a/client/desk/listpage.js
+++ b/client/desk/listpage.js
@@ -3,26 +3,26 @@ const Page = require('frappejs/client/view/page');
const view = require('frappejs/client/view');
module.exports = class ListPage extends Page {
- constructor(doctype) {
- let meta = frappe.getMeta(doctype);
+ constructor(doctype) {
+ let meta = frappe.getMeta(doctype);
- // if center column is present, list does not have its route
- const hasRoute = frappe.desk.center ? false : true;
+ // if center column is present, list does not have its route
+ const hasRoute = frappe.desk.center ? false : true;
- super({
- title: frappe._("List: {0}", meta.name),
- parent: hasRoute ? frappe.desk.body : frappe.desk.center,
- hasRoute: hasRoute
- });
+ super({
+ title: frappe._("List: {0}", meta.name),
+ parent: hasRoute ? frappe.desk.body : frappe.desk.center,
+ hasRoute: hasRoute
+ });
- this.list = new (view.geListClass(doctype))({
- doctype: doctype,
- parent: this.body,
- page: this
- });
+ this.list = new (view.geListClass(doctype))({
+ doctype: doctype,
+ parent: this.body,
+ page: this
+ });
- this.on('show', async () => {
- await this.list.run();
- });
- }
+ this.on('show', async () => {
+ await this.list.run();
+ });
+ }
}
diff --git a/client/desk/navbar.js b/client/desk/navbar.js
index 7125e2c4..840acea4 100644
--- a/client/desk/navbar.js
+++ b/client/desk/navbar.js
@@ -1,42 +1,42 @@
const frappe = require('frappejs');
module.exports = class Navbar {
- constructor({brand_label = 'Home'} = {}) {
- Object.assign(this, arguments[0]);
- this.items = {};
- this.navbar = frappe.ui.add('div', 'navbar navbar-expand-md border-bottom navbar-dark bg-dark', document.querySelector('body'));
+ constructor({brand_label = 'Home'} = {}) {
+ Object.assign(this, arguments[0]);
+ this.items = {};
+ this.navbar = frappe.ui.add('div', 'navbar navbar-expand-md border-bottom navbar-dark bg-dark', document.querySelector('body'));
- this.brand = frappe.ui.add('a', 'navbar-brand', this.navbar);
- this.brand.href = '#';
- this.brand.textContent = brand_label;
+ this.brand = frappe.ui.add('a', 'navbar-brand', this.navbar);
+ this.brand.href = '#';
+ this.brand.textContent = brand_label;
- this.toggler = frappe.ui.add('button', 'navbar-toggler', this.navbar);
- this.toggler.setAttribute('type', 'button');
- this.toggler.setAttribute('data-toggle', 'collapse');
- this.toggler.setAttribute('data-target', 'desk-navbar');
- this.toggler.innerHTML = ``;
+ this.toggler = frappe.ui.add('button', 'navbar-toggler', this.navbar);
+ this.toggler.setAttribute('type', 'button');
+ this.toggler.setAttribute('data-toggle', 'collapse');
+ this.toggler.setAttribute('data-target', 'desk-navbar');
+ this.toggler.innerHTML = ``;
- this.navbar_collapse = frappe.ui.add('div', 'collapse navbar-collapse', this.navbar);
- this.navbar_collapse.setAttribute('id', 'desk-navbar');
+ this.navbar_collapse = frappe.ui.add('div', 'collapse navbar-collapse', this.navbar);
+ this.navbar_collapse.setAttribute('id', 'desk-navbar');
- this.nav = frappe.ui.add('ul', 'navbar-nav mr-auto', this.navbar_collapse);
- }
+ this.nav = frappe.ui.add('ul', 'navbar-nav mr-auto', this.navbar_collapse);
+ }
- addItem(label, route) {
- let item = frappe.ui.add('li', 'nav-item', this.nav);
- item.link = frappe.ui.add('a', 'nav-link', item);
- item.link.textContent = label;
- item.link.href = route;
- this.items[label] = item;
- return item;
- }
+ addItem(label, route) {
+ let item = frappe.ui.add('li', 'nav-item', this.nav);
+ item.link = frappe.ui.add('a', 'nav-link', item);
+ item.link.textContent = label;
+ item.link.href = route;
+ this.items[label] = item;
+ return item;
+ }
- add_dropdown(label) {
+ add_dropdown(label) {
- }
+ }
- add_search() {
- let form = frappe.ui.add('form', 'form-inline my-2 my-md-0', this.nav);
+ add_search() {
+ let form = frappe.ui.add('form', 'form-inline my-2 my-md-0', this.nav);
- }
+ }
}
\ No newline at end of file
diff --git a/client/index.js b/client/index.js
index 2306e4e5..bf7e4a2a 100644
--- a/client/index.js
+++ b/client/index.js
@@ -1,5 +1,5 @@
const common = require('frappejs/common');
-const RESTClient = require('frappejs/backends/rest_client');
+const HTTPClient = require('frappejs/backends/http');
const frappe = require('frappejs');
frappe.ui = require('./ui');
const Desk = require('./desk');
@@ -13,7 +13,9 @@ module.exports = {
frappe.registerModels(require('../models'));
frappe.fetch = window.fetch.bind();
- frappe.db = await new RESTClient({server: server});
+ frappe.db = await new HTTPClient({server: server});
+ this.socket = io.connect('http://localhost:8000'); // eslint-disable-line
+ frappe.db.bindSocketClient(this.socket);
frappe.flags.cache_docs = true;
diff --git a/client/ui/keyboard.js b/client/ui/keyboard.js
index f5ac53ea..5bb1f472 100644
--- a/client/ui/keyboard.js
+++ b/client/ui/keyboard.js
@@ -1,40 +1,40 @@
module.exports = {
- bindKey(element, key, listener) {
- element.addEventListener('keydown', (e) => {
- if (key === this.getKey(e)) {
- listener(e);
- }
- })
- },
+ bindKey(element, key, listener) {
+ element.addEventListener('keydown', (e) => {
+ if (key === this.getKey(e)) {
+ listener(e);
+ }
+ })
+ },
- getKey(e) {
- var keycode = e.keyCode || e.which;
- var key = this.keyMap[keycode] || String.fromCharCode(keycode);
+ getKey(e) {
+ var keycode = e.keyCode || e.which;
+ var key = this.keyMap[keycode] || String.fromCharCode(keycode);
- if(e.ctrlKey || e.metaKey) {
- // add ctrl+ the key
- key = 'ctrl+' + key;
- }
- if(e.shiftKey) {
- // add ctrl+ the key
- key = 'shift+' + key;
- }
- return key.toLowerCase();
- },
+ if(e.ctrlKey || e.metaKey) {
+ // add ctrl+ the key
+ key = 'ctrl+' + key;
+ }
+ if(e.shiftKey) {
+ // add ctrl+ the key
+ key = 'shift+' + key;
+ }
+ return key.toLowerCase();
+ },
- keyMap: {
- 8: 'backspace',
- 9: 'tab',
- 13: 'enter',
- 16: 'shift',
- 17: 'ctrl',
- 91: 'meta',
- 18: 'alt',
- 27: 'escape',
- 37: 'left',
- 39: 'right',
- 38: 'up',
- 40: 'down',
- 32: 'space'
- },
+ keyMap: {
+ 8: 'backspace',
+ 9: 'tab',
+ 13: 'enter',
+ 16: 'shift',
+ 17: 'ctrl',
+ 91: 'meta',
+ 18: 'alt',
+ 27: 'escape',
+ 37: 'left',
+ 39: 'right',
+ 38: 'up',
+ 40: 'down',
+ 32: 'space'
+ },
}
\ No newline at end of file
diff --git a/client/view/controls/table.js b/client/view/controls/table.js
index c0f1c166..89931498 100644
--- a/client/view/controls/table.js
+++ b/client/view/controls/table.js
@@ -154,6 +154,9 @@ class TableControl extends BaseControl {
}
checkValidity() {
+ if (!this.datatable) {
+ return true;
+ }
let data = this.getTableData();
for (let rowIndex=0; rowIndex < data.length; rowIndex++) {
let row = data[rowIndex];
diff --git a/client/view/list.js b/client/view/list.js
index 7782bb53..bed0b015 100644
--- a/client/view/list.js
+++ b/client/view/list.js
@@ -12,6 +12,14 @@ module.exports = class BaseList {
this.body = null;
this.rows = [];
this.data = [];
+
+ frappe.db.on(`change:${this.doctype}`, (params) => {
+ this.dirty = true;
+ });
+
+ setInterval(() => {
+ if (this.dirty) this.refresh();
+ }, 500);
}
async refresh() {
@@ -20,6 +28,7 @@ module.exports = class BaseList {
async run() {
this.makeBody();
+ this.dirty = false;
let data = await this.getData();
diff --git a/config/rollup.config.app.js b/config/rollup.config.app.js
index 5b10a8f3..4c941fbb 100644
--- a/config/rollup.config.app.js
+++ b/config/rollup.config.app.js
@@ -3,12 +3,14 @@ module.exports = {
output: {
file: './dist/js/bundle.js',
format: 'iife',
- name: 'desk'
+ name: 'desk',
+ globals: ['io']
},
plugins: [
require('rollup-plugin-commonjs')(),
require('rollup-plugin-json')(),
- require('rollup-plugin-node-resolve')(),
- require('rollup-plugin-node-builtins')()
- ]
-}
+ require('rollup-plugin-node-resolve')({
+ preferBuiltins: true
+ })
+ ],
+}
\ No newline at end of file
diff --git a/index.js b/index.js
index dd2076b6..2da104d4 100644
--- a/index.js
+++ b/index.js
@@ -94,7 +94,11 @@ module.exports = {
for (let field of this.getMeta(doc.doctype).getValidFields()) {
if (field.fieldname === 'name') continue;
if (field.fieldtype === 'Table') {
- newDoc[field.fieldname] = (doc[field.fieldname] || []).map(d => Object.assign({}, d));
+ newDoc[field.fieldname] = (doc[field.fieldname] || []).map(d => {
+ let newd = Object.assign({}, d);
+ newd.name = '';
+ return newd;
+ });
} else {
newDoc[field.fieldname] = doc[field.fieldname];
}
diff --git a/model/boilerplate.js b/model/boilerplate.js
index 7f7f07d5..846fb3a0 100644
--- a/model/boilerplate.js
+++ b/model/boilerplate.js
@@ -1,45 +1,25 @@
const fs = require('fs');
-const utils = require('frappejs/utils');
module.exports = {
- make_model_files(name) {
+ make_model_files(name) {
- // [doctype].json
- fs.mkdirSync(`./models/doctype/${utils.slug(name)}`);
- fs.writeFileSync(`./models/doctype/${utils.slug(name)}/${utils.slug(name)}.json`, `{
- "name": "${name}",
- "doctype": "DocType",
- "isSingle": 0,
- "isChild": 0,
- "keywordFields": [],
- "fields": [
- {
- "fieldname": "name",
- "label": "Name",
- "fieldtype": "Data",
- "required": 1
- }
- ]
+ // [doctype].json
+ fs.mkdirSync(`./models/doctype/${name}`);
+ fs.writeFileSync(`./models/doctype/${name}/${name}.js`, `{
+ name: "${name}",
+ doctype: "DocType",
+ isSingle: 0,
+ isChild: 0,
+ keywordFields: [],
+ fields: [
+ {
+ fieldname: "name",
+ label: "Name",
+ fieldtype: "Data",
+ required: 1
+ }
+ ]
}`);
- // [doctype].js
- let thinname = name.replace(/ /g, '');
- fs.writeFileSync(`./models/doctype/${utils.slug(name)}/${utils.slug(name)}.js`, `const BaseMeta = require('frappejs/model/meta');
-const BaseDocument = require('frappejs/model/document');
-
-class ${thinname}Meta extends BaseMeta {
- setupMeta() {
- Object.assign(this, require('./${utils.slug(name)}.json'));
- }
-}
-
-class ${thinname} extends BaseDocument {
-}
-
-module.exports = {
- Document: ${thinname},
- Meta: ${thinname}Meta
-};`);
-
- }
+ }
}
diff --git a/package.json b/package.json
index f641945e..5503a6cb 100644
--- a/package.json
+++ b/package.json
@@ -12,16 +12,22 @@
"awesomplete": "^1.1.2",
"body-parser": "^1.18.2",
"bootstrap": "^4.0.0",
+ "bufferutil": "^3.0.3",
"clusterize.js": "^0.18.0",
"commander": "^2.13.0",
+ "debug": "^3.1.0",
"express": "^4.16.2",
"flatpickr": "^4.3.2",
"jquery": "^3.3.1",
"mysql": "^2.15.0",
"node-fetch": "^1.7.3",
"popper.js": "^1.12.9",
+ "rollup-plugin-ignore": "^1.0.3",
+ "socket.io": "^2.0.4",
+ "socket.io-client": "^2.0.4",
"sortablejs": "^1.7.0",
"sqlite3": "^3.1.13",
+ "utf-8-validate": "^4.0.0",
"walk": "^2.3.9"
},
"repository": {
@@ -48,6 +54,7 @@
"rollup-plugin-commonjs": "^8.3.0",
"rollup-plugin-json": "^2.3.0",
"rollup-plugin-node-builtins": "^2.1.2",
+ "rollup-plugin-node-globals": "^1.1.0",
"rollup-plugin-node-resolve": "^3.0.2",
"rollup-plugin-postcss": "^1.2.7",
"rollup-plugin-sass": "^0.5.3"
diff --git a/server/index.js b/server/index.js
index 1840cc7a..9c840ce8 100644
--- a/server/index.js
+++ b/server/index.js
@@ -4,6 +4,8 @@ backends.sqlite = require('frappejs/backends/sqlite');
const express = require('express');
const app = express();
+const server = require('http').Server(app);
+const io = require('socket.io')(server);
const frappe = require('frappejs');
const rest_api = require('./rest_api');
const frappeModels = require('frappejs/models');
@@ -26,12 +28,18 @@ module.exports = {
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('./'));
+ // socketio
+ io.on('connection', function (socket) {
+ frappe.db.bindSocketServer(socket);
+ });
// routes
rest_api.setup(app);
// listen
frappe.app = app;
- frappe.server = app.listen(frappe.config.port);
+ frappe.server = server;
+
+ server.listen(frappe.config.port);
},
async init() {
diff --git a/tests/test_rest_api.js b/tests/test_rest_api.js
index bd102a83..6e916c92 100644
--- a/tests/test_rest_api.js
+++ b/tests/test_rest_api.js
@@ -1,10 +1,9 @@
const assert = require('assert');
const frappe = require('frappejs');
const fetch = require('node-fetch');
-const helpers = require('./helpers');
const { spawn } = require('child_process');
const process = require('process');
-const RESTClient = require('frappejs/backends/rest_client')
+const HTTPClient = require('frappejs/backends/http')
// create a copy of frappe
@@ -19,7 +18,7 @@ describe('REST', () => {
await frappe.init();
await frappe.login();
- frappe.db = await new RESTClient({server: 'localhost:8000'});
+ frappe.db = await new HTTPClient({server: 'localhost:8000'});
frappe.fetch = fetch;
// wait for server to start
diff --git a/utils/observable.js b/utils/observable.js
index 2f3bcd10..bb152cdc 100644
--- a/utils/observable.js
+++ b/utils/observable.js
@@ -1,20 +1,39 @@
module.exports = class Observable {
on(event, listener) {
this._addListener('_listeners', event, listener);
+ if (this._socketClient) {
+ this._socketClient.on(event, listener);
+ }
}
once(event, listener) {
this._addListener('_onceListeners', event, listener);
}
+ bindSocketClient(socket) {
+ // also send events with sockets
+ this._socketClient = socket;
+ }
+
+ bindSocketServer(socket) {
+ // also send events with sockets
+ this._socketServer = socket;
+ }
+
async trigger(event, params) {
await this._triggerEvent('_listeners', event, params);
await this._triggerEvent('_onceListeners', event, params);
+ if (this._socketServer) {
+ this._socketServer.emit(event, params);
+ }
+
// clear once-listeners
if (this._onceListeners && this._onceListeners[event]) {
delete this._onceListeners[event];
}
+
+
}
_addListener(name, event, listener) {
diff --git a/yarn.lock b/yarn.lock
index 4a7ec81f..ace6af84 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -29,10 +29,18 @@ acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+acorn@^4.0.1:
+ version "4.0.13"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
+
acorn@^5.2.1:
version "5.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
+after@0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
+
ajv-keywords@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
@@ -145,6 +153,10 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+arraybuffer.slice@~0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
+
arrify@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -177,6 +189,10 @@ async-foreach@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542"
+async-limiter@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -234,6 +250,10 @@ babel-runtime@^6.23.0:
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
+backo2@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+
balanced-match@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a"
@@ -246,12 +266,26 @@ balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+base64-arraybuffer@0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
+
+base64id@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6"
+
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.2.0"
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
@@ -264,12 +298,26 @@ binary-extensions@^1.0.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
+bindings@~1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
+
+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"
+
bl@~0.8.1:
version "0.8.2"
resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e"
dependencies:
readable-stream "~1.0.26"
+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"
@@ -420,7 +468,7 @@ browserslist@^2.11.1:
caniuse-lite "^1.0.30000792"
electron-to-chromium "^1.3.30"
-buffer-es6@^4.9.2:
+buffer-es6@^4.9.1, buffer-es6@^4.9.2:
version "4.9.3"
resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404"
@@ -428,6 +476,14 @@ buffer-xor@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+bufferutil@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-3.0.3.tgz#ce67caefde2282591e399528467fe623f68f4bd5"
+ dependencies:
+ bindings "~1.3.0"
+ nan "~2.7.0"
+ prebuild-install "~2.3.0"
+
builtin-modules@^1.0.0, builtin-modules@^1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -442,6 +498,10 @@ caller-path@^0.1.0:
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"
@@ -535,6 +595,10 @@ chokidar@^1.7.0:
optionalDependencies:
fsevents "^1.0.0"
+chownr@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -654,6 +718,18 @@ commander@^2.9.0:
version "2.12.2"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
+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.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"
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -895,13 +971,13 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
-debug@2.6.9, debug@^2.2.0, debug@^2.6.8:
+debug@2.6.9, debug@^2.2.0, debug@^2.6.8, debug@~2.6.4, debug@~2.6.6:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
ms "2.0.0"
-debug@3.1.0, debug@^3.1.0:
+debug@3.1.0, debug@^3.1.0, debug@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies:
@@ -1050,6 +1126,51 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ dependencies:
+ once "^1.4.0"
+
+engine.io-client@~3.1.0:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.5.tgz#85de17666560327ef1817978f6e3f8101ded2c47"
+ dependencies:
+ component-emitter "1.2.1"
+ component-inherit "0.0.3"
+ debug "~3.1.0"
+ engine.io-parser "~2.1.1"
+ has-cors "1.1.0"
+ indexof "0.0.1"
+ parseqs "0.0.5"
+ parseuri "0.0.5"
+ ws "~3.3.1"
+ xmlhttprequest-ssl "~1.5.4"
+ yeast "0.1.2"
+
+engine.io-parser@~2.1.0, engine.io-parser@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.2.tgz#4c0f4cff79aaeecbbdcfdea66a823c6085409196"
+ dependencies:
+ after "0.8.2"
+ arraybuffer.slice "~0.0.7"
+ base64-arraybuffer "0.1.5"
+ blob "0.0.4"
+ has-binary2 "~1.0.2"
+
+engine.io@~3.1.0:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845"
+ dependencies:
+ accepts "~1.3.4"
+ base64id "1.0.0"
+ cookie "0.3.1"
+ debug "~3.1.0"
+ engine.io-parser "~2.1.0"
+ ws "~3.3.1"
+ optionalDependencies:
+ uws "~9.14.0"
+
errno@^0.1.1, errno@~0.1.1:
version "0.1.6"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026"
@@ -1155,6 +1276,10 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+estree-walker@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
+
estree-walker@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
@@ -1214,6 +1339,10 @@ expand-range@^1.8.1:
dependencies:
fill-range "^2.1.0"
+expand-template@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.0.tgz#e09efba977bf98f9ee0ed25abd0c692e02aec3fc"
+
express@^4.16.2:
version "4.16.2"
resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c"
@@ -1517,6 +1646,10 @@ getpass@^0.1.1:
dependencies:
assert-plus "^1.0.0"
+github-from-package@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
+
glob-base@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
@@ -1651,6 +1784,16 @@ has-ansi@^2.0.0:
dependencies:
ansi-regex "^2.0.0"
+has-binary2@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98"
+ dependencies:
+ isarray "2.0.1"
+
+has-cors@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+
has-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
@@ -1802,7 +1945,7 @@ indexes-of@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
-indexof@~0.0.1:
+indexof@0.0.1, indexof@~0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
@@ -2038,6 +2181,10 @@ isarray@1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+isarray@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
+
isbuffer@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b"
@@ -2327,6 +2474,12 @@ macaddress@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+magic-string@^0.16.0:
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.16.0.tgz#970ebb0da7193301285fb1aa650f39bdd81eb45a"
+ dependencies:
+ vlq "^0.2.1"
+
magic-string@^0.22.4:
version "0.22.4"
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff"
@@ -2488,7 +2641,7 @@ mysql@^2.15.0:
safe-buffer "5.1.1"
sqlstring "2.3.0"
-nan@^2.3.0, nan@^2.3.2:
+nan@^2.3.0, nan@^2.3.2, nan@~2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
@@ -2504,6 +2657,12 @@ negotiator@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+node-abi@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.2.0.tgz#e802ac7a2408e2c0593fb3176ffdf8a99a9b4dec"
+ dependencies:
+ semver "^5.4.1"
+
node-fetch@^1.7.3:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
@@ -2582,6 +2741,10 @@ nodemon@^1.14.7:
undefsafe "0.0.3"
update-notifier "^2.3.0"
+noop-logger@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
+
"nopt@2 || 3":
version "3.0.6"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
@@ -2635,7 +2798,7 @@ npm-run-path@^2.0.0:
dependencies:
path-key "^2.0.0"
-"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
+"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.0.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
dependencies:
@@ -2660,6 +2823,10 @@ object-assign@^4.0.1, object-assign@^4.1.0:
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-keys@~0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67"
@@ -2689,7 +2856,7 @@ on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
-once@^1.3.0, once@^1.3.3:
+once@^1.3.0, once@^1.3.1, 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:
@@ -2771,6 +2938,18 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.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.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
@@ -3281,6 +3460,25 @@ postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.16, postcss@^6.0
source-map "^0.6.1"
supports-color "^5.1.0"
+prebuild-install@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.3.0.tgz#19481247df728b854ab57b187ce234211311b485"
+ dependencies:
+ expand-template "^1.0.2"
+ github-from-package "0.0.0"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ node-abi "^2.1.1"
+ noop-logger "^0.1.1"
+ npmlog "^4.0.1"
+ os-homedir "^1.0.1"
+ pump "^1.0.1"
+ rc "^1.1.6"
+ simple-get "^1.4.2"
+ tar-fs "^1.13.0"
+ tunnel-agent "^0.6.0"
+ xtend "4.0.1"
+
precss@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/precss/-/precss-2.0.0.tgz#7f567e3318e06d44c8fdbf9e58452e8358bf4b71"
@@ -3314,7 +3512,7 @@ preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-process-es6@^0.11.2:
+process-es6@^0.11.2, process-es6@^0.11.3:
version "0.11.6"
resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778"
@@ -3322,6 +3520,10 @@ 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-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+
progress@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
@@ -3371,6 +3573,13 @@ public-encrypt@^4.0.0:
parse-asn1 "^5.0.0"
randombytes "^2.0.1"
+pump@^1.0.0, pump@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
@@ -3482,6 +3691,18 @@ readable-stream@^1.0.26-4:
isarray "0.0.1"
string_decoder "~0.10.x"
+readable-stream@^2.0.0, readable-stream@^2.0.5:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.0.3"
+ util-deprecate "~1.0.1"
+
readable-stream@~1.0.26, readable-stream@~1.0.26-4:
version "1.0.34"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
@@ -3730,6 +3951,10 @@ rollup-plugin-commonjs@^8.3.0:
resolve "^1.4.0"
rollup-pluginutils "^2.0.1"
+rollup-plugin-ignore@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-ignore/-/rollup-plugin-ignore-1.0.3.tgz#9a3caac6709e481471ce4498a48164bbc2359e3d"
+
rollup-plugin-json@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.0.tgz#3c07a452c1b5391be28006fbfff3644056ce0add"
@@ -3745,6 +3970,17 @@ rollup-plugin-node-builtins@^2.1.2:
crypto-browserify "^3.11.0"
process-es6 "^0.11.2"
+rollup-plugin-node-globals@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.1.0.tgz#7efd8d611d132737829e804e9f51f50962af451f"
+ dependencies:
+ acorn "^4.0.1"
+ buffer-es6 "^4.9.1"
+ estree-walker "^0.2.1"
+ magic-string "^0.16.0"
+ process-es6 "^0.11.3"
+ rollup-pluginutils "^1.5.2"
+
rollup-plugin-node-resolve@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.2.tgz#38babc12fd404cc2ba1ff68648fe43fa3ffee6b0"
@@ -3786,6 +4022,13 @@ rollup-plugin-sass@^0.5.3:
estree-walker "^0.3.0"
micromatch "^2.3.11"
+rollup-pluginutils@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
+ dependencies:
+ estree-walker "^0.2.1"
+ minimatch "^3.0.2"
+
rollup@^0.55.1:
version "0.55.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.55.1.tgz#baf4f23abe3014b29e56dea7d72d9946e56ac7dd"
@@ -3840,6 +4083,10 @@ semver-diff@^2.0.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
+semver@^5.4.1:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+
semver@~2.3.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52"
@@ -3912,6 +4159,14 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+simple-get@^1.4.2:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb"
+ dependencies:
+ once "^1.3.1"
+ unzip-response "^1.0.0"
+ xtend "^4.0.0"
+
slice-ansi@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
@@ -3930,6 +4185,47 @@ sntp@2.x.x:
dependencies:
hoek "4.x.x"
+socket.io-adapter@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b"
+
+socket.io-client@2.0.4, socket.io-client@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e"
+ dependencies:
+ backo2 "1.0.2"
+ base64-arraybuffer "0.1.5"
+ component-bind "1.0.0"
+ component-emitter "1.2.1"
+ debug "~2.6.4"
+ engine.io-client "~3.1.0"
+ has-cors "1.1.0"
+ indexof "0.0.1"
+ object-component "0.0.3"
+ parseqs "0.0.5"
+ parseuri "0.0.5"
+ socket.io-parser "~3.1.1"
+ to-array "0.1.4"
+
+socket.io-parser@~3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2"
+ dependencies:
+ component-emitter "1.2.1"
+ debug "~2.6.4"
+ has-binary2 "~1.0.2"
+ isarray "2.0.1"
+
+socket.io@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014"
+ dependencies:
+ debug "~2.6.6"
+ engine.io "~3.1.0"
+ socket.io-adapter "~1.1.0"
+ socket.io-client "2.0.4"
+ socket.io-parser "~3.1.1"
+
sort-keys@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
@@ -4157,6 +4453,15 @@ table@^4.0.1:
slice-ansi "1.0.0"
string-width "^2.1.1"
+tar-fs@^1.13.0:
+ version "1.16.0"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896"
+ dependencies:
+ chownr "^1.0.1"
+ mkdirp "^0.5.1"
+ pump "^1.0.0"
+ tar-stream "^1.1.2"
+
tar-pack@^3.4.0:
version "3.4.1"
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
@@ -4170,6 +4475,15 @@ tar-pack@^3.4.0:
tar "^2.2.1"
uid-number "^0.0.6"
+tar-stream@^1.1.2:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55"
+ dependencies:
+ bl "^1.0.0"
+ end-of-stream "^1.0.0"
+ readable-stream "^2.0.0"
+ xtend "^4.0.0"
+
tar@^2.0.0, tar@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
@@ -4206,6 +4520,10 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
+to-array@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
+
touch@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
@@ -4267,6 +4585,10 @@ 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.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+
undefsafe@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
@@ -4299,6 +4621,10 @@ 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.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe"
+
unzip-response@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
@@ -4323,6 +4649,14 @@ url-parse-lax@^1.0.0:
dependencies:
prepend-http "^1.0.1"
+utf-8-validate@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-4.0.0.tgz#93812f447b6fd11a3dad4302d5870830cae8470a"
+ dependencies:
+ bindings "~1.3.0"
+ nan "~2.8.0"
+ prebuild-install "~2.3.0"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -4335,6 +4669,10 @@ uuid@^3.0.0, uuid@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
+uws@~9.14.0:
+ version "9.14.0"
+ resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95"
+
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"
@@ -4423,18 +4761,30 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
+ws@~3.3.1:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
+ dependencies:
+ async-limiter "~1.0.0"
+ safe-buffer "~5.1.0"
+ ultron "~1.1.0"
+
xdg-basedir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+xmlhttprequest-ssl@~1.5.4:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
+
+xtend@4.0.1, xtend@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
xtend@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9"
-xtend@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
-
xtend@~2.0.4:
version "2.0.6"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee"
@@ -4483,3 +4833,7 @@ yargs@^7.0.0:
which-module "^1.0.0"
y18n "^3.2.1"
yargs-parser "^5.0.0"
+
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"