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"