Commit f009be47 authored by kewei.jia's avatar kewei.jia

增加了eslint规则和logger

parent 9b0bbbed
node_modules/*.js
config/logger.js
module.exports = {
extends: [
"airbnb-base"
],
rules: {
"semi": "off",
"func-names": "off",
"no-restricted-syntax": "off",
"no-underscore-dangle": "off",
"import/no-dynamic-require": "off",
'prefer-destructuring': "off",
"no-bitwise": "off",
"no-param-reassign": "off",
"no-await-in-loop": "off",
"consistent-return": "off",
"no-shadow": "off",
"no-useless-escape": "off",
"camelcase": "off",
"prefer-rest-params" : "off",
"max-len" :["error", { "code": 150 }]
}
}
{
"extends": "standard"
}
\ No newline at end of file
......@@ -5,36 +5,36 @@ const templates = require('../serviceTemplate')
const IMAGES = {
zookeeper: 'zookeeper:3.4.10',
rabbitmq: 'rabbitmq:3.6-management',
mysql: 'mysql:5.7'
mysql: 'mysql:5.7',
}
const router = new Router()
module.exports = router
router.post('/create', async ctx => {
let { serviceName, namespace } = ctx.request.body
router.post('/create', async (ctx) => {
const { serviceName, namespace } = ctx.request.body
if (!Object.keys(IMAGES).includes(serviceName)) {
ctx.body = ctx.fail('不支持的服务类型')
return
}
let data = {
const data = {
namespace,
image: IMAGES[serviceName]
image: IMAGES[serviceName],
}
let template = templates[serviceName].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
const template = templates[serviceName].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
const params = yaml.load(template)
await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功')
})
router.post('/delete', async ctx => {
let { serviceName, namespace } = ctx.request.body
router.post('/delete', async (ctx) => {
const { serviceName, namespace } = ctx.request.body
await ctx.client.service_delete(serviceName, namespace)
ctx.body = ctx.ok('删除成功')
})
const Koa = require('koa')
const Router = require('koa-router')
const bodyParser = require('koa-bodyparser')
const log4js = require('koa-log4')
const logConf = require('../config/logger')
const error = require('../middleware/error')
const result = require('../middleware/result')
......@@ -14,6 +16,10 @@ const tag = require('./tag')
const commonServiceRoute = require('./commonService')
const ingressRoute = require('./ingress')
const logFormat = ':req[x-real-ip] :req[x-forwarded-for] - -'
+ ' ":method :url HTTP/:http-version"'
+ ' :status :content-length ":referrer"'
+ ' ":user-agent" :req[x-auth-token] :response-timems'
// const client = require('../services/tke.service').create({
// secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
// secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
......@@ -22,7 +28,10 @@ const ingressRoute = require('./ingress')
// })
const cluster = require('../services/tke.clusterService').create()
const container = require('../services/tke.containerService').create()
function loadRoutes (router) {
const logger = log4js.getLogger()
log4js.configure(logConf.devlog)
function loadRoutes(router) {
router
.use(error())
.use(result())
......@@ -38,8 +47,8 @@ function loadRoutes (router) {
// .use('/zookeeper', zookeeperRoute.routes())
.use('/commonService', commonServiceRoute.routes())
.use('/ingress', ingressRoute.routes())
.use('/repository',repositoryRouter.routes())
.use('/tag',tag.routes())
.use('/repository', repositoryRouter.routes())
.use('/tag', tag.routes())
}
exports.start = function () {
......@@ -49,8 +58,9 @@ exports.start = function () {
// 加载所有路由
loadRoutes(router)
app.use(log4js.koaLogger())
app.use(router.routes())
app.listen(4000)
console.log('app start', 4000)
logger.info('server listening 4000')
logger.info('加载环境配置: ', process.env.NODE_ENV)
}
......@@ -3,8 +3,8 @@ const Router = require('koa-router')
const router = new Router();
module.exports = router
router.get('/', async ctx => {
let data = await ctx.client.ingress_get(ctx.query.namespace)
router.get('/', async (ctx) => {
const data = await ctx.client.ingress_get(ctx.query.namespace)
ctx.body = ctx.ok(data)
})
......@@ -12,26 +12,28 @@ router.get('/', async ctx => {
namespace
rules
*/
router.post('/modify', async ctx => {
let ingress = await ctx.client.ingress_get(ctx.request.body.namespace)
router.post('/modify', async (ctx) => {
const ingress = await ctx.client.ingress_get(ctx.request.body.namespace)
if (!ingress) {
return ctx.body = ctx.fail('namespace下没有ingress,请先创建')
ctx.body = ctx.fail('namespace下没有ingress,请先创建')
return ctx.body
}
console.log(1, ingress)
// let data = await ctx.client.ingress_modify()
ctx.body = ctx.ok(ingress)
})
router.post('/create', async ctx => {
let ingress = await ctx.client.ingress_get(ctx.request.body.namespace)
router.post('/create', async (ctx) => {
const ingress = await ctx.client.ingress_get(ctx.request.body.namespace)
if (ingress) {
return ctx.body = ctx.fail('namespace下已存在ingress')
ctx.body = ctx.fail('namespace下已存在ingress')
return ctx.body
}
await ctx.client.ingress_create(ctx.request.body.namespace)
ctx.body = ctx.ok()
})
router.post('/delete', async ctx => {
router.post('/delete', async (ctx) => {
await ctx.client.ingress_delete(ctx.request.body.ingressName, ctx.request.body.namespace)
ctx.body = ctx.ok()
})
const Router = require('koa-router')
const { log } = require('../config/logger')
const router = new Router();
module.exports = router
router.get('/', async ctx => {
let data = await ctx.cluster.namespace_get()
router.get('/', async (ctx) => {
ctx.logger.info('hhello')
const data = await ctx.cluster.namespace_get()
ctx.body = ctx.ok(data)
})
router.post('/create', async ctx => {
router.post('/create', async (ctx) => {
await ctx.cluster.namespace_create(ctx.request.body.name)
await ctx.cluster.ingress_create(ctx.request.body.name)
ctx.body = ctx.ok()
})
router.post('/delete', async ctx => {
router.post('/delete', async (ctx) => {
await ctx.cluster.namespace_delete(ctx.request.body.name)
ctx.body = ctx.ok()
})
......@@ -7,29 +7,29 @@ const IMAGES = ['rabbitmq:3.6-management']
const router = new Router()
module.exports = router
router.post('/create', async ctx => {
router.post('/create', async (ctx) => {
// let svc = await ctx.client.service_get('rabbitmq', ctx.request.body.namespace)
// if (svc) {
// ctx.body = ctx.fail('服务已经存在')
// return
// }
let data = {
const data = {
namespace: ctx.request.body.namespace,
image: IMAGES[0]
image: IMAGES[0],
}
let template = templates['rabbitmq'].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
const template = templates.rabbitmq.replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
const params = yaml.load(template)
await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功')
})
router.post('/delete', async ctx => {
router.post('/delete', async (ctx) => {
await ctx.client.service_delete('rabbitmq', ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
})
......@@ -2,7 +2,7 @@ const Router = require('koa-router')
const router = new Router()
module.exports = router
router.post('/', async ctx => {
let data = await ctx.container.repository_get(ctx.request.body.namespace)
router.post('/', async (ctx) => {
const data = await ctx.container.repository_get(ctx.request.body.namespace)
ctx.body = ctx.ok(data)
})
const Router = require('koa-router')
const yaml = require('js-yaml')
const templates = require('../serviceTemplate')
const TYPES = ['ui', 'java', 'node', 'python', 'go']
const router = new Router()
module.exports = router
router.get('/', async ctx => {
let data = await ctx.cluster.service_list(ctx.query.namespace)
router.get('/', async (ctx) => {
const data = await ctx.cluster.service_list(ctx.query.namespace)
ctx.body = ctx.ok(data)
})
router.post('/create', async ctx => {
let {type, serviceName, namespace, image, system_name, lable} = ctx.request.body
router.post('/create', async (ctx) => {
const {
type, serviceName, namespace, image, system_name, lable,
} = ctx.request.body
if (!TYPES.includes(type)) {
return ctx.body = ctx.fail('不支持的服务类型')
ctx.body = ctx.fail('不支持的服务类型')
return ctx.body
}
let data = {
const data = {
serviceName,
namespace,
image,
system_name,
lable
lable,
}
if (!system_name) {
// ui abTest的时候不一样
data.system_name = serviceName
}
let template = templates[type].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
const template = templates[type].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
const params = yaml.load(template)
await ctx.cluster.service_create(params, type)
ctx.body = ctx.ok('创建成功')
})
router.post('/details', async ctx => {
let data = await ctx.cluster.service_get(ctx.request.body.serviceName, ctx.request.body.namespace)
router.post('/details', async (ctx) => {
const data = await ctx.cluster.service_get(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok(data)
})
router.post('/delete', async ctx => {
router.post('/delete', async (ctx) => {
await ctx.cluster.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
})
router.post('/modifyImage', async ctx => {
router.post('/modifyImage', async (ctx) => {
await ctx.cluster.service_modifyImage(ctx.request.body.serviceName, ctx.request.body.image, ctx.request.body.namespace)
ctx.body = ctx.ok('更新成功')
})
router.post('/instance', async ctx => {
let data = await ctx.cluster.instance_get(ctx.request.body.serviceName, ctx.request.body.namespace)
router.post('/instance', async (ctx) => {
const data = await ctx.cluster.instance_get(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok(data)
})
router.post('/redeploy', async ctx => {
router.post('/redeploy', async (ctx) => {
await ctx.cluster.service_redeployment(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok('服务重部署成功')
})
......@@ -2,7 +2,7 @@ const Router = require('koa-router')
const router = new Router()
module.exports = router
router.post('/', async ctx => {
let data = await ctx.container.tag_get(ctx.request.body.reponame)
router.post('/', async (ctx) => {
const data = await ctx.container.tag_get(ctx.request.body.reponame)
ctx.body = ctx.ok(data)
})
......@@ -7,23 +7,23 @@ const IMAGES = ['zookeeper:3.4.10']
const router = new Router()
module.exports = router
router.post('/create', async ctx => {
let data = {
router.post('/create', async (ctx) => {
const data = {
namespace: ctx.request.body.namespace,
image: IMAGES[0]
image: IMAGES[0],
}
let template = templates['zookeeper'].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
const template = templates.zookeeper.replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
const params = yaml.load(template)
await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功')
})
router.post('/delete', async ctx => {
router.post('/delete', async (ctx) => {
await ctx.client.service_delete('zookeeper', ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
})
const app = require('../app')
app.start()
module.exports={
module.exports = {
secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
clusterId: 'cls-acfx4pvj',
region: 'ap-beijing',
method :'POST',
protocal : 'https://',
clusterPoint : 'ccs.api.qcloud.com', //访问集群以及服务的域名
containerPoint : 'ccr.api.qcloud.com', //访问镜像仓库的域名
path : '/v2/index.php',
domain : ".lkbang.com",
method: 'POST',
protocal: 'https://',
clusterPoint: 'ccs.api.qcloud.com', // 访问集群以及服务的域名
containerPoint: 'ccr.api.qcloud.com', // 访问镜像仓库的域名
path: '/v2/index.php',
domain: '.lkbang.com',
}
// const path = require('path')
//
// const logDir = path.resolve(process.cwd(), './logs')
//
// const log4js = require('koa-log4')
// log4js.configure({
// replaceConsole: true,
// appenders: {
// stdout: {//控制台输出
// type: 'stdout'
// },
// req: {//请求日志
// type: 'dateFile',
// filename: 'logs/reqlog/',
// pattern: 'yyyy-MM-dd.log',
// alwaysIncludePattern: true
// },
// error: {//错误日志
// type: 'dateFile',
// filename: 'logs/errorlog/',
// pattern: 'yyyy-MM-dd.log',
// alwaysIncludePattern: true
// },
// tkeEos: {// 文件日志
// type: 'dateFile',
// filename: 'logs/tkeEoslog/',
// pattern: 'yyyy-MM-dd.log',
// alwaysIncludePattern: true
// }
// },
// categories: {
// default: {appenders: ['stdout', 'req'], level: 'info'},//appenders:采用的appender,取appenders项,level:设置级别
// error: {appenders: ['stdout', 'error'], level: 'error'},
// tkeEos: {appenders: ['stdout', 'tkeEos'], level: 'info'}
// }
// })
// const errorLog = log4js.getLogger('error')
// const tkeLog = log4js.getLogger('tkeEos')
// const log = log4js.getLogger()
// // module.exports = {
// // errorLog,
// // tkeLog,
// // log
// // }
// module.exports =function(){
// return async function (ctx,next) {
// ctx.logger=log4js.getLogger('error')
// return next()
// }
// }
const path = require('path')
const logDir = path.resolve(process.cwd(), './logs')
module.exports = {
devlog: {
appenders: {
out: {type: 'stdout'},
app: {
type: 'dateFile', filename: `${logDir}/tke-eos.log`, daysToKeep: 3, compress: true,
},
error: {
type: 'dateFile', filename: `${logDir}/tke-eos.error.log`, daysToKeep: 3, compress: true,
},
timing: {
type: 'dateFile', filename: `${logDir}/tke-eos.timing.log`, daysToKeep: 3, compress: true,
},
just_errors: {type: 'logLevelFilter', appender: 'error', level: 'error'},
},
categories: {
default: {appenders: ['out', 'app', 'just_errors'], level: 'info'},
error: {appenders: ['stdout', 'error'], level: 'error'},
timing: {appenders: ['out', 'timing'], level: 'info'}
}
}
}
moduele.exports = {}
\ No newline at end of file
// moduele.exports = {}
*
!.gitignore
\ No newline at end of file
'use strict'
// const logger = require('koa-log4').getLogger('middleware:error')
const logger = require('log4js').getLogger('error')
module.exports = function () {
return async function (ctx, next) {
......@@ -14,13 +14,13 @@ module.exports = function () {
msg = e.message
}
console.error(ctx.path)
console.error(e)
logger.error(ctx.path)
logger.error(e)
ctx.respond = true
ctx.status = 200
ctx.body = {
code: '0001',
msg: msg
msg,
}
}
}
......
'use strict'
/**
*/
......@@ -7,5 +7,5 @@ module.exports = {
// 通用参数错误
ERROR_INPUT: { msg: '输入参数不正确', code: '0001' },
// 自定义参数错误
ERROR_GITPATH: { msg: 'git_path格式不正确', code: '0001' }
ERROR_GITPATH: { msg: 'git_path格式不正确', code: '0001' },
}
'use strict'
const Code = require('./code')
......@@ -9,7 +9,7 @@ module.exports = function () {
ctx.ok = function (data = {}) {
return {
code: '0000',
data: data
data,
}
}
......@@ -22,7 +22,7 @@ module.exports = function () {
return {
code: code || '0001',
msg: msg || '请求失败,请稍候重试'
msg: msg || '请求失败,请稍候重试',
}
}
......
......@@ -4,6 +4,26 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/code-frame": {
"version": "7.0.0",
"resolved": "http://npmprivate.quantgroups.com/@babel%2fcode-frame/-/code-frame-7.0.0.tgz",
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
"dev": true,
"requires": {
"@babel/highlight": "^7.0.0"
}
},
"@babel/highlight": {
"version": "7.0.0",
"resolved": "http://npmprivate.quantgroups.com/@babel%2fhighlight/-/highlight-7.0.0.tgz",
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
"dev": true,
"requires": {
"chalk": "^2.0.0",
"esutils": "^2.0.2",
"js-tokens": "^4.0.0"
}
},
"abbrev": {
"version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
......@@ -19,6 +39,18 @@
"negotiator": "0.6.1"
}
},
"acorn": {
"version": "6.1.1",
"resolved": "http://npmprivate.quantgroups.com/acorn/-/acorn-6.1.1.tgz",
"integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==",
"dev": true
},
"acorn-jsx": {
"version": "5.0.1",
"resolved": "http://npmprivate.quantgroups.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
"integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
"dev": true
},
"ajv": {
"version": "6.7.0",
"resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.7.0.tgz",
......@@ -39,6 +71,12 @@
"string-width": "^2.0.0"
}
},
"ansi-escapes": {
"version": "3.2.0",
"resolved": "http://npmprivate.quantgroups.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
"integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
"dev": true
},
"ansi-regex": {
"version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
......@@ -120,6 +158,20 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
"astral-regex": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/astral-regex/-/astral-regex-1.0.0.tgz",
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
"async": {
"version": "2.6.2",
"resolved": "http://npmprivate.quantgroups.com/async/-/async-2.6.2.tgz",
"integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==",
"requires": {
"lodash": "^4.17.11"
}
},
"async-each": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/async-each/download/async-each-1.0.1.tgz",
......@@ -307,6 +359,12 @@
"ylru": "^1.2.0"
}
},
"callsites": {
"version": "3.0.0",
"resolved": "http://npmprivate.quantgroups.com/callsites/-/callsites-3.0.0.tgz",
"integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==",
"dev": true
},
"camelcase": {
"version": "4.1.0",
"resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
......@@ -335,6 +393,12 @@
"supports-color": "^5.3.0"
}
},
"chardet": {
"version": "0.7.0",
"resolved": "http://npmprivate.quantgroups.com/chardet/-/chardet-0.7.0.tgz",
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
"chokidar": {
"version": "2.0.4",
"resolved": "http://registry.npm.taobao.org/chokidar/download/chokidar-2.0.4.tgz",
......@@ -362,6 +426,11 @@
"integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=",
"dev": true
},
"circular-json": {
"version": "0.5.9",
"resolved": "http://npmprivate.quantgroups.com/circular-json/-/circular-json-0.5.9.tgz",
"integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ=="
},
"class-utils": {
"version": "0.3.6",
"resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz",
......@@ -391,6 +460,21 @@
"integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
"dev": true
},
"cli-cursor": {
"version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"dev": true,
"requires": {
"restore-cursor": "^2.0.0"
}
},
"cli-width": {
"version": "2.2.0",
"resolved": "http://npmprivate.quantgroups.com/cli-width/-/cli-width-2.2.0.tgz",
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
"dev": true
},
"co": {
"version": "4.6.0",
"resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
......@@ -466,6 +550,12 @@
"xdg-basedir": "^3.0.0"
}
},
"contains-path": {
"version": "0.1.0",
"resolved": "http://npmprivate.quantgroups.com/contains-path/-/contains-path-0.1.0.tgz",
"integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
"dev": true
},
"content-disposition": {
"version": "0.5.3",
"resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
......@@ -538,6 +628,11 @@
"assert-plus": "^1.0.0"
}
},
"date-format": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/date-format/-/date-format-2.0.0.tgz",
"integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA=="
},
"debug": {
"version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
......@@ -563,6 +658,21 @@
"integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=",
"dev": true
},
"deep-is": {
"version": "0.1.3",
"resolved": "http://npmprivate.quantgroups.com/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"define-properties": {
"version": "1.1.3",
"resolved": "http://npmprivate.quantgroups.com/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
"object-keys": "^1.0.12"
}
},
"define-property": {
"version": "2.0.2",
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
......@@ -624,6 +734,15 @@
"resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"doctrine": {
"version": "3.0.0",
"resolved": "http://npmprivate.quantgroups.com/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"requires": {
"esutils": "^2.0.2"
}
},
"dot-prop": {
"version": "4.2.0",
"resolved": "http://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz",
......@@ -653,11 +772,51 @@
"resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"emoji-regex": {
"version": "7.0.3",
"resolved": "http://npmprivate.quantgroups.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
"error-ex": {
"version": "1.3.2",
"resolved": "http://npmprivate.quantgroups.com/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"error-inject": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz",
"integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc="
},
"es-abstract": {
"version": "1.13.0",
"resolved": "http://npmprivate.quantgroups.com/es-abstract/-/es-abstract-1.13.0.tgz",
"integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
"dev": true,
"requires": {
"es-to-primitive": "^1.2.0",
"function-bind": "^1.1.1",
"has": "^1.0.3",
"is-callable": "^1.1.4",
"is-regex": "^1.0.4",
"object-keys": "^1.0.12"
}
},
"es-to-primitive": {
"version": "1.2.0",
"resolved": "http://npmprivate.quantgroups.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
"integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
"dev": true,
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
"is-symbol": "^1.0.2"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
......@@ -669,11 +828,264 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"eslint": {
"version": "5.15.3",
"resolved": "http://npmprivate.quantgroups.com/eslint/-/eslint-5.15.3.tgz",
"integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"ajv": "^6.9.1",
"chalk": "^2.1.0",
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
"doctrine": "^3.0.0",
"eslint-scope": "^4.0.3",
"eslint-utils": "^1.3.1",
"eslint-visitor-keys": "^1.0.0",
"espree": "^5.0.1",
"esquery": "^1.0.1",
"esutils": "^2.0.2",
"file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
"glob": "^7.1.2",
"globals": "^11.7.0",
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"inquirer": "^6.2.2",
"js-yaml": "^3.12.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
"lodash": "^4.17.11",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
"optionator": "^0.8.2",
"path-is-inside": "^1.0.2",
"progress": "^2.0.0",
"regexpp": "^2.0.1",
"semver": "^5.5.1",
"strip-ansi": "^4.0.0",
"strip-json-comments": "^2.0.1",
"table": "^5.2.3",
"text-table": "^0.2.0"
},
"dependencies": {
"ajv": {
"version": "6.10.0",
"resolved": "http://npmprivate.quantgroups.com/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "http://npmprivate.quantgroups.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"debug": {
"version": "4.1.1",
"resolved": "http://npmprivate.quantgroups.com/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.1",
"resolved": "http://npmprivate.quantgroups.com/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
}
}
},
"eslint-config-airbnb-base": {
"version": "13.1.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz",
"integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==",
"dev": true,
"requires": {
"eslint-restricted-globals": "^0.1.1",
"object.assign": "^4.1.0",
"object.entries": "^1.0.4"
}
},
"eslint-import-resolver-node": {
"version": "0.3.2",
"resolved": "http://npmprivate.quantgroups.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
"integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
"dev": true,
"requires": {
"debug": "^2.6.9",
"resolve": "^1.5.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "http://npmprivate.quantgroups.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
}
}
},
"eslint-module-utils": {
"version": "2.3.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz",
"integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==",
"dev": true,
"requires": {
"debug": "^2.6.8",
"pkg-dir": "^2.0.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "http://npmprivate.quantgroups.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
}
}
},
"eslint-plugin-import": {
"version": "2.16.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz",
"integrity": "sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==",
"dev": true,
"requires": {
"contains-path": "^0.1.0",
"debug": "^2.6.9",
"doctrine": "1.5.0",
"eslint-import-resolver-node": "^0.3.2",
"eslint-module-utils": "^2.3.0",
"has": "^1.0.3",
"lodash": "^4.17.11",
"minimatch": "^3.0.4",
"read-pkg-up": "^2.0.0",
"resolve": "^1.9.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "http://npmprivate.quantgroups.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"doctrine": {
"version": "1.5.0",
"resolved": "http://npmprivate.quantgroups.com/doctrine/-/doctrine-1.5.0.tgz",
"integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"dev": true,
"requires": {
"esutils": "^2.0.2",
"isarray": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
}
}
},
"eslint-restricted-globals": {
"version": "0.1.1",
"resolved": "http://npmprivate.quantgroups.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz",
"integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=",
"dev": true
},
"eslint-scope": {
"version": "4.0.3",
"resolved": "http://npmprivate.quantgroups.com/eslint-scope/-/eslint-scope-4.0.3.tgz",
"integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
}
},
"eslint-utils": {
"version": "1.3.1",
"resolved": "http://npmprivate.quantgroups.com/eslint-utils/-/eslint-utils-1.3.1.tgz",
"integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
"dev": true
},
"eslint-visitor-keys": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
"dev": true
},
"espree": {
"version": "5.0.1",
"resolved": "http://npmprivate.quantgroups.com/espree/-/espree-5.0.1.tgz",
"integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
"dev": true,
"requires": {
"acorn": "^6.0.7",
"acorn-jsx": "^5.0.0",
"eslint-visitor-keys": "^1.0.0"
}
},
"esprima": {
"version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
"integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
},
"esquery": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/esquery/-/esquery-1.0.1.tgz",
"integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
"dev": true,
"requires": {
"estraverse": "^4.0.0"
}
},
"esrecurse": {
"version": "4.2.1",
"resolved": "http://npmprivate.quantgroups.com/esrecurse/-/esrecurse-4.2.1.tgz",
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
"dev": true,
"requires": {
"estraverse": "^4.1.0"
}
},
"estraverse": {
"version": "4.2.0",
"resolved": "http://npmprivate.quantgroups.com/estraverse/-/estraverse-4.2.0.tgz",
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
"dev": true
},
"esutils": {
"version": "2.0.2",
"resolved": "http://npmprivate.quantgroups.com/esutils/-/esutils-2.0.2.tgz",
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true
},
"execa": {
"version": "0.7.0",
"resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz",
......@@ -759,6 +1171,17 @@
}
}
},
"external-editor": {
"version": "3.0.3",
"resolved": "http://npmprivate.quantgroups.com/external-editor/-/external-editor-3.0.3.tgz",
"integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
"dev": true,
"requires": {
"chardet": "^0.7.0",
"iconv-lite": "^0.4.24",
"tmp": "^0.0.33"
}
},
"extglob": {
"version": "2.0.4",
"resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
......@@ -839,6 +1262,30 @@
"resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
},
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "http://npmprivate.quantgroups.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"figures": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/figures/-/figures-2.0.0.tgz",
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.5"
}
},
"file-entry-cache": {
"version": "5.0.1",
"resolved": "http://npmprivate.quantgroups.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
"integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
"dev": true,
"requires": {
"flat-cache": "^2.0.1"
}
},
"fill-range": {
"version": "4.0.0",
"resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
......@@ -862,6 +1309,31 @@
}
}
},
"find-up": {
"version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/find-up/-/find-up-2.1.0.tgz",
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
"locate-path": "^2.0.0"
}
},
"flat-cache": {
"version": "2.0.1",
"resolved": "http://npmprivate.quantgroups.com/flat-cache/-/flat-cache-2.0.1.tgz",
"integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
"dev": true,
"requires": {
"flatted": "^2.0.0",
"rimraf": "2.6.3",
"write": "1.0.3"
}
},
"flatted": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/flatted/-/flatted-2.0.0.tgz",
"integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg=="
},
"for-in": {
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz",
......@@ -897,6 +1369,22 @@
"resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"fs-extra": {
"version": "7.0.1",
"resolved": "http://npmprivate.quantgroups.com/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"fsevents": {
"version": "1.2.7",
"resolved": "http://registry.npm.taobao.org/fsevents/download/fsevents-1.2.7.tgz",
......@@ -1426,6 +1914,18 @@
}
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "http://npmprivate.quantgroups.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
"dev": true
},
"get-stream": {
"version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz",
......@@ -1446,6 +1946,20 @@
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "http://npmprivate.quantgroups.com/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"glob-parent": {
"version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz",
......@@ -1476,6 +1990,12 @@
"ini": "^1.3.4"
}
},
"globals": {
"version": "11.11.0",
"resolved": "http://npmprivate.quantgroups.com/globals/-/globals-11.11.0.tgz",
"integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==",
"dev": true
},
"got": {
"version": "6.7.1",
"resolved": "http://registry.npm.taobao.org/got/download/got-6.7.1.tgz",
......@@ -1498,8 +2018,7 @@
"graceful-fs": {
"version": "4.1.15",
"resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.15.tgz",
"integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=",
"dev": true
"integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA="
},
"har-schema": {
"version": "2.0.0",
......@@ -1515,10 +2034,25 @@
"har-schema": "^2.0.0"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"has": {
"version": "1.0.3",
"resolved": "http://npmprivate.quantgroups.com/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": {
"function-bind": "^1.1.1"
}
},
"has-flag": {
"version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"has-symbols": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/has-symbols/-/has-symbols-1.0.0.tgz",
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
"dev": true
},
"has-value": {
......@@ -1553,6 +2087,12 @@
}
}
},
"hosted-git-info": {
"version": "2.7.1",
"resolved": "http://npmprivate.quantgroups.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
"http-assert": {
"version": "1.4.0",
"resolved": "http://registry.npm.taobao.org/http-assert/download/http-assert-1.4.0.tgz",
......@@ -1584,12 +2124,37 @@
"sshpk": "^1.7.0"
}
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "http://npmprivate.quantgroups.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore": {
"version": "4.0.6",
"resolved": "http://npmprivate.quantgroups.com/ignore/-/ignore-4.0.6.tgz",
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"ignore-by-default": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/ignore-by-default/download/ignore-by-default-1.0.1.tgz",
"integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
"dev": true
},
"import-fresh": {
"version": "3.0.0",
"resolved": "http://npmprivate.quantgroups.com/import-fresh/-/import-fresh-3.0.0.tgz",
"integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==",
"dev": true,
"requires": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
}
},
"import-lazy": {
"version": "2.1.0",
"resolved": "http://registry.npm.taobao.org/import-lazy/download/import-lazy-2.1.0.tgz",
......@@ -1607,6 +2172,16 @@
"resolved": "http://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz",
"integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8="
},
"inflight": {
"version": "1.0.6",
"resolved": "http://npmprivate.quantgroups.com/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
......@@ -1618,6 +2193,44 @@
"integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=",
"dev": true
},
"inquirer": {
"version": "6.2.2",
"resolved": "http://npmprivate.quantgroups.com/inquirer/-/inquirer-6.2.2.tgz",
"integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==",
"dev": true,
"requires": {
"ansi-escapes": "^3.2.0",
"chalk": "^2.4.2",
"cli-cursor": "^2.1.0",
"cli-width": "^2.0.0",
"external-editor": "^3.0.3",
"figures": "^2.0.0",
"lodash": "^4.17.11",
"mute-stream": "0.0.7",
"run-async": "^2.2.0",
"rxjs": "^6.4.0",
"string-width": "^2.1.0",
"strip-ansi": "^5.0.0",
"through": "^2.3.6"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "http://npmprivate.quantgroups.com/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "http://npmprivate.quantgroups.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
......@@ -1638,6 +2251,12 @@
}
}
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "http://npmprivate.quantgroups.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
"is-binary-path": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
......@@ -1653,6 +2272,12 @@
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
"dev": true
},
"is-callable": {
"version": "1.1.4",
"resolved": "http://npmprivate.quantgroups.com/is-callable/-/is-callable-1.1.4.tgz",
"integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
"dev": true
},
"is-ci": {
"version": "1.2.1",
"resolved": "http://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz",
......@@ -1682,6 +2307,12 @@
}
}
},
"is-date-object": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/is-date-object/-/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
"dev": true
},
"is-descriptor": {
"version": "0.1.6",
"resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
......@@ -1793,12 +2424,27 @@
"isobject": "^3.0.1"
}
},
"is-promise": {
"version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
"dev": true
},
"is-redirect": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz",
"integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
"dev": true
},
"is-regex": {
"version": "1.0.4",
"resolved": "http://npmprivate.quantgroups.com/is-regex/-/is-regex-1.0.4.tgz",
"integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
"dev": true,
"requires": {
"has": "^1.0.1"
}
},
"is-retry-allowed": {
"version": "1.1.0",
"resolved": "http://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.1.0.tgz",
......@@ -1811,6 +2457,15 @@
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
"is-symbol": {
"version": "1.0.2",
"resolved": "http://npmprivate.quantgroups.com/is-symbol/-/is-symbol-1.0.2.tgz",
"integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
"dev": true,
"requires": {
"has-symbols": "^1.0.0"
}
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
......@@ -1844,6 +2499,12 @@
"resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"js-tokens": {
"version": "4.0.0",
"resolved": "http://npmprivate.quantgroups.com/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
"js-yaml": {
"version": "3.12.1",
"resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.12.1.tgz",
......@@ -1868,11 +2529,25 @@
"resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
"integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
"dev": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsonfile": {
"version": "4.0.0",
"resolved": "http://npmprivate.quantgroups.com/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"requires": {
"graceful-fs": "^4.1.6"
}
},
"jsprim": {
"version": "1.4.1",
"resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
......@@ -1964,6 +2639,44 @@
"resolved": "http://registry.npm.taobao.org/koa-is-json/download/koa-is-json-1.0.0.tgz",
"integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ="
},
"koa-log4": {
"version": "2.3.2",
"resolved": "http://npmprivate.quantgroups.com/koa-log4/-/koa-log4-2.3.2.tgz",
"integrity": "sha512-1RXEvN+DlMgdEsVWW2MH8vZly9KGWdqryo6jmTWuVZWSmZEH/Hfp3lZ1SCtpD9Lmvkke5i6FzQrFucYUnmwFEQ==",
"requires": {
"log4js": "^3.0.6"
},
"dependencies": {
"date-format": {
"version": "1.2.0",
"resolved": "http://npmprivate.quantgroups.com/date-format/-/date-format-1.2.0.tgz",
"integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg="
},
"log4js": {
"version": "3.0.6",
"resolved": "http://npmprivate.quantgroups.com/log4js/-/log4js-3.0.6.tgz",
"integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==",
"requires": {
"circular-json": "^0.5.5",
"date-format": "^1.2.0",
"debug": "^3.1.0",
"rfdc": "^1.1.2",
"streamroller": "0.7.0"
}
},
"streamroller": {
"version": "0.7.0",
"resolved": "http://npmprivate.quantgroups.com/streamroller/-/streamroller-0.7.0.tgz",
"integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==",
"requires": {
"date-format": "^1.2.0",
"debug": "^3.1.0",
"mkdirp": "^0.5.1",
"readable-stream": "^2.3.0"
}
}
}
},
"koa-router": {
"version": "7.4.0",
"resolved": "http://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz",
......@@ -1996,6 +2709,46 @@
"package-json": "^4.0.0"
}
},
"levn": {
"version": "0.3.0",
"resolved": "http://npmprivate.quantgroups.com/levn/-/levn-0.3.0.tgz",
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
}
},
"load-json-file": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/load-json-file/-/load-json-file-2.0.0.tgz",
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
"pify": "^2.0.0",
"strip-bom": "^3.0.0"
},
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "http://npmprivate.quantgroups.com/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
}
},
"locate-path": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/locate-path/-/locate-path-2.0.0.tgz",
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"dev": true,
"requires": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
}
},
"lodash": {
"version": "4.17.11",
"resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz",
......@@ -2007,6 +2760,18 @@
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true
},
"log4js": {
"version": "4.0.2",
"resolved": "http://npmprivate.quantgroups.com/log4js/-/log4js-4.0.2.tgz",
"integrity": "sha512-KE7HjiieVDPPdveA3bJZSuu0n8chMkFl8mIoisBFxwEJ9FmXe4YzNuiqSwYUiR1K8q8/5/8Yd6AClENY1RA9ww==",
"requires": {
"date-format": "^2.0.0",
"debug": "^3.1.0",
"flatted": "^2.0.0",
"rfdc": "^1.1.2",
"streamroller": "^1.0.1"
}
},
"lowercase-keys": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz",
......@@ -2091,6 +2856,12 @@
"mime-db": "~1.37.0"
}
},
"mimic-fn": {
"version": "1.2.0",
"resolved": "http://npmprivate.quantgroups.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
......@@ -2127,11 +2898,32 @@
}
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "http://npmprivate.quantgroups.com/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "http://npmprivate.quantgroups.com/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
}
}
},
"ms": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"mute-stream": {
"version": "0.0.7",
"resolved": "http://npmprivate.quantgroups.com/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
"dev": true
},
"nan": {
"version": "2.12.1",
"resolved": "http://registry.npm.taobao.org/nan/download/nan-2.12.1.tgz",
......@@ -2158,11 +2950,23 @@
"to-regex": "^3.0.1"
}
},
"natural-compare": {
"version": "1.4.0",
"resolved": "http://npmprivate.quantgroups.com/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
"negotiator": {
"version": "0.6.1",
"resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
},
"nice-try": {
"version": "1.0.5",
"resolved": "http://npmprivate.quantgroups.com/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"nodemon": {
"version": "1.18.9",
"resolved": "http://registry.npm.taobao.org/nodemon/download/nodemon-1.18.9.tgz",
......@@ -2190,6 +2994,18 @@
"abbrev": "1"
}
},
"normalize-package-data": {
"version": "2.5.0",
"resolved": "http://npmprivate.quantgroups.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"normalize-path": {
"version": "2.1.1",
"resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
......@@ -2244,6 +3060,12 @@
}
}
},
"object-keys": {
"version": "1.1.0",
"resolved": "http://npmprivate.quantgroups.com/object-keys/-/object-keys-1.1.0.tgz",
"integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==",
"dev": true
},
"object-visit": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz",
......@@ -2253,6 +3075,30 @@
"isobject": "^3.0.0"
}
},
"object.assign": {
"version": "4.1.0",
"resolved": "http://npmprivate.quantgroups.com/object.assign/-/object.assign-4.1.0.tgz",
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
"dev": true,
"requires": {
"define-properties": "^1.1.2",
"function-bind": "^1.1.1",
"has-symbols": "^1.0.0",
"object-keys": "^1.0.11"
}
},
"object.entries": {
"version": "1.1.0",
"resolved": "http://npmprivate.quantgroups.com/object.entries/-/object.entries-1.1.0.tgz",
"integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
"dev": true,
"requires": {
"define-properties": "^1.1.3",
"es-abstract": "^1.12.0",
"function-bind": "^1.1.1",
"has": "^1.0.3"
}
},
"object.pick": {
"version": "1.3.0",
"resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz",
......@@ -2270,17 +3116,79 @@
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"resolved": "http://npmprivate.quantgroups.com/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"onetime": {
"version": "2.0.1",
"resolved": "http://npmprivate.quantgroups.com/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"dev": true,
"requires": {
"mimic-fn": "^1.0.0"
}
},
"only": {
"version": "0.0.2",
"resolved": "http://registry.npm.taobao.org/only/download/only-0.0.2.tgz",
"integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q="
},
"optionator": {
"version": "0.8.2",
"resolved": "http://npmprivate.quantgroups.com/optionator/-/optionator-0.8.2.tgz",
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
"dev": true,
"requires": {
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.4",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"wordwrap": "~1.0.0"
}
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "http://npmprivate.quantgroups.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
"p-finally": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
"p-limit": {
"version": "1.3.0",
"resolved": "http://npmprivate.quantgroups.com/p-limit/-/p-limit-1.3.0.tgz",
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"dev": true,
"requires": {
"p-try": "^1.0.0"
}
},
"p-locate": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/p-locate/-/p-locate-2.0.0.tgz",
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
"p-limit": "^1.1.0"
}
},
"p-try": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/p-try/-/p-try-1.0.0.tgz",
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
"package-json": {
"version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/package-json/download/package-json-4.0.1.tgz",
......@@ -2293,6 +3201,24 @@
"semver": "^5.1.0"
}
},
"parent-module": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/parent-module/-/parent-module-1.0.0.tgz",
"integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==",
"dev": true,
"requires": {
"callsites": "^3.0.0"
}
},
"parse-json": {
"version": "2.2.0",
"resolved": "http://npmprivate.quantgroups.com/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
"error-ex": "^1.2.0"
}
},
"parseurl": {
"version": "1.3.2",
"resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz",
......@@ -2310,6 +3236,12 @@
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
"path-exists": {
"version": "3.0.0",
"resolved": "http://npmprivate.quantgroups.com/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
......@@ -2328,6 +3260,12 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
"path-parse": {
"version": "1.0.6",
"resolved": "http://npmprivate.quantgroups.com/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"path-to-regexp": {
"version": "1.7.0",
"resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.7.0.tgz",
......@@ -2336,6 +3274,23 @@
"isarray": "0.0.1"
}
},
"path-type": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/path-type/-/path-type-2.0.0.tgz",
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
"dev": true,
"requires": {
"pify": "^2.0.0"
},
"dependencies": {
"pify": {
"version": "2.3.0",
"resolved": "http://npmprivate.quantgroups.com/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
}
},
"performance-now": {
"version": "2.1.0",
"resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
......@@ -2347,12 +3302,27 @@
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
"pkg-dir": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/pkg-dir/-/pkg-dir-2.0.0.tgz",
"integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
"dev": true,
"requires": {
"find-up": "^2.1.0"
}
},
"posix-character-classes": {
"version": "0.1.1",
"resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
"dev": true
},
"prelude-ls": {
"version": "1.1.2",
"resolved": "http://npmprivate.quantgroups.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
"prepend-http": {
"version": "1.0.4",
"resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
......@@ -2362,7 +3332,12 @@
"process-nextick-args": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz",
"integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=",
"integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o="
},
"progress": {
"version": "2.0.3",
"resolved": "http://npmprivate.quantgroups.com/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
"pseudomap": {
......@@ -2436,11 +3411,31 @@
"strip-json-comments": "~2.0.1"
}
},
"read-pkg": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/read-pkg/-/read-pkg-2.0.0.tgz",
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
"load-json-file": "^2.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^2.0.0"
}
},
"read-pkg-up": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
"dev": true,
"requires": {
"find-up": "^2.0.0",
"read-pkg": "^2.0.0"
}
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
"integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
......@@ -2454,8 +3449,7 @@
"isarray": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
}
}
},
......@@ -2480,6 +3474,12 @@
"safe-regex": "^1.1.0"
}
},
"regexpp": {
"version": "2.0.1",
"resolved": "http://npmprivate.quantgroups.com/regexpp/-/regexpp-2.0.1.tgz",
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
"dev": true
},
"registry-auth-token": {
"version": "3.3.2",
"resolved": "http://registry.npm.taobao.org/registry-auth-token/download/registry-auth-token-3.3.2.tgz",
......@@ -2544,18 +3544,75 @@
"uuid": "^3.3.2"
}
},
"resolve": {
"version": "1.10.0",
"resolved": "http://npmprivate.quantgroups.com/resolve/-/resolve-1.10.0.tgz",
"integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==",
"dev": true,
"requires": {
"path-parse": "^1.0.6"
}
},
"resolve-from": {
"version": "4.0.0",
"resolved": "http://npmprivate.quantgroups.com/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
},
"resolve-url": {
"version": "0.2.1",
"resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
"dev": true
},
"restore-cursor": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"dev": true,
"requires": {
"onetime": "^2.0.0",
"signal-exit": "^3.0.2"
}
},
"ret": {
"version": "0.1.15",
"resolved": "http://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz",
"integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
"dev": true
},
"rfdc": {
"version": "1.1.2",
"resolved": "http://npmprivate.quantgroups.com/rfdc/-/rfdc-1.1.2.tgz",
"integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
},
"rimraf": {
"version": "2.6.3",
"resolved": "http://npmprivate.quantgroups.com/rimraf/-/rimraf-2.6.3.tgz",
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
},
"run-async": {
"version": "2.3.0",
"resolved": "http://npmprivate.quantgroups.com/run-async/-/run-async-2.3.0.tgz",
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
"dev": true,
"requires": {
"is-promise": "^2.1.0"
}
},
"rxjs": {
"version": "6.4.0",
"resolved": "http://npmprivate.quantgroups.com/rxjs/-/rxjs-6.4.0.tgz",
"integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==",
"dev": true,
"requires": {
"tslib": "^1.9.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
......@@ -2639,6 +3696,17 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"slice-ansi": {
"version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
"integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
"astral-regex": "^1.0.0",
"is-fullwidth-code-point": "^2.0.0"
}
},
"snapdragon": {
"version": "0.8.2",
"resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
......@@ -2780,6 +3848,38 @@
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
"dev": true
},
"spdx-correct": {
"version": "3.1.0",
"resolved": "http://npmprivate.quantgroups.com/spdx-correct/-/spdx-correct-3.1.0.tgz",
"integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.2.0",
"resolved": "http://npmprivate.quantgroups.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
"integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
"version": "3.0.0",
"resolved": "http://npmprivate.quantgroups.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.3",
"resolved": "http://npmprivate.quantgroups.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz",
"integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==",
"dev": true
},
"split-string": {
"version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
......@@ -2836,6 +3936,18 @@
"resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"streamroller": {
"version": "1.0.3",
"resolved": "http://npmprivate.quantgroups.com/streamroller/-/streamroller-1.0.3.tgz",
"integrity": "sha512-P7z9NwP51EltdZ81otaGAN3ob+/F88USJE546joNq7bqRNTe6jc74fTBDyynxP4qpIfKlt/CesEYicuMzI0yJg==",
"requires": {
"async": "^2.6.1",
"date-format": "^2.0.0",
"debug": "^3.1.0",
"fs-extra": "^7.0.0",
"lodash": "^4.17.10"
}
},
"string-width": {
"version": "2.1.1",
"resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
......@@ -2850,7 +3962,6 @@
"version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
......@@ -2864,6 +3975,12 @@
"ansi-regex": "^3.0.0"
}
},
"strip-bom": {
"version": "3.0.0",
"resolved": "http://npmprivate.quantgroups.com/strip-bom/-/strip-bom-3.0.0.tgz",
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
"dev": true
},
"strip-eof": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz",
......@@ -2885,6 +4002,58 @@
"has-flag": "^3.0.0"
}
},
"table": {
"version": "5.2.3",
"resolved": "http://npmprivate.quantgroups.com/table/-/table-5.2.3.tgz",
"integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==",
"dev": true,
"requires": {
"ajv": "^6.9.1",
"lodash": "^4.17.11",
"slice-ansi": "^2.1.0",
"string-width": "^3.0.0"
},
"dependencies": {
"ajv": {
"version": "6.10.0",
"resolved": "http://npmprivate.quantgroups.com/ajv/-/ajv-6.10.0.tgz",
"integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
"dev": true,
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-regex": {
"version": "4.1.0",
"resolved": "http://npmprivate.quantgroups.com/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"string-width": {
"version": "3.1.0",
"resolved": "http://npmprivate.quantgroups.com/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "http://npmprivate.quantgroups.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"term-size": {
"version": "1.2.0",
"resolved": "http://registry.npm.taobao.org/term-size/download/term-size-1.2.0.tgz",
......@@ -2894,12 +4063,33 @@
"execa": "^0.7.0"
}
},
"text-table": {
"version": "0.2.0",
"resolved": "http://npmprivate.quantgroups.com/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
"through": {
"version": "2.3.8",
"resolved": "http://npmprivate.quantgroups.com/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
"dev": true
},
"timed-out": {
"version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/timed-out/download/timed-out-4.0.1.tgz",
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
"tmp": {
"version": "0.0.33",
"resolved": "http://npmprivate.quantgroups.com/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
"requires": {
"os-tmpdir": "~1.0.2"
}
},
"to-object-path": {
"version": "0.3.0",
"resolved": "http://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz",
......@@ -2972,6 +4162,12 @@
}
}
},
"tslib": {
"version": "1.9.3",
"resolved": "http://npmprivate.quantgroups.com/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
......@@ -2985,6 +4181,15 @@
"resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
},
"type-check": {
"version": "0.3.2",
"resolved": "http://npmprivate.quantgroups.com/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2"
}
},
"type-is": {
"version": "1.6.16",
"resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz",
......@@ -3058,6 +4263,11 @@
"crypto-random-string": "^1.0.0"
}
},
"universalify": {
"version": "0.1.2",
"resolved": "http://npmprivate.quantgroups.com/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
......@@ -3176,14 +4386,23 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"uuid": {
"version": "3.3.2",
"resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz",
"integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE="
},
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "http://npmprivate.quantgroups.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"vary": {
"version": "1.1.2",
"resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
......@@ -3217,6 +4436,27 @@
"string-width": "^2.1.1"
}
},
"wordwrap": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
"wrappy": {
"version": "1.0.2",
"resolved": "http://npmprivate.quantgroups.com/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"write": {
"version": "1.0.3",
"resolved": "http://npmprivate.quantgroups.com/write/-/write-1.0.3.tgz",
"integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
"dev": true,
"requires": {
"mkdirp": "^0.5.1"
}
},
"write-file-atomic": {
"version": "2.3.0",
"resolved": "http://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.3.0.tgz",
......
......@@ -7,17 +7,28 @@
"js-yaml": "^3.12.1",
"koa": "^2.6.2",
"koa-bodyparser": "^4.2.1",
"koa-log4": "^2.3.2",
"koa-router": "^7.4.0",
"lodash": "^4.17.11",
"log4js": "^4.0.2",
"request": "^2.88.0"
},
"devDependencies": {
"eslint": "^5.15.3",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.16.0",
"nodemon": "^1.18.9"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "NODE_DEBUG=request nodemon"
"start": "NODE_DEBUG=request NODE_ENV=env nodemon",
"lint": "eslint .",
"fix": "eslint --fix ."
},
"pre-commit": [
"fix",
"lint"
],
"repository": {
"type": "git",
"url": "git@git.quantgroup.cn:QA/tke-eos.git"
......
const fs = require('fs')
const ui = fs.readFileSync('serviceTemplate/ui.template.txt', 'utf8')
const java = fs.readFileSync('serviceTemplate/java.template.txt', 'utf8')
const node = fs.readFileSync('serviceTemplate/node.template.txt', 'utf8')
......@@ -12,5 +13,5 @@ module.exports = {
java,
rabbitmq,
zookeeper,
mysql
mysql,
}
......@@ -8,58 +8,63 @@ class Cluster extends Client {
}
namespace_get() {
return this.post('DescribeClusterNameSpaces', {clusterId: this.clusterId})
return this.post('DescribeClusterNameSpaces', { clusterId: this.clusterId })
}
namespace_create(name) {
return this.post('CreateClusterNamespace', {name, description: '', clusterId: this.clusterId})
return this.post('CreateClusterNamespace', { name, description: '', clusterId: this.clusterId })
}
namespace_delete(name) {
return this.post('DeleteClusterNamespace', {"names.0": name, clusterId: this.clusterId})
return this.post('DeleteClusterNamespace', { 'names.0': name, clusterId: this.clusterId })
}
service_list(namespace) {
return this.post('DescribeClusterService', {namespace, clusterId: this.clusterId, allnamespace: 0})
return this.post('DescribeClusterService', { namespace, clusterId: this.clusterId, allnamespace: 0 })
}
service_get(serviceName, namespace) {
return this.post('DescribeClusterServiceInfo', {serviceName, namespace, clusterId: this.clusterId})
return this.post('DescribeClusterServiceInfo', { serviceName, namespace, clusterId: this.clusterId })
}
async service_create(params, type) {
params.clusterId = this.clusterId
let str = JSON.stringify(params)
const str = JSON.stringify(params)
await this.post('CreateClusterService', params)
// 腾讯云api暂只能通过修改服务来改成Recreate策略
let modifyParams = JSON.parse(str)
const modifyParams = JSON.parse(str)
modifyParams.strategy = 'Recreate'
await this.post('ModifyClusterService', modifyParams)
let updateLabels = {
const updateLabels = {
clusterId: params.clusterId,
serviceName: params.serviceName,
namespace: params.namespace,
"labels.type": type
'labels.type': type,
}
return this.post('ModifyServiceLabels', updateLabels)
}
service_delete(serviceName, namespace) {
return this.post('DeleteClusterService', {serviceName, namespace, clusterId: this.clusterId})
return this.post('DeleteClusterService', { serviceName, namespace, clusterId: this.clusterId })
}
service_modifyImage(serviceName, image, namespace) {
return this.post('ModifyClusterServiceImage', {serviceName, namespace, image, clusterId: this.clusterId})
return this.post('ModifyClusterServiceImage', {
serviceName, namespace, image, clusterId: this.clusterId,
})
}
service_redeployment(serviceName,namespace){
return this.post('RedeployClusterService', {serviceName, namespace, clusterId: this.clusterId})
service_redeployment(serviceName, namespace) {
return this.post('RedeployClusterService', { serviceName, namespace, clusterId: this.clusterId })
}
instance_get(serviceName,namespace){
return this.post('DescribeServiceInstance', {serviceName, namespace, clusterId: this.clusterId})
instance_get(serviceName, namespace) {
return this.post('DescribeServiceInstance', { serviceName, namespace, clusterId: this.clusterId })
}
ingress_get(namespace) {
return this.post('DescribeIngress', {namespace, clusterId: this.clusterId})
return this.post('DescribeIngress', { namespace, clusterId: this.clusterId })
}
ingress_create(namespace) {
......@@ -67,18 +72,19 @@ class Cluster extends Client {
ingressName: `qa-${namespace}`,
ingressDesc: '',
namespace,
clusterId: this.clusterId
clusterId: this.clusterId,
})
}
ingress_delete(ingressName, namespace) {
return this.post('DeleteIngress', {ingressName, namespace, clusterId: this.clusterId})
return this.post('DeleteIngress', { ingressName, namespace, clusterId: this.clusterId })
}
ingress_modify(ingressName, namespace, rules) {
return this.post('MosifyIngress', {ingressName, namespace, ...rules, clusterId: this.clusterId})
return this.post('MosifyIngress', {
ingressName, namespace, ...rules, clusterId: this.clusterId,
})
}
}
exports.create = function () {
......
......@@ -7,11 +7,12 @@ class Container extends Client {
this.endpoint = domainConfig.containerPoint
}
repository_get( namespace) {
return this.post('SearchUserRepository', {namespace})
repository_get(namespace) {
return this.post('SearchUserRepository', { namespace })
}
tag_get( reponame) {
return this.post('GetTagList', {reponame})
tag_get(reponame) {
return this.post('GetTagList', { reponame })
}
}
......
......@@ -20,19 +20,19 @@ class Client {
sign(params, signMethod) {
let str = ''
let keys = Object.keys(params)
const keys = Object.keys(params)
keys.sort()
for (let key of keys) {
str += '&' + key + '=' + params[key]
for (const key of keys) {
str += `&${key}=${params[key]}`
}
str = str.slice(1)
let signStr = this.method + this.endpoint + this.path + '?' + str
const signStr = `${this.method + this.endpoint + this.path}?${str}`
let signMethodMap = {
HmacSHA1: "sha1",
HmacSHA256: "sha256"
const signMethodMap = {
HmacSHA1: 'sha1',
HmacSHA256: 'sha256',
}
let hmac = crypto.createHmac(signMethodMap[signMethod], this.secretKey)
const hmac = crypto.createHmac(signMethodMap[signMethod], this.secretKey)
return hmac.update(Buffer.from(signStr, 'utf-8')).digest('base64')
}
......@@ -59,27 +59,25 @@ class Client {
}
this.formatRequestData(action, params)
let url = this.protocal + this.endpoint + this.path
let self = this
return new Promise(function (resolve, reject) {
const url = this.protocal + this.endpoint + this.path
const self = this
return new Promise(((resolve, reject) => {
request({
method: self.method,
url,
json: true,
form: params
}, function (err, res, body) {
form: params,
}, (err, res, body) => {
if (err) {
console.error(err)
// console.error(err)
reject(err)
} else {
if (body.code === 0) {
} else if (body.code === 0) {
resolve(body.data)
} else {
reject(body)
}
}
})
})
}))
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment