From ba39a6322f88721651a2a034989ebd1567f94aca Mon Sep 17 00:00:00 2001 From: Tony Hung Date: Tue, 7 Aug 2018 05:42:07 -0400 Subject: [PATCH] updated asr client to v 0.1 --- WS-node/app.js | 85 ++-- WS-node/lib/asrClient.js | 20 +- WS-node/nexmo-app.js | 363 -------------- WS-node/package-lock.json | 962 ++++++++++++++++++------------------ WS-node/package.json | 9 +- WS-node/public/index.html | 4 +- WS-node/public/js/charts.js | 9 +- WS-node/public/js/socket.js | 3 +- 8 files changed, 530 insertions(+), 925 deletions(-) mode change 100644 => 100755 WS-node/lib/asrClient.js delete mode 100644 WS-node/nexmo-app.js diff --git a/WS-node/app.js b/WS-node/app.js index 3374e2b..665ae36 100644 --- a/WS-node/app.js +++ b/WS-node/app.js @@ -5,7 +5,6 @@ var WebSocketServer = require('websocket').server; var http = require('http'); var HttpDispatcher = require('httpdispatcher'); -var nexmoApp = require('./nexmo-app') var dispatcher = new HttpDispatcher(); const fs = require('fs'); const winston = require('winston') @@ -16,6 +15,7 @@ var myAsrClient; var engineStartedMs; var connections = [] + //Create a server var server = http.createServer(function(req, res) { handleRequest(req,res); @@ -26,7 +26,7 @@ var io = require('socket.io').listen(server); // When a client connects, we note it in the console io.sockets.on('connection', function (socket) { - console.log('info','A client is connected!'); + winston.log('info','A client is connected!'); }); @@ -41,7 +41,7 @@ var wsServer = new WebSocketServer({ function handleRequest(request, response){ try { //log the request on console - console.log('info', 'handleRequest',request.url); + winston.log('info', 'handleRequest',request.url); //Dispatch dispatcher.dispatch(request, response); } catch(err) { @@ -51,10 +51,10 @@ function handleRequest(request, response){ dispatcher.setStatic('/public'); dispatcher.setStaticDirname('public'); dispatcher.onGet("/", function(req, res) { - console.log('info', 'loading index'); - console.log('info', 'port', process.env.PORT) + winston.log('info', 'loading index'); + winston.log('info', 'port', process.env.PORT) fs.readFile('./public/index.html', 'utf-8', function(error, content) { - console.log('debug', 'loading Index'); + winston.log('debug', 'loading Index'); res.writeHead(200, {"Content-Type": "text/html"}); res.end(content); }); @@ -62,107 +62,84 @@ dispatcher.onGet("/", function(req, res) { // Serve the ncco dispatcher.onGet("/ncco", function(req, res) { fs.readFile('./ncco.json', function(error, data) { - console.log('debug', 'loading ncco'); + winston.log('debug', 'loading ncco'); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(data, 'utf-8'); }); }); dispatcher.onPost("/terminate", function(req, res) { - console.log('info', 'terminate called'); + winston.log('info', 'terminate called'); wsServer.closeAllConnections(); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(); }); - -dispatcher.onGet("/answer", function(req, res) { - return nexmoApp.answer(req, res) - -}); - -dispatcher.onGet("/conference", function(req, res) { - return nexmoApp.conference(req, res) -}); - -dispatcher.onGet("/events_ivr", function(req, res) { - return nexmoApp.events_ivr(req, res) -}); - -dispatcher.onPost("/events", function(req, res) { - return nexmoApp.events(req, res) -}); - -dispatcher.onPost("/events-ws", function(req, res) { - return nexmoApp.eventsWS(req, res) -}); - - - wsServer.on('connect', function(connection) { connections.push(connection); - console.log('info', (new Date()) + ' Connection accepted' + ' - Protocol Version ' + connection.webSocketVersion); + winston.log('info', (new Date()) + ' Connection accepted' + ' - Protocol Version ' + connection.webSocketVersion); connection.on('message', function(message) { if (message.type === 'utf8') { try { var json = JSON.parse(message.utf8Data); - console.log('info', "json", json['app']); + winston.log('info', "json", json['app']); if (json['app'] == "audiosocket") { VBConnect(); - console.log('info', 'connecting to VB'); + winston.log('info', 'connecting to VB'); } } catch (e) { - console.log('error', 'message error catch', e) + winston.log('error', 'message error catch', e) } - console.log('info', "utf ",message.utf8Data); + winston.log('info', "utf ",message.utf8Data); } else if (message.type === 'binary') { // Reflect the message back // connection.sendBytes(message.binaryData); if (myAsrClient != null && asrActive) { - myAsrClient.sendData(message.binaryData) + winston.log('debug', "sendingDate ",message.binaryData); + myAsrClient.onAudio(message.binaryData) } } }); connection.on('close', function(reasonCode, description) { - console.log('info', (new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.'); + winston.log('info', (new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.'); wsServer.closeAllConnections(); }); }); wsServer.on('close', function(connection) { - console.log('info', 'socket closed'); + winston.log('info', 'socket closed'); if (asrActive) { io.sockets.emit('status', "disconnected"); - console.log('info', 'trying to close ASR client'); - myAsrClient.close(); + winston.log('info', 'trying to close ASR client'); + myAsrClient.endOfAudio(); myAsrClient = null; asrActive = false; } else { - console.log('info', 'asr not active, cant close'); + winston.log('info', 'asr not active, cant close'); } }) wsServer.on('error', function(error) { - console.log('error', 'Websocket error', error); + winston.log('error', 'Websocket error', error); }) var port = process.env.PORT || 8000 server.listen(port, function(){ - console.log('info', "Server listening on :%s", port); + winston.log('info', "Server listening on :%s", port); }); function VBConnect() { - console.log('debug', 'load AsrClient'); + winston.log('debug', 'load AsrClient'); myAsrClient = new AsrClient() var url = process.env.ASR_URL; client_key = process.env.ASR_CLIENT_KEY; @@ -177,42 +154,42 @@ function VBConnect() { controlMessage.sampleRate = '16000' controlMessage.windowSize = 10 myAsrClient.reserveAsr(controlMessage) - console.log('debug', "sending control message", controlMessage); + winston.log('debug', "sending control message", controlMessage); myAsrClient.subscribeEvent('engineState', (msg) => { - console.log('info', 'Engine State Event', msg) + winston.log('info', 'Engine State Event', msg) if (msg === 'ready') { asrActive = true engineStartedMs = Date.now() - console.log('info', 'Setting asrActive to true: ', asrActive, ' this.asrActive ', this.asrActive) + winston.log('info', 'Setting asrActive to true: ', asrActive, ' this.asrActive ', this.asrActive) io.sockets.emit('status', "connected"); } }) myAsrClient.subscribeEvent('transcript', (msg) => { - console.log('debug', 'transcript', msg); + winston.log('debug', 'transcript', msg); io.sockets.emit('transcript', msg); }) myAsrClient.subscribeEvent('sentiment', (msg) => { - console.log('debug', 'sentiment', msg); + winston.log('debug', 'sentiment', msg); io.sockets.emit('sentiment', msg); }) myAsrClient.subscribeEvent('nlp', (msg) => { - console.log('debug', 'nlp', msg); + winston.log('debug', 'nlp', msg); io.sockets.emit('nlp', msg); }) myAsrClient.subscribeEvent('keywords', (msg) => { - console.log('info', 'keywords', msg); + winston.log('info', 'keywords', msg); io.sockets.emit('keywords', msg); }) myAsrClient.subscribeEvent('latency', (msg) => { - console.log('info', 'latency', msg); + winston.log('info', 'latency', msg); io.sockets.emit('latency', msg); }) }) diff --git a/WS-node/lib/asrClient.js b/WS-node/lib/asrClient.js old mode 100644 new mode 100755 index 45000e3..730f1a7 --- a/WS-node/lib/asrClient.js +++ b/WS-node/lib/asrClient.js @@ -72,14 +72,15 @@ function AsrClient () { self.emit('engineState', msg) // ready means start streaming }) - self.socket.on('sentiment estimate', (msg) => { - let x = JSON.parse(msg) - console.log("sentiment", x) + self.socket.on('sentiment event', (msg) => { + let x = JSON.parse(msg)[0] + console.log('sentiment: ', x) self.emit('sentiment', x) }) self.socket.on('basic keywords event', (msg) => { let x = JSON.parse(msg) + console.log('basic keywords event: ', x) self.emit('keywords', x) }) @@ -140,8 +141,7 @@ function AsrClient () { text = text + ' ' + item.w }) var re = /<\/s> /gi - // text = text.replace(re, '... ') - text = text.replace(re, '

') + text = text.replace(re, '... ') self.emit('transcript', text) } else { console.log('Empty transcript event!') @@ -195,14 +195,6 @@ function AsrClient () { callback(null) }) } - - self.sendData = function(data) { - self.onAudio(data); - } - - self.close = function() { - self.endOfAudio() - } } AsrClient.prototype.convertFloat32ToInt16 = (buffer) => { @@ -214,4 +206,4 @@ AsrClient.prototype.convertFloat32ToInt16 = (buffer) => { return buf.buffer } -module.exports = AsrClient \ No newline at end of file +module.exports = AsrClient diff --git a/WS-node/nexmo-app.js b/WS-node/nexmo-app.js deleted file mode 100644 index ee69f6a..0000000 --- a/WS-node/nexmo-app.js +++ /dev/null @@ -1,363 +0,0 @@ -require('dotenv').config() - -var Nexmo = require('nexmo'); -var Promise = require('bluebird'); - -var executed = false; -var didStart = false -var USER_NUMBER = "" -var WEB_SOCKET = 'ws://' + process.env.WEB_SOCKET_URL + '/socket'; - -var SMS_TEXT = "View the transcription service here: " + "http://" + process.env.WEB_SOCKET_URL; -var converstationIDs = []; -var connectedUsers = []; - -var nexmo = new Nexmo({ - apiKey: process.env.API_KEY, - apiSecret: process.env.API_SECRET, - applicationId: process.env.APPLICATION_ID, - privateKey: __dirname + '/' + process.env.PRIVATE_KEY_PATH -}, - { debug: process.env.NEXMO_DEBUG } -); - -var calls = Promise.promisifyAll(nexmo.calls); - - - -const answer = (req, res) => { - console.log('info', 'answer route called', req.body); - reset() - var url = require('url'); - var url_parts = url.parse(req.url, true); - var query = url_parts.query; - - connectedUsers.push(query.from); - console.log('debug', 'adding user to sms list', connectedUsers); - if (process.env.SINGLE_USER) { - console.log('debug', 'In single user mode'); - var json = [ - { - "action": "connect", - "eventUrl": [ - "http://" + req.headers.host + "/events-ws" - ], - "from": process.env.NEXMO_NUMBER, - "endpoint": [ - { - "type": "websocket", - "uri": WEB_SOCKET, - "content-type": "audio/l16;rate=16000", - "headers": { - "app": "audiosocket" - } - } - ] - } - ] - console.log('info', 'conference JSON', json); - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify(json)); - return - } - - if (process.env.TO_NUMBER) { - var json = [ - { - "action": "talk", - "text": "Calling user" - }, - { - "action": "conversation", - "name": process.env.CONFERENCE_NAME, - "endOnExit": "true" - } - ] - - var to = { - type: 'phone', - number: process.env.TO_NUMBER, - } - console.log('info', 'answer JSON', json); - dial(to, process.env.NEXMO_NUMBER, req.headers.host, function (result) { - console.log('info', 'dial result', result); - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify(json)); - }) - - } else { - var baseURL = "http://" + req.headers.host; - var json = [ - { - "action": "talk", - "text": "Please enter a phone number to call, press the pound key when complete", - "bargeIn": "false" - }, - { - "action": "input", - "submitOnHash": true, - "timeOut": 60, - "maxDigits": 20, - "eventUrl": [baseURL + "/events_ivr"] - }, - { - "action": "conversation", - "name": process.env.CONFERENCE_NAME, - "endOnExit": "true", - } - ] - - console.log('info', 'answer JSON', json); - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify(json)); - } -} - - -const conference = (req, res) => { - var url = require('url'); - var url_parts = url.parse(req.url, true); - var query = url_parts.query; - var json = [ - { - "action": "talk", - "text": "Dialing into the conference now", - }, - { - "action": "conversation", - "name": process.env.CONFERENCE_NAME, - "startOnEnter": "false" - } - ] - console.log('info', 'conference JSON', json); - // res.send(json) - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify(json)); -} - - - -const events_ivr = (req, res) => { - console.log('info', 'events_ivr', req.body); - - var baseURL = req.headers.host; - var number = req.body.dtmf; - var from = req.body.from; - - USER_NUMBER = number - - if (number == '' || number.length < 11) { - console.log('debug', 'could not get dtmf number', number); - var json = [ - { - "action": "talk", - "text": "Sorry, I did not get that phone number. Goodbye" - } - ] - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify(json)); - } else { - var to = { - type: 'phone', - number: number, - } - dial(to, process.env.NEXMO_NUMBER, baseURL, function (result) { - console.log('info', 'IVR Dial result', result); - }) - - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify(json)); - } - -}; - - -const events = (req, res) => { - console.log('info', 'events', req.body); - - var baseURL = req.headers.host; - req.body = JSON.parse(req.body); - - var from = req.body.from; - - if (req.body.status == "answered") { - converstationIDs.push(req.body.uuid); - console.log('debug', 'adding converstaion uuid', converstationIDs); - - if (req.body.to != process.env.NEXMO_NUMBER && req.body.to != WEB_SOCKET) { - connectedUsers.push(req.body.to); - console.log('debug', 'adding user to sms list', connectedUsers); - } - - if (req.body.to == USER_NUMBER || req.body.to == process.env.TO_NUMBER) { - - var to = { - type: 'websocket', - uri: WEB_SOCKET, - "content-type": "audio/l16;rate=16000", - "headers": { - "app": "audiosocket" - } - } - console.log('debug', 'calling websocket', req.body); - dial(to, from, baseURL, function (result) { - console.log('debug', 'called websocket', result); - sendAllSms(SMS_TEXT, function () { - console.log('info', 'all sms sent'); - }) - }) - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(); - return - - } - } - else if (req.body.status == "completed") { - console.log('debug', 'called ended', req.body); - console.log('debug', 'calling hangup'); - performHangup() - } - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(); -}; - -const eventsWS = (req, res) => { - console.log('eventsWS', req.body); -} - -var performHangup = (function () { - return function () { - console.log('debug', "executed " + executed + " didStart " + didStart) - if (!executed && !didStart) { - didStart = true - hangupCalls(function () { - executed = true; - console.log('info', 'hangup complete'); - }) - } - }; -})(); - -process.on('unhandledRejection', (reason) => { - console.log('error', 'unhandledRejection', reason) -}); - -function dial(to, from, serverURL, callback) { - var json = { - to: [to], - from: { - type: 'phone', - number: from - }, - answer_url: ['http://' + serverURL + '/conference'], - event_url: ['http://' + serverURL + '/events', 'http://' + process.env.WEB_SOCKET_URL + '/events'] - } - winston.debug('debug', 'dial JSON', json); - calls.createAsync(json).then(function (res) { - console.log('debug', 'call created', res) - callback(res) - }) -} - -function hangupCalls(callback) { - Promise.each(converstationIDs, function (converstationID) { - return new Promise(function (resolve, reject) { - calls.updateAsync(converstationID, { action: 'hangup' }) - .then(function (resp) { - setTimeout(function () { - console.log('info', 'hangup result: for id: ' + converstationID, resp) - resolve(); - }, 2000) - - }) - }); - - }) - .then(function (allItems) { - console.log('debug', 'all items', allItems) - callback(); - }) -} - -function terminate(callback) { - console.log('debug', 'calling terminate'); - var request = require('request'); - request({ - url: 'http://' + process.env.WEB_SOCKET_URL + '/terminate', - method: 'POST', - json: true, - headers: { 'content-type': 'application/json' }, - }, (err, res, body) => { - console.log('debug', 'terminate called'); - callback() - }) -} - -function sendAllSms(message, callback) { - - Promise.each(connectedUsers, function (phoneNumber) { - return new Promise(function (resolve, reject) { - sendSMS(phoneNumber, SMS_TEXT, function (resp) { - setTimeout(function () { - console.log('info', 'sending sms to phoneNumber: ' + phoneNumber, resp) - resolve(); - }, 1000) - }) - }); - }) - .then(function (allItems) { - console.log('debug', 'all items', allItems) - callback(); - }) -} - -function sendSMS(phoneNumber, message, callback) { - var https = require('https'); - var data = JSON.stringify({ - api_key: process.env.API_KEY, - api_secret: process.env.API_SECRET, - to: phoneNumber, - from: process.env.NEXMO_NUMBER, - text: message - }); - - var options = { - host: 'rest.nexmo.com', - path: '/sms/json', - port: 443, - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Content-Length': Buffer.byteLength(data) - } - }; - - var req = https.request(options); - - req.write(data); - req.end(); - - var responseData = ''; - req.on('response', function (res) { - res.on('data', function (chunk) { - responseData += chunk; - }); - - res.on('end', function () { - callback(JSON.parse(responseData)) - }); - }); -} - -function reset() { - connectedUsers.length = 0 - converstationIDs.length = 0; - executed = false; - didStart = false -} - -module.exports.answer = answer -module.exports.conference = conference -module.exports.events_ivr = events_ivr -module.exports.events = events -module.exports.eventsWS = eventsWS \ No newline at end of file diff --git a/WS-node/package-lock.json b/WS-node/package-lock.json index 8a419b6..817a295 100644 --- a/WS-node/package-lock.json +++ b/WS-node/package-lock.json @@ -5,11 +5,11 @@ "requires": true, "dependencies": { "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "requires": { - "mime-types": "2.1.18", + "mime-types": "2.1.14", "negotiator": "0.6.1" } }, @@ -18,16 +18,15 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "array-flatten": { "version": "1.1.1", @@ -45,9 +44,9 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" }, "async": { "version": "1.0.0", @@ -65,14 +64,14 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" }, "backo2": { "version": "1.0.2", @@ -111,57 +110,40 @@ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.16" + "hoek": "2.16.3" } }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, "buffer-to-arraybuffer": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.4.tgz", "integrity": "sha1-8+Xj9vJjLHHnzevnbtFxj61CHUw=" }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "colors": { "version": "1.0.3", @@ -169,22 +151,30 @@ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { "delayed-stream": "1.0.0" } }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": "1.0.1" + } + }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" }, "component-inherit": { "version": "0.0.3", @@ -197,9 +187,9 @@ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" }, "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" }, "cookie": { "version": "0.3.1", @@ -211,10 +201,13 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.10.1" + } }, "cycle": { "version": "1.0.3", @@ -227,14 +220,21 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", "requires": { - "ms": "2.0.0" + "ms": "0.7.2" } }, "delayed-stream": { @@ -243,9 +243,9 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" }, "destroy": { "version": "1.0.4", @@ -266,23 +266,15 @@ "jsbn": "0.1.1" } }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "5.1.1" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" }, "engine.io": { "version": "3.2.0", @@ -297,6 +289,15 @@ "ws": "3.3.3" }, "dependencies": { + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "requires": { + "mime-types": "2.1.19", + "negotiator": "0.6.1" + } + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -322,6 +323,29 @@ "has-binary2": "1.0.3" } }, + "mime-db": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", + "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + }, + "mime-types": { + "version": "2.1.19", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", + "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "requires": { + "mime-db": "1.35.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -333,16 +357,16 @@ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "ultron": "1.1.1" } } } }, "engine.io-client": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.5.tgz", - "integrity": "sha512-AYTgHyeVUPitsseqjoedjhYJapNVoSPShbZ+tEUX9/73jgZ/Z3sUlJf9oYgdEBBdVhupUpUqSxH0kBCXlQnmZg==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", @@ -353,11 +377,16 @@ "parsejson": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "1.1.5", + "ws": "1.1.2", "xmlhttprequest-ssl": "1.5.3", "yeast": "0.1.2" }, "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", @@ -365,11 +394,6 @@ "requires": { "ms": "0.7.2" } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" } } }, @@ -391,84 +415,84 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" }, "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.2.tgz", + "integrity": "sha1-rxB/wUhQRFfy3Kmm8lcdcSm5ezU=", "requires": { - "accepts": "1.3.5", + "accepts": "1.3.3", "array-flatten": "1.1.1", - "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "1.0.2", "cookie": "0.3.1", "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", + "debug": "2.6.1", + "depd": "1.1.0", + "encodeurl": "1.0.1", "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", + "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.2", + "parseurl": "1.3.1", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", - "qs": "6.5.1", + "proxy-addr": "1.1.3", + "qs": "6.4.0", "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", - "utils-merge": "1.0.1", - "vary": "1.1.2" + "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" + }, + "dependencies": { + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + } } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", + "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" }, "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" }, "eyes": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.0.tgz", + "integrity": "sha1-tWkcLAkSCS8YrCPpQWveXNfcZ1U=", "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", + "debug": "2.6.1", + "encodeurl": "1.0.1", "escape-html": "1.0.3", "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", "unpipe": "1.0.0" } }, @@ -478,45 +502,75 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", + "integrity": "sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=", "requires": { "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "combined-stream": "1.0.5", + "mime-types": "2.1.14" } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" }, "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "1.0.2" + } }, "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", + "integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=", "requires": { "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "chalk": "1.1.3", + "commander": "2.9.0", + "is-my-json-valid": "2.16.0", + "pinkie-promise": "2.0.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" } }, "has-binary": { @@ -547,45 +601,56 @@ "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, "http": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz", "integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I=" }, "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", "requires": { - "depd": "1.1.2", + "depd": "1.1.0", "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": "1.4.0" + "setprototypeof": "1.0.3", + "statuses": "1.3.1" } }, "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "0.2.0", + "jsprim": "1.3.1", + "sshpk": "1.11.0" } }, "httpdispatcher": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/httpdispatcher/-/httpdispatcher-2.1.2.tgz", - "integrity": "sha1-wfLIpR2h8vpdCyAxQ3UW0hg3wik=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/httpdispatcher/-/httpdispatcher-2.0.1.tgz", + "integrity": "sha1-FqbT9dB9ddDdD4l27S2Bx1hSe7k=", "requires": { - "mime-types": "2.1.18" + "mime": "1.3.4" } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", @@ -597,9 +662,25 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.2.0.tgz", + "integrity": "sha1-irpJyRknmVhb3WQ+DMtQ6K53e6Q=" + }, + "is-my-json-valid": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" }, "is-typedarray": { "version": "1.0.0", @@ -616,6 +697,15 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -627,11 +717,6 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -642,95 +727,21 @@ "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" }, - "jsonwebtoken": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz", - "integrity": "sha512-l8rUBr0fqYYwPc8/ZGrue7GiW7vWdZtZqelxo4Sd5lMvuEeCK8/wS54sEo6tJhdZ6hqfutsj6COgC0d1XdbHGw==", - "requires": { - "jws": "3.1.5", - "lodash.includes": "4.3.0", - "lodash.isboolean": "3.0.3", - "lodash.isinteger": "4.0.4", - "lodash.isnumber": "3.0.3", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.once": "4.1.1", - "ms": "2.1.1", - "xtend": "4.0.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", + "integrity": "sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=", "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", + "extsprintf": "1.0.2", "json-schema": "0.2.3", - "verror": "1.10.0" + "verror": "1.3.6" } }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "5.1.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "1.1.6", - "safe-buffer": "5.1.1" - } - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -747,55 +758,38 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz", + "integrity": "sha1-6v/NDk/Gk1z4E02iRuLmw1MFrf8=" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz", + "integrity": "sha1-9+99l1g/yvO30oK2+LVnnaselO4=", "requires": { - "mime-db": "1.33.0" + "mime-db": "1.26.0" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz", + "integrity": "sha1-1bAWkSUzJql6K77p5hxV2NYDUeI=" }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, - "nexmo": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nexmo/-/nexmo-2.2.1.tgz", - "integrity": "sha512-Gr6uSxvVVMJy3gJE/HznkgkxbstwOZbG03t6Ln8ehcgNkY2GrU0vsP4ZdadGuxfgTJ3oZHvijXAYBpb3d2W3XA==", - "requires": { - "jsonwebtoken": "8.2.1", - "request": "2.87.0", - "uuid": "2.0.3" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - } - } - }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", @@ -844,27 +838,35 @@ } }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } }, "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.3.tgz", + "integrity": "sha1-3JdQL1ci6IhGez+iKXp7H/R98HQ=", "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.6.0" + "forwarded": "0.1.0", + "ipaddr.js": "1.2.0" } }, "punycode": { @@ -873,116 +875,85 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz", + "integrity": "sha1-kYwLO802Z5dyuvE1say0wWUe150=" }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - } - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - } - } - }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.0", "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "http-signature": "1.2.0", + "form-data": "2.1.2", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", - "mime-types": "2.1.18", + "mime-types": "2.1.14", "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "qs": "6.3.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.4.3", + "uuid": "3.0.1" } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.1.tgz", + "integrity": "sha1-igI1TCbm9cynAAZfXwzeupDse18=", "requires": { - "debug": "2.6.9", - "depd": "1.1.2", + "debug": "2.6.1", + "depd": "1.1.0", "destroy": "1.0.4", - "encodeurl": "1.0.2", + "encodeurl": "1.0.1", "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.3", - "mime": "1.4.1", - "ms": "2.0.0", + "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.4.0" + "statuses": "1.3.1" } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.1.tgz", + "integrity": "sha1-dEOpZePO1kes61Y5+ga/TRu+ADk=", "requires": { - "encodeurl": "1.0.2", + "encodeurl": "1.0.1", "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.2" + "parseurl": "1.3.1", + "send": "0.15.1" } }, "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "2.16.3" + } }, "socket.io": { "version": "2.1.1", @@ -1002,6 +973,11 @@ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -1045,6 +1021,16 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "socket.io-client": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", @@ -1087,7 +1073,7 @@ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { "async-limiter": "1.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "ultron": "1.1.1" } }, @@ -1104,15 +1090,15 @@ "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" }, "socket.io-client": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", - "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", "requires": { "backo2": "1.0.2", "component-bind": "1.0.0", "component-emitter": "1.2.1", "debug": "2.3.3", - "engine.io-client": "1.8.5", + "engine.io-client": "1.8.3", "has-binary": "0.1.7", "indexof": "0.0.1", "object-component": "0.0.3", @@ -1121,6 +1107,11 @@ "to-array": "0.1.4" }, "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, "debug": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", @@ -1128,11 +1119,6 @@ "requires": { "ms": "0.7.2" } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" } } }, @@ -1147,11 +1133,6 @@ "json3": "3.3.2" }, "dependencies": { - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" - }, "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", @@ -1168,29 +1149,55 @@ } }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.11.0.tgz", + "integrity": "sha1-LY1eu0pvqyj/ujf6YqkPSj6lnXc=", "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", "bcrypt-pbkdf": "1.0.1", "dashdash": "1.14.1", "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", + "getpass": "0.1.6", + "jodid25519": "1.0.2", "jsbn": "0.1.1", "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + } } }, "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU=" }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "to-array": { "version": "0.1.4", @@ -1198,20 +1205,17 @@ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", "requires": { "punycode": "1.4.1" } }, "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "5.1.1" - } + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" }, "tweetnacl": { "version": "0.14.5", @@ -1220,18 +1224,18 @@ "optional": true }, "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.14", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz", + "integrity": "sha1-4hljnBfe0coHiQkt1UoDgmuBfLI=", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.18" + "mime-types": "2.1.14" } }, "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.2.tgz", + "integrity": "sha1-EBezLZhP9VbroQD1AViauhrOLgQ=", "requires": { "is-typedarray": "1.0.0" } @@ -1247,58 +1251,56 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" }, "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz", + "integrity": "sha1-4eWv+70WrnaN0mdDlLmtMCJlMUA=" }, "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "1.0.2" } }, "websocket": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.26.tgz", - "integrity": "sha512-fjcrYDPIQxpTnqFQ9JjxUQcdvR89MFAOjPBlF+vjOt49w/XW4fJknUoMz/mDIn2eK1AdslVojcaOxOqyZZV8rw==", + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.24.tgz", + "integrity": "sha1-dJA+dfJUW2suHeFCW8HJBZF6GJA=", "requires": { - "debug": "2.6.9", - "nan": "2.10.0", - "typedarray-to-buffer": "3.1.5", + "debug": "2.6.1", + "nan": "2.5.1", + "typedarray-to-buffer": "3.1.2", "yaeti": "0.0.6" } }, "winston": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.2.tgz", - "integrity": "sha512-4S/Ad4ZfSNl8OccCLxnJmNISWcm2joa6Q0YGDxlxMzH0fgSwWsjMt+SmlNwCqdpaPg3ev1HKkMBsIiXeSUwpbA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.3.1.tgz", + "integrity": "sha1-C0hCDZeMAYBM8CMLZIhhWYIloRk=", "requires": { "async": "1.0.0", "colors": "1.0.3", "cycle": "1.0.3", "eyes": "0.1.8", "isstream": "0.1.2", - "stack-trace": "0.0.10" + "stack-trace": "0.0.9" } }, "ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", "requires": { "options": "0.0.6", "ultron": "1.0.2" diff --git a/WS-node/package.json b/WS-node/package.json index ed263ab..8b33826 100644 --- a/WS-node/package.json +++ b/WS-node/package.json @@ -3,20 +3,21 @@ "version": "1.0.0", "description": "", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "start": "node app.js" + }, + "engines": { + "node": "6.9.1" }, "author": "", "license": "ISC", "dependencies": { - "bluebird": "^3.5.1", "buffer-to-arraybuffer": "0.0.4", "dotenv": "^4.0.0", "express": "^4.15.2", "http": "0.0.0", "httpdispatcher": "^2.0.1", - "nexmo": "^2.2.1", "request": "^2.79.0", - "socket.io": "*", + "socket.io": "^2.1.1", "socket.io-client": "^1.7.2", "websocket": "^1.0.24", "winston": "^2.3.1" diff --git a/WS-node/public/index.html b/WS-node/public/index.html index cad6e99..3429ddb 100644 --- a/WS-node/public/index.html +++ b/WS-node/public/index.html @@ -27,10 +27,10 @@
- +
-

