Authored by 毕凯

Merge branch 'feature/mysql' into 'feature/docker'

Feature/mysql



See merge request !1
  1 +phantomjs_cdnurl=http://npm.taobao.org/mirrors/phantomjs
  2 +registry=http://npm.yoho.cn
1 const express = require('express'); 1 const express = require('express');
  2 +const bodyParser = require('body-parser');
  3 +
2 const app = express(); 4 const app = express();
3 5
4 const config = require('./common/config'); 6 const config = require('./common/config');
5 7
6 const logger = require('yoho-node-lib/lib/logger').init(config); 8 const logger = require('yoho-node-lib/lib/logger').init(config);
  9 +const crypto = require('yoho-node-lib/lib/crypto');
7 10
8 global.yoho = { 11 global.yoho = {
9 logger, 12 logger,
10 - config 13 + config,
  14 + crypto
11 }; 15 };
12 16
  17 +app.use(bodyParser.text({limit: '1024kb'}));
  18 +
13 const middleware = require('./middleware'); 19 const middleware = require('./middleware');
14 20
15 app.get('/', (req, res) => { 21 app.get('/', (req, res) => {
@@ -23,6 +29,8 @@ app.use('/node/status.html', (req, res) => { @@ -23,6 +29,8 @@ app.use('/node/status.html', (req, res) => {
23 return res.status(204).end(); 29 return res.status(204).end();
24 }); 30 });
25 31
  32 +app.post('/write', middleware.serverApm);
  33 +
26 app.use('*', (req, res) => { 34 app.use('*', (req, res) => {
27 res.statusCode = 404; 35 res.statusCode = 404;
28 res.send(); 36 res.send();
@@ -39,36 +39,79 @@ module.exports = { @@ -39,36 +39,79 @@ module.exports = {
39 sourceMap: { 39 sourceMap: {
40 domain: 'http://static-ci.yoho.cn' 40 domain: 'http://static-ci.yoho.cn'
41 }, 41 },
42 - report: { 42 + reportApi: {
43 host: 'influxd.yoho.cn', 43 host: 'influxd.yoho.cn',
44 db: 'web-apm', 44 db: 'web-apm',
45 - measurement: 'api-duration', 45 + measurement: 'api-info',
46 duration: 2000, 46 duration: 2000,
47 records: 1 47 records: 1
  48 + },
  49 + reportRoute: {
  50 + host: 'influxd.yoho.cn',
  51 + db: 'web-apm',
  52 + measurement: 'route-info',
  53 + duration: 2000,
  54 + records: 1
  55 + },
  56 + mysql: {
  57 + host: '192.168.102.168',
  58 + port: '3306',
  59 + db: 'webapm',
  60 + userName: 'root',
  61 + password: 'root'
  62 + },
  63 + table: {
  64 + slow: 'slow_duration',
  65 + error: 'error_report'
  66 + },
  67 + slowRoute: {
  68 + min: 1000,
  69 + max: 10 * 1000
48 } 70 }
49 }; 71 };
50 72
51 if (isProduction) { 73 if (isProduction) {
52 Object.assign(module.exports, { 74 Object.assign(module.exports, {
53 - report: { 75 + reportApi: {
54 host: '10.66.0.139', 76 host: '10.66.0.139',
55 port: 8086, 77 port: 8086,
56 db: 'web-apm', 78 db: 'web-apm',
57 - measurement: 'api-duration', 79 + measurement: 'api-info',
  80 + duration: 2000,
  81 + records: 10
  82 + },
  83 + reportRoute: {
  84 + host: '10.66.0.139',
  85 + db: '8086',
  86 + measurement: 'route-info',
58 duration: 2000, 87 duration: 2000,
59 records: 10 88 records: 10
60 }, 89 },
61 sourceMap: { 90 sourceMap: {
62 domain: 'http://10.66.101.9:6006' 91 domain: 'http://10.66.101.9:6006'
  92 + },
  93 + mysql: {
  94 + host: '10.66.0.139',
  95 + port: '3306',
  96 + db: 'webapm',
  97 + userName: 'root',
  98 + password: 'yB877Jy7tV6juIYk'
63 } 99 }
64 }); 100 });
65 } 101 }
66 if (isTest) { 102 if (isTest) {
67 Object.assign(module.exports, { 103 Object.assign(module.exports, {
68 - report: { 104 + reportApi: {
  105 + host: 'influxdblog.web.yohoops.org',
  106 + db: 'web-apm',
  107 + measurement: 'api-info',
  108 + duration: 2000,
  109 + records: 10
  110 + },
  111 + reportRoute: {
69 host: 'influxdblog.web.yohoops.org', 112 host: 'influxdblog.web.yohoops.org',
70 db: 'web-apm', 113 db: 'web-apm',
71 - measurement: 'api-duration', 114 + measurement: 'route-info',
72 duration: 2000, 115 duration: 2000,
73 records: 10 116 records: 10
74 }, 117 },
  1 +const qs = require('querystring');
  2 +const crypto = global.yoho.crypto;
  3 +const logger = global.yoho.logger;
  4 +
  5 +class Message {
  6 + constructor(measurement, tags, fields, time) {
  7 + this.measurement = measurement;
  8 + this.tags = tags;
  9 + this.fields = fields;
  10 + this.time = time;
  11 + }
  12 +}
  13 +
  14 +const opt = {
  15 + decodeURIComponent: function(str) {
  16 + let result = decodeURIComponent(str);
  17 +
  18 + if (result[0] === '"') {
  19 + result = String(result);
  20 + }
  21 +
  22 + return result;
  23 + }
  24 +};
  25 +
  26 +function parseMessage(line) {
  27 + let measurement = line.split(',', 1)[0];
  28 + let body = line.substring(measurement.length + 1);
  29 + let tokens = body.split(' ');
  30 +
  31 + let [tags, fields, time] = [qs.parse(tokens[0], ',', '=', opt), qs.parse(tokens[1], ',', '=', opt), tokens[2]];
  32 +
  33 + return new Message(measurement, tags, fields, time);
  34 +}
  35 +
  36 +function parse(data) {
  37 + data = data.replace(/\"([^\"]*)\"/g, (match) => {
  38 + return encodeURIComponent(match);
  39 + });
  40 +
  41 + let lines = (data || '').split('\n');
  42 + let messages = lines.map(parseMessage);
  43 +
  44 + return messages;
  45 +}
  46 +
  47 +module.exports = {
  48 + parse
  49 +};
  1 +const knex = require('knex');
  2 +const config = global.yoho.config;
  3 +
  4 +function init() {
  5 + return knex({
  6 + client: 'mysql',
  7 + connection: {
  8 + host: config.mysql.host,
  9 + port: config.mysql.port,
  10 + user: config.mysql.userName,
  11 + password: config.mysql.password,
  12 + database: config.mysql.db
  13 + }
  14 + });
  15 +}
  16 +
  17 +module.exports = init();
  1 +const client = require('./mysql-client');
  2 +const log = require('debug')('mysql');
  3 +
  4 +
  5 +class MySqlSender {
  6 + constructor(table, duration = 2000) {
  7 + this.table = table;
  8 + this.batchMessages = [];
  9 +
  10 + setInterval(() => {
  11 + this._send();
  12 + }, duration);
  13 + }
  14 +
  15 + addMessage(msg) {
  16 + if (msg) {
  17 + this.batchMessages.push(msg);
  18 + }
  19 + }
  20 +
  21 + _send() {
  22 + const len = this.batchMessages.length;
  23 +
  24 + if (len < 1) {
  25 + log('batchMessage is empty');
  26 + return;
  27 + }
  28 +
  29 + const bulk = this.batchMessages.splice(0, len);
  30 +
  31 + for (let i of bulk) {
  32 + log('insert %0', i);
  33 + client(this.table).insert(i).catch((err) => {
  34 + console.log(err);
  35 + });
  36 + }
  37 +
  38 + }
  39 +}
  40 +
  41 +module.exports = MySqlSender;
1 const queryParse = require('../lib/query-parse'); 1 const queryParse = require('../lib/query-parse');
2 const sourceMapParse = require('../lib/sourcemap-parse'); 2 const sourceMapParse = require('../lib/sourcemap-parse');
3 const Sender = require('influx-batch-sender'); 3 const Sender = require('influx-batch-sender');
  4 +const MysqlSender = require('../lib/mysql-sender');
4 const _ = require('lodash'); 5 const _ = require('lodash');
5 const logger = global.yoho.logger; 6 const logger = global.yoho.logger;
6 const config = global.yoho.config; 7 const config = global.yoho.config;
  8 +const msg2row = require('./msg2row');
7 9
8 const durationType = { 10 const durationType = {
9 - dcl: 'DOMContentLoaded',  
10 - ld: 'load', 11 + dcl: 'domcontentload',
  12 + ld: 'domreadyload',
11 fs: 'firstscreen' 13 fs: 'firstscreen'
12 }; 14 };
13 15
14 -const influxSender = new Sender(config.report); 16 +const routeInfluxSender = new Sender(config.reportRoute);
  17 +
  18 +const slowRouterSender = new MysqlSender(config.table.slow);
  19 +const errorRouterSender = new MysqlSender(config.table.error);
15 20
16 module.exports = (req, res, next) => { 21 module.exports = (req, res, next) => {
17 if (!req.query.l) { 22 if (!req.query.l) {
@@ -28,9 +33,10 @@ module.exports = (req, res, next) => { @@ -28,9 +33,10 @@ module.exports = (req, res, next) => {
28 return res.send(); 33 return res.send();
29 } 34 }
30 report.forEach(item => { 35 report.forEach(item => {
31 - if (item.pt && item.pt.indexOf('openby:yohobuy')) { 36 + if (item.pt && item.pt.indexOf('openby:yohobuy') >= 0) {
32 item.pt = item.pt.substring(0, item.pt.indexOf('openby:yohobuy')); 37 item.pt = item.pt.substring(0, item.pt.indexOf('openby:yohobuy'));
33 } 38 }
  39 +
34 if (item.tp === 'err') { 40 if (item.tp === 'err') {
35 let data = { 41 let data = {
36 tags: { 42 tags: {
@@ -39,7 +45,8 @@ module.exports = (req, res, next) => { @@ -39,7 +45,8 @@ module.exports = (req, res, next) => {
39 uid: item.u, 45 uid: item.u,
40 udid: item.ud, 46 udid: item.ud,
41 route: item.pt 47 route: item.pt
42 - } 48 + },
  49 + time: new Date().getTime() * 1000000
43 }; 50 };
44 51
45 sourceMapParse.parse({ 52 sourceMapParse.parse({
@@ -63,7 +70,7 @@ module.exports = (req, res, next) => { @@ -63,7 +70,7 @@ module.exports = (req, res, next) => {
63 column: _.parseInt(originError.column || 0), 70 column: _.parseInt(originError.column || 0),
64 }; 71 };
65 } 72 }
66 - influxSender.addMessage(_.merge(data, { 73 + _.merge(data, {
67 measurement: 'error-report', 74 measurement: 'error-report',
68 tags: { 75 tags: {
69 type: 'client' 76 type: 'client'
@@ -73,35 +80,52 @@ module.exports = (req, res, next) => { @@ -73,35 +80,52 @@ module.exports = (req, res, next) => {
73 useragent: req.get('user-agent'), 80 useragent: req.get('user-agent'),
74 stack: item.st ? item.st.replace(/"/g, '') : '' 81 stack: item.st ? item.st.replace(/"/g, '') : ''
75 }, fields) 82 }, fields)
76 - })); 83 + });
  84 +
  85 + errorRouterSender.addMessage(msg2row.errorRouter(data));
77 }); 86 });
78 } else { 87 } else {
79 let data = { 88 let data = {
80 tags: { 89 tags: {
81 - app 90 + app,
  91 + route: item.pt
82 }, 92 },
83 fields: { 93 fields: {
84 reqID: item.rid, 94 reqID: item.rid,
85 uid: item.u, 95 uid: item.u,
86 - udid: item.ud,  
87 - route: item.pt  
88 - } 96 + udid: item.ud
  97 + },
  98 + time: new Date().getTime() * 1000000
89 }; 99 };
90 100
91 - if (durationType[item.tp]) {  
92 - const duration = _.parseInt(item.t);  
93 -  
94 - if (duration < 1000 * 60 * 10) {  
95 - influxSender.addMessage(_.merge(data, {  
96 - measurement: 'web-client-duration',  
97 - tags: {  
98 - type: durationType[item.tp]  
99 - },  
100 - fields: {  
101 - duration: duration,  
102 - useragent: req.get('user-agent')  
103 - }  
104 - })); 101 + const duration = _.parseInt(item.t);
  102 +
  103 + if (duration < 1000 * 60 * 10) {
  104 + _.merge(data, {
  105 + measurement: 'route-info',
  106 + tags: {
  107 + type: durationType[item.tp],
  108 + },
  109 + fields: {
  110 + duration: duration,
  111 + useragent: req.get('user-agent')
  112 + }
  113 + });
  114 +
  115 + routeInfluxSender.addMessage({
  116 + measurement: 'route-info',
  117 + tags: {
  118 + app: item.app,
  119 + host: item.hostname,
  120 + route: item.path
  121 + },
  122 + field: {
  123 + duration: item.duration
  124 + }
  125 + });
  126 +
  127 + if (duration > config.slowRoute.min || duration < config.slowRoute.max) {
  128 + slowRouterSender.addMessage(msg2row.slowRouter(data));
105 } 129 }
106 } 130 }
107 } 131 }
1 const apm = require('./apm'); 1 const apm = require('./apm');
  2 +const serverApm = require('./server-apm');
2 3
3 module.exports = { 4 module.exports = {
4 - apm 5 + apm,
  6 + serverApm
5 }; 7 };
  1 +const _ = require('lodash');
  2 +
  3 +function slowRouter(m) {
  4 + return {
  5 + app: _.get(m, 'tags.app', ''),
  6 + type: _.get(m, 'tags.type', ''),
  7 + hostname: _.get(m, 'tags.hostname', ''),
  8 + preqid: _.get(m, 'fields.preqid', ''),
  9 + reqid: _.get(m, 'fields.reqID', ''),
  10 + uid: _.get(m, 'fields.uid', ''),
  11 + udid: _.get(m, 'fields.udid', ''),
  12 + api: _.get(m, 'tags.api', ''),
  13 + route: _.get(m, 'tags.route', ''),
  14 + duration: _.get(m, 'fields.duration', ''),
  15 + create_time: _.get(m, 'time') / 1000000
  16 + };
  17 +}
  18 +
  19 +function errorRouter(m) {
  20 + return {
  21 + app: _.get(m, 'tags.app', ''),
  22 + type: _.get(m, 'tags.type', ''),
  23 + hostname: _.get(m, 'tags.hostname', ''),
  24 + preqid: _.get(m, 'tags.preqid', ''),
  25 + reqid: _.get(m, 'tags.reqID', ''),
  26 + uid: _.get(m, 'tags.uid', ''),
  27 + route: _.get(m, 'tags.route', ''),
  28 + udid: _.get(m, 'tags.udid', ''),
  29 + code: _.get(m, 'tags.code', ''),
  30 + line: _.get(m, 'fields.line', ''),
  31 + column: _.get(m, 'fields.column', ''),
  32 + script: _.get(m, 'fields.script', ''),
  33 + message: _.get(m, 'fields.message', ''),
  34 + stack: _.get(m, 'fields.stack', ''),
  35 + create_time: _.get(m, 'time') / 1000000
  36 + };
  37 +}
  38 +
  39 +module.exports = {
  40 + slowRouter,
  41 + errorRouter
  42 +};
  1 +const lineparse = require('../lib/line-parse');
  2 +
  3 +const Sender = require('influx-batch-sender');
  4 +const MysqlSender = require('../lib/mysql-sender');
  5 +const config = require('../common/config');
  6 +const msg2row = require('./msg2row');
  7 +
  8 +const errorSender = new MysqlSender(config.table.error);
  9 +const slowRouterSender = new MysqlSender(config.table.slow);
  10 +
  11 +const influxSender = new Sender(config.reportRoute);
  12 +
  13 +const server = {
  14 + async handle(data) {
  15 + let msgs = lineparse.parse(data);
  16 +
  17 + for (let m of msgs) {
  18 + if (m.measurement === 'web-server-duration') {
  19 + let duration = parseInt(m.fields.duration);
  20 +
  21 + if (duration > config.slowRoute.min || duration < config.slowRoute.max) {
  22 + slowRouterSender.addMessage(msg2row.slowRouter(m));
  23 + }
  24 + influxSender.addMessage({
  25 + measurement: 'route-info',
  26 + tags: {
  27 + app: m.tags.app,
  28 + hostname: m.tags.hostname,
  29 + route: m.tags.route
  30 +
  31 + },
  32 + field: {
  33 + duration: m.duration
  34 + }
  35 + });
  36 + } else if (m.measurement === 'error-report') {
  37 + errorSender.addMessage(msg2row.errorRouter(m));
  38 + }
  39 + }
  40 + }
  41 +};
  42 +
  43 +module.exports = function(req, res, next) {
  44 + let data = req.body || '';
  45 +
  46 + server.handle(data).then(() => {
  47 + res.json();
  48 + }).catch(next);
  49 +};
This diff could not be displayed because it is too large.
@@ -13,14 +13,18 @@ @@ -13,14 +13,18 @@
13 "author": "", 13 "author": "",
14 "license": "ISC", 14 "license": "ISC",
15 "dependencies": { 15 "dependencies": {
  16 + "body-parser": "^1.18.2",
  17 + "debug": "^3.1.0",
16 "express": "^4.15.4", 18 "express": "^4.15.4",
17 - "influx-batch-sender": "^0.1.3", 19 + "influx-batch-sender": "^0.1.5",
  20 + "knex": "^0.14.1",
18 "lodash": "^4.17.4", 21 "lodash": "^4.17.4",
19 "lru-cache": "^4.1.1", 22 "lru-cache": "^4.1.1",
  23 + "mysql": "^2.15.0",
20 "request-promise": "^4.2.1", 24 "request-promise": "^4.2.1",
21 "source-map": "^0.5.7", 25 "source-map": "^0.5.7",
22 "url": "^0.11.0", 26 "url": "^0.11.0",
23 - "yoho-node-lib": "^0.4.2" 27 + "yoho-node-lib": "^0.5.24"
24 }, 28 },
25 "devDependencies": { 29 "devDependencies": {
26 "babel-core": "^6.26.0", 30 "babel-core": "^6.26.0",
@@ -135,10 +135,18 @@ arr-flatten@^1.0.1: @@ -135,10 +135,18 @@ arr-flatten@^1.0.1:
135 version "1.1.0" 135 version "1.1.0"
136 resolved "http://npm.yoho.cn/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 136 resolved "http://npm.yoho.cn/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
137 137
  138 +array-each@^1.0.1:
  139 + version "1.0.1"
  140 + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
  141 +
138 array-flatten@1.1.1: 142 array-flatten@1.1.1:
139 version "1.1.1" 143 version "1.1.1"
140 resolved "http://npm.yoho.cn/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 144 resolved "http://npm.yoho.cn/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
141 145
  146 +array-slice@^1.0.0:
  147 + version "1.0.0"
  148 + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.0.0.tgz#e73034f00dcc1f40876008fd20feae77bd4b7c2f"
  149 +
142 array-union@^1.0.1: 150 array-union@^1.0.1:
143 version "1.0.2" 151 version "1.0.2"
144 resolved "http://npm.yoho.cn/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 152 resolved "http://npm.yoho.cn/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -632,7 +640,7 @@ babel-register@^6.26.0: @@ -632,7 +640,7 @@ babel-register@^6.26.0:
632 mkdirp "^0.5.1" 640 mkdirp "^0.5.1"
633 source-map-support "^0.4.15" 641 source-map-support "^0.4.15"
634 642
635 -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: 643 +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0:
636 version "6.26.0" 644 version "6.26.0"
637 resolved "http://npm.yoho.cn/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" 645 resolved "http://npm.yoho.cn/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
638 dependencies: 646 dependencies:
@@ -729,6 +737,10 @@ big.js@^3.1.3: @@ -729,6 +737,10 @@ big.js@^3.1.3:
729 version "3.2.0" 737 version "3.2.0"
730 resolved "http://npm.yoho.cn/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" 738 resolved "http://npm.yoho.cn/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
731 739
  740 +bignumber.js@4.0.4:
  741 + version "4.0.4"
  742 + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.0.4.tgz#7c40f5abcd2d6623ab7b99682ee7db81b11889a4"
  743 +
732 binary-extensions@^1.0.0: 744 binary-extensions@^1.0.0:
733 version "1.10.0" 745 version "1.10.0"
734 resolved "http://npm.yoho.cn/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" 746 resolved "http://npm.yoho.cn/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0"
@@ -739,6 +751,10 @@ block-stream@*: @@ -739,6 +751,10 @@ block-stream@*:
739 dependencies: 751 dependencies:
740 inherits "~2.0.0" 752 inherits "~2.0.0"
741 753
  754 +bluebird@^3.4.6:
  755 + version "3.5.1"
  756 + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
  757 +
742 bluebird@^3.5.0: 758 bluebird@^3.5.0:
743 version "3.5.0" 759 version "3.5.0"
744 resolved "http://npm.yoho.cn/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" 760 resolved "http://npm.yoho.cn/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
@@ -747,6 +763,21 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: @@ -747,6 +763,21 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
747 version "4.11.8" 763 version "4.11.8"
748 resolved "http://npm.yoho.cn/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" 764 resolved "http://npm.yoho.cn/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
749 765
  766 +body-parser@^1.18.2:
  767 + version "1.18.2"
  768 + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454"
  769 + dependencies:
  770 + bytes "3.0.0"
  771 + content-type "~1.0.4"
  772 + debug "2.6.9"
  773 + depd "~1.1.1"
  774 + http-errors "~1.6.2"
  775 + iconv-lite "0.4.19"
  776 + on-finished "~2.3.0"
  777 + qs "6.5.1"
  778 + raw-body "2.3.2"
  779 + type-is "~1.6.15"
  780 +
750 boom@2.x.x: 781 boom@2.x.x:
751 version "2.10.1" 782 version "2.10.1"
752 resolved "http://npm.yoho.cn/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 783 resolved "http://npm.yoho.cn/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
@@ -856,6 +887,10 @@ builtin-status-codes@^3.0.0: @@ -856,6 +887,10 @@ builtin-status-codes@^3.0.0:
856 version "3.0.0" 887 version "3.0.0"
857 resolved "http://npm.yoho.cn/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" 888 resolved "http://npm.yoho.cn/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
858 889
  890 +bytes@3.0.0:
  891 + version "3.0.0"
  892 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
  893 +
859 caller-path@^0.1.0: 894 caller-path@^0.1.0:
860 version "0.1.0" 895 version "0.1.0"
861 resolved "http://npm.yoho.cn/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 896 resolved "http://npm.yoho.cn/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
@@ -889,6 +924,14 @@ center-align@^0.1.1: @@ -889,6 +924,14 @@ center-align@^0.1.1:
889 align-text "^0.1.3" 924 align-text "^0.1.3"
890 lazy-cache "^1.0.3" 925 lazy-cache "^1.0.3"
891 926
  927 +chalk@2.3.0:
  928 + version "2.3.0"
  929 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
  930 + dependencies:
  931 + ansi-styles "^3.1.0"
  932 + escape-string-regexp "^1.0.5"
  933 + supports-color "^4.0.0"
  934 +
892 chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: 935 chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
893 version "1.1.3" 936 version "1.1.3"
894 resolved "http://npm.yoho.cn/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 937 resolved "http://npm.yoho.cn/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -995,6 +1038,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: @@ -995,6 +1038,10 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
995 dependencies: 1038 dependencies:
996 delayed-stream "~1.0.0" 1039 delayed-stream "~1.0.0"
997 1040
  1041 +commander@^2.2.0:
  1042 + version "2.11.0"
  1043 + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
  1044 +
998 commondir@^1.0.1: 1045 commondir@^1.0.1:
999 version "1.0.1" 1046 version "1.0.1"
1000 resolved "http://npm.yoho.cn/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 1047 resolved "http://npm.yoho.cn/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1044,7 +1091,7 @@ content-disposition@0.5.2: @@ -1044,7 +1091,7 @@ content-disposition@0.5.2:
1044 version "0.5.2" 1091 version "0.5.2"
1045 resolved "http://npm.yoho.cn/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 1092 resolved "http://npm.yoho.cn/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
1046 1093
1047 -content-type@~1.0.2: 1094 +content-type@~1.0.2, content-type@~1.0.4:
1048 version "1.0.4" 1095 version "1.0.4"
1049 resolved "http://npm.yoho.cn/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 1096 resolved "http://npm.yoho.cn/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
1050 1097
@@ -1164,6 +1211,18 @@ debug@2.6.8, debug@^2.2.0, debug@^2.6.8: @@ -1164,6 +1211,18 @@ debug@2.6.8, debug@^2.2.0, debug@^2.6.8:
1164 dependencies: 1211 dependencies:
1165 ms "2.0.0" 1212 ms "2.0.0"
1166 1213
  1214 +debug@2.6.9:
  1215 + version "2.6.9"
  1216 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
  1217 + dependencies:
  1218 + ms "2.0.0"
  1219 +
  1220 +debug@3.1.0, debug@^3.1.0:
  1221 + version "3.1.0"
  1222 + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
  1223 + dependencies:
  1224 + ms "2.0.0"
  1225 +
1167 debug@^3.0.1: 1226 debug@^3.0.1:
1168 version "3.0.1" 1227 version "3.0.1"
1169 resolved "http://npm.yoho.cn/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64" 1228 resolved "http://npm.yoho.cn/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64"
@@ -1232,6 +1291,12 @@ destroy@~1.0.4: @@ -1232,6 +1291,12 @@ destroy@~1.0.4:
1232 version "1.0.4" 1291 version "1.0.4"
1233 resolved "http://npm.yoho.cn/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 1292 resolved "http://npm.yoho.cn/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
1234 1293
  1294 +detect-file@^0.1.0:
  1295 + version "0.1.0"
  1296 + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63"
  1297 + dependencies:
  1298 + fs-exists-sync "^0.1.0"
  1299 +
1235 detect-indent@^4.0.0: 1300 detect-indent@^4.0.0:
1236 version "4.0.0" 1301 version "4.0.0"
1237 resolved "http://npm.yoho.cn/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" 1302 resolved "http://npm.yoho.cn/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
@@ -1595,6 +1660,18 @@ expand-range@^1.8.1: @@ -1595,6 +1660,18 @@ expand-range@^1.8.1:
1595 dependencies: 1660 dependencies:
1596 fill-range "^2.1.0" 1661 fill-range "^2.1.0"
1597 1662
  1663 +expand-tilde@^1.2.2:
  1664 + version "1.2.2"
  1665 + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
  1666 + dependencies:
  1667 + os-homedir "^1.0.1"
  1668 +
  1669 +expand-tilde@^2.0.2:
  1670 + version "2.0.2"
  1671 + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
  1672 + dependencies:
  1673 + homedir-polyfill "^1.0.1"
  1674 +
1598 express@^4.15.4: 1675 express@^4.15.4:
1599 version "4.15.4" 1676 version "4.15.4"
1600 resolved "http://npm.yoho.cn/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1" 1677 resolved "http://npm.yoho.cn/express/-/express-4.15.4.tgz#032e2253489cf8fce02666beca3d11ed7a2daed1"
@@ -1628,7 +1705,7 @@ express@^4.15.4: @@ -1628,7 +1705,7 @@ express@^4.15.4:
1628 utils-merge "1.0.0" 1705 utils-merge "1.0.0"
1629 vary "~1.1.1" 1706 vary "~1.1.1"
1630 1707
1631 -extend@~3.0.0: 1708 +extend@^3.0.0, extend@~3.0.0:
1632 version "3.0.1" 1709 version "3.0.1"
1633 resolved "http://npm.yoho.cn/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 1710 resolved "http://npm.yoho.cn/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
1634 1711
@@ -1715,6 +1792,29 @@ find-up@^2.0.0, find-up@^2.1.0: @@ -1715,6 +1792,29 @@ find-up@^2.0.0, find-up@^2.1.0:
1715 dependencies: 1792 dependencies:
1716 locate-path "^2.0.0" 1793 locate-path "^2.0.0"
1717 1794
  1795 +findup-sync@^0.4.2:
  1796 + version "0.4.3"
  1797 + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12"
  1798 + dependencies:
  1799 + detect-file "^0.1.0"
  1800 + is-glob "^2.0.1"
  1801 + micromatch "^2.3.7"
  1802 + resolve-dir "^0.1.0"
  1803 +
  1804 +fined@^1.0.1:
  1805 + version "1.1.0"
  1806 + resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476"
  1807 + dependencies:
  1808 + expand-tilde "^2.0.2"
  1809 + is-plain-object "^2.0.3"
  1810 + object.defaults "^1.1.0"
  1811 + object.pick "^1.2.0"
  1812 + parse-filepath "^1.0.1"
  1813 +
  1814 +flagged-respawn@^0.3.2:
  1815 + version "0.3.2"
  1816 + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5"
  1817 +
1718 flat-cache@^1.2.1: 1818 flat-cache@^1.2.1:
1719 version "1.2.2" 1819 version "1.2.2"
1720 resolved "http://npm.yoho.cn/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 1820 resolved "http://npm.yoho.cn/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
@@ -1740,6 +1840,12 @@ for-own@^0.1.4: @@ -1740,6 +1840,12 @@ for-own@^0.1.4:
1740 dependencies: 1840 dependencies:
1741 for-in "^1.0.1" 1841 for-in "^1.0.1"
1742 1842
  1843 +for-own@^1.0.0:
  1844 + version "1.0.0"
  1845 + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
  1846 + dependencies:
  1847 + for-in "^1.0.1"
  1848 +
1743 foreach@^2.0.5: 1849 foreach@^2.0.5:
1744 version "2.0.5" 1850 version "2.0.5"
1745 resolved "http://npm.yoho.cn/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 1851 resolved "http://npm.yoho.cn/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
@@ -1772,6 +1878,10 @@ from@~0: @@ -1772,6 +1878,10 @@ from@~0:
1772 version "0.1.7" 1878 version "0.1.7"
1773 resolved "http://npm.yoho.cn/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" 1879 resolved "http://npm.yoho.cn/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
1774 1880
  1881 +fs-exists-sync@^0.1.0:
  1882 + version "0.1.0"
  1883 + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
  1884 +
1775 fs.realpath@^1.0.0: 1885 fs.realpath@^1.0.0:
1776 version "1.0.0" 1886 version "1.0.0"
1777 resolved "http://npm.yoho.cn/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1887 resolved "http://npm.yoho.cn/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -1821,6 +1931,10 @@ gauge@~2.7.3: @@ -1821,6 +1931,10 @@ gauge@~2.7.3:
1821 strip-ansi "^3.0.1" 1931 strip-ansi "^3.0.1"
1822 wide-align "^1.1.0" 1932 wide-align "^1.1.0"
1823 1933
  1934 +generic-pool@^3.1.7:
  1935 + version "3.2.0"
  1936 + resolved "https://registry.yarnpkg.com/generic-pool/-/generic-pool-3.2.0.tgz#c1d485ecbd6f18c0513d4741d098a6715eaeeca8"
  1937 +
1824 get-caller-file@^1.0.1: 1938 get-caller-file@^1.0.1:
1825 version "1.0.2" 1939 version "1.0.2"
1826 resolved "http://npm.yoho.cn/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1940 resolved "http://npm.yoho.cn/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
@@ -1859,6 +1973,22 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2: @@ -1859,6 +1973,22 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2:
1859 once "^1.3.0" 1973 once "^1.3.0"
1860 path-is-absolute "^1.0.0" 1974 path-is-absolute "^1.0.0"
1861 1975
  1976 +global-modules@^0.2.3:
  1977 + version "0.2.3"
  1978 + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
  1979 + dependencies:
  1980 + global-prefix "^0.1.4"
  1981 + is-windows "^0.2.0"
  1982 +
  1983 +global-prefix@^0.1.4:
  1984 + version "0.1.5"
  1985 + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f"
  1986 + dependencies:
  1987 + homedir-polyfill "^1.0.0"
  1988 + ini "^1.3.4"
  1989 + is-windows "^0.2.0"
  1990 + which "^1.2.12"
  1991 +
1862 globals@^10.0.0: 1992 globals@^10.0.0:
1863 version "10.1.0" 1993 version "10.1.0"
1864 resolved "http://npm.yoho.cn/globals/-/globals-10.1.0.tgz#4425a1881be0d336b4a823a82a7be725d5dd987c" 1994 resolved "http://npm.yoho.cn/globals/-/globals-10.1.0.tgz#4425a1881be0d336b4a823a82a7be725d5dd987c"
@@ -1994,6 +2124,12 @@ home-or-tmp@^2.0.0: @@ -1994,6 +2124,12 @@ home-or-tmp@^2.0.0:
1994 os-homedir "^1.0.0" 2124 os-homedir "^1.0.0"
1995 os-tmpdir "^1.0.1" 2125 os-tmpdir "^1.0.1"
1996 2126
  2127 +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
  2128 + version "1.0.1"
  2129 + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
  2130 + dependencies:
  2131 + parse-passwd "^1.0.0"
  2132 +
1997 hosted-git-info@^2.1.4: 2133 hosted-git-info@^2.1.4:
1998 version "2.5.0" 2134 version "2.5.0"
1999 resolved "http://npm.yoho.cn/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 2135 resolved "http://npm.yoho.cn/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c"
@@ -2008,7 +2144,7 @@ htmlparser2@^3.8.2: @@ -2008,7 +2144,7 @@ htmlparser2@^3.8.2:
2008 entities "1.0" 2144 entities "1.0"
2009 readable-stream "1.1" 2145 readable-stream "1.1"
2010 2146
2011 -http-errors@~1.6.2: 2147 +http-errors@1.6.2, http-errors@~1.6.2:
2012 version "1.6.2" 2148 version "1.6.2"
2013 resolved "http://npm.yoho.cn/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" 2149 resolved "http://npm.yoho.cn/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
2014 dependencies: 2150 dependencies:
@@ -2029,7 +2165,7 @@ https-browserify@0.0.1: @@ -2029,7 +2165,7 @@ https-browserify@0.0.1:
2029 version "0.0.1" 2165 version "0.0.1"
2030 resolved "http://npm.yoho.cn/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" 2166 resolved "http://npm.yoho.cn/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
2031 2167
2032 -iconv-lite@^0.4.17: 2168 +iconv-lite@0.4.19, iconv-lite@^0.4.17:
2033 version "0.4.19" 2169 version "0.4.19"
2034 resolved "http://npm.yoho.cn/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 2170 resolved "http://npm.yoho.cn/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
2035 2171
@@ -2086,6 +2222,10 @@ inherits@2.0.1: @@ -2086,6 +2222,10 @@ inherits@2.0.1:
2086 version "2.0.1" 2222 version "2.0.1"
2087 resolved "http://npm.yoho.cn/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 2223 resolved "http://npm.yoho.cn/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
2088 2224
  2225 +ini@^1.3.4:
  2226 + version "1.3.5"
  2227 + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
  2228 +
2089 ini@~1.3.0: 2229 ini@~1.3.0:
2090 version "1.3.4" 2230 version "1.3.4"
2091 resolved "http://npm.yoho.cn/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 2231 resolved "http://npm.yoho.cn/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
@@ -2109,7 +2249,7 @@ inquirer@^3.0.6: @@ -2109,7 +2249,7 @@ inquirer@^3.0.6:
2109 strip-ansi "^4.0.0" 2249 strip-ansi "^4.0.0"
2110 through "^2.3.6" 2250 through "^2.3.6"
2111 2251
2112 -interpret@^1.0.0: 2252 +interpret@^1.0.0, interpret@^1.0.4:
2113 version "1.0.4" 2253 version "1.0.4"
2114 resolved "http://npm.yoho.cn/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" 2254 resolved "http://npm.yoho.cn/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0"
2115 2255
@@ -2127,6 +2267,13 @@ ipaddr.js@1.4.0: @@ -2127,6 +2267,13 @@ ipaddr.js@1.4.0:
2127 version "1.4.0" 2267 version "1.4.0"
2128 resolved "http://npm.yoho.cn/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0" 2268 resolved "http://npm.yoho.cn/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
2129 2269
  2270 +is-absolute@^0.2.3:
  2271 + version "0.2.6"
  2272 + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb"
  2273 + dependencies:
  2274 + is-relative "^0.2.1"
  2275 + is-windows "^0.2.0"
  2276 +
2130 is-arrayish@^0.2.1: 2277 is-arrayish@^0.2.1:
2131 version "0.2.1" 2278 version "0.2.1"
2132 resolved "http://npm.yoho.cn/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 2279 resolved "http://npm.yoho.cn/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -2235,6 +2382,12 @@ is-path-inside@^1.0.0: @@ -2235,6 +2382,12 @@ is-path-inside@^1.0.0:
2235 dependencies: 2382 dependencies:
2236 path-is-inside "^1.0.1" 2383 path-is-inside "^1.0.1"
2237 2384
  2385 +is-plain-object@^2.0.3:
  2386 + version "2.0.4"
  2387 + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
  2388 + dependencies:
  2389 + isobject "^3.0.1"
  2390 +
2238 is-posix-bracket@^0.1.0: 2391 is-posix-bracket@^0.1.0:
2239 version "0.1.1" 2392 version "0.1.1"
2240 resolved "http://npm.yoho.cn/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 2393 resolved "http://npm.yoho.cn/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -2257,6 +2410,12 @@ is-regex@^1.0.4: @@ -2257,6 +2410,12 @@ is-regex@^1.0.4:
2257 dependencies: 2410 dependencies:
2258 has "^1.0.1" 2411 has "^1.0.1"
2259 2412
  2413 +is-relative@^0.2.1:
  2414 + version "0.2.1"
  2415 + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5"
  2416 + dependencies:
  2417 + is-unc-path "^0.1.1"
  2418 +
2260 is-resolvable@^1.0.0: 2419 is-resolvable@^1.0.0:
2261 version "1.0.0" 2420 version "1.0.0"
2262 resolved "http://npm.yoho.cn/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 2421 resolved "http://npm.yoho.cn/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
@@ -2279,6 +2438,16 @@ is-typedarray@~1.0.0: @@ -2279,6 +2438,16 @@ is-typedarray@~1.0.0:
2279 version "1.0.0" 2438 version "1.0.0"
2280 resolved "http://npm.yoho.cn/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2439 resolved "http://npm.yoho.cn/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
2281 2440
  2441 +is-unc-path@^0.1.1:
  2442 + version "0.1.2"
  2443 + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9"
  2444 + dependencies:
  2445 + unc-path-regex "^0.1.0"
  2446 +
  2447 +is-windows@^0.2.0:
  2448 + version "0.2.0"
  2449 + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c"
  2450 +
2282 isarray@0.0.1: 2451 isarray@0.0.1:
2283 version "0.0.1" 2452 version "0.0.1"
2284 resolved "http://npm.yoho.cn/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 2453 resolved "http://npm.yoho.cn/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
@@ -2297,6 +2466,10 @@ isobject@^2.0.0: @@ -2297,6 +2466,10 @@ isobject@^2.0.0:
2297 dependencies: 2466 dependencies:
2298 isarray "1.0.0" 2467 isarray "1.0.0"
2299 2468
  2469 +isobject@^3.0.0, isobject@^3.0.1:
  2470 + version "3.0.1"
  2471 + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
  2472 +
2300 isstream@0.1.x, isstream@~0.1.2: 2473 isstream@0.1.x, isstream@~0.1.2:
2301 version "0.1.2" 2474 version "0.1.2"
2302 resolved "http://npm.yoho.cn/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 2475 resolved "http://npm.yoho.cn/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -2385,6 +2558,29 @@ kind-of@^4.0.0: @@ -2385,6 +2558,29 @@ kind-of@^4.0.0:
2385 dependencies: 2558 dependencies:
2386 is-buffer "^1.1.5" 2559 is-buffer "^1.1.5"
2387 2560
  2561 +knex@^0.14.1:
  2562 + version "0.14.1"
  2563 + resolved "https://registry.yarnpkg.com/knex/-/knex-0.14.1.tgz#ba4ae5afc2824a43b392fbbc8f8a7753e356d808"
  2564 + dependencies:
  2565 + babel-runtime "^6.23.0"
  2566 + bluebird "^3.4.6"
  2567 + chalk "2.3.0"
  2568 + commander "^2.2.0"
  2569 + debug "3.1.0"
  2570 + generic-pool "^3.1.7"
  2571 + inherits "~2.0.1"
  2572 + interpret "^1.0.4"
  2573 + liftoff "2.3.0"
  2574 + lodash "^4.6.0"
  2575 + minimist "1.2.0"
  2576 + mkdirp "^0.5.0"
  2577 + pg-connection-string "2.0.0"
  2578 + readable-stream "2.3.3"
  2579 + safe-buffer "^5.0.1"
  2580 + tildify "1.2.0"
  2581 + uuid "^3.0.0"
  2582 + v8flags "^3.0.0"
  2583 +
2388 latest-version@^3.0.0: 2584 latest-version@^3.0.0:
2389 version "3.1.0" 2585 version "3.1.0"
2390 resolved "http://npm.yoho.cn/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 2586 resolved "http://npm.yoho.cn/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
@@ -2408,6 +2604,20 @@ levn@^0.3.0, levn@~0.3.0: @@ -2408,6 +2604,20 @@ levn@^0.3.0, levn@~0.3.0:
2408 prelude-ls "~1.1.2" 2604 prelude-ls "~1.1.2"
2409 type-check "~0.3.2" 2605 type-check "~0.3.2"
2410 2606
  2607 +liftoff@2.3.0:
  2608 + version "2.3.0"
  2609 + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385"
  2610 + dependencies:
  2611 + extend "^3.0.0"
  2612 + findup-sync "^0.4.2"
  2613 + fined "^1.0.1"
  2614 + flagged-respawn "^0.3.2"
  2615 + lodash.isplainobject "^4.0.4"
  2616 + lodash.isstring "^4.0.1"
  2617 + lodash.mapvalues "^4.4.0"
  2618 + rechoir "^0.6.2"
  2619 + resolve "^1.1.7"
  2620 +
2411 load-json-file@^2.0.0: 2621 load-json-file@^2.0.0:
2412 version "2.0.0" 2622 version "2.0.0"
2413 resolved "http://npm.yoho.cn/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 2623 resolved "http://npm.yoho.cn/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
@@ -2490,6 +2700,14 @@ lodash.isarray@^3.0.0: @@ -2490,6 +2700,14 @@ lodash.isarray@^3.0.0:
2490 version "3.0.4" 2700 version "3.0.4"
2491 resolved "http://npm.yoho.cn/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 2701 resolved "http://npm.yoho.cn/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
2492 2702
  2703 +lodash.isplainobject@^4.0.4:
  2704 + version "4.0.6"
  2705 + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
  2706 +
  2707 +lodash.isstring@^4.0.1:
  2708 + version "4.0.1"
  2709 + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
  2710 +
2493 lodash.keys@^3.0.0: 2711 lodash.keys@^3.0.0:
2494 version "3.1.2" 2712 version "3.1.2"
2495 resolved "http://npm.yoho.cn/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 2713 resolved "http://npm.yoho.cn/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
@@ -2498,11 +2716,15 @@ lodash.keys@^3.0.0: @@ -2498,11 +2716,15 @@ lodash.keys@^3.0.0:
2498 lodash.isarguments "^3.0.0" 2716 lodash.isarguments "^3.0.0"
2499 lodash.isarray "^3.0.0" 2717 lodash.isarray "^3.0.0"
2500 2718
  2719 +lodash.mapvalues@^4.4.0:
  2720 + version "4.6.0"
  2721 + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
  2722 +
2501 lodash.restparam@^3.0.0: 2723 lodash.restparam@^3.0.0:
2502 version "3.6.1" 2724 version "3.6.1"
2503 resolved "http://npm.yoho.cn/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" 2725 resolved "http://npm.yoho.cn/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
2504 2726
2505 -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: 2727 +lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.6.0:
2506 version "4.17.4" 2728 version "4.17.4"
2507 resolved "http://npm.yoho.cn/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 2729 resolved "http://npm.yoho.cn/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
2508 2730
@@ -2533,6 +2755,10 @@ make-dir@^1.0.0: @@ -2533,6 +2755,10 @@ make-dir@^1.0.0:
2533 dependencies: 2755 dependencies:
2534 pify "^2.3.0" 2756 pify "^2.3.0"
2535 2757
  2758 +map-cache@^0.2.0:
  2759 + version "0.2.2"
  2760 + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
  2761 +
2536 map-stream@~0.1.0: 2762 map-stream@~0.1.0:
2537 version "0.1.0" 2763 version "0.1.0"
2538 resolved "http://npm.yoho.cn/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" 2764 resolved "http://npm.yoho.cn/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
@@ -2584,7 +2810,7 @@ methods@~1.1.2: @@ -2584,7 +2810,7 @@ methods@~1.1.2:
2584 version "1.1.2" 2810 version "1.1.2"
2585 resolved "http://npm.yoho.cn/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 2811 resolved "http://npm.yoho.cn/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
2586 2812
2587 -micromatch@^2.1.5: 2813 +micromatch@^2.1.5, micromatch@^2.3.7:
2588 version "2.3.11" 2814 version "2.3.11"
2589 resolved "http://npm.yoho.cn/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 2815 resolved "http://npm.yoho.cn/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
2590 dependencies: 2816 dependencies:
@@ -2645,11 +2871,11 @@ minimist@0.0.8, minimist@~0.0.1: @@ -2645,11 +2871,11 @@ minimist@0.0.8, minimist@~0.0.1:
2645 version "0.0.8" 2871 version "0.0.8"
2646 resolved "http://npm.yoho.cn/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 2872 resolved "http://npm.yoho.cn/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
2647 2873
2648 -minimist@^1.2.0, minimist@~1.2.0: 2874 +minimist@1.2.0, minimist@^1.2.0, minimist@~1.2.0:
2649 version "1.2.0" 2875 version "1.2.0"
2650 resolved "http://npm.yoho.cn/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 2876 resolved "http://npm.yoho.cn/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
2651 2877
2652 -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: 2878 +mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
2653 version "0.5.1" 2879 version "0.5.1"
2654 resolved "http://npm.yoho.cn/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 2880 resolved "http://npm.yoho.cn/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
2655 dependencies: 2881 dependencies:
@@ -2667,6 +2893,15 @@ mute-stream@0.0.7: @@ -2667,6 +2893,15 @@ mute-stream@0.0.7:
2667 version "0.0.7" 2893 version "0.0.7"
2668 resolved "http://npm.yoho.cn/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 2894 resolved "http://npm.yoho.cn/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
2669 2895
  2896 +mysql@^2.15.0:
  2897 + version "2.15.0"
  2898 + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.15.0.tgz#ea16841156343e8f2e47fc8985ec41cdd9573b5c"
  2899 + dependencies:
  2900 + bignumber.js "4.0.4"
  2901 + readable-stream "2.3.3"
  2902 + safe-buffer "5.1.1"
  2903 + sqlstring "2.3.0"
  2904 +
2670 nan@^2.3.0: 2905 nan@^2.3.0:
2671 version "2.7.0" 2906 version "2.7.0"
2672 resolved "http://npm.yoho.cn/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" 2907 resolved "http://npm.yoho.cn/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46"
@@ -2800,6 +3035,15 @@ object-keys@^1.0.8: @@ -2800,6 +3035,15 @@ object-keys@^1.0.8:
2800 version "1.0.11" 3035 version "1.0.11"
2801 resolved "http://npm.yoho.cn/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 3036 resolved "http://npm.yoho.cn/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
2802 3037
  3038 +object.defaults@^1.1.0:
  3039 + version "1.1.0"
  3040 + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
  3041 + dependencies:
  3042 + array-each "^1.0.1"
  3043 + array-slice "^1.0.0"
  3044 + for-own "^1.0.0"
  3045 + isobject "^3.0.0"
  3046 +
2803 object.omit@^2.0.0: 3047 object.omit@^2.0.0:
2804 version "2.0.1" 3048 version "2.0.1"
2805 resolved "http://npm.yoho.cn/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 3049 resolved "http://npm.yoho.cn/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@@ -2807,6 +3051,12 @@ object.omit@^2.0.0: @@ -2807,6 +3051,12 @@ object.omit@^2.0.0:
2807 for-own "^0.1.4" 3051 for-own "^0.1.4"
2808 is-extendable "^0.1.1" 3052 is-extendable "^0.1.1"
2809 3053
  3054 +object.pick@^1.2.0:
  3055 + version "1.3.0"
  3056 + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
  3057 + dependencies:
  3058 + isobject "^3.0.1"
  3059 +
2810 on-finished@~2.3.0: 3060 on-finished@~2.3.0:
2811 version "2.3.0" 3061 version "2.3.0"
2812 resolved "http://npm.yoho.cn/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 3062 resolved "http://npm.yoho.cn/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
@@ -2847,7 +3097,7 @@ os-browserify@^0.2.0: @@ -2847,7 +3097,7 @@ os-browserify@^0.2.0:
2847 version "0.2.1" 3097 version "0.2.1"
2848 resolved "http://npm.yoho.cn/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" 3098 resolved "http://npm.yoho.cn/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
2849 3099
2850 -os-homedir@^1.0.0: 3100 +os-homedir@^1.0.0, os-homedir@^1.0.1:
2851 version "1.0.2" 3101 version "1.0.2"
2852 resolved "http://npm.yoho.cn/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 3102 resolved "http://npm.yoho.cn/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
2853 3103
@@ -2907,6 +3157,14 @@ parse-asn1@^5.0.0: @@ -2907,6 +3157,14 @@ parse-asn1@^5.0.0:
2907 evp_bytestokey "^1.0.0" 3157 evp_bytestokey "^1.0.0"
2908 pbkdf2 "^3.0.3" 3158 pbkdf2 "^3.0.3"
2909 3159
  3160 +parse-filepath@^1.0.1:
  3161 + version "1.0.1"
  3162 + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73"
  3163 + dependencies:
  3164 + is-absolute "^0.2.3"
  3165 + map-cache "^0.2.0"
  3166 + path-root "^0.1.1"
  3167 +
2910 parse-glob@^3.0.4: 3168 parse-glob@^3.0.4:
2911 version "3.0.4" 3169 version "3.0.4"
2912 resolved "http://npm.yoho.cn/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 3170 resolved "http://npm.yoho.cn/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
@@ -2922,6 +3180,10 @@ parse-json@^2.2.0: @@ -2922,6 +3180,10 @@ parse-json@^2.2.0:
2922 dependencies: 3180 dependencies:
2923 error-ex "^1.2.0" 3181 error-ex "^1.2.0"
2924 3182
  3183 +parse-passwd@^1.0.0:
  3184 + version "1.0.0"
  3185 + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
  3186 +
2925 parseurl@~1.3.1: 3187 parseurl@~1.3.1:
2926 version "1.3.2" 3188 version "1.3.2"
2927 resolved "http://npm.yoho.cn/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" 3189 resolved "http://npm.yoho.cn/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
@@ -2950,6 +3212,16 @@ path-parse@^1.0.5: @@ -2950,6 +3212,16 @@ path-parse@^1.0.5:
2950 version "1.0.5" 3212 version "1.0.5"
2951 resolved "http://npm.yoho.cn/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 3213 resolved "http://npm.yoho.cn/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
2952 3214
  3215 +path-root-regex@^0.1.0:
  3216 + version "0.1.2"
  3217 + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
  3218 +
  3219 +path-root@^0.1.1:
  3220 + version "0.1.1"
  3221 + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7"
  3222 + dependencies:
  3223 + path-root-regex "^0.1.0"
  3224 +
2953 path-to-regexp@0.1.7: 3225 path-to-regexp@0.1.7:
2954 version "0.1.7" 3226 version "0.1.7"
2955 resolved "http://npm.yoho.cn/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 3227 resolved "http://npm.yoho.cn/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
@@ -2980,6 +3252,10 @@ performance-now@^0.2.0: @@ -2980,6 +3252,10 @@ performance-now@^0.2.0:
2980 version "0.2.0" 3252 version "0.2.0"
2981 resolved "http://npm.yoho.cn/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 3253 resolved "http://npm.yoho.cn/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
2982 3254
  3255 +pg-connection-string@2.0.0:
  3256 + version "2.0.0"
  3257 + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.0.0.tgz#3eefe5997e06d94821e4d502e42b6a1c73f8df82"
  3258 +
2983 pify@^2.0.0, pify@^2.3.0: 3259 pify@^2.0.0, pify@^2.3.0:
2984 version "2.3.0" 3260 version "2.3.0"
2985 resolved "http://npm.yoho.cn/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 3261 resolved "http://npm.yoho.cn/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
@@ -3075,6 +3351,10 @@ qs@6.5.0: @@ -3075,6 +3351,10 @@ qs@6.5.0:
3075 version "6.5.0" 3351 version "6.5.0"
3076 resolved "http://npm.yoho.cn/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" 3352 resolved "http://npm.yoho.cn/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49"
3077 3353
  3354 +qs@6.5.1:
  3355 + version "6.5.1"
  3356 + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8"
  3357 +
3078 qs@~6.4.0: 3358 qs@~6.4.0:
3079 version "6.4.0" 3359 version "6.4.0"
3080 resolved "http://npm.yoho.cn/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 3360 resolved "http://npm.yoho.cn/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
@@ -3104,6 +3384,15 @@ range-parser@~1.2.0: @@ -3104,6 +3384,15 @@ range-parser@~1.2.0:
3104 version "1.2.0" 3384 version "1.2.0"
3105 resolved "http://npm.yoho.cn/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 3385 resolved "http://npm.yoho.cn/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
3106 3386
  3387 +raw-body@2.3.2:
  3388 + version "2.3.2"
  3389 + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
  3390 + dependencies:
  3391 + bytes "3.0.0"
  3392 + http-errors "1.6.2"
  3393 + iconv-lite "0.4.19"
  3394 + unpipe "1.0.0"
  3395 +
3107 rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: 3396 rc@^1.0.1, rc@^1.1.6, rc@^1.1.7:
3108 version "1.2.1" 3397 version "1.2.1"
3109 resolved "http://npm.yoho.cn/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 3398 resolved "http://npm.yoho.cn/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
@@ -3137,7 +3426,7 @@ readable-stream@1.1: @@ -3137,7 +3426,7 @@ readable-stream@1.1:
3137 isarray "0.0.1" 3426 isarray "0.0.1"
3138 string_decoder "~0.10.x" 3427 string_decoder "~0.10.x"
3139 3428
3140 -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: 3429 +readable-stream@2.3.3, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6:
3141 version "2.3.3" 3430 version "2.3.3"
3142 resolved "http://npm.yoho.cn/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 3431 resolved "http://npm.yoho.cn/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
3143 dependencies: 3432 dependencies:
@@ -3158,6 +3447,12 @@ readdirp@^2.0.0: @@ -3158,6 +3447,12 @@ readdirp@^2.0.0:
3158 readable-stream "^2.0.2" 3447 readable-stream "^2.0.2"
3159 set-immediate-shim "^1.0.1" 3448 set-immediate-shim "^1.0.1"
3160 3449
  3450 +rechoir@^0.6.2:
  3451 + version "0.6.2"
  3452 + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
  3453 + dependencies:
  3454 + resolve "^1.1.6"
  3455 +
3161 regenerate@^1.2.1: 3456 regenerate@^1.2.1:
3162 version "1.3.2" 3457 version "1.3.2"
3163 resolved "http://npm.yoho.cn/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" 3458 resolved "http://npm.yoho.cn/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260"
@@ -3286,10 +3581,23 @@ require-uncached@^1.0.3: @@ -3286,10 +3581,23 @@ require-uncached@^1.0.3:
3286 caller-path "^0.1.0" 3581 caller-path "^0.1.0"
3287 resolve-from "^1.0.0" 3582 resolve-from "^1.0.0"
3288 3583
  3584 +resolve-dir@^0.1.0:
  3585 + version "0.1.1"
  3586 + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e"
  3587 + dependencies:
  3588 + expand-tilde "^1.2.2"
  3589 + global-modules "^0.2.3"
  3590 +
3289 resolve-from@^1.0.0: 3591 resolve-from@^1.0.0:
3290 version "1.0.1" 3592 version "1.0.1"
3291 resolved "http://npm.yoho.cn/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 3593 resolved "http://npm.yoho.cn/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
3292 3594
  3595 +resolve@^1.1.6, resolve@^1.1.7:
  3596 + version "1.5.0"
  3597 + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
  3598 + dependencies:
  3599 + path-parse "^1.0.5"
  3600 +
3293 resolve@~1.4.0: 3601 resolve@~1.4.0:
3294 version "1.4.0" 3602 version "1.4.0"
3295 resolved "http://npm.yoho.cn/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" 3603 resolved "http://npm.yoho.cn/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
@@ -3352,7 +3660,7 @@ rx-lite@*, rx-lite@^4.0.8: @@ -3352,7 +3660,7 @@ rx-lite@*, rx-lite@^4.0.8:
3352 version "4.0.8" 3660 version "4.0.8"
3353 resolved "http://npm.yoho.cn/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 3661 resolved "http://npm.yoho.cn/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
3354 3662
3355 -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 3663 +safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
3356 version "5.1.1" 3664 version "5.1.1"
3357 resolved "http://npm.yoho.cn/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 3665 resolved "http://npm.yoho.cn/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
3358 3666
@@ -3491,6 +3799,10 @@ sprintf-js@~1.0.2: @@ -3491,6 +3799,10 @@ sprintf-js@~1.0.2:
3491 version "1.0.3" 3799 version "1.0.3"
3492 resolved "http://npm.yoho.cn/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 3800 resolved "http://npm.yoho.cn/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
3493 3801
  3802 +sqlstring@2.3.0:
  3803 + version "2.3.0"
  3804 + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.0.tgz#525b8a4fd26d6f71aa61e822a6caf976d31ad2a8"
  3805 +
3494 sshpk@^1.7.0: 3806 sshpk@^1.7.0:
3495 version "1.13.1" 3807 version "1.13.1"
3496 resolved "http://npm.yoho.cn/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 3808 resolved "http://npm.yoho.cn/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
@@ -3679,6 +3991,12 @@ through@2, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4, through @@ -3679,6 +3991,12 @@ through@2, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4, through
3679 version "2.3.8" 3991 version "2.3.8"
3680 resolved "http://npm.yoho.cn/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 3992 resolved "http://npm.yoho.cn/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
3681 3993
  3994 +tildify@1.2.0:
  3995 + version "1.2.0"
  3996 + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a"
  3997 + dependencies:
  3998 + os-homedir "^1.0.0"
  3999 +
3682 timed-out@^4.0.0: 4000 timed-out@^4.0.0:
3683 version "4.0.1" 4001 version "4.0.1"
3684 resolved "http://npm.yoho.cn/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 4002 resolved "http://npm.yoho.cn/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
@@ -3783,6 +4101,10 @@ uid-number@^0.0.6: @@ -3783,6 +4101,10 @@ uid-number@^0.0.6:
3783 version "0.0.6" 4101 version "0.0.6"
3784 resolved "http://npm.yoho.cn/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 4102 resolved "http://npm.yoho.cn/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
3785 4103
  4104 +unc-path-regex@^0.1.0:
  4105 + version "0.1.2"
  4106 + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
  4107 +
3786 undefsafe@0.0.3: 4108 undefsafe@0.0.3:
3787 version "0.0.3" 4109 version "0.0.3"
3788 resolved "http://npm.yoho.cn/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f" 4110 resolved "http://npm.yoho.cn/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
@@ -3793,7 +4115,7 @@ unique-string@^1.0.0: @@ -3793,7 +4115,7 @@ unique-string@^1.0.0:
3793 dependencies: 4115 dependencies:
3794 crypto-random-string "^1.0.0" 4116 crypto-random-string "^1.0.0"
3795 4117
3796 -unpipe@~1.0.0: 4118 +unpipe@1.0.0, unpipe@~1.0.0:
3797 version "1.0.0" 4119 version "1.0.0"
3798 resolved "http://npm.yoho.cn/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 4120 resolved "http://npm.yoho.cn/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
3799 4121
@@ -3845,6 +4167,12 @@ uuid@^3.0.0, uuid@^3.0.1: @@ -3845,6 +4167,12 @@ uuid@^3.0.0, uuid@^3.0.1:
3845 version "3.1.0" 4167 version "3.1.0"
3846 resolved "http://npm.yoho.cn/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 4168 resolved "http://npm.yoho.cn/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
3847 4169
  4170 +v8flags@^3.0.0:
  4171 + version "3.0.1"
  4172 + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.0.1.tgz#dce8fc379c17d9f2c9e9ed78d89ce00052b1b76b"
  4173 + dependencies:
  4174 + homedir-polyfill "^1.0.1"
  4175 +
3848 validate-npm-package-license@^3.0.1: 4176 validate-npm-package-license@^3.0.1:
3849 version "3.0.1" 4177 version "3.0.1"
3850 resolved "http://npm.yoho.cn/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 4178 resolved "http://npm.yoho.cn/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
@@ -3922,7 +4250,7 @@ which-module@^2.0.0: @@ -3922,7 +4250,7 @@ which-module@^2.0.0:
3922 version "2.0.0" 4250 version "2.0.0"
3923 resolved "http://npm.yoho.cn/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 4251 resolved "http://npm.yoho.cn/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3924 4252
3925 -which@^1.2.9: 4253 +which@^1.2.12, which@^1.2.9:
3926 version "1.3.0" 4254 version "1.3.0"
3927 resolved "http://npm.yoho.cn/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 4255 resolved "http://npm.yoho.cn/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
3928 dependencies: 4256 dependencies: