Commit 0fb610e0ed0fbdc4728bb3012acabcb5ef0e050f

Authored by Galileo Sanchez
1 parent 2bc79edc

cambios para paso a produccion

  1 +module.exports = {
  2 + "env": {
  3 + "es6": true,
  4 + "node": true
  5 + },
  6 + "extends": [
  7 + "eslint:recommended",
  8 + "node"
  9 + ],
  10 + "parserOptions": {
  11 + "ecmaVersion": 2016
  12 + },
  13 + "rules": {
  14 + "indent": [
  15 + "error",
  16 + 2
  17 + ],
  18 + "import/no-commonjs": "off",
  19 + "import/no-nodejs-modules": "off",
  20 + "linebreak-style": [
  21 + "error",
  22 + "unix"
  23 + ],
  24 + "quotes": [
  25 + "error",
  26 + "single"
  27 + ],
  28 + "semi": [
  29 + "error",
  30 + "never"
  31 + ],
  32 + "comma-dangle": ["error", {
  33 + "arrays": "only-multiline",
  34 + "objects": "only-multiline",
  35 + "functions": "never"
  36 + }]
  37 +
  38 + }
  39 +};
1 require('dotenv').load() 1 require('dotenv').load()
  2 +const logger = require('./logger')
2 const createError = require('http-errors'); 3 const createError = require('http-errors');
3 const express = require('express'); 4 const express = require('express');
4 const path = require('path'); 5 const path = require('path');
5 const cookieParser = require('cookie-parser'); 6 const cookieParser = require('cookie-parser');
6 -const logger = require('morgan'); 7 +const morgan = require('morgan');
7 8
8 const createdb = require('./db/createdb') 9 const createdb = require('./db/createdb')
9 const tokenGetter = require('./daemons/getToken') 10 const tokenGetter = require('./daemons/getToken')
@@ -17,7 +18,7 @@ app.set('views', path.join(__dirname, 'views')); @@ -17,7 +18,7 @@ app.set('views', path.join(__dirname, 'views'));
17 app.set('view engine', 'pug'); 18 app.set('view engine', 'pug');
18 19
19 20
20 -app.use(logger('dev')); 21 +app.use(morgan('dev'));
21 app.use(express.json()); 22 app.use(express.json());
22 app.use(express.urlencoded({ extended: false })); 23 app.use(express.urlencoded({ extended: false }));
23 app.use(cookieParser()); 24 app.use(cookieParser());
@@ -32,11 +33,8 @@ app.use(function(req, res, next) { @@ -32,11 +33,8 @@ app.use(function(req, res, next) {
32 33
33 // error handler 34 // error handler
34 app.use(function(err, req, res, next) { 35 app.use(function(err, req, res, next) {
35 - // set locals, only providing error in development  
36 - res.locals.message = err.message;  
37 - res.locals.error = req.app.get('env') === 'development' ? err : {};  
38 -  
39 // render the error page 36 // render the error page
  37 + logger.error(err)
40 res.status(err.status || 500); 38 res.status(err.status || 500);
41 res.json({ 39 res.json({
42 error: { 40 error: {
@@ -62,6 +60,7 @@ const dbnames = [ @@ -62,6 +60,7 @@ const dbnames = [
62 dbnames.forEach(name => 60 dbnames.forEach(name =>
63 createdb(name) 61 createdb(name)
64 .then((result) => `Create DB "${name}" returned ${JSON.stringify(result)}`) 62 .then((result) => `Create DB "${name}" returned ${JSON.stringify(result)}`)
  63 + .catch(logger.error)
65 ) 64 )
66 65
67 // INICIALIZACIÓN DE LOS DEMONIOS 66 // INICIALIZACIÓN DE LOS DEMONIOS
@@ -72,6 +71,9 @@ const token$ = tokenGetter( @@ -72,6 +71,9 @@ const token$ = tokenGetter(
72 process.env.TOKEN_INTERVAL, 71 process.env.TOKEN_INTERVAL,
73 ) 72 )
74 73
75 -token$.log()  
76 -token$.onError(console.log)  
77 token$.onValue(saveToken) 74 token$.onValue(saveToken)
  75 +token$.onError((err) => {
  76 + console.log(err)
  77 + console.log('el error se manejó correctamente')
  78 +})
  79 +token$.log()
@@ -4,49 +4,49 @@ @@ -4,49 +4,49 @@
4 * Module dependencies. 4 * Module dependencies.
5 */ 5 */
6 6
7 -var app = require('../app');  
8 -var debug = require('debug')('server:server');  
9 -var http = require('http'); 7 +const app = require('../app')
  8 +const http = require('http')
  9 +const logger = require('../logger')
10 10
11 /** 11 /**
12 * Get port from environment and store in Express. 12 * Get port from environment and store in Express.
13 */ 13 */
14 14
15 -var port = normalizePort(process.env.PORT || '3000');  
16 -app.set('port', port); 15 +const port = normalizePort(process.env.PORT || '3000')
  16 +app.set('port', port)
17 17
18 /** 18 /**
19 * Create HTTP server. 19 * Create HTTP server.
20 */ 20 */
21 21
22 -var server = http.createServer(app); 22 +const server = http.createServer(app)
23 23
24 /** 24 /**
25 * Listen on provided port, on all network interfaces. 25 * Listen on provided port, on all network interfaces.
26 */ 26 */
27 27
28 -server.listen(port);  
29 -server.on('error', onError);  
30 -server.on('listening', onListening); 28 +server.listen(port)
  29 +server.on('error', onError)
  30 +server.on('listening', onListening)
31 31
32 /** 32 /**
33 * Normalize a port into a number, string, or false. 33 * Normalize a port into a number, string, or false.
34 */ 34 */
35 35
36 function normalizePort(val) { 36 function normalizePort(val) {
37 - var port = parseInt(val, 10); 37 + const port = parseInt(val, 10)
38 38
39 if (isNaN(port)) { 39 if (isNaN(port)) {
40 // named pipe 40 // named pipe
41 - return val; 41 + return val
42 } 42 }
43 43
44 if (port >= 0) { 44 if (port >= 0) {
45 // port number 45 // port number
46 - return port; 46 + return port
47 } 47 }
48 48
49 - return false; 49 + return false
50 } 50 }
51 51
52 /** 52 /**
@@ -55,25 +55,23 @@ function normalizePort(val) { @@ -55,25 +55,23 @@ function normalizePort(val) {
55 55
56 function onError(error) { 56 function onError(error) {
57 if (error.syscall !== 'listen') { 57 if (error.syscall !== 'listen') {
58 - throw error; 58 + throw error
59 } 59 }
60 60
61 - var bind = typeof port === 'string' 61 + const bind = typeof port === 'string'
62 ? 'Pipe ' + port 62 ? 'Pipe ' + port
63 - : 'Port ' + port; 63 + : 'Port ' + port
64 64
65 // handle specific listen errors with friendly messages 65 // handle specific listen errors with friendly messages
66 switch (error.code) { 66 switch (error.code) {
67 - case 'EACCES':  
68 - console.error(bind + ' requires elevated privileges');  
69 - process.exit(1);  
70 - break;  
71 - case 'EADDRINUSE':  
72 - console.error(bind + ' is already in use');  
73 - process.exit(1);  
74 - break;  
75 - default:  
76 - throw error; 67 + case 'EACCES':
  68 + logger.error(bind + ' requires elevated privileges')
  69 + throw error
  70 + case 'EADDRINUSE':
  71 + logger.error(bind + ' is already in use')
  72 + throw error
  73 + default:
  74 + throw error
77 } 75 }
78 } 76 }
79 77
@@ -82,9 +80,9 @@ function onError(error) { @@ -82,9 +80,9 @@ function onError(error) {
82 */ 80 */
83 81
84 function onListening() { 82 function onListening() {
85 - var addr = server.address();  
86 - var bind = typeof addr === 'string' 83 + const addr = server.address()
  84 + const bind = typeof addr === 'string'
87 ? 'pipe ' + addr 85 ? 'pipe ' + addr
88 - : 'port ' + addr.port;  
89 - debug('Listening on ' + bind); 86 + : 'port ' + addr.port
  87 + logger.info('Listening on ' + bind)
90 } 88 }
@@ -9,6 +9,13 @@ const getToken = require('../lib/getToken') @@ -9,6 +9,13 @@ const getToken = require('../lib/getToken')
9 // Retorna un Stream que emite el nuevo token cada interval 9 // Retorna un Stream que emite el nuevo token cada interval
10 module.exports = (authToken, clientSecret, interval) => 10 module.exports = (authToken, clientSecret, interval) =>
11 Bacon.interval(interval, { clientSecret }) 11 Bacon.interval(interval, { clientSecret })
12 - .merge(Bacon.once({ clientSecret }))  
13 - .map(payload => getToken(authToken, payload))  
14 - .flatMap(Bacon.fromPromise) 12 + .merge(Bacon.once({ clientSecret }))
  13 + .map(payload => getToken(authToken, payload))
  14 + // .flatMap(promise =>
  15 + // Bacon.fromBinder(sink => promise.then(
  16 + // success=> sink([new Bacon.Next(success), new Bacon.End()]),
  17 + // error => error
  18 + // ))
  19 + // )
  20 + .flatMap(Bacon.fromPromise)
  21 + .log()
1 const su = require('superagent') 1 const su = require('superagent')
2 -const { prop, contains } = require('ramda')  
3 2
4 const headers = { 3 const headers = {
5 'Accept': 'application/json', 4 'Accept': 'application/json',
@@ -10,19 +9,19 @@ const dbhost = process.env.COUCHDB_URL @@ -10,19 +9,19 @@ const dbhost = process.env.COUCHDB_URL
10 9
11 const createDB = (dbname) => 10 const createDB = (dbname) =>
12 su.put(`${dbhost}/${dbname}`) 11 su.put(`${dbhost}/${dbname}`)
13 - .set(headers)  
14 - .then((result) => result.body) 12 + .set(headers)
  13 + .then((result) => result.body)
15 14
16 module.exports = (dbname) => 15 module.exports = (dbname) =>
17 su.head(`${dbhost}/${dbname}`) 16 su.head(`${dbhost}/${dbname}`)
18 - .then(  
19 - (result) => result.status === 200,  
20 - (error) => {  
21 - if (error.status === 404) return false  
22 - throw error  
23 - }  
24 - )  
25 - .then((exists) => {  
26 - if(exists) return { "ok": true }  
27 - return createDB(dbname)  
28 - }) 17 + .then(
  18 + (result) => result.status === 200,
  19 + (error) => {
  20 + if (error.status === 404) return false
  21 + throw error
  22 + }
  23 + )
  24 + .then((exists) => {
  25 + if(exists) return { ok: true }
  26 + return createDB(dbname)
  27 + })
  1 +const debug = require('debug')
  2 +module.exports = {
  3 + info: debug('jaikuaamina:info'),
  4 + error: debug('jaikuaamina:error'),
  5 + debug: debug('jaikuaamina:debug'),
  6 + warning: debug('jaikuaamina:warning'),
  7 +}
@@ -4,6 +4,138 @@ @@ -4,6 +4,138 @@
4 "lockfileVersion": 1, 4 "lockfileVersion": 1,
5 "requires": true, 5 "requires": true,
6 "dependencies": { 6 "dependencies": {
  7 + "@babel/code-frame": {
  8 + "version": "7.0.0",
  9 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
  10 + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
  11 + "dev": true,
  12 + "requires": {
  13 + "@babel/highlight": "^7.0.0"
  14 + }
  15 + },
  16 + "@babel/generator": {
  17 + "version": "7.1.6",
  18 + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz",
  19 + "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==",
  20 + "dev": true,
  21 + "requires": {
  22 + "@babel/types": "^7.1.6",
  23 + "jsesc": "^2.5.1",
  24 + "lodash": "^4.17.10",
  25 + "source-map": "^0.5.0",
  26 + "trim-right": "^1.0.1"
  27 + }
  28 + },
  29 + "@babel/helper-function-name": {
  30 + "version": "7.1.0",
  31 + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
  32 + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
  33 + "dev": true,
  34 + "requires": {
  35 + "@babel/helper-get-function-arity": "^7.0.0",
  36 + "@babel/template": "^7.1.0",
  37 + "@babel/types": "^7.0.0"
  38 + }
  39 + },
  40 + "@babel/helper-get-function-arity": {
  41 + "version": "7.0.0",
  42 + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
  43 + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
  44 + "dev": true,
  45 + "requires": {
  46 + "@babel/types": "^7.0.0"
  47 + }
  48 + },
  49 + "@babel/helper-split-export-declaration": {
  50 + "version": "7.0.0",
  51 + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
  52 + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
  53 + "dev": true,
  54 + "requires": {
  55 + "@babel/types": "^7.0.0"
  56 + }
  57 + },
  58 + "@babel/highlight": {
  59 + "version": "7.0.0",
  60 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
  61 + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
  62 + "dev": true,
  63 + "requires": {
  64 + "chalk": "^2.0.0",
  65 + "esutils": "^2.0.2",
  66 + "js-tokens": "^4.0.0"
  67 + }
  68 + },
  69 + "@babel/parser": {
  70 + "version": "7.1.6",
  71 + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz",
  72 + "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==",
  73 + "dev": true
  74 + },
  75 + "@babel/template": {
  76 + "version": "7.1.2",
  77 + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz",
  78 + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==",
  79 + "dev": true,
  80 + "requires": {
  81 + "@babel/code-frame": "^7.0.0",
  82 + "@babel/parser": "^7.1.2",
  83 + "@babel/types": "^7.1.2"
  84 + }
  85 + },
  86 + "@babel/traverse": {
  87 + "version": "7.1.6",
  88 + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz",
  89 + "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==",
  90 + "dev": true,
  91 + "requires": {
  92 + "@babel/code-frame": "^7.0.0",
  93 + "@babel/generator": "^7.1.6",
  94 + "@babel/helper-function-name": "^7.1.0",
  95 + "@babel/helper-split-export-declaration": "^7.0.0",
  96 + "@babel/parser": "^7.1.6",
  97 + "@babel/types": "^7.1.6",
  98 + "debug": "^4.1.0",
  99 + "globals": "^11.1.0",
  100 + "lodash": "^4.17.10"
  101 + },
  102 + "dependencies": {
  103 + "debug": {
  104 + "version": "4.1.0",
  105 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
  106 + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
  107 + "dev": true,
  108 + "requires": {
  109 + "ms": "^2.1.1"
  110 + }
  111 + },
  112 + "ms": {
  113 + "version": "2.1.1",
  114 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
  115 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
  116 + "dev": true
  117 + }
  118 + }
  119 + },
  120 + "@babel/types": {
  121 + "version": "7.1.6",
  122 + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz",
  123 + "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==",
  124 + "dev": true,
  125 + "requires": {
  126 + "esutils": "^2.0.2",
  127 + "lodash": "^4.17.10",
  128 + "to-fast-properties": "^2.0.0"
  129 + },
  130 + "dependencies": {
  131 + "to-fast-properties": {
  132 + "version": "2.0.0",
  133 + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
  134 + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
  135 + "dev": true
  136 + }
  137 + }
  138 + },
7 "@types/babel-types": { 139 "@types/babel-types": {
8 "version": "7.0.3", 140 "version": "7.0.3",
9 "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.3.tgz", 141 "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.3.tgz",
@@ -61,6 +193,12 @@ @@ -61,6 +193,12 @@
61 } 193 }
62 } 194 }
63 }, 195 },
  196 + "acorn-jsx": {
  197 + "version": "5.0.1",
  198 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
  199 + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
  200 + "dev": true
  201 + },
64 "ajv": { 202 "ajv": {
65 "version": "5.5.2", 203 "version": "5.5.2",
66 "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", 204 "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
@@ -91,6 +229,12 @@ @@ -91,6 +229,12 @@
91 "string-width": "^2.0.0" 229 "string-width": "^2.0.0"
92 } 230 }
93 }, 231 },
  232 + "ansi-escapes": {
  233 + "version": "3.1.0",
  234 + "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
  235 + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
  236 + "dev": true
  237 + },
94 "ansi-regex": { 238 "ansi-regex": {
95 "version": "3.0.0", 239 "version": "3.0.0",
96 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 240 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
@@ -116,6 +260,15 @@ @@ -116,6 +260,15 @@
116 "normalize-path": "^2.1.1" 260 "normalize-path": "^2.1.1"
117 } 261 }
118 }, 262 },
  263 + "argparse": {
  264 + "version": "1.0.10",
  265 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
  266 + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
  267 + "dev": true,
  268 + "requires": {
  269 + "sprintf-js": "~1.0.2"
  270 + }
  271 + },
119 "arr-diff": { 272 "arr-diff": {
120 "version": "4.0.0", 273 "version": "4.0.0",
121 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 274 "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -193,6 +346,32 @@ @@ -193,6 +346,32 @@
193 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", 346 "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
194 "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" 347 "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
195 }, 348 },
  349 + "babel-eslint": {
  350 + "version": "10.0.1",
  351 + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz",
  352 + "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==",
  353 + "dev": true,
  354 + "requires": {
  355 + "@babel/code-frame": "^7.0.0",
  356 + "@babel/parser": "^7.0.0",
  357 + "@babel/traverse": "^7.0.0",
  358 + "@babel/types": "^7.0.0",
  359 + "eslint-scope": "3.7.1",
  360 + "eslint-visitor-keys": "^1.0.0"
  361 + },
  362 + "dependencies": {
  363 + "eslint-scope": {
  364 + "version": "3.7.1",
  365 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
  366 + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
  367 + "dev": true,
  368 + "requires": {
  369 + "esrecurse": "^4.1.0",
  370 + "estraverse": "^4.1.1"
  371 + }
  372 + }
  373 + }
  374 + },
196 "babel-runtime": { 375 "babel-runtime": {
197 "version": "6.26.0", 376 "version": "6.26.0",
198 "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 377 "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
@@ -428,6 +607,12 @@ @@ -428,6 +607,12 @@
428 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 607 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
429 "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" 608 "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
430 }, 609 },
  610 + "builtin-modules": {
  611 + "version": "1.1.1",
  612 + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
  613 + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
  614 + "dev": true
  615 + },
431 "bytes": { 616 "bytes": {
432 "version": "3.0.0", 617 "version": "3.0.0",
433 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 618 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -450,6 +635,21 @@ @@ -450,6 +635,21 @@
450 "unset-value": "^1.0.0" 635 "unset-value": "^1.0.0"
451 } 636 }
452 }, 637 },
  638 + "caller-path": {
  639 + "version": "0.1.0",
  640 + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
  641 + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
  642 + "dev": true,
  643 + "requires": {
  644 + "callsites": "^0.2.0"
  645 + }
  646 + },
  647 + "callsites": {
  648 + "version": "0.2.0",
  649 + "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
  650 + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
  651 + "dev": true
  652 + },
453 "camelcase": { 653 "camelcase": {
454 "version": "1.2.1", 654 "version": "1.2.1",
455 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 655 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
@@ -494,6 +694,12 @@ @@ -494,6 +694,12 @@
494 "is-regex": "^1.0.3" 694 "is-regex": "^1.0.3"
495 } 695 }
496 }, 696 },
  697 + "chardet": {
  698 + "version": "0.7.0",
  699 + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
  700 + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
  701 + "dev": true
  702 + },
497 "chokidar": { 703 "chokidar": {
498 "version": "2.0.3", 704 "version": "2.0.3",
499 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", 705 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz",
@@ -520,6 +726,12 @@ @@ -520,6 +726,12 @@
520 "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", 726 "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
521 "dev": true 727 "dev": true
522 }, 728 },
  729 + "circular-json": {
  730 + "version": "0.3.3",
  731 + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
  732 + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
  733 + "dev": true
  734 + },
523 "class-utils": { 735 "class-utils": {
524 "version": "0.3.6", 736 "version": "0.3.6",
525 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 737 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -557,6 +769,21 @@ @@ -557,6 +769,21 @@
557 "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", 769 "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
558 "dev": true 770 "dev": true
559 }, 771 },
  772 + "cli-cursor": {
  773 + "version": "2.1.0",
  774 + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
  775 + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
  776 + "dev": true,
  777 + "requires": {
  778 + "restore-cursor": "^2.0.0"
  779 + }
  780 + },
  781 + "cli-width": {
  782 + "version": "2.2.0",
  783 + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
  784 + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
  785 + "dev": true
  786 + },
560 "cliui": { 787 "cliui": {
561 "version": "2.1.0", 788 "version": "2.1.0",
562 "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 789 "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
@@ -641,6 +868,12 @@ @@ -641,6 +868,12 @@
641 "babylon": "^6.18.0" 868 "babylon": "^6.18.0"
642 } 869 }
643 }, 870 },
  871 + "contains-path": {
  872 + "version": "0.1.0",
  873 + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
  874 + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
  875 + "dev": true
  876 + },
644 "content-disposition": { 877 "content-disposition": {
645 "version": "0.5.2", 878 "version": "0.5.2",
646 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 879 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
@@ -763,6 +996,12 @@ @@ -763,6 +996,12 @@
763 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 996 "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
764 "dev": true 997 "dev": true
765 }, 998 },
  999 + "deep-is": {
  1000 + "version": "0.1.3",
  1001 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
  1002 + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
  1003 + "dev": true
  1004 + },
766 "define-property": { 1005 "define-property": {
767 "version": "2.0.2", 1006 "version": "2.0.2",
768 "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 1007 "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -825,6 +1064,15 @@ @@ -825,6 +1064,15 @@
825 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 1064 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
826 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 1065 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
827 }, 1066 },
  1067 + "doctrine": {
  1068 + "version": "2.1.0",
  1069 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
  1070 + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
  1071 + "dev": true,
  1072 + "requires": {
  1073 + "esutils": "^2.0.2"
  1074 + }
  1075 + },
828 "doctypes": { 1076 "doctypes": {
829 "version": "1.1.0", 1077 "version": "1.1.0",
830 "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", 1078 "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
@@ -889,6 +1137,15 @@ @@ -889,6 +1137,15 @@
889 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1137 "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
890 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1138 "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
891 }, 1139 },
  1140 + "error-ex": {
  1141 + "version": "1.3.2",
  1142 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
  1143 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
  1144 + "dev": true,
  1145 + "requires": {
  1146 + "is-arrayish": "^0.2.1"
  1147 + }
  1148 + },
892 "escape-html": { 1149 "escape-html": {
893 "version": "1.0.3", 1150 "version": "1.0.3",
894 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1151 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -900,6 +1157,270 @@ @@ -900,6 +1157,270 @@
900 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1157 "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
901 "dev": true 1158 "dev": true
902 }, 1159 },
  1160 + "eslint": {
  1161 + "version": "5.9.0",
  1162 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.9.0.tgz",
  1163 + "integrity": "sha512-g4KWpPdqN0nth+goDNICNXGfJF7nNnepthp46CAlJoJtC5K/cLu3NgCM3AHu1CkJ5Hzt9V0Y0PBAO6Ay/gGb+w==",
  1164 + "dev": true,
  1165 + "requires": {
  1166 + "@babel/code-frame": "^7.0.0",
  1167 + "ajv": "^6.5.3",
  1168 + "chalk": "^2.1.0",
  1169 + "cross-spawn": "^6.0.5",
  1170 + "debug": "^4.0.1",
  1171 + "doctrine": "^2.1.0",
  1172 + "eslint-scope": "^4.0.0",
  1173 + "eslint-utils": "^1.3.1",
  1174 + "eslint-visitor-keys": "^1.0.0",
  1175 + "espree": "^4.0.0",
  1176 + "esquery": "^1.0.1",
  1177 + "esutils": "^2.0.2",
  1178 + "file-entry-cache": "^2.0.0",
  1179 + "functional-red-black-tree": "^1.0.1",
  1180 + "glob": "^7.1.2",
  1181 + "globals": "^11.7.0",
  1182 + "ignore": "^4.0.6",
  1183 + "imurmurhash": "^0.1.4",
  1184 + "inquirer": "^6.1.0",
  1185 + "is-resolvable": "^1.1.0",
  1186 + "js-yaml": "^3.12.0",
  1187 + "json-stable-stringify-without-jsonify": "^1.0.1",
  1188 + "levn": "^0.3.0",
  1189 + "lodash": "^4.17.5",
  1190 + "minimatch": "^3.0.4",
  1191 + "mkdirp": "^0.5.1",
  1192 + "natural-compare": "^1.4.0",
  1193 + "optionator": "^0.8.2",
  1194 + "path-is-inside": "^1.0.2",
  1195 + "pluralize": "^7.0.0",
  1196 + "progress": "^2.0.0",
  1197 + "regexpp": "^2.0.1",
  1198 + "require-uncached": "^1.0.3",
  1199 + "semver": "^5.5.1",
  1200 + "strip-ansi": "^4.0.0",
  1201 + "strip-json-comments": "^2.0.1",
  1202 + "table": "^5.0.2",
  1203 + "text-table": "^0.2.0"
  1204 + },
  1205 + "dependencies": {
  1206 + "ajv": {
  1207 + "version": "6.5.5",
  1208 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
  1209 + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
  1210 + "dev": true,
  1211 + "requires": {
  1212 + "fast-deep-equal": "^2.0.1",
  1213 + "fast-json-stable-stringify": "^2.0.0",
  1214 + "json-schema-traverse": "^0.4.1",
  1215 + "uri-js": "^4.2.2"
  1216 + }
  1217 + },
  1218 + "cross-spawn": {
  1219 + "version": "6.0.5",
  1220 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
  1221 + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
  1222 + "dev": true,
  1223 + "requires": {
  1224 + "nice-try": "^1.0.4",
  1225 + "path-key": "^2.0.1",
  1226 + "semver": "^5.5.0",
  1227 + "shebang-command": "^1.2.0",
  1228 + "which": "^1.2.9"
  1229 + }
  1230 + },
  1231 + "debug": {
  1232 + "version": "4.1.0",
  1233 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
  1234 + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
  1235 + "dev": true,
  1236 + "requires": {
  1237 + "ms": "^2.1.1"
  1238 + }
  1239 + },
  1240 + "fast-deep-equal": {
  1241 + "version": "2.0.1",
  1242 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
  1243 + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
  1244 + "dev": true
  1245 + },
  1246 + "json-schema-traverse": {
  1247 + "version": "0.4.1",
  1248 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
  1249 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
  1250 + "dev": true
  1251 + },
  1252 + "ms": {
  1253 + "version": "2.1.1",
  1254 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
  1255 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
  1256 + "dev": true
  1257 + },
  1258 + "semver": {
  1259 + "version": "5.6.0",
  1260 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
  1261 + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
  1262 + "dev": true
  1263 + }
  1264 + }
  1265 + },
  1266 + "eslint-config-esnext": {
  1267 + "version": "4.0.0",
  1268 + "resolved": "https://registry.npmjs.org/eslint-config-esnext/-/eslint-config-esnext-4.0.0.tgz",
  1269 + "integrity": "sha512-UOovbox5WIgG9VSJPxtCsfwOkK96yNp8hBBi+WZ66OTr5zc7PxJCkE4MS7vON2Z1md5PNhwFHVzE9Uu+owBg1Q==",
  1270 + "dev": true,
  1271 + "requires": {
  1272 + "babel-eslint": "^10.0.1",
  1273 + "eslint": "^5.6.0",
  1274 + "eslint-plugin-babel": "^5.2.1",
  1275 + "eslint-plugin-import": "^2.14.0"
  1276 + }
  1277 + },
  1278 + "eslint-config-node": {
  1279 + "version": "4.0.0",
  1280 + "resolved": "https://registry.npmjs.org/eslint-config-node/-/eslint-config-node-4.0.0.tgz",
  1281 + "integrity": "sha512-sdr7zqVTQddLEBpsNzTFASOAk8bSbWatZqxLD9J1nBI/H83lGOknODaCCJFWMDN+36LNUMVWVWo+0LhxQJc+wg==",
  1282 + "dev": true,
  1283 + "requires": {
  1284 + "eslint": "^5.6.0",
  1285 + "eslint-config-esnext": "^4.0.0"
  1286 + }
  1287 + },
  1288 + "eslint-import-resolver-node": {
  1289 + "version": "0.3.2",
  1290 + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
  1291 + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
  1292 + "dev": true,
  1293 + "requires": {
  1294 + "debug": "^2.6.9",
  1295 + "resolve": "^1.5.0"
  1296 + }
  1297 + },
  1298 + "eslint-module-utils": {
  1299 + "version": "2.2.0",
  1300 + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
  1301 + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
  1302 + "dev": true,
  1303 + "requires": {
  1304 + "debug": "^2.6.8",
  1305 + "pkg-dir": "^1.0.0"
  1306 + }
  1307 + },
  1308 + "eslint-plugin-babel": {
  1309 + "version": "5.3.0",
  1310 + "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz",
  1311 + "integrity": "sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w==",
  1312 + "dev": true,
  1313 + "requires": {
  1314 + "eslint-rule-composer": "^0.3.0"
  1315 + }
  1316 + },
  1317 + "eslint-plugin-import": {
  1318 + "version": "2.14.0",
  1319 + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
  1320 + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
  1321 + "dev": true,
  1322 + "requires": {
  1323 + "contains-path": "^0.1.0",
  1324 + "debug": "^2.6.8",
  1325 + "doctrine": "1.5.0",
  1326 + "eslint-import-resolver-node": "^0.3.1",
  1327 + "eslint-module-utils": "^2.2.0",
  1328 + "has": "^1.0.1",
  1329 + "lodash": "^4.17.4",
  1330 + "minimatch": "^3.0.3",
  1331 + "read-pkg-up": "^2.0.0",
  1332 + "resolve": "^1.6.0"
  1333 + },
  1334 + "dependencies": {
  1335 + "doctrine": {
  1336 + "version": "1.5.0",
  1337 + "resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
  1338 + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
  1339 + "dev": true,
  1340 + "requires": {
  1341 + "esutils": "^2.0.2",
  1342 + "isarray": "^1.0.0"
  1343 + }
  1344 + }
  1345 + }
  1346 + },
  1347 + "eslint-rule-composer": {
  1348 + "version": "0.3.0",
  1349 + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz",
  1350 + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==",
  1351 + "dev": true
  1352 + },
  1353 + "eslint-scope": {
  1354 + "version": "4.0.0",
  1355 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
  1356 + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
  1357 + "dev": true,
  1358 + "requires": {
  1359 + "esrecurse": "^4.1.0",
  1360 + "estraverse": "^4.1.1"
  1361 + }
  1362 + },
  1363 + "eslint-utils": {
  1364 + "version": "1.3.1",
  1365 + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
  1366 + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
  1367 + "dev": true
  1368 + },
  1369 + "eslint-visitor-keys": {
  1370 + "version": "1.0.0",
  1371 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
  1372 + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
  1373 + "dev": true
  1374 + },
  1375 + "espree": {
  1376 + "version": "4.1.0",
  1377 + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz",
  1378 + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==",
  1379 + "dev": true,
  1380 + "requires": {
  1381 + "acorn": "^6.0.2",
  1382 + "acorn-jsx": "^5.0.0",
  1383 + "eslint-visitor-keys": "^1.0.0"
  1384 + },
  1385 + "dependencies": {
  1386 + "acorn": {
  1387 + "version": "6.0.4",
  1388 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz",
  1389 + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==",
  1390 + "dev": true
  1391 + }
  1392 + }
  1393 + },
  1394 + "esprima": {
  1395 + "version": "4.0.1",
  1396 + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
  1397 + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
  1398 + "dev": true
  1399 + },
  1400 + "esquery": {
  1401 + "version": "1.0.1",
  1402 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
  1403 + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
  1404 + "dev": true,
  1405 + "requires": {
  1406 + "estraverse": "^4.0.0"
  1407 + }
  1408 + },
  1409 + "esrecurse": {
  1410 + "version": "4.2.1",
  1411 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
  1412 + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
  1413 + "dev": true,
  1414 + "requires": {
  1415 + "estraverse": "^4.1.0"
  1416 + }
  1417 + },
  1418 + "estraverse": {
  1419 + "version": "4.2.0",
  1420 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
  1421 + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
  1422 + "dev": true
  1423 + },
903 "esutils": { 1424 "esutils": {
904 "version": "2.0.2", 1425 "version": "2.0.2",
905 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1426 "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
@@ -1043,6 +1564,28 @@ @@ -1043,6 +1564,28 @@
1043 } 1564 }
1044 } 1565 }
1045 }, 1566 },
  1567 + "external-editor": {
  1568 + "version": "3.0.3",
  1569 + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
  1570 + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
  1571 + "dev": true,
  1572 + "requires": {
  1573 + "chardet": "^0.7.0",
  1574 + "iconv-lite": "^0.4.24",
  1575 + "tmp": "^0.0.33"
  1576 + },
  1577 + "dependencies": {
  1578 + "iconv-lite": {
  1579 + "version": "0.4.24",
  1580 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
  1581 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
  1582 + "dev": true,
  1583 + "requires": {
  1584 + "safer-buffer": ">= 2.1.2 < 3"
  1585 + }
  1586 + }
  1587 + }
  1588 + },
1046 "extglob": { 1589 "extglob": {
1047 "version": "2.0.4", 1590 "version": "2.0.4",
1048 "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 1591 "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
@@ -1129,6 +1672,31 @@ @@ -1129,6 +1672,31 @@
1129 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 1672 "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
1130 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 1673 "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
1131 }, 1674 },
  1675 + "fast-levenshtein": {
  1676 + "version": "2.0.6",
  1677 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
  1678 + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
  1679 + "dev": true
  1680 + },
  1681 + "figures": {
  1682 + "version": "2.0.0",
  1683 + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
  1684 + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
  1685 + "dev": true,
  1686 + "requires": {
  1687 + "escape-string-regexp": "^1.0.5"
  1688 + }
  1689 + },
  1690 + "file-entry-cache": {
  1691 + "version": "2.0.0",
  1692 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
  1693 + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
  1694 + "dev": true,
  1695 + "requires": {
  1696 + "flat-cache": "^1.2.1",
  1697 + "object-assign": "^4.0.1"
  1698 + }
  1699 + },
1132 "fill-range": { 1700 "fill-range": {
1133 "version": "4.0.0", 1701 "version": "4.0.0",
1134 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 1702 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -1166,6 +1734,28 @@ @@ -1166,6 +1734,28 @@
1166 "unpipe": "~1.0.0" 1734 "unpipe": "~1.0.0"
1167 } 1735 }
1168 }, 1736 },
  1737 + "find-up": {
  1738 + "version": "1.1.2",
  1739 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
  1740 + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
  1741 + "dev": true,
  1742 + "requires": {
  1743 + "path-exists": "^2.0.0",
  1744 + "pinkie-promise": "^2.0.0"
  1745 + }
  1746 + },
  1747 + "flat-cache": {
  1748 + "version": "1.3.4",
  1749 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
  1750 + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
  1751 + "dev": true,
  1752 + "requires": {
  1753 + "circular-json": "^0.3.1",
  1754 + "graceful-fs": "^4.1.2",
  1755 + "rimraf": "~2.6.2",
  1756 + "write": "^0.2.1"
  1757 + }
  1758 + },
1169 "for-in": { 1759 "for-in": {
1170 "version": "1.0.2", 1760 "version": "1.0.2",
1171 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1761 "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -1217,6 +1807,12 @@ @@ -1217,6 +1807,12 @@
1217 "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", 1807 "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
1218 "dev": true 1808 "dev": true
1219 }, 1809 },
  1810 + "fs.realpath": {
  1811 + "version": "1.0.0",
  1812 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
  1813 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
  1814 + "dev": true
  1815 + },
1220 "fsevents": { 1816 "fsevents": {
1221 "version": "1.2.4", 1817 "version": "1.2.4",
1222 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", 1818 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
@@ -1237,7 +1833,8 @@ @@ -1237,7 +1833,8 @@
1237 "ansi-regex": { 1833 "ansi-regex": {
1238 "version": "2.1.1", 1834 "version": "2.1.1",
1239 "bundled": true, 1835 "bundled": true,
1240 - "dev": true 1836 + "dev": true,
  1837 + "optional": true
1241 }, 1838 },
1242 "aproba": { 1839 "aproba": {
1243 "version": "1.2.0", 1840 "version": "1.2.0",
@@ -1652,7 +2249,8 @@ @@ -1652,7 +2249,8 @@
1652 "safe-buffer": { 2249 "safe-buffer": {
1653 "version": "5.1.1", 2250 "version": "5.1.1",
1654 "bundled": true, 2251 "bundled": true,
1655 - "dev": true 2252 + "dev": true,
  2253 + "optional": true
1656 }, 2254 },
1657 "safer-buffer": { 2255 "safer-buffer": {
1658 "version": "2.1.2", 2256 "version": "2.1.2",
@@ -1708,6 +2306,7 @@ @@ -1708,6 +2306,7 @@
1708 "version": "3.0.1", 2306 "version": "3.0.1",
1709 "bundled": true, 2307 "bundled": true,
1710 "dev": true, 2308 "dev": true,
  2309 + "optional": true,
1711 "requires": { 2310 "requires": {
1712 "ansi-regex": "^2.0.0" 2311 "ansi-regex": "^2.0.0"
1713 } 2312 }
@@ -1751,12 +2350,14 @@ @@ -1751,12 +2350,14 @@
1751 "wrappy": { 2350 "wrappy": {
1752 "version": "1.0.2", 2351 "version": "1.0.2",
1753 "bundled": true, 2352 "bundled": true,
1754 - "dev": true 2353 + "dev": true,
  2354 + "optional": true
1755 }, 2355 },
1756 "yallist": { 2356 "yallist": {
1757 "version": "3.0.2", 2357 "version": "3.0.2",
1758 "bundled": true, 2358 "bundled": true,
1759 - "dev": true 2359 + "dev": true,
  2360 + "optional": true
1760 } 2361 }
1761 } 2362 }
1762 }, 2363 },
@@ -1765,6 +2366,12 @@ @@ -1765,6 +2366,12 @@
1765 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2366 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1766 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 2367 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1767 }, 2368 },
  2369 + "functional-red-black-tree": {
  2370 + "version": "1.0.1",
  2371 + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
  2372 + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
  2373 + "dev": true
  2374 + },
1768 "get-stream": { 2375 "get-stream": {
1769 "version": "3.0.0", 2376 "version": "3.0.0",
1770 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 2377 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
@@ -1785,6 +2392,20 @@ @@ -1785,6 +2392,20 @@
1785 "assert-plus": "^1.0.0" 2392 "assert-plus": "^1.0.0"
1786 } 2393 }
1787 }, 2394 },
  2395 + "glob": {
  2396 + "version": "7.1.3",
  2397 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
  2398 + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
  2399 + "dev": true,
  2400 + "requires": {
  2401 + "fs.realpath": "^1.0.0",
  2402 + "inflight": "^1.0.4",
  2403 + "inherits": "2",
  2404 + "minimatch": "^3.0.4",
  2405 + "once": "^1.3.0",
  2406 + "path-is-absolute": "^1.0.0"
  2407 + }
  2408 + },
1788 "glob-parent": { 2409 "glob-parent": {
1789 "version": "3.1.0", 2410 "version": "3.1.0",
1790 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 2411 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -1815,6 +2436,12 @@ @@ -1815,6 +2436,12 @@
1815 "ini": "^1.3.4" 2436 "ini": "^1.3.4"
1816 } 2437 }
1817 }, 2438 },
  2439 + "globals": {
  2440 + "version": "11.9.0",
  2441 + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
  2442 + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==",
  2443 + "dev": true
  2444 + },
1818 "got": { 2445 "got": {
1819 "version": "6.7.1", 2446 "version": "6.7.1",
1820 "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 2447 "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
@@ -1919,6 +2546,12 @@ @@ -1919,6 +2546,12 @@
1919 "minimalistic-crypto-utils": "^1.0.1" 2546 "minimalistic-crypto-utils": "^1.0.1"
1920 } 2547 }
1921 }, 2548 },
  2549 + "hosted-git-info": {
  2550 + "version": "2.7.1",
  2551 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
  2552 + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
  2553 + "dev": true
  2554 + },
1922 "http-errors": { 2555 "http-errors": {
1923 "version": "1.6.3", 2556 "version": "1.6.3",
1924 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 2557 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
@@ -1945,6 +2578,12 @@ @@ -1945,6 +2578,12 @@
1945 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 2578 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
1946 "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 2579 "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
1947 }, 2580 },
  2581 + "ignore": {
  2582 + "version": "4.0.6",
  2583 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
  2584 + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
  2585 + "dev": true
  2586 + },
1948 "ignore-by-default": { 2587 "ignore-by-default": {
1949 "version": "1.0.1", 2588 "version": "1.0.1",
1950 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 2589 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
@@ -1963,6 +2602,16 @@ @@ -1963,6 +2602,16 @@
1963 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2602 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1964 "dev": true 2603 "dev": true
1965 }, 2604 },
  2605 + "inflight": {
  2606 + "version": "1.0.6",
  2607 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
  2608 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
  2609 + "dev": true,
  2610 + "requires": {
  2611 + "once": "^1.3.0",
  2612 + "wrappy": "1"
  2613 + }
  2614 + },
1966 "inherits": { 2615 "inherits": {
1967 "version": "2.0.3", 2616 "version": "2.0.3",
1968 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2617 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
@@ -1974,6 +2623,27 @@ @@ -1974,6 +2623,27 @@
1974 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 2623 "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
1975 "dev": true 2624 "dev": true
1976 }, 2625 },
  2626 + "inquirer": {
  2627 + "version": "6.2.0",
  2628 + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz",
  2629 + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
  2630 + "dev": true,
  2631 + "requires": {
  2632 + "ansi-escapes": "^3.0.0",
  2633 + "chalk": "^2.0.0",
  2634 + "cli-cursor": "^2.1.0",
  2635 + "cli-width": "^2.0.0",
  2636 + "external-editor": "^3.0.0",
  2637 + "figures": "^2.0.0",
  2638 + "lodash": "^4.17.10",
  2639 + "mute-stream": "0.0.7",
  2640 + "run-async": "^2.2.0",
  2641 + "rxjs": "^6.1.0",
  2642 + "string-width": "^2.1.0",
  2643 + "strip-ansi": "^4.0.0",
  2644 + "through": "^2.3.6"
  2645 + }
  2646 + },
1977 "ipaddr.js": { 2647 "ipaddr.js": {
1978 "version": "1.6.0", 2648 "version": "1.6.0",
1979 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", 2649 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
@@ -1988,6 +2658,12 @@ @@ -1988,6 +2658,12 @@
1988 "kind-of": "^3.0.2" 2658 "kind-of": "^3.0.2"
1989 } 2659 }
1990 }, 2660 },
  2661 + "is-arrayish": {
  2662 + "version": "0.2.1",
  2663 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
  2664 + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
  2665 + "dev": true
  2666 + },
1991 "is-binary-path": { 2667 "is-binary-path": {
1992 "version": "1.0.1", 2668 "version": "1.0.1",
1993 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2669 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@@ -2002,6 +2678,15 @@ @@ -2002,6 +2678,15 @@
2002 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2678 "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
2003 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 2679 "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
2004 }, 2680 },
  2681 + "is-builtin-module": {
  2682 + "version": "1.0.0",
  2683 + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
  2684 + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
  2685 + "dev": true,
  2686 + "requires": {
  2687 + "builtin-modules": "^1.0.0"
  2688 + }
  2689 + },
2005 "is-ci": { 2690 "is-ci": {
2006 "version": "1.1.0", 2691 "version": "1.1.0",
2007 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", 2692 "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
@@ -2167,6 +2852,12 @@ @@ -2167,6 +2852,12 @@
2167 "has": "^1.0.1" 2852 "has": "^1.0.1"
2168 } 2853 }
2169 }, 2854 },
  2855 + "is-resolvable": {
  2856 + "version": "1.1.0",
  2857 + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
  2858 + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
  2859 + "dev": true
  2860 + },
2170 "is-retry-allowed": { 2861 "is-retry-allowed": {
2171 "version": "1.1.0", 2862 "version": "1.1.0",
2172 "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 2863 "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
@@ -2217,12 +2908,34 @@ @@ -2217,12 +2908,34 @@
2217 "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", 2908 "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
2218 "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" 2909 "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
2219 }, 2910 },
  2911 + "js-tokens": {
  2912 + "version": "4.0.0",
  2913 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
  2914 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
  2915 + "dev": true
  2916 + },
  2917 + "js-yaml": {
  2918 + "version": "3.12.0",
  2919 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
  2920 + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
  2921 + "dev": true,
  2922 + "requires": {
  2923 + "argparse": "^1.0.7",
  2924 + "esprima": "^4.0.0"
  2925 + }
  2926 + },
2220 "jsbn": { 2927 "jsbn": {
2221 "version": "0.1.1", 2928 "version": "0.1.1",
2222 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 2929 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
2223 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 2930 "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
2224 "optional": true 2931 "optional": true
2225 }, 2932 },
  2933 + "jsesc": {
  2934 + "version": "2.5.2",
  2935 + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
  2936 + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
  2937 + "dev": true
  2938 + },
2226 "json-schema": { 2939 "json-schema": {
2227 "version": "0.2.3", 2940 "version": "0.2.3",
2228 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 2941 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -2233,6 +2946,12 @@ @@ -2233,6 +2946,12 @@
2233 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 2946 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
2234 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 2947 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
2235 }, 2948 },
  2949 + "json-stable-stringify-without-jsonify": {
  2950 + "version": "1.0.1",
  2951 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
  2952 + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
  2953 + "dev": true
  2954 + },
2236 "json-stringify-safe": { 2955 "json-stringify-safe": {
2237 "version": "5.0.1", 2956 "version": "5.0.1",
2238 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 2957 "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -2285,6 +3004,54 @@ @@ -2285,6 +3004,54 @@
2285 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 3004 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
2286 "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" 3005 "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
2287 }, 3006 },
  3007 + "levn": {
  3008 + "version": "0.3.0",
  3009 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
  3010 + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
  3011 + "dev": true,
  3012 + "requires": {
  3013 + "prelude-ls": "~1.1.2",
  3014 + "type-check": "~0.3.2"
  3015 + }
  3016 + },
  3017 + "load-json-file": {
  3018 + "version": "2.0.0",
  3019 + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
  3020 + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
  3021 + "dev": true,
  3022 + "requires": {
  3023 + "graceful-fs": "^4.1.2",
  3024 + "parse-json": "^2.2.0",
  3025 + "pify": "^2.0.0",
  3026 + "strip-bom": "^3.0.0"
  3027 + },
  3028 + "dependencies": {
  3029 + "pify": {
  3030 + "version": "2.3.0",
  3031 + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
  3032 + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
  3033 + "dev": true
  3034 + }
  3035 + }
  3036 + },
  3037 + "locate-path": {
  3038 + "version": "2.0.0",
  3039 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
  3040 + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
  3041 + "dev": true,
  3042 + "requires": {
  3043 + "p-locate": "^2.0.0",
  3044 + "path-exists": "^3.0.0"
  3045 + },
  3046 + "dependencies": {
  3047 + "path-exists": {
  3048 + "version": "3.0.0",
  3049 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
  3050 + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
  3051 + "dev": true
  3052 + }
  3053 + }
  3054 + },
2288 "lodash": { 3055 "lodash": {
2289 "version": "4.17.10", 3056 "version": "4.17.10",
2290 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 3057 "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
@@ -2403,6 +3170,12 @@ @@ -2403,6 +3170,12 @@
2403 "mime-db": "~1.33.0" 3170 "mime-db": "~1.33.0"
2404 } 3171 }
2405 }, 3172 },
  3173 + "mimic-fn": {
  3174 + "version": "1.2.0",
  3175 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
  3176 + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
  3177 + "dev": true
  3178 + },
2406 "minimalistic-assert": { 3179 "minimalistic-assert": {
2407 "version": "1.0.1", 3180 "version": "1.0.1",
2408 "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 3181 "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -2422,6 +3195,12 @@ @@ -2422,6 +3195,12 @@
2422 "brace-expansion": "^1.1.7" 3195 "brace-expansion": "^1.1.7"
2423 } 3196 }
2424 }, 3197 },
  3198 + "minimist": {
  3199 + "version": "0.0.8",
  3200 + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
  3201 + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
  3202 + "dev": true
  3203 + },
2425 "mixin-deep": { 3204 "mixin-deep": {
2426 "version": "1.3.1", 3205 "version": "1.3.1",
2427 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 3206 "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
@@ -2443,6 +3222,15 @@ @@ -2443,6 +3222,15 @@
2443 } 3222 }
2444 } 3223 }
2445 }, 3224 },
  3225 + "mkdirp": {
  3226 + "version": "0.5.1",
  3227 + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
  3228 + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
  3229 + "dev": true,
  3230 + "requires": {
  3231 + "minimist": "0.0.8"
  3232 + }
  3233 + },
2446 "morgan": { 3234 "morgan": {
2447 "version": "1.9.0", 3235 "version": "1.9.0",
2448 "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", 3236 "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz",
@@ -2460,6 +3248,12 @@ @@ -2460,6 +3248,12 @@
2460 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3248 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2461 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 3249 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
2462 }, 3250 },
  3251 + "mute-stream": {
  3252 + "version": "0.0.7",
  3253 + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
  3254 + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
  3255 + "dev": true
  3256 + },
2463 "nan": { 3257 "nan": {
2464 "version": "2.10.0", 3258 "version": "2.10.0",
2465 "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 3259 "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
@@ -2495,11 +3289,23 @@ @@ -2495,11 +3289,23 @@
2495 } 3289 }
2496 } 3290 }
2497 }, 3291 },
  3292 + "natural-compare": {
  3293 + "version": "1.4.0",
  3294 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
  3295 + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
  3296 + "dev": true
  3297 + },
2498 "negotiator": { 3298 "negotiator": {
2499 "version": "0.6.1", 3299 "version": "0.6.1",
2500 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 3300 "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
2501 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 3301 "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
2502 }, 3302 },
  3303 + "nice-try": {
  3304 + "version": "1.0.5",
  3305 + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
  3306 + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
  3307 + "dev": true
  3308 + },
2503 "nodemon": { 3309 "nodemon": {
2504 "version": "1.17.5", 3310 "version": "1.17.5",
2505 "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.5.tgz", 3311 "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.5.tgz",
@@ -2538,6 +3344,18 @@ @@ -2538,6 +3344,18 @@
2538 "abbrev": "1" 3344 "abbrev": "1"
2539 } 3345 }
2540 }, 3346 },
  3347 + "normalize-package-data": {
  3348 + "version": "2.4.0",
  3349 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
  3350 + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
  3351 + "dev": true,
  3352 + "requires": {
  3353 + "hosted-git-info": "^2.1.4",
  3354 + "is-builtin-module": "^1.0.0",
  3355 + "semver": "2 || 3 || 4 || 5",
  3356 + "validate-npm-package-license": "^3.0.1"
  3357 + }
  3358 + },
2541 "normalize-path": { 3359 "normalize-path": {
2542 "version": "2.1.1", 3360 "version": "2.1.1",
2543 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 3361 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
@@ -2619,12 +3437,82 @@ @@ -2619,12 +3437,82 @@
2619 "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 3437 "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
2620 "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" 3438 "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
2621 }, 3439 },
  3440 + "once": {
  3441 + "version": "1.4.0",
  3442 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
  3443 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
  3444 + "dev": true,
  3445 + "requires": {
  3446 + "wrappy": "1"
  3447 + }
  3448 + },
  3449 + "onetime": {
  3450 + "version": "2.0.1",
  3451 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
  3452 + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
  3453 + "dev": true,
  3454 + "requires": {
  3455 + "mimic-fn": "^1.0.0"
  3456 + }
  3457 + },
  3458 + "optionator": {
  3459 + "version": "0.8.2",
  3460 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
  3461 + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
  3462 + "dev": true,
  3463 + "requires": {
  3464 + "deep-is": "~0.1.3",
  3465 + "fast-levenshtein": "~2.0.4",
  3466 + "levn": "~0.3.0",
  3467 + "prelude-ls": "~1.1.2",
  3468 + "type-check": "~0.3.2",
  3469 + "wordwrap": "~1.0.0"
  3470 + },
  3471 + "dependencies": {
  3472 + "wordwrap": {
  3473 + "version": "1.0.0",
  3474 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
  3475 + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
  3476 + "dev": true
  3477 + }
  3478 + }
  3479 + },
  3480 + "os-tmpdir": {
  3481 + "version": "1.0.2",
  3482 + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
  3483 + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
  3484 + "dev": true
  3485 + },
2622 "p-finally": { 3486 "p-finally": {
2623 "version": "1.0.0", 3487 "version": "1.0.0",
2624 "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3488 "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
2625 "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 3489 "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
2626 "dev": true 3490 "dev": true
2627 }, 3491 },
  3492 + "p-limit": {
  3493 + "version": "1.3.0",
  3494 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
  3495 + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
  3496 + "dev": true,
  3497 + "requires": {
  3498 + "p-try": "^1.0.0"
  3499 + }
  3500 + },
  3501 + "p-locate": {
  3502 + "version": "2.0.0",
  3503 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
  3504 + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
  3505 + "dev": true,
  3506 + "requires": {
  3507 + "p-limit": "^1.1.0"
  3508 + }
  3509 + },
  3510 + "p-try": {
  3511 + "version": "1.0.0",
  3512 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
  3513 + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
  3514 + "dev": true
  3515 + },
2628 "package-json": { 3516 "package-json": {
2629 "version": "4.0.1", 3517 "version": "4.0.1",
2630 "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 3518 "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
@@ -2637,6 +3525,15 @@ @@ -2637,6 +3525,15 @@
2637 "semver": "^5.1.0" 3525 "semver": "^5.1.0"
2638 } 3526 }
2639 }, 3527 },
  3528 + "parse-json": {
  3529 + "version": "2.2.0",
  3530 + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
  3531 + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
  3532 + "dev": true,
  3533 + "requires": {
  3534 + "error-ex": "^1.2.0"
  3535 + }
  3536 + },
2640 "parseurl": { 3537 "parseurl": {
2641 "version": "1.3.2", 3538 "version": "1.3.2",
2642 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 3539 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
@@ -2654,6 +3551,15 @@ @@ -2654,6 +3551,15 @@
2654 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 3551 "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
2655 "dev": true 3552 "dev": true
2656 }, 3553 },
  3554 + "path-exists": {
  3555 + "version": "2.1.0",
  3556 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
  3557 + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
  3558 + "dev": true,
  3559 + "requires": {
  3560 + "pinkie-promise": "^2.0.0"
  3561 + }
  3562 + },
2657 "path-is-absolute": { 3563 "path-is-absolute": {
2658 "version": "1.0.1", 3564 "version": "1.0.1",
2659 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3565 "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -2682,6 +3588,23 @@ @@ -2682,6 +3588,23 @@
2682 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 3588 "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
2683 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 3589 "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
2684 }, 3590 },
  3591 + "path-type": {
  3592 + "version": "2.0.0",
  3593 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
  3594 + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
  3595 + "dev": true,
  3596 + "requires": {
  3597 + "pify": "^2.0.0"
  3598 + },
  3599 + "dependencies": {
  3600 + "pify": {
  3601 + "version": "2.3.0",
  3602 + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
  3603 + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
  3604 + "dev": true
  3605 + }
  3606 + }
  3607 + },
2685 "pause-stream": { 3608 "pause-stream": {
2686 "version": "0.0.11", 3609 "version": "0.0.11",
2687 "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 3610 "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
@@ -2702,12 +3625,48 @@ @@ -2702,12 +3625,48 @@
2702 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 3625 "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
2703 "dev": true 3626 "dev": true
2704 }, 3627 },
  3628 + "pinkie": {
  3629 + "version": "2.0.4",
  3630 + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
  3631 + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
  3632 + "dev": true
  3633 + },
  3634 + "pinkie-promise": {
  3635 + "version": "2.0.1",
  3636 + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
  3637 + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
  3638 + "dev": true,
  3639 + "requires": {
  3640 + "pinkie": "^2.0.0"
  3641 + }
  3642 + },
  3643 + "pkg-dir": {
  3644 + "version": "1.0.0",
  3645 + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
  3646 + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
  3647 + "dev": true,
  3648 + "requires": {
  3649 + "find-up": "^1.0.0"
  3650 + }
  3651 + },
  3652 + "pluralize": {
  3653 + "version": "7.0.0",
  3654 + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
  3655 + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
  3656 + "dev": true
  3657 + },
2705 "posix-character-classes": { 3658 "posix-character-classes": {
2706 "version": "0.1.1", 3659 "version": "0.1.1",
2707 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 3660 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
2708 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 3661 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
2709 "dev": true 3662 "dev": true
2710 }, 3663 },
  3664 + "prelude-ls": {
  3665 + "version": "1.1.2",
  3666 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
  3667 + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
  3668 + "dev": true
  3669 + },
2711 "prepend-http": { 3670 "prepend-http": {
2712 "version": "1.0.4", 3671 "version": "1.0.4",
2713 "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 3672 "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
@@ -2719,6 +3678,12 @@ @@ -2719,6 +3678,12 @@
2719 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 3678 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
2720 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 3679 "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
2721 }, 3680 },
  3681 + "progress": {
  3682 + "version": "2.0.1",
  3683 + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
  3684 + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
  3685 + "dev": true
  3686 + },
2722 "promise": { 3687 "promise": {
2723 "version": "7.3.1", 3688 "version": "7.3.1",
2724 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", 3689 "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -2961,6 +3926,38 @@ @@ -2961,6 +3926,38 @@
2961 } 3926 }
2962 } 3927 }
2963 }, 3928 },
  3929 + "read-pkg": {
  3930 + "version": "2.0.0",
  3931 + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
  3932 + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
  3933 + "dev": true,
  3934 + "requires": {
  3935 + "load-json-file": "^2.0.0",
  3936 + "normalize-package-data": "^2.3.2",
  3937 + "path-type": "^2.0.0"
  3938 + }
  3939 + },
  3940 + "read-pkg-up": {
  3941 + "version": "2.0.0",
  3942 + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
  3943 + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
  3944 + "dev": true,
  3945 + "requires": {
  3946 + "find-up": "^2.0.0",
  3947 + "read-pkg": "^2.0.0"
  3948 + },
  3949 + "dependencies": {
  3950 + "find-up": {
  3951 + "version": "2.1.0",
  3952 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
  3953 + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
  3954 + "dev": true,
  3955 + "requires": {
  3956 + "locate-path": "^2.0.0"
  3957 + }
  3958 + }
  3959 + }
  3960 + },
2964 "readable-stream": { 3961 "readable-stream": {
2965 "version": "2.3.6", 3962 "version": "2.3.6",
2966 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 3963 "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
@@ -3002,6 +3999,12 @@ @@ -3002,6 +3999,12 @@
3002 "safe-regex": "^1.1.0" 3999 "safe-regex": "^1.1.0"
3003 } 4000 }
3004 }, 4001 },
  4002 + "regexpp": {
  4003 + "version": "2.0.1",
  4004 + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
  4005 + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
  4006 + "dev": true
  4007 + },
3005 "registry-auth-token": { 4008 "registry-auth-token": {
3006 "version": "3.3.2", 4009 "version": "3.3.2",
3007 "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", 4010 "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
@@ -3065,6 +4068,16 @@ @@ -3065,6 +4068,16 @@
3065 "uuid": "^3.1.0" 4068 "uuid": "^3.1.0"
3066 } 4069 }
3067 }, 4070 },
  4071 + "require-uncached": {
  4072 + "version": "1.0.3",
  4073 + "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
  4074 + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
  4075 + "dev": true,
  4076 + "requires": {
  4077 + "caller-path": "^0.1.0",
  4078 + "resolve-from": "^1.0.0"
  4079 + }
  4080 + },
3068 "resolve": { 4081 "resolve": {
3069 "version": "1.8.0", 4082 "version": "1.8.0",
3070 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.0.tgz", 4083 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.0.tgz",
@@ -3073,12 +4086,28 @@ @@ -3073,12 +4086,28 @@
3073 "path-parse": "^1.0.5" 4086 "path-parse": "^1.0.5"
3074 } 4087 }
3075 }, 4088 },
  4089 + "resolve-from": {
  4090 + "version": "1.0.1",
  4091 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
  4092 + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
  4093 + "dev": true
  4094 + },
3076 "resolve-url": { 4095 "resolve-url": {
3077 "version": "0.2.1", 4096 "version": "0.2.1",
3078 "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 4097 "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
3079 "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 4098 "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
3080 "dev": true 4099 "dev": true
3081 }, 4100 },
  4101 + "restore-cursor": {
  4102 + "version": "2.0.0",
  4103 + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
  4104 + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
  4105 + "dev": true,
  4106 + "requires": {
  4107 + "onetime": "^2.0.0",
  4108 + "signal-exit": "^3.0.2"
  4109 + }
  4110 + },
3082 "ret": { 4111 "ret": {
3083 "version": "0.1.15", 4112 "version": "0.1.15",
3084 "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 4113 "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
@@ -3093,6 +4122,33 @@ @@ -3093,6 +4122,33 @@
3093 "align-text": "^0.1.1" 4122 "align-text": "^0.1.1"
3094 } 4123 }
3095 }, 4124 },
  4125 + "rimraf": {
  4126 + "version": "2.6.2",
  4127 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
  4128 + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
  4129 + "dev": true,
  4130 + "requires": {
  4131 + "glob": "^7.0.5"
  4132 + }
  4133 + },
  4134 + "run-async": {
  4135 + "version": "2.3.0",
  4136 + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
  4137 + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
  4138 + "dev": true,
  4139 + "requires": {
  4140 + "is-promise": "^2.1.0"
  4141 + }
  4142 + },
  4143 + "rxjs": {
  4144 + "version": "6.3.3",
  4145 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
  4146 + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
  4147 + "dev": true,
  4148 + "requires": {
  4149 + "tslib": "^1.9.0"
  4150 + }
  4151 + },
3096 "safe-buffer": { 4152 "safe-buffer": {
3097 "version": "5.1.1", 4153 "version": "5.1.1",
3098 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 4154 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
@@ -3213,6 +4269,15 @@ @@ -3213,6 +4269,15 @@
3213 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 4269 "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
3214 "dev": true 4270 "dev": true
3215 }, 4271 },
  4272 + "slice-ansi": {
  4273 + "version": "1.0.0",
  4274 + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
  4275 + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
  4276 + "dev": true,
  4277 + "requires": {
  4278 + "is-fullwidth-code-point": "^2.0.0"
  4279 + }
  4280 + },
3216 "snapdragon": { 4281 "snapdragon": {
3217 "version": "0.8.2", 4282 "version": "0.8.2",
3218 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 4283 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -3345,6 +4410,38 @@ @@ -3345,6 +4410,38 @@
3345 "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 4410 "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
3346 "dev": true 4411 "dev": true
3347 }, 4412 },
  4413 + "spdx-correct": {
  4414 + "version": "3.0.2",
  4415 + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz",
  4416 + "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==",
  4417 + "dev": true,
  4418 + "requires": {
  4419 + "spdx-expression-parse": "^3.0.0",
  4420 + "spdx-license-ids": "^3.0.0"
  4421 + }
  4422 + },
  4423 + "spdx-exceptions": {
  4424 + "version": "2.2.0",
  4425 + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
  4426 + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
  4427 + "dev": true
  4428 + },
  4429 + "spdx-expression-parse": {
  4430 + "version": "3.0.0",
  4431 + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
  4432 + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
  4433 + "dev": true,
  4434 + "requires": {
  4435 + "spdx-exceptions": "^2.1.0",
  4436 + "spdx-license-ids": "^3.0.0"
  4437 + }
  4438 + },
  4439 + "spdx-license-ids": {
  4440 + "version": "3.0.2",
  4441 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
  4442 + "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
  4443 + "dev": true
  4444 + },
3348 "split": { 4445 "split": {
3349 "version": "0.3.3", 4446 "version": "0.3.3",
3350 "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 4447 "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
@@ -3373,6 +4470,12 @@ @@ -3373,6 +4470,12 @@
3373 "inherits": "^2.0.3" 4470 "inherits": "^2.0.3"
3374 } 4471 }
3375 }, 4472 },
  4473 + "sprintf-js": {
  4474 + "version": "1.0.3",
  4475 + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
  4476 + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
  4477 + "dev": true
  4478 + },
3376 "squadron": { 4479 "squadron": {
3377 "version": "0.0.4", 4480 "version": "0.0.4",
3378 "resolved": "https://registry.npmjs.org/squadron/-/squadron-0.0.4.tgz", 4481 "resolved": "https://registry.npmjs.org/squadron/-/squadron-0.0.4.tgz",
@@ -3474,6 +4577,12 @@ @@ -3474,6 +4577,12 @@
3474 "ansi-regex": "^3.0.0" 4577 "ansi-regex": "^3.0.0"
3475 } 4578 }
3476 }, 4579 },
  4580 + "strip-bom": {
  4581 + "version": "3.0.0",
  4582 + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
  4583 + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
  4584 + "dev": true
  4585 + },
3477 "strip-eof": { 4586 "strip-eof": {
3478 "version": "1.0.0", 4587 "version": "1.0.0",
3479 "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 4588 "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
@@ -3522,6 +4631,44 @@ @@ -3522,6 +4631,44 @@
3522 "has-flag": "^3.0.0" 4631 "has-flag": "^3.0.0"
3523 } 4632 }
3524 }, 4633 },
  4634 + "table": {
  4635 + "version": "5.1.0",
  4636 + "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz",
  4637 + "integrity": "sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg==",
  4638 + "dev": true,
  4639 + "requires": {
  4640 + "ajv": "^6.5.3",
  4641 + "lodash": "^4.17.10",
  4642 + "slice-ansi": "1.0.0",
  4643 + "string-width": "^2.1.1"
  4644 + },
  4645 + "dependencies": {
  4646 + "ajv": {
  4647 + "version": "6.5.5",
  4648 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
  4649 + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
  4650 + "dev": true,
  4651 + "requires": {
  4652 + "fast-deep-equal": "^2.0.1",
  4653 + "fast-json-stable-stringify": "^2.0.0",
  4654 + "json-schema-traverse": "^0.4.1",
  4655 + "uri-js": "^4.2.2"
  4656 + }
  4657 + },
  4658 + "fast-deep-equal": {
  4659 + "version": "2.0.1",
  4660 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
  4661 + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
  4662 + "dev": true
  4663 + },
  4664 + "json-schema-traverse": {
  4665 + "version": "0.4.1",
  4666 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
  4667 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
  4668 + "dev": true
  4669 + }
  4670 + }
  4671 + },
3525 "term-size": { 4672 "term-size": {
3526 "version": "1.2.0", 4673 "version": "1.2.0",
3527 "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 4674 "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
@@ -3531,6 +4678,12 @@ @@ -3531,6 +4678,12 @@
3531 "execa": "^0.7.0" 4678 "execa": "^0.7.0"
3532 } 4679 }
3533 }, 4680 },
  4681 + "text-table": {
  4682 + "version": "0.2.0",
  4683 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
  4684 + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
  4685 + "dev": true
  4686 + },
3534 "through": { 4687 "through": {
3535 "version": "2.3.8", 4688 "version": "2.3.8",
3536 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 4689 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -3542,6 +4695,15 @@ @@ -3542,6 +4695,15 @@
3542 "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", 4695 "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
3543 "dev": true 4696 "dev": true
3544 }, 4697 },
  4698 + "tmp": {
  4699 + "version": "0.0.33",
  4700 + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
  4701 + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
  4702 + "dev": true,
  4703 + "requires": {
  4704 + "os-tmpdir": "~1.0.2"
  4705 + }
  4706 + },
3545 "to-fast-properties": { 4707 "to-fast-properties": {
3546 "version": "1.0.3", 4708 "version": "1.0.3",
3547 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 4709 "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
@@ -3600,6 +4762,18 @@ @@ -3600,6 +4762,18 @@
3600 "punycode": "^1.4.1" 4762 "punycode": "^1.4.1"
3601 } 4763 }
3602 }, 4764 },
  4765 + "trim-right": {
  4766 + "version": "1.0.1",
  4767 + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
  4768 + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
  4769 + "dev": true
  4770 + },
  4771 + "tslib": {
  4772 + "version": "1.9.3",
  4773 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
  4774 + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
  4775 + "dev": true
  4776 + },
3603 "tunnel-agent": { 4777 "tunnel-agent": {
3604 "version": "0.6.0", 4778 "version": "0.6.0",
3605 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 4779 "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -3614,6 +4788,15 @@ @@ -3614,6 +4788,15 @@
3614 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 4788 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
3615 "optional": true 4789 "optional": true
3616 }, 4790 },
  4791 + "type-check": {
  4792 + "version": "0.3.2",
  4793 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
  4794 + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
  4795 + "dev": true,
  4796 + "requires": {
  4797 + "prelude-ls": "~1.1.2"
  4798 + }
  4799 + },
3617 "type-is": { 4800 "type-is": {
3618 "version": "1.6.16", 4801 "version": "1.6.16",
3619 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 4802 "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
@@ -3767,6 +4950,23 @@ @@ -3767,6 +4950,23 @@
3767 "xdg-basedir": "^3.0.0" 4950 "xdg-basedir": "^3.0.0"
3768 } 4951 }
3769 }, 4952 },
  4953 + "uri-js": {
  4954 + "version": "4.2.2",
  4955 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
  4956 + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
  4957 + "dev": true,
  4958 + "requires": {
  4959 + "punycode": "^2.1.0"
  4960 + },
  4961 + "dependencies": {
  4962 + "punycode": {
  4963 + "version": "2.1.1",
  4964 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
  4965 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
  4966 + "dev": true
  4967 + }
  4968 + }
  4969 + },
3770 "urix": { 4970 "urix": {
3771 "version": "0.1.0", 4971 "version": "0.1.0",
3772 "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 4972 "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
@@ -3814,6 +5014,16 @@ @@ -3814,6 +5014,16 @@
3814 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", 5014 "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
3815 "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" 5015 "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA=="
3816 }, 5016 },
  5017 + "validate-npm-package-license": {
  5018 + "version": "3.0.4",
  5019 + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
  5020 + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
  5021 + "dev": true,
  5022 + "requires": {
  5023 + "spdx-correct": "^3.0.0",
  5024 + "spdx-expression-parse": "^3.0.0"
  5025 + }
  5026 + },
3817 "vary": { 5027 "vary": {
3818 "version": "1.1.2", 5028 "version": "1.1.2",
3819 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 5029 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -3871,6 +5081,21 @@ @@ -3871,6 +5081,21 @@
3871 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 5081 "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
3872 "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" 5082 "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
3873 }, 5083 },
  5084 + "wrappy": {
  5085 + "version": "1.0.2",
  5086 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
  5087 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
  5088 + "dev": true
  5089 + },
  5090 + "write": {
  5091 + "version": "0.2.1",
  5092 + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
  5093 + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
  5094 + "dev": true,
  5095 + "requires": {
  5096 + "mkdirp": "^0.5.1"
  5097 + }
  5098 + },
3874 "write-file-atomic": { 5099 "write-file-atomic": {
3875 "version": "2.3.0", 5100 "version": "2.3.0",
3876 "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", 5101 "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 "version": "0.0.0", 3 "version": "0.0.0",
4 "private": true, 4 "private": true,
5 "scripts": { 5 "scripts": {
6 - "start": "nodemon ./bin/www" 6 + "start": "DEBUG=jaikuaamina nodemon ./bin/www"
7 }, 7 },
8 "dependencies": { 8 "dependencies": {
9 "baconjs": "^2.0.7", 9 "baconjs": "^2.0.7",
@@ -20,6 +20,8 @@ @@ -20,6 +20,8 @@
20 "superagent": "^3.8.3" 20 "superagent": "^3.8.3"
21 }, 21 },
22 "devDependencies": { 22 "devDependencies": {
  23 + "eslint": "^5.9.0",
  24 + "eslint-config-node": "^4.0.0",
23 "nodemon": "^1.17.5" 25 "nodemon": "^1.17.5"
24 }, 26 },
25 "engines": { 27 "engines": {
@@ -12,14 +12,14 @@ const headers = { @@ -12,14 +12,14 @@ const headers = {
12 12
13 const getAccessToken = () => 13 const getAccessToken = () =>
14 su.get(`${dbhost}/${dbtokens}/_all_docs`) 14 su.get(`${dbhost}/${dbtokens}/_all_docs`)
15 - .set(headers)  
16 - .query({ limit: 1, include_docs:true })  
17 - .then(path(['body', 'rows']))  
18 - .then(head)  
19 - .then(path(['doc', 'accessToken'])) 15 + .set(headers)
  16 + .query({ limit: 1, include_docs:true })
  17 + .then(path(['body', 'rows']))
  18 + .then(head)
  19 + .then(path(['doc', 'accessToken']))
20 20
21 module.exports = (req, res, next) => { 21 module.exports = (req, res, next) => {
22 getAccessToken() 22 getAccessToken()
23 - .then((accessToken) => res.json({ accessToken }))  
24 - .catch(error => next(createError(500))) 23 + .then((accessToken) => res.json({ accessToken }))
  24 + .catch(error => next(createError(500, error, { expose: true })))
25 } 25 }
1 -const express = require('express');  
2 -const router = express.Router(); 1 +const express = require('express')
  2 +const router = express.Router()
3 3
4 const getToken = require('./getToken') 4 const getToken = require('./getToken')
5 const postLocation = require('./postLocation') 5 const postLocation = require('./postLocation')
@@ -49,4 +49,4 @@ router.get('/reportes/solicitud/:id/usuario/:mail', @@ -49,4 +49,4 @@ router.get('/reportes/solicitud/:id/usuario/:mail',
49 reporteSearch 49 reporteSearch
50 ) 50 )
51 51
52 -module.exports = router; 52 +module.exports = router
1 const createError = require('http-errors') 1 const createError = require('http-errors')
2 const su = require('superagent') 2 const su = require('superagent')
3 -const { path, head } = require('ramda');  
4 3
5 const dbhost = process.env.COUCHDB_URL 4 const dbhost = process.env.COUCHDB_URL
6 const dbubicaciones = process.env.DB_UBICACIONES 5 const dbubicaciones = process.env.DB_UBICACIONES
@@ -12,11 +11,11 @@ const headers = { @@ -12,11 +11,11 @@ const headers = {
12 11
13 const postLocation = (payload) => 12 const postLocation = (payload) =>
14 su.post(`${dbhost}/${dbubicaciones}/`) 13 su.post(`${dbhost}/${dbubicaciones}/`)
15 - .set(headers)  
16 - .send(JSON.stringify(payload)) 14 + .set(headers)
  15 + .send(JSON.stringify(payload))
17 16
18 module.exports = (req, res, next) => { 17 module.exports = (req, res, next) => {
19 postLocation(req.body) 18 postLocation(req.body)
20 - .then(() => res.json({ success: true, error: false }))  
21 - .catch(error => next(createError(500))) 19 + .then(() => res.json({ success: true, error: false }))
  20 + .catch(error => next(createError(500, error, { expose: true })))
22 } 21 }
1 const createError = require('http-errors') 1 const createError = require('http-errors')
2 const su = require('superagent') 2 const su = require('superagent')
3 -const { isEmpty, isNil, contains, path, head, merge, propOr, tap} = require('ramda') 3 +const {
  4 + isEmpty, isNil, path, head, merge,
  5 +} = require('ramda')
4 6
5 7
6 const dbhost = process.env.COUCHDB_URL 8 const dbhost = process.env.COUCHDB_URL
@@ -14,21 +16,21 @@ const CONFIDENCIAL = 'CONFIDENCIAL' @@ -14,21 +16,21 @@ const CONFIDENCIAL = 'CONFIDENCIAL'
14 16
15 const postReporte = (payload) => 17 const postReporte = (payload) =>
16 su.post(`${dbhost}/${dbname}/`) 18 su.post(`${dbhost}/${dbname}/`)
17 - .set(headers)  
18 - .send(JSON.stringify(payload)) 19 + .set(headers)
  20 + .send(JSON.stringify(payload))
19 21
20 const findReporte = (payload) => 22 const findReporte = (payload) =>
21 su.post(`${dbhost}/${dbname}/_find`) 23 su.post(`${dbhost}/${dbname}/_find`)
22 - .set(headers)  
23 - .send(JSON.stringify(payload))  
24 - .then(path(['body', 'docs']))  
25 - .then(head) 24 + .set(headers)
  25 + .send(JSON.stringify(payload))
  26 + .then(path(['body', 'docs']))
  27 + .then(head)
26 28
27 const updateReporte = (payload) =>{ 29 const updateReporte = (payload) =>{
28 const { _id, _rev } = payload 30 const { _id, _rev } = payload
29 return su.put(`${dbhost}/${dbname}/${_id}?rev=${_rev}`) 31 return su.put(`${dbhost}/${dbname}/${_id}?rev=${_rev}`)
30 - .set(headers)  
31 - .send(JSON.stringify(payload)) 32 + .set(headers)
  33 + .send(JSON.stringify(payload))
32 } 34 }
33 35
34 module.exports = (req, res, next) => { 36 module.exports = (req, res, next) => {
@@ -47,27 +49,27 @@ module.exports = (req, res, next) => { @@ -47,27 +49,27 @@ module.exports = (req, res, next) => {
47 } 49 }
48 50
49 findReporte(params) 51 findReporte(params)
50 - .then((result) => {  
51 - if (isNil(result)){  
52 - return merge({ id }, req.body)  
53 - }  
54 - if (result.reporte === req.body.reporte){  
55 - return merge(result, { reporte: null })  
56 - }  
57 - if (isNil(result.reporte) || result.reporte !== req.body.reporte){  
58 - return merge(result, req.body)  
59 - }  
60 - })  
61 - .then(nuevoValor => {  
62 - const valor = nuevoValor.reporte  
63 - let promise  
64 - if (!!nuevoValor._id){  
65 - promise = updateReporte(nuevoValor)  
66 - } else {  
67 - promise = postReporte(nuevoValor)  
68 - }  
69 - return promise.then(x => valor)  
70 - })  
71 - .then((reporte) => res.json({ reporte, success: true, error: false }))  
72 - .catch(error => next(createError(500))) 52 + .then((result) => {
  53 + if (isNil(result)){
  54 + return merge({ id }, req.body)
  55 + }
  56 + if (result.reporte === req.body.reporte){
  57 + return merge(result, { reporte: null })
  58 + }
  59 + if (isNil(result.reporte) || result.reporte !== req.body.reporte){
  60 + return merge(result, req.body)
  61 + }
  62 + })
  63 + .then(nuevoValor => {
  64 + const valor = nuevoValor.reporte
  65 + let promise
  66 + if (nuevoValor._id){
  67 + promise = updateReporte(nuevoValor)
  68 + } else {
  69 + promise = postReporte(nuevoValor)
  70 + }
  71 + return promise.then(() => valor)
  72 + })
  73 + .then((reporte) => res.json({ reporte, success: true, error: false }))
  74 + .catch(error => next(createError(500, error, { expose: true })))
73 } 75 }
1 const createError = require('http-errors') 1 const createError = require('http-errors')
2 const su = require('superagent') 2 const su = require('superagent')
3 const { 3 const {
4 - isNil, path, head, identity, ifElse, empty, always, prop 4 + isNil, path, head, ifElse, always, prop,
5 } = require('ramda') 5 } = require('ramda')
6 6
7 7
@@ -15,11 +15,11 @@ const headers = { @@ -15,11 +15,11 @@ const headers = {
15 15
16 const findReporte = (payload) => 16 const findReporte = (payload) =>
17 su.post(`${dbhost}/${dbname}/_find`) 17 su.post(`${dbhost}/${dbname}/_find`)
18 - .set(headers)  
19 - .send(JSON.stringify(payload))  
20 - .then(path(['body', 'docs']))  
21 - .then(head)  
22 - .then(ifElse(isNil, always(null), prop('reporte'))) 18 + .set(headers)
  19 + .send(JSON.stringify(payload))
  20 + .then(path(['body', 'docs']))
  21 + .then(head)
  22 + .then(ifElse(isNil, always(null), prop('reporte')))
23 23
24 module.exports = (req, res, next) => { 24 module.exports = (req, res, next) => {
25 const { id, mail } = req.params 25 const { id, mail } = req.params
@@ -31,7 +31,6 @@ module.exports = (req, res, next) => { @@ -31,7 +31,6 @@ module.exports = (req, res, next) => {
31 } 31 }
32 32
33 findReporte(params) 33 findReporte(params)
34 - .then((reporte) => res.json({ reporte, success: true, error: false }))  
35 - .catch(console.log)  
36 - .catch(error => next(createError(500))) 34 + .then((reporte) => res.json({ reporte, success: true, error: false }))
  35 + .catch(error => next(createError(500, error, { expose: true })))
37 } 36 }
1 const createError = require('http-errors') 1 const createError = require('http-errors')
2 const su = require('superagent') 2 const su = require('superagent')
3 -const { isEmpty, isNil, contains, path, head, merge, propOr, tap} = require('ramda') 3 +const {
  4 + isEmpty, isNil, contains, path, head, merge,
  5 +} = require('ramda')
4 6
5 7
6 const dbhost = process.env.COUCHDB_URL 8 const dbhost = process.env.COUCHDB_URL
@@ -15,22 +17,22 @@ const VALORES = ['SATISFECHO', 'NO SATISFECHO'] @@ -15,22 +17,22 @@ const VALORES = ['SATISFECHO', 'NO SATISFECHO']
15 17
16 const postValoracion = (payload) => 18 const postValoracion = (payload) =>
17 su.post(`${dbhost}/${dbname}/`) 19 su.post(`${dbhost}/${dbname}/`)
18 - .set(headers)  
19 - .send(JSON.stringify(payload)) 20 + .set(headers)
  21 + .send(JSON.stringify(payload))
20 22
21 23
22 const findValoracion = (payload) => 24 const findValoracion = (payload) =>
23 su.post(`${dbhost}/${dbname}/_find`) 25 su.post(`${dbhost}/${dbname}/_find`)
24 - .set(headers)  
25 - .send(JSON.stringify(payload))  
26 - .then(path(['body', 'docs']))  
27 - .then(head) 26 + .set(headers)
  27 + .send(JSON.stringify(payload))
  28 + .then(path(['body', 'docs']))
  29 + .then(head)
28 30
29 const updateValoracion = (payload) =>{ 31 const updateValoracion = (payload) =>{
30 const { _id, _rev } = payload 32 const { _id, _rev } = payload
31 return su.put(`${dbhost}/${dbname}/${_id}?rev=${_rev}`) 33 return su.put(`${dbhost}/${dbname}/${_id}?rev=${_rev}`)
32 - .set(headers)  
33 - .send(JSON.stringify(payload)) 34 + .set(headers)
  35 + .send(JSON.stringify(payload))
34 } 36 }
35 37
36 module.exports = (req, res, next) => { 38 module.exports = (req, res, next) => {
@@ -50,27 +52,27 @@ module.exports = (req, res, next) => { @@ -50,27 +52,27 @@ module.exports = (req, res, next) => {
50 } 52 }
51 53
52 findValoracion(params) 54 findValoracion(params)
53 - .then((result) => {  
54 - if (isNil(result)){  
55 - return merge({ id }, req.body)  
56 - }  
57 - if (result.valoracion === req.body.valoracion){  
58 - return merge(result, { valoracion: null })  
59 - }  
60 - if (isNil(result.valoracion) || result.valoracion !== req.body.valoracion){  
61 - return merge(result, req.body)  
62 - }  
63 - })  
64 - .then(nuevoValor => {  
65 - const valor = nuevoValor.valoracion  
66 - let promise  
67 - if (!!nuevoValor._id){  
68 - promise = updateValoracion(nuevoValor)  
69 - } else {  
70 - promise = postValoracion(nuevoValor)  
71 - }  
72 - return promise.then(x => valor)  
73 - })  
74 - .then((valoracion) => res.json({ valoracion, success: true, error: false }))  
75 - .catch(error => next(createError(500))) 55 + .then((result) => {
  56 + if (isNil(result)){
  57 + return merge({ id }, req.body)
  58 + }
  59 + if (result.valoracion === req.body.valoracion){
  60 + return merge(result, { valoracion: null })
  61 + }
  62 + if (isNil(result.valoracion) || result.valoracion !== req.body.valoracion){
  63 + return merge(result, req.body)
  64 + }
  65 + })
  66 + .then(nuevoValor => {
  67 + const valor = nuevoValor.valoracion
  68 + let promise
  69 + if (nuevoValor._id){
  70 + promise = updateValoracion(nuevoValor)
  71 + } else {
  72 + promise = postValoracion(nuevoValor)
  73 + }
  74 + return promise.then(() => valor)
  75 + })
  76 + .then((valoracion) => res.json({ valoracion, success: true, error: false }))
  77 + .catch(error => next(createError(500, error, { expose: true })))
76 } 78 }
1 const createError = require('http-errors') 1 const createError = require('http-errors')
2 const su = require('superagent') 2 const su = require('superagent')
3 const { 3 const {
4 - isEmpty, isNil, contains, path,  
5 - head, identity, ifElse, empty, always, prop 4 + isNil, path, head, ifElse, always, prop,
6 } = require('ramda') 5 } = require('ramda')
7 6
8 7
@@ -16,11 +15,11 @@ const headers = { @@ -16,11 +15,11 @@ const headers = {
16 15
17 const findValoracion = (payload) => 16 const findValoracion = (payload) =>
18 su.post(`${dbhost}/${dbname}/_find`) 17 su.post(`${dbhost}/${dbname}/_find`)
19 - .set(headers)  
20 - .send(JSON.stringify(payload))  
21 - .then(path(['body', 'docs']))  
22 - .then(head)  
23 - .then(ifElse(isNil, always(null), prop('valoracion'))) 18 + .set(headers)
  19 + .send(JSON.stringify(payload))
  20 + .then(path(['body', 'docs']))
  21 + .then(head)
  22 + .then(ifElse(isNil, always(null), prop('valoracion')))
24 23
25 module.exports = (req, res, next) => { 24 module.exports = (req, res, next) => {
26 const { id, mail } = req.params 25 const { id, mail } = req.params
@@ -32,6 +31,6 @@ module.exports = (req, res, next) => { @@ -32,6 +31,6 @@ module.exports = (req, res, next) => {
32 } 31 }
33 32
34 findValoracion(params) 33 findValoracion(params)
35 - .then((valoracion) => res.json({ valoracion, success: true, error: false }))  
36 - .catch(error => next(createError(500))) 34 + .then((valoracion) => res.json({ valoracion, success: true, error: false }))
  35 + .catch(error => next(createError(500, error, { expose: true })))
37 } 36 }
@@ -20,23 +20,21 @@ const dbnonces = process.env.DB_NONCES @@ -20,23 +20,21 @@ const dbnonces = process.env.DB_NONCES
20 20
21 const existe = (nonce) => 21 const existe = (nonce) =>
22 su.head(`${dbhost}/${dbnonces}/${nonce}`) 22 su.head(`${dbhost}/${dbnonces}/${nonce}`)
23 - .then(  
24 - (response) => response.status === 200,  
25 - (error) => {  
26 - if (error.status === 404) return false  
27 - throw error  
28 - }  
29 - ) 23 + .then(
  24 + (response) => response.status === 200,
  25 + (error) => {
  26 + if (error.status === 404) return false
  27 + throw error
  28 + }
  29 + )
30 30
31 const crear = (nonce, firma) => 31 const crear = (nonce, firma) =>
32 su.put(`${dbhost}/${dbnonces}/${nonce}`) 32 su.put(`${dbhost}/${dbnonces}/${nonce}`)
33 - .set(headers)  
34 - .send( JSON.stringify({ _id: nonce, firma }))  
35 - .then(res => res.body) 33 + .set(headers)
  34 + .send( JSON.stringify({ _id: nonce, firma }))
  35 + .then(res => res.body)
36 36
37 -const verificar = (nonce, firma) => {  
38 - return clientPub.verify(nonce, new Buffer(firma, 'hex'))  
39 -} 37 +const verificar = (nonce, firma) => clientPub.verify(nonce, new Buffer(firma, 'hex'))
40 38
41 module.exports = (req, res, next) => { 39 module.exports = (req, res, next) => {
42 const { nonce, firma } = req.params 40 const { nonce, firma } = req.params
@@ -44,9 +42,9 @@ module.exports = (req, res, next) => { @@ -44,9 +42,9 @@ module.exports = (req, res, next) => {
44 if (!valido ) return next(createError(403)) 42 if (!valido ) return next(createError(403))
45 43
46 existe(nonce) 44 existe(nonce)
47 - .then((utilizado) => {  
48 - if(utilizado) return next(createError(403))  
49 - return crear(nonce, firma).then(() => next())  
50 - })  
51 - .catch((error) => createError(500)) 45 + .then((utilizado) => {
  46 + if(utilizado) return next(createError(403))
  47 + return crear(nonce, firma).then(() => next())
  48 + })
  49 + .catch((error) => createError(500, error, { expose: true }))
52 } 50 }
@@ -4,15 +4,13 @@ const ec = new EC('secp256k1') @@ -4,15 +4,13 @@ const ec = new EC('secp256k1')
4 const { clientPoint } = require('../keys') 4 const { clientPoint } = require('../keys')
5 const clientPub = ec.keyFromPublic(clientPoint) 5 const clientPub = ec.keyFromPublic(clientPoint)
6 6
7 -const verificar = (nonce, firma) => {  
8 - return clientPub.verify(nonce, new Buffer(firma, 'hex'))  
9 -} 7 +const verificar = (nonce, firma) => clientPub.verify(nonce, new Buffer(firma, 'hex'))
10 8
11 module.exports = (req, res, next) => { 9 module.exports = (req, res, next) => {
12 const { firma } = req.params 10 const { firma } = req.params
13 const payload = JSON.stringify(req.body) 11 const payload = JSON.stringify(req.body)
14 const valido = verificar(payload, firma) 12 const valido = verificar(payload, firma)
15 - if (!valido ) return next(createError(403)) 13 + if (!valido ) return next(createError(403, ['La firma no es valida']))
16 return next() 14 return next()
17 15
18 } 16 }
Please register or login to post a comment