Communication with Nexmo Websocket and Voicebase Real-time transcription engine

+

Communication with Nexmo Websocket and Real-time transcription engine

Dial: 1 (201)834-0424 to get started

diff --git a/WS-node/public/js/charts.js b/WS-node/public/js/charts.js index 6056e0f..661bab1 100644 --- a/WS-node/public/js/charts.js +++ b/WS-node/public/js/charts.js @@ -91,9 +91,9 @@ var sentimentChart = (function(){ }, data: [ - // {type: "spline", legendText: "positive", showInLegend: true, color: "green", lineThickness: 1, markerType: "none", dataPoints: pos }, - // {type: "spline", legendText: "negative", showInLegend: true, color: "red", lineThickness: 1, markerType: "none", dataPoints: neg }, - // {type: "spline", legendText: "neutral", showInLegend: true, color: "gray", lineThickness: 1, markerType: "none", dataPoints: neu }, + //{type: "spline", legendText: "positive", showInLegend: true, color: "green", lineThickness: 1, markerType: "none", dataPoints: pos }, + //{type: "spline", legendText: "negative", showInLegend: true, color: "red", lineThickness: 1, markerType: "none", dataPoints: neg }, + //{type: "spline", legendText: "neutral", showInLegend: true, color: "gray", lineThickness: 1, markerType: "none", dataPoints: neu }, {type: "spline", legendText: "compound", showInLegend: true, color: "blue", lineThickness: 3, markerType: "none", dataPoints: compound} ] }); @@ -109,7 +109,6 @@ var sentimentChart = (function(){ }; function updateChart(sentiment) { - sentiment = sentiment[0] pos.push({ //x: sentiment.time, y: sentiment.pos @@ -133,8 +132,6 @@ var sentimentChart = (function(){ compound.shift(); } - // console.log("pos", pos) - // console.log("neg", neg) chart.render(); diff --git a/WS-node/public/js/socket.js b/WS-node/public/js/socket.js index 12533e9..fb4bc34 100644 --- a/WS-node/public/js/socket.js +++ b/WS-node/public/js/socket.js @@ -6,7 +6,7 @@ var strOut; socket.on('transcript', function(x) { var div = $('div.transcription') div.html(x); - // console.log("transcript " + x); + console.log("transcript " + x); if (!scrolling) { div.scrollTop(div[0].scrollHeight); } @@ -38,7 +38,6 @@ socket.on('action', function(x) { }) socket.on('sentiment', function(x) { - // console.log("x", x) sentimentChart.update(x) })