diff --git a/app.js b/app.js index 37a068a..f82de01 100644 --- a/app.js +++ b/app.js @@ -1,147 +1,122 @@ // General includes -const irc = require('irc'); -const fs = require('fs'); -const winston = require('winston'); -require('winston-daily-rotate-file'); -const path = require('path'); +const irc = require('irc') +const path = require('path') // Load config -const config = require('./config'); -const cron = require('node-cron'); +const config = require('./config') +const cron = require('node-cron') // Load new plugins -const PluginManager = require('./plugins/pluginManager.js'); -const pluginManager = new PluginManager(config); -pluginManager.loadAllPlugins(); +const PluginManager = require('./plugins/pluginManager.js') +const pluginManager = new PluginManager(config) +pluginManager.loadAllPlugins() // Configure logger // create a write stream (in append mode) -const logDirectory = __dirname + '/log'; -// ensure log directory exists -if(!fs.existsSync(logDirectory)) { - fs.mkdirSync(logDirectory); +const logger = require('./logger') + +if (!config.irc.connect) { + logger.info('Not connecting to IRC. Exit') + process.exit() } -var logger = new (winston.Logger)({ - transports: [ - new (winston.transports.Console)(), - new (winston.transports.DailyRotateFile)({ - filename: logDirectory + '/ircbot.log', - datePattern: 'YYYY-MM-DD', - maxsize: 20000 - }) - ] -}); - -if(!config.irc.connect) { - logger.info('Not connecting to IRC. Exit'); - return; -} - -var isConnected = false // Start client var client = new irc.Client(config.irc.server, config.irc.nick, { debug: false, channels: config.irc.channels, - //floodProtection: true, - //sasl: true, - millisecondsOfSilenceBeforePingSent: 60000, -}); + // floodProtection: true, + // sasl: true, + millisecondsOfSilenceBeforePingSent: 60000 +}) +var handleMessage = function (from, to, message) { + logger.info(from + ' => ' + to + ': ' + message) -var handleMessage = function(from, to, message) { - logger.info(from + ' => ' + to + ': ' + message); - - pluginManager.testPlugins(message).then(function(results) { - for(var i = 0; i < results.length; i++) { - client.say(to, results[i]); + pluginManager.testPlugins(message).then(function (results) { + for (var i = 0; i < results.length; i++) { + client.say(to, results[i]) } - }, function(error) { - logger.error('Plugin error: ', error); - }); - - var res = null; + }, function (error) { + logger.error('Plugin error: ', error) + }) // Op if (message.match(/^\.op$/i)) { - client.send('NAMES', to); + client.send('NAMES', to) } // reload config if (message.match(/^\.paivita$/i)) { // Using require for config files is dangerous // Rewrite this in the future - var filename = path.resolve('./config.js'); - delete require.cache[filename]; - config = require('./config'); - client.say(to, 'Ladattiin asetustiedosto. ' + Object.keys(config.members).length + ' käyttäjäasetusta. Päivitetään operaattorioikeuksia...'); - client.send('NAMES', to); + var filename = path.resolve('./config.js') + delete require.cache[filename] + var config = require('./config') + client.say(to, 'Ladattiin asetustiedosto. ' + Object.keys(config.members).length + ' käyttäjäasetusta. Päivitetään operaattorioikeuksia...') + client.send('NAMES', to) } -}; - +} client.addListener('message', function (from, to, message) { - if(String(from) !== String(config.irc.nick)) { - handleMessage(from, to, message); + if (String(from) !== String(config.irc.nick)) { + handleMessage(from, to, message) } -}); +}) client.addListener('pm', function (from, message) { - if(String(from) !== String(config.irc.nick)) { - handleMessage(from, from, message); + if (String(from) !== String(config.irc.nick)) { + handleMessage(from, from, message) } -}); +}) -client.addListener('join', function(channel, who) { - client.whois(who, function(result) { - console.log(result); +client.addListener('join', function (channel, who) { + client.whois(who, function (result) { + console.log(result) - var members = config.members; - for(var memberNick in members) { - var member = members[memberNick]; + var members = config.members + for (var memberNick in members) { + var member = members[memberNick] - if(typeof result.host !== 'undefined' && typeof result.user !== 'undefined') { - if(result.host.match(member.host) && result.user.match(member.user)) { - client.send('MODE', channel, '+o', result.nick); - } + if (typeof result.host !== 'undefined' && typeof result.user !== 'undefined') { + if (result.host.match(member.host) && result.user.match(member.user)) { + client.send('MODE', channel, '+o', result.nick) + } } } + }) +}) - }); -}); +client.addListener('error', function (message) { + console.log('error: ', message) +}) -client.addListener('error', function(message) { - console.log('error: ', message); -}); - -client.addListener('names', function(channel, nicks) { - if(typeof nicks[config.irc.nick] !== 'undefined' && nicks[config.irc.nick] === '@') { +client.addListener('names', function (channel, nicks) { + if (typeof nicks[config.irc.nick] !== 'undefined' && nicks[config.irc.nick] === '@') { // go through nicks - for(var nick in nicks) { - if(nicks[nick] !== '@') { - client.whois(nick, function(result) { - var members = config.members; - for(var memberNick in members) { - var member = members[memberNick]; + for (var nick in nicks) { + if (nicks[nick] !== '@') { + client.whois(nick, function (result) { + var members = config.members + for (var memberNick in members) { + var member = members[memberNick] - if(result.host.match(member.host) && result.user.match(member.user)) { - client.send('MODE', channel, '+o', result.nick); + if (result.host.match(member.host) && result.user.match(member.user)) { + client.send('MODE', channel, '+o', result.nick) } } - }); + }) } } } -}); +}) for (let i = 0; i < config.cron.length; i++) { let row = config.cron[i] - let that = this; cron.schedule(row.cron, () => { if (client.conn !== null) { for (let c = 0; c < config.irc.channels.length; c++) { - handleMessage('BOT', config.irc.channels[c] , row.command); + handleMessage('BOT', config.irc.channels[c], row.command) } } - }); + }) } diff --git a/appTest.js b/appTest.js index ed4ad9f..34d2cdf 100644 --- a/appTest.js +++ b/appTest.js @@ -1,76 +1,56 @@ // Start without app -function prompt(question, callback) { - var stdin = process.stdin, - stdout = process.stdout; +function prompt (question, callback) { + var stdin = process.stdin + var stdout = process.stdout - stdin.resume(); - stdout.write(question); + stdin.resume() + stdout.write(question) stdin.once('data', function (data) { - callback(data.toString().trim()); - }); + callback(data.toString().trim()) + }) } -const fs = require('fs'); -const winston = require('winston'); -require('winston-daily-rotate-file'); -const path = require('path'); - // Load config -const config = require('./config'); +const config = require('./config') // Load new plugins -const PluginManager = require('./plugins/pluginManager.js'); -const pluginManager = new PluginManager(config); -pluginManager.loadAllPlugins(); +const PluginManager = require('./plugins/pluginManager.js') +const pluginManager = new PluginManager(config) +pluginManager.loadAllPlugins() // Configure logger // create a write stream (in append mode) -const logDirectory = __dirname + '/log'; - // ensure log directory exists -if(!fs.existsSync(logDirectory)) { - fs.mkdirSync(logDirectory); -} - -var logger = new (winston.Logger)({ - transports: [ - new (winston.transports.Console)(), - new (winston.transports.DailyRotateFile)({ - filename: logDirectory + '/ircbot-test.log', - datePattern: '.yyyy-MM-dd', - maxsize: 20000 - }) - ] -}); - +const logger = require('./logger') const isPm = false -function query() { +function query () { prompt('> ', function (message) { - if(!isPm) { - pluginManager.testPlugins(message).then(function(results) { - for(var i = 0; i < results.length; i++) { - console.log(results[i]); + if (!isPm) { + pluginManager.testPlugins(message).then(function (results) { + for (var i = 0; i < results.length; i++) { + console.log(results[i]) } query() - }, function(error) { - logger.error('Plugin error: ', error); - }); - + }, function (error) { + logger.error('Plugin error: ', error) + query() + }) } else { // PM - pluginManager.testPlugins(message, false).then(function(results) { - for(var i = 0; i < results.length; i++) { - console.log(results[i]); + pluginManager.testPlugins(message, false).then(function (results) { + for (var i = 0; i < results.length; i++) { + console.log(results[i]) } query() - }, function(error) { - logger.error('Plugin error: ', error); - }); + }, function (error) { + logger.error('Plugin error: ', error) + query() + }) } - }); + }) } query() diff --git a/package-lock.json b/package-lock.json index ac98f9b..fef69cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,23 +15,31 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "requires": { "es6-promisify": "^5.0.0" } }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-align": { @@ -43,11 +51,6 @@ "string-width": "^2.0.0" } }, - "ansi-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", - "integrity": "sha1-xQYbbg74qBd15Q9dZhUb9r83EQc=" - }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -57,11 +60,6 @@ "color-convert": "^1.9.0" } }, - "ansicolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.2.1.tgz", - "integrity": "sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8=" - }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -70,6 +68,17 @@ "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } } }, "arr-diff": { @@ -101,15 +110,23 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -123,14 +140,24 @@ "dev": true }, "async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "asynckit": { @@ -150,18 +177,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" - }, - "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", - "requires": { - "follow-redirects": "^1.3.0", - "is-buffer": "^1.1.5" - } + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, "balanced-match": { "version": "1.0.0", @@ -224,47 +242,55 @@ } } }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, "basic-auth": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" + }, + "dependencies": { + "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==" + } } }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { "tweetnacl": "^0.14.3" } }, + "bignumber.js": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", + "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==" + }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==" }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.x.x" - } - }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -332,11 +358,6 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -374,15 +395,6 @@ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", "dev": true }, - "cardinal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-1.0.0.tgz", - "integrity": "sha1-UOIcGwqjdyn5N33vGWtanOyTLuk=", - "requires": { - "ansicolors": "~0.2.1", - "redeyed": "~1.0.0" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -417,9 +429,9 @@ } }, "chance": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.0.13.tgz", - "integrity": "sha512-9cpcgmAIQiXC0eMgQuMZgXuHR2Y+gKUyGQnalqSAg5LlUJyJFsZeKyuHVSGhj+bx18ppH+Jo3VOayNeXR/7p9Q==" + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.0.18.tgz", + "integrity": "sha512-g9YLQVHVZS/3F+zIicfB58vjcxopvYQRp7xHzvyDFDhXH1aRZI/JhwSAO0X5qYiQluoGnaNAU6wByD2KTxJN1A==" }, "cheerio": { "version": "1.0.0-rc.2", @@ -435,24 +447,23 @@ } }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", "dev": true, "requires": { "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", "glob-parent": "^3.1.0", - "inherits": "^2.0.1", + "inherits": "^2.0.3", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", + "normalize-path": "^3.0.0", "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, "ci-info": { @@ -490,28 +501,6 @@ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "requires": { - "colors": "1.0.3" - } - }, - "cli-usage": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/cli-usage/-/cli-usage-0.1.4.tgz", - "integrity": "sha1-fAHg3HBsI0s5yTODjI4gshdXduI=", - "requires": { - "marked": "^0.3.6", - "marked-terminal": "^1.6.2" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -522,11 +511,19 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -534,26 +531,48 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" }, "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } }, "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.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } }, "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.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { @@ -597,9 +616,9 @@ } }, "cron": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/cron/-/cron-1.3.0.tgz", - "integrity": "sha512-K/SF7JlgMmNjcThWxkKvsHhey2EDB4CeOEWJ9aXWj3fbQJppsvTPIeyLdHfNq5IbbsMUUjRW1nr5dSO95f2E4w==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/cron/-/cron-1.7.1.tgz", + "integrity": "sha512-gmMB/pJcqUVs/NklR1sCGlNYM7TizEw+1gebz20BMc/8bTm/r7QUp3ZPSPlG8Z5XRlvb7qhjEjq/+bdIfUCL2A==", "requires": { "moment-timezone": "^0.5.x" } @@ -615,24 +634,6 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.x.x" - } - } - } - }, "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -687,11 +688,6 @@ "assert-plus": "^1.0.0" } }, - "date-now": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-1.0.1.tgz", - "integrity": "sha1-u30IZDjevkGCpIX7PfP7+5nWFTw=" - }, "dateformat": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", @@ -702,12 +698,9 @@ } }, "debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.0.0.tgz", - "integrity": "sha1-CUivUT0uTOQHkW+FBqQj0/nPctg=", - "requires": { - "date-now": "1.0.1" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", + "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==" }, "debug": { "version": "3.2.6", @@ -791,6 +784,16 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", @@ -851,37 +854,26 @@ "dev": true }, "dynamic-dedupe": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.2.0.tgz", - "integrity": "sha1-UPfChoSDHs8cFwqrZ6HVMRzdds4=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz", + "integrity": "sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=", "requires": { - "xtend": "~2.0.6" - }, - "dependencies": { - "xtend": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.0.6.tgz", - "integrity": "sha1-XqZXptukRwacLlnFihE4ywxebO4=", - "requires": { - "is-object": "~0.1.2", - "object-keys": "~0.2.0" - } - } + "xtend": "^4.0.0" } }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "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=", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "requires": { "safe-buffer": "^5.0.1" } @@ -891,6 +883,14 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "requires": { + "env-variable": "0.0.x" + } + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -901,18 +901,23 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" }, + "env-variable": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" + }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { "is-arrayish": "^0.2.1" } }, "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "es6-promisify": { "version": "5.0.0", @@ -927,16 +932,6 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "escape-string-regexp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", - "integrity": "sha1-ni2LJbwlVcMzZyN1DgPwmcJzW7U=" - }, - "esprima": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.0.0.tgz", - "integrity": "sha1-U88kes2ncxPlUcOqLnM0LT+099k=" - }, "event-stream": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", @@ -953,6 +948,11 @@ "through": "^2.3.8" } }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -1013,9 +1013,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -1108,25 +1108,35 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "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=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "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=" }, + "fast-safe-stringify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", + "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==" + }, + "fast-text-encoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz", + "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==" + }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" + }, "file-stream-rotator": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.2.1.tgz", - "integrity": "sha1-DW/qGpp6uiWofP0xtuJp5E6PCvI=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", + "integrity": "sha512-W3aa3QJEc8BS2MmdVpQiYLKHj3ijpto1gMDlsgCRSKfIUe6MwkcpODGPQ3vZfb0XvCeCqlu9CBQTN7oQri2TZQ==", "requires": { "moment": "^2.11.2" } @@ -1163,16 +1173,16 @@ } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" }, "dependencies": { @@ -1183,11 +1193,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -1198,21 +1203,6 @@ "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "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.0" - } - } } }, "flatmap-stream": { @@ -1221,47 +1211,24 @@ "integrity": "sha512-lAq4tLbm3sidmdCN8G3ExaxH7cUCtP5mgDvrYowsx84dcYkJJ4I28N7gkxA6+YlSXzaGLJYIDEi9WGfXzMiXdw==", "dev": true }, - "follow-redirects": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.9.tgz", - "integrity": "sha512-Bh65EZI/RU8nx0wbYF9shkFZlqLP+6WT/5FnA3cE/djNSuKNHJEinGGZgu/cQEkeeb2GdFOgenAmn8qaqYke2w==", - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "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.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, @@ -1281,14 +1248,14 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", "dev": true, "optional": true, "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { @@ -1300,7 +1267,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1309,7 +1277,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -1321,19 +1289,21 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -1341,17 +1311,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1360,16 +1333,16 @@ "optional": true }, "debug": { - "version": "2.6.9", + "version": "4.1.1", "bundled": true, "dev": true, "optional": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -1418,7 +1391,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -1438,12 +1411,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -1468,7 +1441,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1480,6 +1454,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1494,6 +1469,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1501,19 +1477,21 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -1525,47 +1503,48 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", "bundled": true, "dev": true, "optional": true }, "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.3.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^2.1.2", + "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.12.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -1582,13 +1561,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.6", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.4.1", "bundled": true, "dev": true, "optional": true, @@ -1612,7 +1591,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1624,6 +1604,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1663,12 +1644,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -1698,18 +1679,19 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -1724,7 +1706,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.7.0", "bundled": true, "dev": true, "optional": true @@ -1745,6 +1727,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1764,6 +1747,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1775,17 +1759,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -1796,34 +1780,46 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, - "gcp-metadata": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-0.7.0.tgz", - "integrity": "sha512-ffjC09amcDWjh3VZdkDngIo7WoluyC5Ag9PAYxZbmQLOLNI8lvPtoKTSCyU54j2gwy5roZh6sSMTfkY2ct7K3g==", + "gaxios": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.0.1.tgz", + "integrity": "sha512-c1NXovTxkgRJTIgB2FrFmOFg4YIV6N/bAa4f/FZ4jIw13Ql9ya/82x69CswvotJhbV3DiGnlTZwoq2NVXk2Irg==", "requires": { - "axios": "^0.18.0", - "extend": "^3.0.1", - "retry-axios": "0.3.2" + "abort-controller": "^3.0.0", + "extend": "^3.0.2", + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.3.0" + } + }, + "gcp-metadata": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-2.0.1.tgz", + "integrity": "sha512-nrbLj5O1MurvpLC/doFwzdTfKnmYGDYXlY/v7eQ4tJNVIvQXbOK672J9UFbradbtmuTkyHzjpzD8HD0Djz0LWw==", + "requires": { + "gaxios": "^2.0.0", + "json-bigint": "^0.3.0" } }, "get-stdin": { @@ -1882,84 +1878,60 @@ } }, "google-auth-library": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-2.0.0.tgz", - "integrity": "sha512-lN6jecH8L30uAirTeOm9ij9CTMJniwg7fbuyOpgH4lFkO50LKhPrx/ZbLGK8aBCzi/u4/tpdZnJABFuMqtIx0A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.2.0.tgz", + "integrity": "sha512-I2726rgOedQ06HgTvoNvBeRCzy5iFe6z3khwj6ugfRd1b0VHwnTYKl/3t2ytOTo7kKc6KivYIBsCIdZf2ep67g==", "requires": { - "axios": "^0.18.0", - "gcp-metadata": "^0.7.0", - "gtoken": "^2.3.0", - "https-proxy-agent": "^2.2.1", + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "fast-text-encoding": "^1.0.0", + "gaxios": "^2.0.0", + "gcp-metadata": "^2.0.0", + "gtoken": "^4.0.0", "jws": "^3.1.5", - "lodash.isstring": "^4.0.1", - "lru-cache": "^4.1.3", - "semver": "^5.5.0" + "lru-cache": "^5.0.0" }, "dependencies": { "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^3.0.2" } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" } } }, "google-p12-pem": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz", - "integrity": "sha512-+EuKr4CLlGsnXx4XIJIVkcKYrsa2xkAmCvxRhX2HsazJzUBAJ35wARGeApHUn4nNfPD03Vl057FskNr20VaCyg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.1.tgz", + "integrity": "sha512-6h6x+eBX3k+IDSe/c8dVYmn8Mzr1mUcmKC9MdUSwaBkFAXlqBEnwFWmSFgGC+tcqtsLn73BDP/vUNWEehf1Rww==", "requires": { - "node-forge": "^0.7.4", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "node-forge": "^0.8.0" } }, "googleapis": { - "version": "34.0.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-34.0.0.tgz", - "integrity": "sha512-nGfTSrlQF77HDNOHDy0ii3ET1h8Yap6QXxkfMZsre+7hBg91g4RsgrA50BgrOXpbNlQCBOGXWhUsa267kVeA/Q==", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-42.0.0.tgz", + "integrity": "sha512-nQiKPDmzmMusnU8UOibmlC6hsgkm70SjqmLxSlBBb7i0z7/J6UPilSzo9tAMoHA8u3BUw3OXn13+p9YLmBH6Gg==", "requires": { - "google-auth-library": "^2.0.0", - "googleapis-common": "^0.3.0" + "google-auth-library": "^5.1.0", + "googleapis-common": "^3.0.0" } }, "googleapis-common": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-0.3.0.tgz", - "integrity": "sha512-OqQ2iskzjPHLoM+AXk7e/TmEsdgxyAk8PVbMg0S8v2wPhgMu2wTawEL7zH9QG236u/RqQ1Ak120oSWsamPnWGg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-3.1.0.tgz", + "integrity": "sha512-abnogPoWqv0cU6O/EFpkerCVsaUsKEG6XpCm4P1YgK44PxIRcGtalDwijqUErkcivM1Xy5MNyf1PDkKTLEjOZA==", "requires": { - "axios": "^0.18.0", - "google-auth-library": "^2.0.0", - "pify": "^3.0.0", - "qs": "^6.5.2", + "extend": "^3.0.2", + "gaxios": "^2.0.1", + "google-auth-library": "^5.2.0", + "qs": "^6.7.0", "url-template": "^2.0.8", - "uuid": "^3.2.1" + "uuid": "^3.3.2" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -1997,22 +1969,14 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "gtoken": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz", - "integrity": "sha512-Jc9/8mV630cZE9FC5tIlJCZNdUjwunvlwOtCz6IDlaiB4Sz68ki29a1+q97sWTnTYroiuF9B135rod9zrQdHLw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.0.0.tgz", + "integrity": "sha512-XaRCfHJxhj06LmnWNBzVTAr85NfAErq0W1oabkdqwbq3uL/QTB1kyvGog361Uu2FMG/8e3115sIy/97Rnd4GjQ==", "requires": { - "axios": "^0.18.0", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.4", - "mime": "^2.2.0", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } + "gaxios": "^2.0.0", + "google-p12-pem": "^2.0.0", + "jws": "^3.1.5", + "mime": "^2.2.0" } }, "har-schema": { @@ -2021,22 +1985,14 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "^5.1.0", + "ajv": "^6.5.5", "har-schema": "^2.0.0" } }, - "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.0.0" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2075,41 +2031,60 @@ } } }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, "hosted-git-info": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.2.0.tgz", - "integrity": "sha1-eg0JeGPYhsD6u9zTe/F1jYvs+KU=" + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==" }, "html-to-text": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-4.0.0.tgz", - "integrity": "sha512-QQl5EEd97h6+3crtgBhkEAO6sQnZyDff8DAeJzoSkOc1Dqe1UvTUZER0B+KjBe6fPZqq549l2VUhtracus3ndA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-5.1.1.tgz", + "integrity": "sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==", "requires": { - "he": "^1.0.0", - "htmlparser2": "^3.9.2", - "lodash": "^4.17.4", - "optimist": "^0.6.1" + "he": "^1.2.0", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.11", + "minimist": "^1.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "htmlparser2": { @@ -2136,11 +2111,11 @@ } }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" } }, @@ -2177,23 +2152,8 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "requires": { "repeating": "^2.0.0" - }, - "dependencies": { - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "^1.0.0" - } - } } }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -2220,11 +2180,6 @@ "resolved": "https://registry.npmjs.org/irc-colors/-/irc-colors-1.3.2.tgz", "integrity": "sha1-gM4cVJuN6NQXCzKA+EJMUPPOsQ0=" }, - "is": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz", - "integrity": "sha1-OzSixI81mXLzUEKEkZOucmS2NWI=" - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -2260,17 +2215,10 @@ } }, "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-ci": { "version": "1.2.1", @@ -2333,9 +2281,9 @@ "dev": true }, "is-finite": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "integrity": "sha1-ZDhgPq6+J5OUj/SkJi7I2z1iWXs=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { "number-is-nan": "^1.0.0" } @@ -2347,9 +2295,9 @@ "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -2397,11 +2345,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-object": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-0.1.2.tgz", - "integrity": "sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc=" - }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -2435,8 +2378,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-typedarray": { "version": "1.0.0", @@ -2454,6 +2396,11 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2462,7 +2409,8 @@ "isexe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=" + "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "dev": true }, "isobject": { "version": "3.0.1", @@ -2478,8 +2426,15 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-bigint": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", + "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", + "requires": { + "bignumber.js": "^7.0.0" + } }, "json-schema": { "version": "0.2.3", @@ -2487,9 +2442,9 @@ "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=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-safe": { "version": "5.0.1", @@ -2508,21 +2463,21 @@ } }, "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "requires": { "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", + "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "requires": { - "jwa": "^1.1.5", + "jwa": "^1.4.1", "safe-buffer": "^5.0.1" } }, @@ -2532,6 +2487,14 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "requires": { + "colornames": "^1.1.1" + } + }, "latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", @@ -2551,124 +2514,36 @@ "pify": "^2.0.0", "pinkie-promise": "^2.0.0", "strip-bom": "^2.0.0" - }, - "dependencies": { - "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.0" - } - } } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "lodash._arraycopy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz", - "integrity": "sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE=" - }, - "lodash._arrayeach": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz", - "integrity": "sha1-urFWsqkNPxu9XGU0AzSeXlkz754=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "logform": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", + "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._baseclone": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz", - "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", - "requires": { - "lodash._arraycopy": "^3.0.0", - "lodash._arrayeach": "^3.0.0", - "lodash._baseassign": "^3.0.0", - "lodash._basefor": "^3.0.0", - "lodash.isarray": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" - }, - "lodash._basefor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.3.tgz", - "integrity": "sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI=" - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash.clonedeep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz", - "integrity": "sha1-oKHkDYKl6on/WxR7hETtY9koJ9s=", - "requires": { - "lodash._baseclone": "^3.0.0", - "lodash._bindcallback": "^3.0.0" - } - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz", - "integrity": "sha1-67uITEjSc2akTqb+5X7XtaMqgeA=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "lokijs": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.3.tgz", - "integrity": "sha1-aVJyL/owSaVaXhwQ7koJR6Pl4Zs=" + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.7.tgz", + "integrity": "sha512-2SqUV6JH4f15Z5/7LVsyadSUwHhZppxhujgy/VhVqiRYMGt5oaocb7fV/3JGjHJ6rTuEIajnpTLGRz9cJW/c3g==" }, "loud-rejection": { "version": "1.6.0", @@ -2746,47 +2621,6 @@ "object-visit": "^1.0.0" } }, - "marked": { - "version": "0.3.19", - "resolved": "http://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==" - }, - "marked-terminal": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-1.7.0.tgz", - "integrity": "sha1-yMRgiBx3LHYEtkNnAH7l938SWQQ=", - "requires": { - "cardinal": "^1.0.0", - "chalk": "^1.1.3", - "cli-table": "^0.3.1", - "lodash.assign": "^4.2.0", - "node-emoji": "^1.4.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "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.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - } - } - }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -2826,21 +2660,21 @@ } }, "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==" + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" }, "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.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, "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.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.40.0" } }, "minimatch": { @@ -2858,9 +2692,9 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -2894,26 +2728,26 @@ } }, "moment": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", - "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "moment-timezone": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.16.tgz", - "integrity": "sha512-4d1l92plNNqnMkqI/7boWNVXJvwGL2WyByl1Hxp3h/ao3HZiAqaoQY+6KBkYdiN5QtNDpndq+58ozl8W4GVoNw==", + "version": "0.5.26", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.26.tgz", + "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", "requires": { "moment": ">= 2.9.0" } }, "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", "requires": { "basic-auth": "~2.0.0", "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "on-finished": "~2.3.0", "on-headers": "~1.0.1" }, @@ -2925,11 +2759,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -2973,30 +2802,27 @@ } }, "node-dev": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/node-dev/-/node-dev-3.1.3.tgz", - "integrity": "sha1-WCcZIj69711jBZ5qf7zSOZ/A+E0=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/node-dev/-/node-dev-4.0.0.tgz", + "integrity": "sha512-XwaUAv2bb7Y9bhCT8dsel5XquRQczG5z4QYhh2otdUMuhRAgtDjFxZEKK4Tsa57vL2ye8ojfLIAZOTBx+Ui9zw==", "requires": { "dateformat": "~1.0.4-1.2.3", - "dynamic-dedupe": "^0.2.0", + "dynamic-dedupe": "^0.3.0", "filewatcher": "~3.0.0", "minimist": "^1.1.3", - "node-notifier": "^4.0.2", + "node-notifier": "^5.4.0", "resolve": "^1.0.0" } }, - "node-emoji": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.5.1.tgz", - "integrity": "sha1-/ZGOQSdpv4xEgFEjgjOECyr/FqE=", - "requires": { - "string.prototype.codepointat": "^0.2.0" - } + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", + "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" }, "node-icu-charset-detector": { "version": "0.2.0", @@ -3008,23 +2834,29 @@ } }, "node-notifier": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-4.6.1.tgz", - "integrity": "sha1-BW0UJE89zBzq3+aK+c/wxUc6M/M=", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.1.tgz", + "integrity": "sha512-p52B+onAEHKW1OF9MGO/S7k/ahGEHfhP5/tvwYzog/5XLYOd8ZuD6vdNZdUuWMONRnKPneXV43v3s6Snx1wsCQ==", "requires": { - "cli-usage": "^0.1.1", - "growly": "^1.2.0", - "lodash.clonedeep": "^3.0.0", - "minimist": "^1.1.1", - "semver": "^5.1.0", - "shellwords": "^0.1.0", - "which": "^1.0.5" + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" }, "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -3078,24 +2910,21 @@ } }, "normalize-package-data": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.6.tgz", - "integrity": "sha1-SY+kIMlkAfeHQCuiHmAN75+YH/8=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "npm-run-path": { "version": "2.0.2", @@ -3115,14 +2944,14 @@ } }, "number-is-nan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", - "integrity": "sha1-wCD1KcUoKt/dIz2R1LGBw9aG3Es=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", @@ -3160,15 +2989,10 @@ } } }, - "object-keys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.2.0.tgz", - "integrity": "sha1-zd7AKZiwkb5CvxA1rjLknxy26mc=", - "requires": { - "foreach": "~2.0.1", - "indexof": "~0.0.1", - "is": "~0.2.6" - } + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, "object-visit": { "version": "1.0.1", @@ -3197,31 +3021,20 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" }, "opencollective-postinstall": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.1.tgz", "integrity": "sha512-saQQ9hjLwu/oS0492eyYotoh+bra1819cfAT5rjY/e4REWwuc8IgZ844Oo44SiftWcJuBiqp0SA0BFVbmLX0IQ==" }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - } - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -3265,9 +3078,9 @@ } }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -3287,21 +3100,6 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "requires": { "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "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.0" - } - } } }, "path-is-absolute": { @@ -3323,9 +3121,9 @@ "dev": true }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "1.1.0", @@ -3335,21 +3133,6 @@ "graceful-fs": "^4.1.2", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "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.0" - } - } } }, "pause-stream": { @@ -3371,6 +3154,19 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" }, + "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.0" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -3389,11 +3185,11 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "promise": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.1.tgz", - "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", + "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", "requires": { - "asap": "~2.0.3" + "asap": "~2.0.6" } }, "ps-tree": { @@ -3408,7 +3204,13 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==" }, "pstree.remy": { "version": "1.1.0", @@ -3420,14 +3222,14 @@ } }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, "rc": { "version": "1.2.8", @@ -3494,9 +3296,9 @@ }, "dependencies": { "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz", + "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==", "dev": true } } @@ -3510,14 +3312,6 @@ "strip-indent": "^1.0.1" } }, - "redeyed": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-1.0.1.tgz", - "integrity": "sha1-6WwZO0DAgWsArshCaY5hGF5VSYo=", - "requires": { - "esprima": "~3.0.0" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -3565,67 +3359,90 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "requires": { "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", + "aws4": "^1.8.0", "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "uuid": "^3.3.2" }, "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" } } }, "request-promise": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.2.tgz", - "integrity": "sha1-0epG1lSm7k+O5qT+oQGMIpEZBLQ=", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.4.tgz", + "integrity": "sha512-8wgMrvE546PzbR5WbYxUQogUnUDfM0S7QIFZMID+J73vdFARkFy+HElj4T+MWYhpXwlLp0EQ8Zoj8xUA0he4Vg==", "requires": { "bluebird": "^3.5.0", - "request-promise-core": "1.1.1", - "stealthy-require": "^1.1.0", - "tough-cookie": ">=2.3.3" + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "request-promise-core": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", - "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", "requires": { - "lodash": "^4.13.1" + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } } }, "resolve": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz", - "integrity": "sha1-HwRCyeDLuBNuh7kwX5MvRsfygjU=", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "requires": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" } }, "resolve-url": { @@ -3640,11 +3457,6 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, - "retry-axios": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/retry-axios/-/retry-axios-0.3.2.tgz", - "integrity": "sha512-jp4YlI0qyDFfXiXGhkCOliBN1G7fRH03Nqy8YdShzGqbY5/9S2x/IR6C88ls2DFkbWuL3ASkP7QD3pVrNpPgwQ==" - }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -3659,10 +3471,15 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "2.1.0", @@ -3682,9 +3499,9 @@ } }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -3720,15 +3537,30 @@ "dev": true }, "shellwords": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", - "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -3845,14 +3677,6 @@ } } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.x.x" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -3879,22 +3703,32 @@ "dev": true }, "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "requires": { - "spdx-license-ids": "^1.0.2" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } }, "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "split": { "version": "1.0.1", @@ -3915,9 +3749,9 @@ } }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -3926,6 +3760,7 @@ "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" } }, @@ -3956,9 +3791,9 @@ } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stealthy-require": { "version": "1.1.1", @@ -4002,11 +3837,6 @@ } } }, - "string.prototype.codepointat": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.0.tgz", - "integrity": "sha1-aybpvTr8qnvjtCabUm3huCAArHg=" - }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -4015,19 +3845,6 @@ "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" - }, - "strip-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", - "integrity": "sha1-dRC2ZVZ8qRTMtdfgcnY6yWi+NyQ=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", @@ -4056,11 +3873,6 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -4070,6 +3882,11 @@ "execa": "^0.7.0" } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -4134,11 +3951,19 @@ } }, "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.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } } }, "trim-newlines": { @@ -4147,9 +3972,9 @@ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, "triple-beam": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.1.0.tgz", - "integrity": "sha1-KsOHyMS9BL0mxh34kaYHn4WS/hA=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" }, "tunnel-agent": { "version": "0.6.0", @@ -4162,8 +3987,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "twitter": { "version": "1.7.1", @@ -4200,38 +4024,15 @@ } }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "unique-string": { @@ -4295,9 +4096,9 @@ "dev": true }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true }, "update-notifier": { @@ -4318,6 +4119,14 @@ "xdg-basedir": "^3.0.0" } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", @@ -4350,12 +4159,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { - "spdx-correct": "~1.0.0", - "spdx-expression-parse": "~1.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "verror": { @@ -4372,6 +4181,7 @@ "version": "1.2.12", "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz", "integrity": "sha1-3me15FAmnxlJCe8j7OTr5Bb6EZI=", + "dev": true, "requires": { "isexe": "^1.1.1" } @@ -4386,48 +4196,90 @@ } }, "winston": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.2.tgz", - "integrity": "sha512-4S/Ad4ZfSNl8OccCLxnJmNISWcm2joa6Q0YGDxlxMzH0fgSwWsjMt+SmlNwCqdpaPg3ev1HKkMBsIiXeSUwpbA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - } - }, - "winston-compat": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.1.tgz", - "integrity": "sha512-jX06xvtGj/4g9fySHLgx9VfD8Meh7yRuJcoqaDmaO7/SoD/meu2HmWcdwL+Tv+mpzG8M0cxgt/c+WPP6wwXKMg==", - "requires": { - "cycle": "~1.0.3" - } - }, - "winston-daily-rotate-file": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.1.2.tgz", - "integrity": "sha512-wMndBfs9N5kMKri7JoREegxD7FP+BKMVDa66qabcdJ62fZrUwl3DJnDC1QoLitKVIZQHwrC809jkax6sj2uq7g==", - "requires": { - "file-stream-rotator": "^0.2.1", - "semver": "^5.5.0", - "triple-beam": "^1.1.0", - "winston-compat": "^0.1.0" + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" }, "dependencies": { - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "winston-compat": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.4.tgz", + "integrity": "sha512-mMEfFsSm6GmkFF+f4/0UJtG4N1vSaczGmXLVJYmS/+u2zUaIPcw2ZRuwUg2TvVBjswgiraN+vNnAG8z4fRUZ4w==", + "requires": { + "cycle": "~1.0.3", + "logform": "^1.6.0", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "winston-daily-rotate-file": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-3.10.0.tgz", + "integrity": "sha512-KO8CfbI2CvdR3PaFApEH02GPXiwJ+vbkF1mCkTlvRIoXFI8EFlf1ACcuaahXTEiDEKCii6cNe95gsL4ZkbnphA==", + "requires": { + "file-stream-rotator": "^0.4.1", + "object-hash": "^1.3.0", + "semver": "^6.2.0", + "triple-beam": "^1.3.0", + "winston-compat": "^0.1.4", + "winston-transport": "^4.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "winston-transport": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "requires": { + "readable-stream": "^2.3.6", + "triple-beam": "^1.2.0" + } }, "write-file-atomic": { "version": "2.3.0", @@ -4454,10 +4306,15 @@ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" } } } diff --git a/package.json b/package.json index 2d8bda3..05420c6 100644 --- a/package.json +++ b/package.json @@ -14,26 +14,26 @@ "url": "https://lanxu@bitbucket.org/lanxu/kulmapaikka-ircbot" }, "dependencies": { - "chance": "=1.0.13", + "chance": "=1.0.18", "cheerio": "^1.0.0-rc.2", - "cron": "=1.3.0", - "file-stream-rotator": "=0.2.1", - "finalhandler": "=1.1.1", - "googleapis": "=34.0.0", - "html-to-text": "=4.0.0", + "cron": "=1.7.1", + "file-stream-rotator": "=0.4.1", + "finalhandler": "=1.1.2", + "googleapis": "=42.0.0", + "html-to-text": "=5.1.1", "irc": "=0.5.2", - "lokijs": "=1.5.3", + "lokijs": "=1.5.7", "mkdirp": "=0.5.1", - "morgan": "=1.9.0", + "morgan": "=1.9.1", "node-cron": "^2.0.3", - "node-dev": "=3.1.3", + "node-dev": "=4.0.0", "node-uuid": "=1.4.8", - "promise": "=8.0.1", - "request": "=2.85.0", - "request-promise": "=4.2.2", + "promise": "=8.0.3", + "request": "=2.88.0", + "request-promise": "=4.2.4", "twitter": "=1.7.1", - "winston": "=2.4.2", - "winston-daily-rotate-file": "=3.1.2" + "winston": "=3.2.1", + "winston-daily-rotate-file": "^3.10.0" }, "devDependencies": { "nodemon": "^1.18.5" diff --git a/plugins/base.js b/plugins/base.js index a29227e..035a5f7 100644 --- a/plugins/base.js +++ b/plugins/base.js @@ -1,18 +1,18 @@ class BasePlugin { - constructor(config) { - this.name = 'BasePlugin'; - this.config = config; + constructor (config) { + this.name = 'BasePlugin' + this.config = config } - test(input) { + test (input) { } - result(input) { + result (input) { } } // export default BasePlugin; -module.exports = BasePlugin; +module.exports = BasePlugin diff --git a/plugins/character1.js b/plugins/character1.js index 27fb351..475f83d 100644 --- a/plugins/character1.js +++ b/plugins/character1.js @@ -1,62 +1,57 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var BasePlugin = require('./base.js') class Character1 extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Character1'; + constructor (config) { + super(config) + this.name = 'Character1' } - test(input) { - var res = null; - if (res = input.match(/^\.luohahmo$/i)) { - return true; + test (input) { + if (input.match(/^\.luohahmo$/i)) { + return true } - return false; + return false } - throwStat() { - // Heittää 4 kertaa d6:n, tiputtaa heikoimman tuloksen ja laskee - // loput yhteen + throwStat () { + // Heittää 4 kertaa d6:n, tiputtaa heikoimman tuloksen ja laskee + // loput yhteen - var throws = []; - var sum = 0; - for( var i = 0; i < 4; i++ ) { - var t = Math.floor(Math.random()*6)+1; - throws.push(t); - } + var throws = [] + var sum = 0 + for (var i = 0; i < 4; i++) { + var t = Math.floor(Math.random() * 6) + 1 + throws.push(t) + } - throws.sort(); - throws.reverse(); + throws.sort() + throws.reverse() - var sum = 0; - for(var i = 0; i < 3; i++) { - sum += throws[i]; - } + sum = 0 + for (i = 0; i < 3; i++) { + sum += throws[i] + } - return sum; - } + return sum + } - getDnDCharacter() { - var statPoints = 'DnD-statsit:'; - var total = 0; - for( var i = 0; i < 6; i++) { - var newStat = this.throwStat(); - statPoints += ' '; // erotetaan sanat toisistaan - statPoints += newStat; - total += Number(newStat); - } - statPoints += ' ('+total+')'; - return statPoints; - }; - result(input) { + getDnDCharacter () { + var statPoints = 'DnD-statsit:' + var total = 0 + for (var i = 0; i < 6; i++) { + var newStat = this.throwStat() + statPoints += ' ' // erotetaan sanat toisistaan + statPoints += newStat + total += Number(newStat) + } + statPoints += ' (' + total + ')' + return statPoints + }; + result (input) { // Different cases - let info = this.getDnDCharacter(); - return info; + let info = this.getDnDCharacter() + return info } - } -module.exports = Character1; +module.exports = Character1 diff --git a/plugins/character2.js b/plugins/character2.js index 5b64b97..c4e25f9 100644 --- a/plugins/character2.js +++ b/plugins/character2.js @@ -1,33 +1,29 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var BasePlugin = require('./base.js') -var Chance = require('chance'); -var chance = new Chance(); +var Chance = require('chance') +var chance = new Chance() class Character { - constructor() { - - this.gender = null; - this.name = null; - this.class = null; - this.alignment = null; - this.stats = []; - this.statSum = -1; + constructor () { + this.gender = null + this.name = null + this.class = null + this.alignment = null + this.stats = [] + this.statSum = -1 } - create() { - this.gender = chance.gender(); - this.name = chance.first({gender: this.gender}); + create () { + this.gender = chance.gender() + this.name = chance.first({gender: this.gender}) // Throw stats - for(var i = 0; i < 6; i++) { - var throws = [chance.d6(), chance.d6(), chance.d6(), chance.d6()].sort(); - throws.splice(0, 1); - var stat = throws.reduce(function(a, b) { return a + b; }, 0); - this.stats.push(stat); + for (var i = 0; i < 6; i++) { + var throws = [chance.d6(), chance.d6(), chance.d6(), chance.d6()].sort() + throws.splice(0, 1) + var stat = throws.reduce(function (a, b) { return a + b }, 0) + this.stats.push(stat) } - this.statSum = this.stats.reduce(function(a, b) { return a + b; }, 0); + this.statSum = this.stats.reduce(function (a, b) { return a + b }, 0) // Select race var races = { @@ -37,20 +33,20 @@ class Character { 'Gnome': 'Bard', 'Half-Elf': '', 'Half-Orc': 'Barbarian', - 'Halfling': 'Rogue', - }; + 'Halfling': 'Rogue' + } - this.race = Object.keys(races)[chance.natural({min: 0, max: Object.keys(races).length-1})]; + this.race = Object.keys(races)[chance.natural({min: 0, max: Object.keys(races).length - 1})] // Select alignment - var alignmentY = ['Good', 'Neutral', 'Evil'].splice(chance.natural({min: 0, max: 2}), 1); - var alignmentX = ['Lawful', 'Neutral', 'Chaotic'].splice(chance.natural({min: 0, max: 2}), 1); + var alignmentY = ['Good', 'Neutral', 'Evil'].splice(chance.natural({min: 0, max: 2}), 1) + var alignmentX = ['Lawful', 'Neutral', 'Chaotic'].splice(chance.natural({min: 0, max: 2}), 1) - this.alignment = (alignmentY[0] === 'Neutral' && alignmentX[0] === 'Neutral') ? 'True Neutral' : alignmentX[0] + ' ' + alignmentY[0]; + this.alignment = (alignmentY[0] === 'Neutral' && alignmentX[0] === 'Neutral') ? 'True Neutral' : alignmentX[0] + ' ' + alignmentY[0] // Select class var classes = { - 'Barbarian' : '', + 'Barbarian': '', 'Bard': '', 'Cleric': '', 'Druid': '', @@ -59,72 +55,74 @@ class Character { 'Paladin': '', 'Ranger': '', 'Rogue': '', - 'Sorcerer': '', + 'Sorcerer': '' } - this.class = Object.keys(classes)[chance.natural({min: 0, max: Object.keys(classes).length-1})]; + this.class = Object.keys(classes)[chance.natural({min: 0, max: Object.keys(classes).length - 1})] // Select age - var roll = function(times, func) { - var sum = 0; - for(var i = 0; i < times; i++) { - sum += chance[func](); + var roll = function (times, func) { + var sum = 0 + for (var i = 0; i < times; i++) { + sum += chance[func]() } - return sum; + return sum } var ages = { 'Human': { start: 15, classes: [roll(1, 'd4'), roll(1, 'd6'), roll(2, 'd6')] }, 'Dwarf': { start: 40, classes: [roll(3, 'd6'), roll(5, 'd6'), roll(6, 'd6')] }, - 'Elf': { start: 110, classes: [roll(4, 'd6'), roll(6, 'd6'), roll(10, 'd6')] }, + 'Elf': { start: 110, classes: [roll(4, 'd6'), roll(6, 'd6'), roll(10, 'd6')] }, 'Gnome': { start: 40, classes: [roll(4, 'd6'), roll(6, 'd6'), roll(9, 'd6')] }, 'Half-Elf': { start: 20, classes: [roll(1, 'd6'), roll(2, 'd6'), roll(3, 'd6')] }, 'Half-Orc': { start: 14, classes: [roll(1, 'd4'), roll(1, 'd6'), roll(2, 'd6')] }, - 'Halfling': { start: 20, classes: [roll(2, 'd4'), roll(3, 'd6'), roll(4, 'd6')] }, - }; + 'Halfling': { start: 20, classes: [roll(2, 'd4'), roll(3, 'd6'), roll(4, 'd6')] } + } var ageClasses = { - 'Barbarian': 0, 'Rogue': 0, 'Sorcerer': 0, - 'Bard': 1, 'Fighter': 1, 'Paladin': 1, 'Ranger': 1, - 'Cleric': 2, 'Druid': 2, 'Monk': 2, 'Wizard': 2, - }; - - this.age = ages[this.race].start + ages[this.race].classes[ageClasses[this.class]]; - - + 'Barbarian': 0, + 'Rogue': 0, + 'Sorcerer': 0, + 'Bard': 1, + 'Fighter': 1, + 'Paladin': 1, + 'Ranger': 1, + 'Cleric': 2, + 'Druid': 2, + 'Monk': 2, + 'Wizard': 2 + } + this.age = ages[this.race].start + ages[this.race].classes[ageClasses[this.class]] } - toString() { - var str = this.age + " years old " + this.alignment + " " + this.gender + " " + this.race + " " + this.class + " named " + this.name; - str += " with stats "; - this.stats.forEach(function(val) { - str += val + " "; - }); - str += " ("+this.statSum+")"; - return str; + toString () { + var str = this.age + ' years old ' + this.alignment + ' ' + this.gender + ' ' + this.race + ' ' + this.class + ' named ' + this.name + str += ' with stats ' + this.stats.forEach(function (val) { + str += val + ' ' + }) + str += ' (' + this.statSum + ')' + return str } } class Character2 extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Character2'; - + constructor (config) { + super(config) + this.name = 'Character2' } - test(input) { - var res = null; - if (res = input.match(/^\.luohahmo2$/i)) { - return true; + test (input) { + if (input.match(/^\.luohahmo2$/i)) { + return true } - return false; + return false } - result(input) { + result (input) { // Different cases - let newChar = new Character(); - newChar.create(); - let result = newChar.toString(); - return result; + let newChar = new Character() + newChar.create() + let result = newChar.toString() + return result } - } -module.exports = Character2; +module.exports = Character2 diff --git a/plugins/dice.js b/plugins/dice.js index ddb21fb..98f3bfe 100644 --- a/plugins/dice.js +++ b/plugins/dice.js @@ -1,68 +1,63 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var BasePlugin = require('./base.js') class Dice extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Dice'; + constructor (config) { + super(config) + this.name = 'Dice' } - test(input) { - var res = null; - if (res = input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)) { - return true; - } - if (res = input.match(/^\.heit(a|ä) voltti homo$/i)) { + test (input) { + if (input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)) { return true } - return false; + if (input.match(/^\.heit(a|ä) voltti homo$/i)) { + return true + } + return false } - getDiceString(numThrows, sides) { + getDiceString (numThrows, sides) { + var total = 0 + var totalThrows = [] - var total = 0; - var totalThrows = []; + numThrows = Number(numThrows) + sides = Number(sides) - numThrows = Number(numThrows); - sides = Number(sides); - - if(numThrows === 0 || sides === 0) { - return 'Tyhjää ei voi heittää'; + if (numThrows === 0 || sides === 0) { + return 'Tyhjää ei voi heittää' } - if(numThrows > 100) { - return 'Ei jaksa...'; + if (numThrows > 100) { + return 'Ei jaksa...' } - for(var a = 0; a < numThrows; a++) { - var t = Math.floor(Math.random()*sides)+1; - totalThrows.push(t); - total += t; + for (var a = 0; a < numThrows; a++) { + var t = Math.floor(Math.random() * sides) + 1 + totalThrows.push(t) + total += t } - var resultString = ''; - totalThrows.forEach(function(value) { - resultString += value + ', '; - }); + var resultString = '' + totalThrows.forEach(function (value) { + resultString += value + ', ' + }) - resultString = resultString.substring(0, resultString.length - 2); - resultString += ' (yhteensä: ' + total + '. '+ (total/numThrows).toFixed(2) + ' per heitto)'; + resultString = resultString.substring(0, resultString.length - 2) + resultString += ' (yhteensä: ' + total + '. ' + (total / numThrows).toFixed(2) + ' per heitto)' - return resultString; + return resultString } - result(input) { + result (input) { // Different cases let res = null - if (res = input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)) { - var th = this.getDiceString(res[2], res[3]); - return 'Heitettiin: '+th; + res = input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i) + if (res !== null) { + var th = this.getDiceString(res[2], res[3]) + return 'Heitettiin: ' + th } if (input.match(/^\.heit(a|ä) voltti homo$/i)) { - return 'steam://run/1250'; + return 'steam://run/1250' } } - } -module.exports = Dice; +module.exports = Dice diff --git a/plugins/getInstantAnswer.js b/plugins/getInstantAnswer.js index 8250fda..b131299 100644 --- a/plugins/getInstantAnswer.js +++ b/plugins/getInstantAnswer.js @@ -1,40 +1,37 @@ -var Promise = require('promise'); -var DDG = require('node-ddg-api').DDG; +var Promise = require('promise') +var DDG = require('node-ddg-api').DDG -module.exports = function(config) { +module.exports = function (config) { + var ddg = new DDG('kulmapaikka-ircbot') - var ddg = new DDG('kulmapaikka-ircbot'); + var getAnswer = function (queryText) { + var promise = new Promise(function (resolve, reject) { + ddg.instantAnswer(queryText, {skip_disambig: '0'}, function (error, response) { + if (!error) { + var str = '' + if (response.AbstractText !== '') { + var text = '' + if (response.AbstractText.length > 350) { + text = response.AbstractText.substring(0, 350 - response.AbstractURL.length) + '...' + } else { + text = response.AbstractText + } - var getAnswer = function(queryText) { - var promise = new Promise(function(resolve, reject) { - ddg.instantAnswer(queryText, {skip_disambig: '0'}, function(error, response) { - if(!error) { - var str = ''; - if(response.AbstractText !== '') { - var text = ''; - if(response.AbstractText.length > 350) { - text = response.AbstractText.substring(0, 350-response.AbstractURL.length) + '...'; - } else { - text = response.AbstractText; - } - - str = 'Vastaus: ' + text + '" | ' + response.AbstractURL; - resolve(str); - } - else if(response.RelatedTopics.length > 0) { - str = 'Vastaus: "' + response.RelatedTopics[0].Text + '" | ' + response.RelatedTopics[0].FirstURL; - resolve(str); - } else { - reject(); - } - } else { - reject(); - } - }); + str = 'Vastaus: ' + text + '" | ' + response.AbstractURL + resolve(str) + } else if (response.RelatedTopics.length > 0) { + str = 'Vastaus: "' + response.RelatedTopics[0].Text + '" | ' + response.RelatedTopics[0].FirstURL + resolve(str) + } else { + reject(new Error('')) + } + } else { + reject(new Error('')) + } + }) + }) + return promise + } - }); - return promise; - }; - - return getAnswer; -}; \ No newline at end of file + return getAnswer +} diff --git a/plugins/getUrl.js b/plugins/getUrl.js index 8750cfd..8478590 100644 --- a/plugins/getUrl.js +++ b/plugins/getUrl.js @@ -1,49 +1,46 @@ -var Promise = require('promise'); -var request = require('request'); +var Promise = require('promise') +var request = require('request') var requestPromise = function (url, urlArgs) { - var promise = new Promise(function(resolve, reject) { - request({ - url: url, - qs: urlArgs, - json: false - }, function(error, response, body) { - if(!error && response.statusCode == 200) { - resolve(body); - } else { - reject(error); - } - }); - }); - return promise; -}; + var promise = new Promise(function (resolve, reject) { + request({ + url: url, + qs: urlArgs, + json: false + }, function (error, response, body) { + if (!error && response.statusCode === 200) { + resolve(body) + } else { + reject(error) + } + }) + }) + return promise +} -module.exports = function(config) { - // http://stackoverflow.com/questions/13087888/getting-the-page-title-from-a-scraped-webpage - var getTitle = function(url) { - var urlOpts = {host: url, path: '/', port: '80'}; +module.exports = function (config) { + // http://stackoverflow.com/questions/13087888/getting-the-page-title-from-a-scraped-webpage + var getTitle = function (url) { + var re = /(<\s*title[^>]*>((.|\n)+?)<\s*\/\s*title)>/gi + var urlArgs = {} - var re = /(<\s*title[^>]*>((.|\n)+?)<\s*\/\s*title)>/gi; - var urlArgs = {}; + var promise = new Promise(function (resolve, reject) { + var urlPromise = requestPromise(url, urlArgs) + urlPromise.then(function (data) { + var match = re.exec(data) - var promise = new Promise(function(resolve, reject) { - var urlPromise = requestPromise(url, urlArgs); - urlPromise.then(function(data) { - - var match = re.exec(data); - - if (match && match[2]) { - var title = match[2].trim(); // remove whitespace - title = title.replace(/\r?\n|\r/g, ''); // remove newlines - - resolve(title); - } else { - reject(); - } - }); - }); - return promise; - }; - - return getTitle; -}; \ No newline at end of file + if (match && match[2]) { + var title = match[2].trim() // remove whitespace + title = title.replace(/\r?\n|\r/g, '') // remove newlines + + resolve(title) + } else { + reject(new Error()) + } + }) + }) + return promise + } + + return getTitle +} diff --git a/plugins/helpers/googleapi.js b/plugins/helpers/googleapi.js index cd0c921..e72fe4f 100644 --- a/plugins/helpers/googleapi.js +++ b/plugins/helpers/googleapi.js @@ -1,101 +1,103 @@ -const Promise = require('promise'); -const requestPromise = require('./requestPromise.js'); -const {google} = require('googleapis'); -const youtube = google.youtube('v3'); -const apis = google.getSupportedAPIs(); -module.exports = function(config) { - 'use strict'; - var apikey = config.keys.google.apiKey; +const Promise = require('promise') +const {google} = require('googleapis') +const youtube = google.youtube('v3') +const logger = require('../../logger') + +module.exports = function (config) { + 'use strict' + var apikey = config.keys.google.apiKey return { - getYoutubeVideoById: function(videoId) { - var promise = new Promise(function(resolve, reject) { + getYoutubeVideoById: function (videoId) { + return new Promise(function (resolve, reject) { var videosParams = { part: 'snippet,contentDetails,statistics', id: videoId, key: apikey - }; + } - var thisResolve = resolve; - var thisReject = reject; - youtube.videos.list(videosParams, function(err, response) { - let resp = response.data; - if(typeof resp === 'undefined' || resp === null || typeof resp.items === 'undefined' || resp.items === null || resp.items.length <= 0) { - thisReject('No results'); - return; + var thisResolve = resolve + var thisReject = reject + youtube.videos.list(videosParams, function (err, response) { + if (err !== null) { + logger.error(err) + thisReject(new Error('Google error')) + return + } + let resp = response.data + if (typeof resp === 'undefined' || resp === null || typeof resp.items === 'undefined' || resp.items === null || resp.items.length <= 0) { + thisReject('No results') + return } - var duration = resp.items[0].contentDetails.duration; - var formattedTime = duration.replace("PT","").replace("H","t ").replace("M","m ").replace("S","s"); + var duration = resp.items[0].contentDetails.duration + var formattedTime = duration.replace('PT', '').replace('H', 't ').replace('M', 'm ').replace('S', 's') var data = { videoId: videoId, - url: 'https://youtu.be/'+videoId, + url: 'https://youtu.be/' + videoId, title: resp.items[0].snippet.title, channelTitle: resp.items[0].snippet.channelTitle, statistics: resp.items[0].statistics, duration: formattedTime - }; - thisResolve(data); - }); - }); - return promise; + } + thisResolve(data) + }) + }) }, - getYoutubeVideo: function(query) { - + getYoutubeVideo: function (query) { var params = { part: 'snippet', q: query, type: 'video', order: 'viewCount', key: apikey - }; - console.log(params); - var promise = new Promise(function(resolve, reject) { - youtube.search.list(params, function(err, resp) { + } + logger.debug(params) + var promise = new Promise(function (resolve, reject) { + youtube.search.list(params, function (err, resp) { if (err) { - console.log('An error occured', err); - reject(err); + console.log('An error occured', err) + reject(err) } - if(resp === null || resp.items === null) { - reject('No results (null)'); - return; + if (resp === null || resp.items === null) { + reject(new Error('No results (null)')) + return } - if(resp.items.length <= 0) { - reject('No results'); - return; + if (resp.items.length <= 0) { + reject(new Error('No results')) + return } - var videoId = resp.items[0].id.videoId; + var videoId = resp.items[0].id.videoId var data = { videoId: videoId, - url: 'https://youtu.be/'+videoId, + url: 'https://youtu.be/' + videoId, title: resp.items[0].snippet.title, channelTitle: resp.items[0].snippet.channelTitle - }; - + } var videosParams = { part: 'snippet,contentDetails,statistics', id: videoId, key: apikey - }; - youtube.videos.list(videosParams, function(err2, resp2) { - //console.log('respo', resp2); - if(resp2.items.length <= 0) { - reject('No results'); - return; + } + youtube.videos.list(videosParams, function (err2, resp2) { + // console.log('respo', resp2); + if (resp2.items.length <= 0) { + reject(new Error('No results')) + return } - data.statistics = resp2.items[0].statistics; - var duration = resp2.items[0].contentDetails.duration; - var formattedTime = duration.replace("PT","").replace("H","t ").replace("M","m ").replace("S","s"); - data.duration = formattedTime; - resolve(data); - }); - }); - }); + data.statistics = resp2.items[0].statistics + var duration = resp2.items[0].contentDetails.duration + var formattedTime = duration.replace('PT', '').replace('H', 't ').replace('M', 'm ').replace('S', 's') + data.duration = formattedTime + resolve(data) + }) + }) + }) - return promise; + return promise } - }; -}; + } +} diff --git a/plugins/helpers/requestPromise.js b/plugins/helpers/requestPromise.js index 79314dc..b7a7d26 100644 --- a/plugins/helpers/requestPromise.js +++ b/plugins/helpers/requestPromise.js @@ -1,34 +1,34 @@ -var request = require('request'); -var Promise = require('promise'); +var request = require('request') +var Promise = require('promise') -function RequestPromise(url, urlArgs, headers, json) { - if(typeof headers === 'undefined') { - headers = {}; +function RequestPromise (url, urlArgs, headers, json) { + if (typeof headers === 'undefined') { + headers = {} } - if(typeof json === 'undefined') { - json = false; + if (typeof json === 'undefined') { + json = false } - var promise = new Promise(function(resolve, reject) { + var promise = new Promise(function (resolve, reject) { request({ url: url, qs: urlArgs, headers: headers, json: json - }, function(error, response, body) { - if(!error && response.statusCode == 200) { - if (json === false) { - resolve(JSON.parse(body)); /// wtf + }, function (error, response, body) { + if (!error && response.statusCode === 200) { + if (json === false) { + resolve(JSON.parse(body)) /// wtf } else { resolve(body) } } else { - reject(error); + reject(error) } - }); - }); - return promise; + }) + }) + return promise } -module.exports = RequestPromise; +module.exports = RequestPromise diff --git a/plugins/instantanswer.js b/plugins/instantanswer.js index 990fe9f..efba720 100644 --- a/plugins/instantanswer.js +++ b/plugins/instantanswer.js @@ -1,80 +1,76 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var Promise = require('promise') +var requestPromise = require('./helpers/requestPromise.js') +var BasePlugin = require('./base.js') class InstantAswer extends BasePlugin { - constructor(config) { - super(config); - this.name = 'InstantAswer'; + constructor (config) { + super(config) + this.name = 'InstantAswer' } - test(input) { - var res = null; - if (res = input.match(/^\.wtf (.+)$/i)) { - return true; + test (input) { + if (input.match(/^\.wtf (.+)$/i)) { + return true } - return false; + return false } - getDDG(query) { + getDDG (query) { var urlArgs = { q: query, kp: -1, skip_disambig: '0', format: 'json' - }; + } - let url = 'https://api.duckduckgo.com/'; - var promise = requestPromise(url, urlArgs, { - 'Accept': 'application/json', - }); + let url = 'https://api.duckduckgo.com/' + var promise = requestPromise(url, urlArgs, { + 'Accept': 'application/json' + }) - return promise; + return promise } - getAnswer(query) { - let that = this; - var promise = new Promise(function(resolve, reject) { + getAnswer (query) { + let that = this + var promise = new Promise(function (resolve, reject) { that.getDDG(query).then((response) => { - var str = ''; - if(response.AbstractText !== '') { - var text = ''; - if(response.AbstractText.length > 350) { - text = response.AbstractText.substring(0, 350-response.AbstractURL.length) + '...'; + var str = '' + if (response.AbstractText !== '') { + var text = '' + if (response.AbstractText.length > 350) { + text = response.AbstractText.substring(0, 350 - response.AbstractURL.length) + '...' } else { - text = response.AbstractText; + text = response.AbstractText } - str = 'Vastaus: ' + text + '" | ' + response.AbstractURL; - resolve(str); - } - else if(response.RelatedTopics.length > 0) { - str = 'Vastaus: "' + response.RelatedTopics[0].Text + '" | ' + response.RelatedTopics[0].FirstURL; - resolve(str); + str = 'Vastaus: ' + text + '" | ' + response.AbstractURL + resolve(str) + } else if (response.RelatedTopics.length > 0) { + str = 'Vastaus: "' + response.RelatedTopics[0].Text + '" | ' + response.RelatedTopics[0].FirstURL + resolve(str) } else { - reject(); + reject(new Error()) } - }, reject); - }); - return promise; + }, reject) + }) + return promise } - result(input) { - let that = this; - var resultPromise = new Promise(function(resultResolve, resultReject) { - var res = null; - if (res = input.match(/^\.wtf (.+)$/i)) { + result (input) { + let that = this + var resultPromise = new Promise(function (resolve, reject) { + var res = input.match(/^\.wtf (.+)$/i) + if (res !== null) { let query = res[1] that.getAnswer(query).then(str => { - resultResolve(str); + resolve(str) }) } else { - resultReject(); + reject(new Error()) } - }); - return resultPromise; - + }) + return resultPromise } } -module.exports = InstantAswer; +module.exports = InstantAswer diff --git a/plugins/joke.js b/plugins/joke.js index 4b58552..ee46f08 100644 --- a/plugins/joke.js +++ b/plugins/joke.js @@ -1,59 +1,54 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var Promise = require('promise') +var requestPromise = require('./helpers/requestPromise.js') +var BasePlugin = require('./base.js') class Joke extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Joke'; + constructor (config) { + super(config) + this.name = 'Joke' } - test(input) { - var res = null; - if (res = input.match(/^\.vitsi$/i)) { - return true; + test (input) { + if (input.match(/^\.vitsi$/i)) { + return true } - return false; + return false } + getJoke () { + var urlArgs = {} + var url = 'https://icanhazdadjoke.com/' - getJoke() { - var urlArgs = {}; - var url = 'https://icanhazdadjoke.com/'; + var promise = requestPromise(url, urlArgs, { + 'Accept': 'application/json' + }) - var promise = requestPromise(url, urlArgs, { - 'Accept': 'application/json', - }); - - return promise; + return promise } - result(input) { - var that = this; - var resultPromise = new Promise(function(resultResolve, resultReject) { - var res = null; - if (res = input.match(/^\.vitsi$/i)) { - that.getJoke().then(function(data) { - var text = 'Vitsi: '; + result (input) { + var that = this + var resultPromise = new Promise(function (resolve, reject) { + if (input.match(/^\.vitsi$/i)) { + that.getJoke().then(function (data) { + var text = 'Vitsi: ' - var joke = data.joke; - if(typeof joke === 'undefined' || joke === null) { - resultReject('No joke!'); + var joke = data.joke + if (typeof joke === 'undefined' || joke === null) { + reject(new Error('No joke!')) } - text += "\"" + joke + "\""; + text += '"' + joke + '"' - resultResolve(text); - - }, function(error) { - resultReject(error); - }); + resolve(text) + }, function (error) { + reject(error) + }) } - }); + }) - return resultPromise; + return resultPromise } } -module.exports = Joke; +module.exports = Joke diff --git a/plugins/kernel.js b/plugins/kernel.js index 74b41dc..c86e517 100644 --- a/plugins/kernel.js +++ b/plugins/kernel.js @@ -1,88 +1,84 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var Promise = require('promise') +var requestPromise = require('./helpers/requestPromise.js') +var BasePlugin = require('./base.js') +const logger = require('../logger') class Kernel extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Kernel'; - } - getKernelData(queryText) { - var urlArgs = {}; - var url = 'https://www.kernel.org/releases.json'; + constructor (config) { + super(config) + this.name = 'Kernel' + } + getKernelData (queryText) { + var urlArgs = {} + var url = 'https://www.kernel.org/releases.json' - var promise = requestPromise(url, urlArgs); + var promise = requestPromise(url, urlArgs) - return promise; + return promise } - test(input) { + test (input) { // Kernel version - var res = null; - if (res = input.match(/^\.kernel( (.+))?/i)) { - return true; + if (input.match(/^\.kernel( (.+))?/i)) { + return true } - return false; - + return false } - result(input) { - var that = this; - var resultPromise = new Promise(function(resultResolve, resultReject) { - var res = null; - if (res = input.match(/^\.kernel( (.+))?/i)) { - var version = res[2]; - logger.info('Search kernel version ' + res[2]); + result (input) { + var that = this + var resultPromise = new Promise(function (resolve, reject) { + var res = input.match(/^\.kernel( (.+))?/i) + if (res !== null) { + var version = res[2] + logger.info('Search kernel version ' + res[2]) - that.getKernelData().then(function(data) { - var text = 'kernel: '; + that.getKernelData().then(function (data) { + var text = 'kernel: ' // Store current versions! - var releaseToVersion = {}; - data.releases.forEach(function(val) { - var regex = /([0-9]+?)(\.([0-9]+))?(\.([0-9]+))?/; - var result = val.version.match(regex); + var releaseToVersion = {} + data.releases.forEach(function (val) { + var regex = /([0-9]+?)(\.([0-9]+))?(\.([0-9]+))?/ + var result = val.version.match(regex) - var major = result[1]; - var minor = result[3]; + var major = result[1] + var minor = result[3] - if(typeof major !== 'undefined' && typeof minor !== 'undefined') { - var releaseWithVersion = val.moniker + '-' + major + '-' + minor; - var release = val.moniker + ''; + if (typeof major !== 'undefined' && typeof minor !== 'undefined') { + var releaseWithVersion = val.moniker + '-' + major + '-' + minor + var release = val.moniker + '' - if(typeof releaseToVersion[releaseWithVersion] !== 'undefined') { - if(releaseToVersion[releaseWithVersion] !== val.version) { + if (typeof releaseToVersion[releaseWithVersion] !== 'undefined') { + if (releaseToVersion[releaseWithVersion] !== val.version) { // new release } } - if(typeof releaseToVersion[release] === 'undefined') { - releaseToVersion[release] = val.version; + if (typeof releaseToVersion[release] === 'undefined') { + releaseToVersion[release] = val.version } - releaseToVersion[releaseWithVersion] = val.version; + releaseToVersion[releaseWithVersion] = val.version } - }, function(error) { - resultReject(error); - }); + }, function (error) { + reject(error) + }) - if(typeof releaseToVersion[version] !== 'undefined') { - text += 'Viimeisin versio on ' + releaseToVersion[version] + ' (' + version + ')'; + if (typeof releaseToVersion[version] !== 'undefined') { + text += 'Viimeisin versio on ' + releaseToVersion[version] + ' (' + version + ')' } else { - - text += 'Viimeisin vakaa versio on ' + data.latest_stable.version; + text += 'Viimeisin vakaa versio on ' + data.latest_stable.version } - resultResolve(text); - }, function(error) { - resultReject(error); - }); + resolve(text) + }, function (error) { + reject(error) + }) } - }); + }) - return resultPromise; + return resultPromise } } - -module.exports = Kernel; +module.exports = Kernel diff --git a/plugins/mastodon.js b/plugins/mastodon.js index 056ca86..cb0bab2 100644 --- a/plugins/mastodon.js +++ b/plugins/mastodon.js @@ -1,85 +1,83 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); -var htmlToText = require('html-to-text'); +var Promise = require('promise') +var requestPromise = require('./helpers/requestPromise.js') +var BasePlugin = require('./base.js') +var htmlToText = require('html-to-text') class Mastodon extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Mastodon'; + constructor (config) { + super(config) + this.name = 'Mastodon' } - test(input) { - var res = null; - if (res = input.match(/http(s)?:\/\/(www\.)?((.*\..*\/users\/([a-zA-Z0-9_-]*)\/statuses\/([0-9_-]*)))/)) { - return true; + test (input) { + if (input.match(/http(s)?:\/\/(www\.)?((.*\..*\/users\/([a-zA-Z0-9_-]*)\/statuses\/([0-9_-]*)))/)) { + return true } - if (res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/@([a-zA-Z0-9_-]*)\/([0-9_-]*)))/)) { - return true; + if (input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/@([a-zA-Z0-9_-]*)\/([0-9_-]*)))/)) { + return true } - return false; + return false } - getToot(host, statusId) { - var promise = new Promise(function(resolve, reject) { - var url = 'https://' + host + '/api/v1/statuses/' + statusId; + getToot (host, statusId) { + var promise = new Promise(function (resolve, reject) { + var url = 'https://' + host + '/api/v1/statuses/' + statusId requestPromise(url, {}, { - 'Accept': 'application/json', - }).then(function(toot) { - if(!toot.error) { - var user = toot.account.username; - var time = toot.created_at; - var dateTime = new Date(time); - var dateTimeLocale = dateTime.toLocaleDateString('fi-FI') + ' ' + dateTime.getHours() + '.' + dateTime.getMinutes(); + 'Accept': 'application/json' + }).then(function (toot) { + if (!toot.error) { + var user = toot.account.username + var time = toot.created_at + var dateTime = new Date(time) + var dateTimeLocale = dateTime.toLocaleDateString('fi-FI') + ' ' + dateTime.getHours() + '.' + dateTime.getMinutes() - var tootContent = toot.content; - var tootContent = htmlToText.fromString(tootContent, { + var tootContent = toot.content + tootContent = htmlToText.fromString(tootContent, { wordwrap: false, ignoreHref: true, - preserveNewlines: false, - }); + preserveNewlines: false + }) - var str = '@' + user + ': "' + tootContent + '" ('+ dateTimeLocale +')'; - str = str.replace(/(?:\r\n|\r|\n)/g, ' '); + var str = '@' + user + ': "' + tootContent + '" (' + dateTimeLocale + ')' + str = str.replace(/(?:\r\n|\r|\n)/g, ' ') - resolve(str); + resolve(str) } else { - reject(); + reject(new Error('')) } - }); - - }); - return promise; + }) + }) + return promise } - result(input) { - var that = this; - var resultPromise = new Promise(function(resultResolve, resultReject) { - var host = null; - var tootId = null; + result (input) { + var that = this + var resultPromise = new Promise(function (resolve, reject) { + var host = null + var tootId = null - var res = null; - if (res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/users\/([a-zA-Z0-9_-]*)\/statuses\/([0-9_-]*)))/)) { - host = res[5]; - tootId = res[7]; + var res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/users\/([a-zA-Z0-9_-]*)\/statuses\/([0-9_-]*)))/) + if (res !== null) { + host = res[5] + tootId = res[7] } - if (res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/@([a-zA-Z0-9_-]*)\/([0-9_-]*)))/)) { - host = res[5]; - tootId = res[7]; + res = input.match(/http(s)?:\/\/(www\.)?(((.*\..*)\/@([a-zA-Z0-9_-]*)\/([0-9_-]*)))/) + if (res !== null) { + host = res[5] + tootId = res[7] } if (host !== null && tootId !== null) { - that.getToot(host, tootId).then(function(toot) { - resultResolve('Tuuttaus: ' + toot); - }, function(error) { - resultReject('Tuuttaus: Jokin virhe tapahtui'); - }); + that.getToot(host, tootId).then(function (toot) { + resolve('Tuuttaus: ' + toot) + }, function () { + reject(new Error('Tuuttaus: Jokin virhe tapahtui')) + }) } - }); + }) - return resultPromise; + return resultPromise } } -module.exports = Mastodon; +module.exports = Mastodon diff --git a/plugins/pluginManager.js b/plugins/pluginManager.js index c7c67d6..bff0334 100644 --- a/plugins/pluginManager.js +++ b/plugins/pluginManager.js @@ -1,78 +1,76 @@ -var logger = require('winston'); -var fs = require('fs'); -var Promise = require('promise'); - +var fs = require('fs') +var Promise = require('promise') +const logger = require('../logger') class PluginManager { - constructor(config) { - this.enabledPlugins = []; - this.enabledPmPlugins = []; - this.plugins = []; - this.pmPlugins = []; - this.config = config; + constructor (config) { + this.enabledPlugins = [] + this.enabledPmPlugins = [] + this.plugins = [] + this.pmPlugins = [] + this.config = config - var that = this; + var that = this - config.plugins.forEach(function(pluginName) { - logger.info('checking ' + pluginName + '...'); + config.plugins.forEach(function (pluginName) { + logger.info('checking ' + pluginName + '...') - if(fs.existsSync('./plugins/'+pluginName.toLowerCase()+'.js')) { - logger.info('* Exists. Enabling...'); - that.enabledPlugins.push(pluginName.toLowerCase()); + if (fs.existsSync('./plugins/' + pluginName.toLowerCase() + '.js')) { + logger.info('* Exists. Enabling...') + that.enabledPlugins.push(pluginName.toLowerCase()) } - if(fs.existsSync('./plugins/pm'+pluginName.toLowerCase()+'.js')) { - logger.info('* Exists as PM plugin. Enabling...'); - that.enabledPmPlugins.push(pluginName.toLowerCase()); + if (fs.existsSync('./plugins/pm' + pluginName.toLowerCase() + '.js')) { + logger.info('* Exists as PM plugin. Enabling...') + that.enabledPmPlugins.push(pluginName.toLowerCase()) } - }); + }) } - loadAllPlugins() { - var that = this; - this.enabledPlugins.forEach(function(pluginName) { - var Plugin = require('./' + pluginName + '.js'); + loadAllPlugins () { + var that = this + this.enabledPlugins.forEach(function (pluginName) { + var Plugin = require('./' + pluginName + '.js') - var plugin = new Plugin(that.config); - that.plugins.push(plugin); - }); + var plugin = new Plugin(that.config) + that.plugins.push(plugin) + }) - this.enabledPmPlugins.forEach(function(pluginName) { - var Plugin = require('./pm' + pluginName + '.js'); + this.enabledPmPlugins.forEach(function (pluginName) { + var Plugin = require('./pm' + pluginName + '.js') - var plugin = new Plugin(that.config); - that.pmPlugins.push(plugin); - }); + var plugin = new Plugin(that.config) + that.pmPlugins.push(plugin) + }) } - testPlugins(input, publicChat) { + testPlugins (input, publicChat) { if (typeof publicChat === 'undefined') { publicChat = true } - var promises = []; + var promises = [] if (publicChat) { - for(let i = 0; i < this.plugins.length; i++) { - var plugin = this.plugins[i]; - if(plugin.test(input)) { - logger.info('* Plugin ' + plugin.name + ' reported hit'); - promises.push(plugin.result(input)); + for (let i = 0; i < this.plugins.length; i++) { + let plugin = this.plugins[i] + if (plugin.test(input)) { + logger.info('* Plugin ' + plugin.name + ' reported hit') + promises.push(plugin.result(input)) } } } else { - for(let i = 0; i < this.pmPlugins.length; i++) { - var plugin = this.pmPlugins[i]; + for (let i = 0; i < this.pmPlugins.length; i++) { + let plugin = this.pmPlugins[i] - if(plugin.test(input)) { - logger.info('* Plugin ' + plugin.name + ' reported hit'); - promises.push(plugin.result(input)); + if (plugin.test(input)) { + logger.info('* Plugin ' + plugin.name + ' reported hit') + promises.push(plugin.result(input)) } } } - return Promise.all(promises); + return Promise.all(promises) } - } // export default BasePlugin; -module.exports = PluginManager; +module.exports = PluginManager diff --git a/plugins/pmusers.js b/plugins/pmusers.js index fa0d391..d5f2fce 100644 --- a/plugins/pmusers.js +++ b/plugins/pmusers.js @@ -1,31 +1,26 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var BasePlugin = require('./base.js') class Users extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Users'; + constructor (config) { + super(config) + this.name = 'Users' } - test(input) { - var res = null; - if (res = input.match(/.*/i)) { - return true; + test (input) { + if (input.match(/.*/i)) { + return true } - return false; + return false } - result(input) { + result (input) { // Different cases - let info = ''; - info += 'Hei! Olen ' + this.config.irc.nick + '!' + '\n'; - info += 'Tarjoan yksityisviestien kautta ominaisuuksia!' + '\n'; - info += 'Voidaksesi käyttää niitä, sinun on rekisteröidyttävä lähettämällä viesti \".rekisteröi\".'; - return info; + let info = '' + info += 'Hei! Olen ' + this.config.irc.nick + '!' + '\n' + info += 'Tarjoan yksityisviestien kautta ominaisuuksia!' + '\n' + info += 'Voidaksesi käyttää niitä, sinun on rekisteröidyttävä lähettämällä viesti ".rekisteröi".' + return info } - } -module.exports = Users; +module.exports = Users diff --git a/plugins/pvm.js b/plugins/pvm.js index c58b3bc..09bc7e4 100644 --- a/plugins/pvm.js +++ b/plugins/pvm.js @@ -78,7 +78,7 @@ class Pwm extends BasePlugin { const $ = cheerio.load(data[0]) let names = [] - let names_ = $('.text p').children('a').each(function (i, elem) { + $('.text p').children('a').each(function (i, elem) { names.push($(this).text()) }) diff --git a/plugins/twitter.js b/plugins/twitter.js index 726eb72..183312a 100644 --- a/plugins/twitter.js +++ b/plugins/twitter.js @@ -1,69 +1,65 @@ -var Promise = require('promise'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var Promise = require('promise') +var BasePlugin = require('./base.js') class Twitter extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Twitter'; - this.config = config; - } - - test(input) { - // Kernel version - var res = null; - if (res = input.match(/http(s)?:\/\/(www\.)?((twitter\.com\/([a-zA-Z0-9_-]*)\/status\/([a-zA-Z0-9_-]*)))/)) { - return true; - } - return false; - + constructor (config) { + super(config) + this.name = 'Twitter' + this.config = config } - getTweet(statusId) { - var Twitter = require('twitter'); + test (input) { + // Kernel version + if (input.match(/http(s)?:\/\/(www\.)?((twitter\.com\/([a-zA-Z0-9_-]*)\/status\/([a-zA-Z0-9_-]*)))/)) { + return true + } + return false + } + + getTweet (statusId) { + var Twitter = require('twitter') var client = new Twitter({ consumer_key: this.config.keys.twitter.consumerKey, consumer_secret: this.config.keys.twitter.consumerSecret, access_token_key: '', access_token_secret: '' - }); - var promise = new Promise(function(resolve, reject) { - client.get('statuses/show/' + statusId, function(error, tweet, response) { - if(!error) { - var user = tweet.user.screen_name; - var time = tweet.created_at; - var dateTime = new Date(time); - var dateTimeLocale = dateTime.toLocaleDateString('fi-FI') + ' ' + dateTime.getHours() + '.' + dateTime.getMinutes(); - var str = '@' + user + ': "' + tweet.text + '" ('+ dateTimeLocale +')'; - str = str.replace(/(?:\r\n|\r|\n)/g, ' '); - - resolve(str); - } else { - reject(); - } - }); + }) + var promise = new Promise(function (resolve, reject) { + client.get('statuses/show/' + statusId, function (error, tweet, response) { + if (!error) { + var user = tweet.user.screen_name + var time = tweet.created_at + var dateTime = new Date(time) + var dateTimeLocale = dateTime.toLocaleDateString('fi-FI') + ' ' + dateTime.getHours() + '.' + dateTime.getMinutes() + var str = '@' + user + ': "' + tweet.text + '" (' + dateTimeLocale + ')' + str = str.replace(/(?:\r\n|\r|\n)/g, ' ') - }); - return promise; + resolve(str) + } else { + reject(new Error()) + } + }) + }) + return promise } - result(input) { - var that = this; - var resultPromise = new Promise(function(resultResolve, resultReject) { - var res = null; - if (res = input.match(/http(s)?:\/\/(www\.)?((twitter\.com\/([a-zA-Z0-9_-]*)\/status\/([a-zA-Z0-9_-]*)))/)) { - var status = res[6]; - that.getTweet(status).then(function(tweet) { - resultResolve('Twiitti: ' + tweet); - }, function(error) { - resultReject('Twiitti: Jokin virhe tapahtui'); - }); + result (input) { + var that = this + var resultPromise = new Promise(function (resolve, reject) { + var res = input.match(/http(s)?:\/\/(www\.)?((twitter\.com\/([a-zA-Z0-9_-]*)\/status\/([a-zA-Z0-9_-]*)))/) + if (res !== null) { + var status = res[6] + that.getTweet(status).then(function (tweet) { + resolve('Twiitti: ' + tweet) + }, function () { + reject(new Error('Twiitti: Jokin virhe tapahtui')) + }) } else { - resultReject('Twiitti: Jokin virhe tapahtui'); + reject(new Error('Twiitti: Jokin virhe tapahtui')) } - }); - return resultPromise; + }) + return resultPromise } } -module.exports = Twitter; +module.exports = Twitter diff --git a/plugins/weather.js b/plugins/weather.js index 7b31bb8..b724fdf 100644 --- a/plugins/weather.js +++ b/plugins/weather.js @@ -1,14 +1,14 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var Promise = require('promise') +var requestPromise = require('./helpers/requestPromise.js') +var BasePlugin = require('./base.js') +const logger = require('../logger') class Weather extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Weather'; + constructor (config) { + super(config) + this.name = 'Weather' - this.apikey = config.keys.owm.apiKey; + this.apikey = config.keys.owm.apiKey this.iconCodeToText = { '01d': 'selkeää', '02d': 'puolipilvistä', @@ -28,158 +28,153 @@ class Weather extends BasePlugin { '11n': 'ukkostaa', '13n': 'lumisadetta', '50n': 'sumua' - }; - } - - test(input) { - var res = null; - if (res = input.match(/^\.saa(.*)/i)) { - return true; } - return false; } - getTemperature(city, code) { - var language = 'fi'; + test (input) { + if (input.match(/^\.saa(.*)/i)) { + return true + } + return false + } + + getTemperature (city, code) { + var language = 'fi' var urlArgs = { 'q': city, 'lang': language, 'APPID': this.apikey - }; - var url = 'http://api.openweathermap.org/data/2.5/weather'; - var promise = requestPromise(url, urlArgs); + } + var url = 'http://api.openweathermap.org/data/2.5/weather' + var promise = requestPromise(url, urlArgs) - return promise; + return promise } - getTemperatures(cities, code) { - logger.info('getting temperatures ', cities, code); - if(typeof code === 'undefined') { - code = 'fi'; + getTemperatures (cities, code) { + logger.info('getting temperatures ', cities, code) + if (typeof code === 'undefined') { + code = 'fi' } - var language = 'fi'; + var language = 'fi' - var idList = ''; - for(var city in cities) { - idList += cities[city] + ','; + var idList = '' + for (var city in cities) { + idList += cities[city] + ',' } - idList = idList.substring(0,idList.length - 1); + idList = idList.substring(0, idList.length - 1) var urlArgs = { 'id': idList, 'lang': language, 'APPID': this.apikey - }; - var url = 'http://api.openweathermap.org/data/2.5/group'; - var promise = requestPromise(url, urlArgs); + } + var url = 'http://api.openweathermap.org/data/2.5/group' + var promise = requestPromise(url, urlArgs) - return promise; + return promise } - getPenaTemperatures(start, stop, limit) { - logger.info('getting pena', start, stop, limit); - var d = new Date(); - var urlArgs = {}; + getPenaTemperatures (start, stop, limit) { + logger.info('getting pena', start, stop, limit) + var urlArgs = {} - if(typeof limit === 'undefined') { - limit = 20; + if (typeof limit === 'undefined') { + limit = 1 } - urlArgs.limit = limit; + urlArgs.limit = limit - if(typeof start !== 'undefined' && typeof stop !== 'undefined') { - urlArgs.limit = limit; - urlArgs.start = start; - urlArgs.stop = stop; + if (typeof start !== 'undefined' && typeof stop !== 'undefined') { + urlArgs.limit = limit + urlArgs.start = start + urlArgs.stop = stop } - var url = 'http://masa.dy.fi/api/temperature.php'; + var url = 'http://masa.dy.fi/api/temperature.php' - var promise = requestPromise(url, urlArgs); + var promise = requestPromise(url, urlArgs) - return promise; + return promise } - getTemperatureString(owmCityIds) { - let that = this; - var promise = new Promise(function(resolve, reject) { + getTemperatureString (owmCityIds) { + let that = this + var promise = new Promise(function (resolve, reject) { Promise.all([ that.getTemperatures(owmCityIds), that.getPenaTemperatures() - ]).then(function(results) { - var resultString = ''; + ]).then(function (results) { + var resultString = '' // OWM - results[0].list.forEach(function(data) { - var city = data.name; - var temp = (data.main.temp-273.15).toFixed(1); - var code = data.weather[0].icon; + results[0].list.forEach(function (data) { + var city = data.name + var temp = (data.main.temp - 273.15).toFixed(1) + var code = data.weather[0].icon - resultString += '' + city + ' ('+temp+' °C, '+that.iconCodeToText[code]+'), '; - }); + resultString += '' + city + ' (' + temp + ' °C, ' + that.iconCodeToText[code] + '), ' + }) - if(results[1].length > 0) { - var temp = Number(results[1][0].temp).toFixed(1); - resultString += 'Aura (' + temp + ' °C)'; + if (results[1].length > 0) { + var temp = Number(results[1][0].temp).toFixed(1) + resultString += 'Aura (' + temp + ' °C)' } - resolve(resultString); - - }, (str) => reject(str)); - }); - return promise; + resolve(resultString) + }, (str) => reject(str)) + }) + return promise } - result(input) { + result (input) { // Different cases - let that = this; - - var resultPromise = new Promise(function(resultResolve, resultReject) { - + let that = this + var resultPromise = new Promise(function (resolve, reject) { if (input.match(/^\.sää$/i) || input.match(/^\.saa$/i)) { - that.getTemperatureString(that.config.owmCityIds).then(function(str) { - resultResolve('Sää: ' + str); - }, function(str) { - resultReject(str) - }); + that.getTemperatureString(that.config.owmCityIds).then(function (str) { + resolve('Sää: ' + str) + }, function (str) { + reject(new Error(str)) + }) } - var res = null; // Weather - if (res = input.match(/^\.s(ää|aa) ([^0-9]+)$/i)) { - //console.log('kaupunki', res[1]); - that.getTemperature(res[2]).then(function(result) { - //console.log(result); - if(result.cod === '404') { - //console.log('Eioo: ' + res[1]); - client.say(to, 'Eioo: ' + res[2]); + var res = input.match(/^\.s(ää|aa) ([^0-9]+)$/i) + if (res !== null) { + // console.log('kaupunki', res[1]); + that.getTemperature(res[2]).then(function (result) { + // console.log(result); + if (result.code === '404') { + // console.log('Eioo: ' + res[1]); + // client.say(to, 'Eioo: ' + res[2]) + resolve('Eioo: ' + res[2]) } else { - var city = result.name; - var country = result.sys.country; - var temp = (result.main.temp-273.15).toFixed(1); - var code = result.weather[0].icon; - var sunriseDate = new Date(result.sys.sunrise*1000); - var sunsetDate = new Date(result.sys.sunset*1000); + var city = result.name + var country = result.sys.country + var temp = (result.main.temp - 273.15).toFixed(1) + var code = result.weather[0].icon - var sunrise = sunriseDate.getHours() + '.' + sunriseDate.getMinutes(); - var sunset = sunsetDate.getHours() + '.' + sunsetDate.getMinutes(); + // var sunriseDate = new Date(result.sys.sunrise * 1000) + // var sunsetDate = new Date(result.sys.sunset * 1000) + // var sunrise = sunriseDate.getHours() + '.' + sunriseDate.getMinutes() + // var sunset = sunsetDate.getHours() + '.' + sunsetDate.getMinutes() - var humidity = result.main.humidity; - var pressure = result.main.pressure; + var humidity = result.main.humidity + var pressure = result.main.pressure - var windspeed = result.wind.speed; + var windspeed = result.wind.speed - let str = 'Sää: '+city+', '+country+' ('+temp+' °C, '+ that.iconCodeToText[code] +', ilmankosteus: '+humidity+' %, ilmanpaine: '+pressure+' hPa, tuulen nopeus: '+windspeed+' m/s)'; - resultResolve('Sää: ' + str); + let str = 'Sää: ' + city + ', ' + country + ' (' + temp + ' °C, ' + that.iconCodeToText[code] + ', ilmankosteus: ' + humidity + ' %, ilmanpaine: ' + pressure + ' hPa, tuulen nopeus: ' + windspeed + ' m/s)' + resolve('Sää: ' + str) } - }, function(error) { - logger.error('ERROR ',error); - resultResolve('Oho! Tapahtui virhe. Yritä myöhemmin uudelleen...'); - }); + }, function (error) { + logger.error('ERROR ', error) + resolve('Oho! Tapahtui virhe. Yritä myöhemmin uudelleen...') + }) } - }); - return resultPromise; + }) + return resultPromise } - } -module.exports = Weather; +module.exports = Weather diff --git a/plugins/youtube.js b/plugins/youtube.js index 0b1fee8..9235666 100644 --- a/plugins/youtube.js +++ b/plugins/youtube.js @@ -1,66 +1,65 @@ -var Promise = require('promise'); -var requestPromise = require('./helpers/requestPromise.js'); -var BasePlugin = require('./base.js'); -var logger = require('winston'); +var Promise = require('promise') +var BasePlugin = require('./base.js') +const logger = require('../logger') class Youtube extends BasePlugin { - constructor(config) { - super(config); - this.name = 'Youtube'; - this.config = config; + constructor (config) { + super(config) + this.name = 'Youtube' + this.config = config } - test(input) { - // Kernel version - var res = null; - if (res = input.match(/https?:\/\/(?:www\.)?(?:(?:youtu\.be\/([\w-]+))|(?:(?:youtube\.com\/watch\?(?:[\w=#-]+&)*v=)([\w-]+)))/i)) { - return true; - } - return false; - + test (input) { + // Kernel version + if (input.match(/https?:\/\/(?:www\.)?(?:(?:youtu\.be\/([\w-]+))|(?:(?:youtube\.com\/watch\?(?:[\w=#-]+&)*v=)([\w-]+)))/i)) { + return true + } + return false } - getYoutubeResult(id, resolve, reject) { - if(typeof id !== 'undefined') { - var googleapi = require('./helpers/googleapi.js')(this.config); - googleapi.getYoutubeVideoById(id).then(function(result) { - var resultString = 'Youtube: '; - resultString += result.title; - resultString += ', esittäjänä ' + result.channelTitle; - if(typeof result.statistics !== 'undefined') { - var rotten = (Number(result.statistics.likeCount)/(Number(result.statistics.likeCount)+Number(result.statistics.dislikeCount))).toFixed(2); - resultString += ' ('+result.duration+', '+ result.statistics.viewCount +' katselukertaa, '+rotten*100+'% tykätty, '+result.url+' )'; + getYoutubeResult (id, resolve, reject) { + if (typeof id !== 'undefined') { + var googleapi = require('./helpers/googleapi.js')(this.config) + googleapi.getYoutubeVideoById(id).then(function (result) { + var resultString = 'Youtube: ' + resultString += result.title + resultString += ', esittäjänä ' + result.channelTitle + if (typeof result.statistics !== 'undefined') { + var rotten = (Number(result.statistics.likeCount) / (Number(result.statistics.likeCount) + Number(result.statistics.dislikeCount))).toFixed(2) + resultString += ' (' + result.duration + ', ' + result.statistics.viewCount + ' katselukertaa, ' + rotten * 100 + '% tykätty, ' + result.url + ' )' } - resolve(resultString); - }, function(err) { - logger.info('Error', err); - reject('Youtube: jokin meni pieleen...'); - }); - } else { - reject('Youtube: jokin meni pahasti pieleen...'); - } + resolve(resultString) + }, function (err) { + logger.info('Error', err) + reject('Youtube: jokin meni pieleen...') + }) + } else { + reject('Youtube: jokin meni pahasti pieleen...') + } } - result(input) { - var that = this; - var resultPromise = new Promise(function(resultResolve, resultReject) { - var res = null; + result (input) { + var that = this + var resultPromise = new Promise(function (resolve, reject) { + var res = input.match(/https?:\/\/(?:www\.)?(?:(?:youtu\.be\/([\w-]+)))/i) - if (res = input.match(/https?:\/\/(?:www\.)?(?:(?:youtu\.be\/([\w-]+)))/i)) { - var id = res[1]; + if (res !== null) { + var id = res[1] - that.getYoutubeResult(id, resultResolve, resultReject); - } else if (res = input.match(/https?:\/\/(?:www\.)?(?:(?:youtube\.com\/watch\?(?:[\w=#-]+&)*v=)([\w-]+))/i)) { - var id = res[1]; + that.getYoutubeResult(id, resolve, reject) + } else { + res = input.match(/https?:\/\/(?:www\.)?(?:(?:youtube\.com\/watch\?(?:[\w=#-]+&)*v=)([\w-]+))/i) - that.getYoutubeResult(id, resultResolve, resultReject); - } else { - resultReject('Youtube: jokin meni pieleen (ei osunut)...'); - } - }); + if (res !== null) { + that.getYoutubeResult(res[1], resolve, reject) + } else { + reject(new Error('Youtube: jokin meni pieleen (ei osunut)...')) + } + } + }) - return resultPromise; + return resultPromise } } -module.exports = Youtube; +module.exports = Youtube