Commit 9ed2f17c authored by 薛智杰's avatar 薛智杰

Merge branch 'kewei' into 'master'

Kewei



See merge request !4
parents a2f08518 862d71c1
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') ...@@ -5,36 +5,36 @@ const templates = require('../serviceTemplate')
const IMAGES = { const IMAGES = {
zookeeper: 'zookeeper:3.4.10', zookeeper: 'zookeeper:3.4.10',
rabbitmq: 'rabbitmq:3.6-management', rabbitmq: 'rabbitmq:3.6-management',
mysql: 'mysql:5.7' mysql: 'mysql:5.7',
} }
const router = new Router() const router = new Router()
module.exports = router module.exports = router
router.post('/create', async ctx => { router.post('/create', async (ctx) => {
let { serviceName, namespace } = ctx.request.body const { serviceName, namespace } = ctx.request.body
if (!Object.keys(IMAGES).includes(serviceName)) { if (!Object.keys(IMAGES).includes(serviceName)) {
ctx.body = ctx.fail('不支持的服务类型') ctx.body = ctx.fail('不支持的服务类型')
return return
} }
let data = { const data = {
namespace, 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) { if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量') throw new Error('缺少模板所需变量')
} }
return data[arguments[1]] return data[arguments[1]]
}) })
let params = yaml.load(template) const params = yaml.load(template)
await ctx.client.service_create(params) await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功') ctx.body = ctx.ok('创建成功')
}) })
router.post('/delete', async ctx => { router.post('/delete', async (ctx) => {
let { serviceName, namespace } = ctx.request.body const { serviceName, namespace } = ctx.request.body
await ctx.client.service_delete(serviceName, namespace) await ctx.client.service_delete(serviceName, namespace)
ctx.body = ctx.ok('删除成功') ctx.body = ctx.ok('删除成功')
}) })
const Koa = require('koa') const Koa = require('koa')
const Router = require('koa-router') const Router = require('koa-router')
const bodyParser = require('koa-bodyparser') const bodyParser = require('koa-bodyparser')
const log4js = require('koa-log4')
const logConf = require('../config/logger')
const error = require('../middleware/error') const error = require('../middleware/error')
const result = require('../middleware/result') const result = require('../middleware/result')
...@@ -12,9 +14,13 @@ const tag = require('./tag') ...@@ -12,9 +14,13 @@ const tag = require('./tag')
const commonServiceRoute = require('./commonService') const commonServiceRoute = require('./commonService')
const ingressRoute = require('./ingress') const ingressRoute = require('./ingress')
const cluster = require('../services/tke.clusterService').create() const cluster = require('../services/tke.clusterService').create()
const container = require('../services/tke.containerService').create() const container = require('../services/tke.containerService').create()
function loadRoutes (router) {
const logger = log4js.getLogger()
log4js.configure(logConf.devlog)
function loadRoutes(router) {
router router
.use(error()) .use(error())
.use(result()) .use(result())
...@@ -24,12 +30,13 @@ function loadRoutes (router) { ...@@ -24,12 +30,13 @@ function loadRoutes (router) {
ctx.cluster = cluster ctx.cluster = cluster
await next() await next()
}, bodyParser()) }, bodyParser())
.use('/namespace', namespaceRoute.routes())
.use('/service', serviceRoute.routes()) .use('/namespace', namespaceRoute.routes())
.use('/commonService', commonServiceRoute.routes()) .use('/service', serviceRoute.routes())
.use('/ingress', ingressRoute.routes()) .use('/commonService', commonServiceRoute.routes())
.use('/repository',repositoryRouter.routes()) .use('/ingress', ingressRoute.routes())
.use('/tag',tag.routes()) .use('/repository', repositoryRouter.routes())
.use('/tag', tag.routes())
} }
exports.start = function () { exports.start = function () {
...@@ -39,8 +46,9 @@ exports.start = function () { ...@@ -39,8 +46,9 @@ exports.start = function () {
// 加载所有路由 // 加载所有路由
loadRoutes(router) loadRoutes(router)
app.use(log4js.koaLogger())
app.use(router.routes()) app.use(router.routes())
app.listen(4000) 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') ...@@ -3,8 +3,8 @@ const Router = require('koa-router')
const router = new Router(); const router = new Router();
module.exports = router module.exports = router
router.get('/', async ctx => { router.get('/', async (ctx) => {
let data = await ctx.client.ingress_get(ctx.query.namespace) const data = await ctx.client.ingress_get(ctx.query.namespace)
ctx.body = ctx.ok(data) ctx.body = ctx.ok(data)
}) })
...@@ -12,26 +12,28 @@ router.get('/', async ctx => { ...@@ -12,26 +12,28 @@ router.get('/', async ctx => {
namespace namespace
rules rules
*/ */
router.post('/modify', async ctx => { router.post('/modify', async (ctx) => {
let ingress = await ctx.client.ingress_get(ctx.request.body.namespace) const ingress = await ctx.client.ingress_get(ctx.request.body.namespace)
if (!ingress) { if (!ingress) {
return ctx.body = ctx.fail('namespace下没有ingress,请先创建') ctx.body = ctx.fail('namespace下没有ingress,请先创建')
return ctx.body
} }
console.log(1, ingress) console.log(1, ingress)
// let data = await ctx.client.ingress_modify() // let data = await ctx.client.ingress_modify()
ctx.body = ctx.ok(ingress) ctx.body = ctx.ok(ingress)
}) })
router.post('/create', async ctx => { router.post('/create', async (ctx) => {
let ingress = await ctx.client.ingress_get(ctx.request.body.namespace) const ingress = await ctx.client.ingress_get(ctx.request.body.namespace)
if (ingress) { 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) await ctx.client.ingress_create(ctx.request.body.namespace)
ctx.body = ctx.ok() 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) await ctx.client.ingress_delete(ctx.request.body.ingressName, ctx.request.body.namespace)
ctx.body = ctx.ok() ctx.body = ctx.ok()
}) })
const Router = require('koa-router') const Router = require('koa-router')
const { log } = require('../config/logger')
const router = new Router(); const router = new Router();
module.exports = router module.exports = router
router.get('/', async (ctx) => {
router.get('/', async ctx => { ctx.logger.info('hhello')
let data = await ctx.cluster.namespace_get() const data = await ctx.cluster.namespace_get()
ctx.body = ctx.ok(data) 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.namespace_create(ctx.request.body.name)
await ctx.cluster.ingress_create(ctx.request.body.name) await ctx.cluster.ingress_create(ctx.request.body.name)
ctx.body = ctx.ok() ctx.body = ctx.ok()
}) })
router.post('/delete', async ctx => { router.post('/delete', async (ctx) => {
await ctx.cluster.namespace_delete(ctx.request.body.name) await ctx.cluster.namespace_delete(ctx.request.body.name)
ctx.body = ctx.ok() ctx.body = ctx.ok()
}) })
const Router = require('koa-router')
const yaml = require('js-yaml')
const templates = require('../serviceTemplate')
const IMAGES = ['rabbitmq:3.6-management']
const router = new Router()
module.exports = router
router.post('/create', async (ctx) => {
// let svc = await ctx.client.service_get('rabbitmq', ctx.request.body.namespace)
// if (svc) {
// ctx.body = ctx.fail('服务已经存在')
// return
// }
const data = {
namespace: ctx.request.body.namespace,
image: IMAGES[0],
}
const template = templates.rabbitmq.replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
const params = yaml.load(template)
await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功')
})
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') ...@@ -2,7 +2,7 @@ const Router = require('koa-router')
const router = new Router() const router = new Router()
module.exports = router module.exports = router
router.post('/', async ctx => { router.post('/', async (ctx) => {
let data = await ctx.container.repository_get(ctx.request.body.namespace) const data = await ctx.container.repository_get(ctx.request.body.namespace)
ctx.body = ctx.ok(data) ctx.body = ctx.ok(data)
}) })
const Router = require('koa-router') const Router = require('koa-router')
const yaml = require('js-yaml') const yaml = require('js-yaml')
const templates = require('../serviceTemplate') const templates = require('../serviceTemplate')
const TYPES = ['ui', 'java', 'node', 'python', 'go'] const TYPES = ['ui', 'java', 'node', 'python', 'go']
const router = new Router() const router = new Router()
module.exports = router module.exports = router
router.get('/', async ctx => { router.get('/', async (ctx) => {
let data = await ctx.cluster.service_list(ctx.query.namespace) const data = await ctx.cluster.service_list(ctx.query.namespace)
ctx.body = ctx.ok(data) ctx.body = ctx.ok(data)
}) })
router.post('/create', async ctx => { router.post('/create', async (ctx) => {
let {type, serviceName, namespace, image, system_name, lable} = ctx.request.body const {
if (!TYPES.includes(type)) { type, serviceName, namespace, image, system_name, lable,
return ctx.body = ctx.fail('不支持的服务类型') } = ctx.request.body
} if (!TYPES.includes(type)) {
let data = { ctx.body = ctx.fail('不支持的服务类型')
serviceName, return ctx.body
namespace, }
image, const data = {
system_name, serviceName,
lable namespace,
} image,
if (!system_name) { system_name,
// ui abTest的时候不一样 lable,
data.system_name = serviceName }
if (!system_name) {
// ui abTest的时候不一样
data.system_name = serviceName
}
const template = templates[type].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
} }
let template = templates[type].replace(/{{([A-Za-z0-9_]+)}}/g, function () { return data[arguments[1]]
if (data[arguments[1]] === undefined) { })
throw new Error('缺少模板所需变量') const params = yaml.load(template)
} await ctx.cluster.service_create(params, type)
return data[arguments[1]] ctx.body = ctx.ok('创建成功')
})
let params = yaml.load(template)
await ctx.cluster.service_create(params, type)
ctx.body = ctx.ok('创建成功')
}) })
router.post('/details', async ctx => { router.post('/details', async (ctx) => {
let data = await ctx.cluster.service_get(ctx.request.body.serviceName, ctx.request.body.namespace) const data = await ctx.cluster.service_get(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok(data) 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) await ctx.cluster.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功') 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) await ctx.cluster.service_modifyImage(ctx.request.body.serviceName, ctx.request.body.image, ctx.request.body.namespace)
ctx.body = ctx.ok('更新成功') ctx.body = ctx.ok('更新成功')
}) })
router.post('/instance', async ctx => { router.post('/instance', async (ctx) => {
let data = await ctx.cluster.instance_get(ctx.request.body.serviceName, ctx.request.body.namespace) const data = await ctx.cluster.instance_get(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok(data) 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) await ctx.cluster.service_redeployment(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok('服务重部署成功') ctx.body = ctx.ok('服务重部署成功')
}) })
...@@ -2,7 +2,7 @@ const Router = require('koa-router') ...@@ -2,7 +2,7 @@ const Router = require('koa-router')
const router = new Router() const router = new Router()
module.exports = router module.exports = router
router.post('/', async ctx => { router.post('/', async (ctx) => {
let data = await ctx.container.tag_get(ctx.request.body.reponame) const data = await ctx.container.tag_get(ctx.request.body.reponame)
ctx.body = ctx.ok(data) ctx.body = ctx.ok(data)
}) })
const Router = require('koa-router')
const yaml = require('js-yaml')
const templates = require('../serviceTemplate')
const IMAGES = ['zookeeper:3.4.10']
const router = new Router()
module.exports = router
router.post('/create', async (ctx) => {
const data = {
namespace: ctx.request.body.namespace,
image: IMAGES[0],
}
const template = templates.zookeeper.replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
const params = yaml.load(template)
await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功')
})
router.post('/delete', async (ctx) => {
await ctx.client.service_delete('zookeeper', ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
})
const app = require('../app') const app = require('../app')
app.start()
\ No newline at end of file app.start()
module.exports={ module.exports = {
secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac', secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc', secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
clusterId: 'cls-acfx4pvj', clusterId: 'cls-acfx4pvj',
region: 'ap-beijing', region: 'ap-beijing',
method :'POST', method: 'POST',
protocal : 'https://', protocal: 'https://',
clusterPoint : 'ccs.api.qcloud.com', //访问集群以及服务的域名 clusterPoint: 'ccs.api.qcloud.com', // 访问集群以及服务的域名
containerPoint : 'ccr.api.qcloud.com', //访问镜像仓库的域名 containerPoint: 'ccr.api.qcloud.com', // 访问镜像仓库的域名
path : '/v2/index.php', path: '/v2/index.php',
domain : ".lkbang.com", domain: '.lkbang.com',
} }
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 = {} // moduele.exports = {}
\ No newline at end of file
*
!.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 () { module.exports = function () {
return async function (ctx, next) { return async function (ctx, next) {
...@@ -14,13 +14,13 @@ module.exports = function () { ...@@ -14,13 +14,13 @@ module.exports = function () {
msg = e.message msg = e.message
} }
console.error(ctx.path) logger.error(ctx.path)
console.error(e) logger.error(e)
ctx.respond = true ctx.respond = true
ctx.status = 200 ctx.status = 200
ctx.body = { ctx.body = {
code: '0001', code: '0001',
msg: msg msg,
} }
} }
} }
......
'use strict'
/** /**
*/ */
...@@ -7,5 +7,5 @@ module.exports = { ...@@ -7,5 +7,5 @@ module.exports = {
// 通用参数错误 // 通用参数错误
ERROR_INPUT: { msg: '输入参数不正确', code: '0001' }, 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') const Code = require('./code')
...@@ -9,7 +9,7 @@ module.exports = function () { ...@@ -9,7 +9,7 @@ module.exports = function () {
ctx.ok = function (data = {}) { ctx.ok = function (data = {}) {
return { return {
code: '0000', code: '0000',
data: data data,
} }
} }
...@@ -22,7 +22,7 @@ module.exports = function () { ...@@ -22,7 +22,7 @@ module.exports = function () {
return { return {
code: code || '0001', code: code || '0001',
msg: msg || '请求失败,请稍候重试' msg: msg || '请求失败,请稍候重试',
} }
} }
......
...@@ -4,6 +4,26 @@ ...@@ -4,6 +4,26 @@
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "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": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz", "resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
...@@ -19,6 +39,18 @@ ...@@ -19,6 +39,18 @@
"negotiator": "0.6.1" "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": { "ajv": {
"version": "6.7.0", "version": "6.7.0",
"resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.7.0.tgz", "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.7.0.tgz",
...@@ -39,6 +71,12 @@ ...@@ -39,6 +71,12 @@
"string-width": "^2.0.0" "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": { "ansi-regex": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
...@@ -120,6 +158,20 @@ ...@@ -120,6 +158,20 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true "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": { "async-each": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/async-each/download/async-each-1.0.1.tgz", "resolved": "http://registry.npm.taobao.org/async-each/download/async-each-1.0.1.tgz",
...@@ -307,6 +359,12 @@ ...@@ -307,6 +359,12 @@
"ylru": "^1.2.0" "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": { "camelcase": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz", "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
...@@ -335,6 +393,12 @@ ...@@ -335,6 +393,12 @@
"supports-color": "^5.3.0" "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": { "chokidar": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "http://registry.npm.taobao.org/chokidar/download/chokidar-2.0.4.tgz", "resolved": "http://registry.npm.taobao.org/chokidar/download/chokidar-2.0.4.tgz",
...@@ -362,6 +426,11 @@ ...@@ -362,6 +426,11 @@
"integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=", "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=",
"dev": true "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": { "class-utils": {
"version": "0.3.6", "version": "0.3.6",
"resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", "resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz",
...@@ -391,6 +460,21 @@ ...@@ -391,6 +460,21 @@
"integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
"dev": true "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": { "co": {
"version": "4.6.0", "version": "4.6.0",
"resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz", "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
...@@ -466,6 +550,12 @@ ...@@ -466,6 +550,12 @@
"xdg-basedir": "^3.0.0" "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": { "content-disposition": {
"version": "0.5.3", "version": "0.5.3",
"resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
...@@ -538,6 +628,11 @@ ...@@ -538,6 +628,11 @@
"assert-plus": "^1.0.0" "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": { "debug": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
...@@ -563,6 +658,21 @@ ...@@ -563,6 +658,21 @@
"integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=", "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=",
"dev": true "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": { "define-property": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
...@@ -624,6 +734,15 @@ ...@@ -624,6 +734,15 @@
"resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "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": { "dot-prop": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "http://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz", "resolved": "http://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz",
...@@ -653,11 +772,51 @@ ...@@ -653,11 +772,51 @@
"resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" "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": { "error-inject": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz",
"integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" "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": { "escape-html": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
...@@ -669,11 +828,264 @@ ...@@ -669,11 +828,264 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true "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": { "esprima": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
"integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=" "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": { "execa": {
"version": "0.7.0", "version": "0.7.0",
"resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz", "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz",
...@@ -759,6 +1171,17 @@ ...@@ -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": { "extglob": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
...@@ -839,6 +1262,30 @@ ...@@ -839,6 +1262,30 @@
"resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" "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": { "fill-range": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
...@@ -862,6 +1309,31 @@ ...@@ -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": { "for-in": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", "resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz",
...@@ -897,6 +1369,22 @@ ...@@ -897,6 +1369,22 @@
"resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" "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": { "fsevents": {
"version": "1.2.7", "version": "1.2.7",
"resolved": "http://registry.npm.taobao.org/fsevents/download/fsevents-1.2.7.tgz", "resolved": "http://registry.npm.taobao.org/fsevents/download/fsevents-1.2.7.tgz",
...@@ -1426,6 +1914,18 @@ ...@@ -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": { "get-stream": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz",
...@@ -1446,6 +1946,20 @@ ...@@ -1446,6 +1946,20 @@
"assert-plus": "^1.0.0" "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": { "glob-parent": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", "resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz",
...@@ -1476,6 +1990,12 @@ ...@@ -1476,6 +1990,12 @@
"ini": "^1.3.4" "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": { "got": {
"version": "6.7.1", "version": "6.7.1",
"resolved": "http://registry.npm.taobao.org/got/download/got-6.7.1.tgz", "resolved": "http://registry.npm.taobao.org/got/download/got-6.7.1.tgz",
...@@ -1498,8 +2018,7 @@ ...@@ -1498,8 +2018,7 @@
"graceful-fs": { "graceful-fs": {
"version": "4.1.15", "version": "4.1.15",
"resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.15.tgz", "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.15.tgz",
"integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=", "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA="
"dev": true
}, },
"har-schema": { "har-schema": {
"version": "2.0.0", "version": "2.0.0",
...@@ -1515,12 +2034,27 @@ ...@@ -1515,12 +2034,27 @@
"har-schema": "^2.0.0" "har-schema": "^2.0.0"
} }
}, },
"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": { "has-flag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true "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": { "has-value": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz",
...@@ -1553,6 +2087,12 @@ ...@@ -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": { "http-assert": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "http://registry.npm.taobao.org/http-assert/download/http-assert-1.4.0.tgz", "resolved": "http://registry.npm.taobao.org/http-assert/download/http-assert-1.4.0.tgz",
...@@ -1584,12 +2124,37 @@ ...@@ -1584,12 +2124,37 @@
"sshpk": "^1.7.0" "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": { "ignore-by-default": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/ignore-by-default/download/ignore-by-default-1.0.1.tgz", "resolved": "http://registry.npm.taobao.org/ignore-by-default/download/ignore-by-default-1.0.1.tgz",
"integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=",
"dev": true "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": { "import-lazy": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "http://registry.npm.taobao.org/import-lazy/download/import-lazy-2.1.0.tgz", "resolved": "http://registry.npm.taobao.org/import-lazy/download/import-lazy-2.1.0.tgz",
...@@ -1607,7 +2172,17 @@ ...@@ -1607,7 +2172,17 @@
"resolved": "http://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz", "resolved": "http://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz",
"integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=" "integrity": "sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8="
}, },
"inherits": { "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", "version": "2.0.3",
"resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
...@@ -1618,6 +2193,44 @@ ...@@ -1618,6 +2193,44 @@
"integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=",
"dev": true "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": { "is-accessor-descriptor": {
"version": "0.1.6", "version": "0.1.6",
"resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
...@@ -1638,6 +2251,12 @@ ...@@ -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": { "is-binary-path": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", "resolved": "http://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
...@@ -1653,6 +2272,12 @@ ...@@ -1653,6 +2272,12 @@
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
"dev": true "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": { "is-ci": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "http://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", "resolved": "http://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz",
...@@ -1682,6 +2307,12 @@ ...@@ -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": { "is-descriptor": {
"version": "0.1.6", "version": "0.1.6",
"resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
...@@ -1793,12 +2424,27 @@ ...@@ -1793,12 +2424,27 @@
"isobject": "^3.0.1" "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": { "is-redirect": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz",
"integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
"dev": true "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": { "is-retry-allowed": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "http://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.1.0.tgz", "resolved": "http://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.1.0.tgz",
...@@ -1811,6 +2457,15 @@ ...@@ -1811,6 +2457,15 @@
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true "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": { "is-typedarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
...@@ -1844,6 +2499,12 @@ ...@@ -1844,6 +2499,12 @@
"resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" "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": { "js-yaml": {
"version": "3.12.1", "version": "3.12.1",
"resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.12.1.tgz", "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.12.1.tgz",
...@@ -1868,11 +2529,25 @@ ...@@ -1868,11 +2529,25 @@
"resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
"integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" "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": { "json-stringify-safe": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" "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": { "jsprim": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
...@@ -1964,6 +2639,44 @@ ...@@ -1964,6 +2639,44 @@
"resolved": "http://registry.npm.taobao.org/koa-is-json/download/koa-is-json-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/koa-is-json/download/koa-is-json-1.0.0.tgz",
"integrity": "sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=" "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": { "koa-router": {
"version": "7.4.0", "version": "7.4.0",
"resolved": "http://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz", "resolved": "http://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz",
...@@ -1996,6 +2709,46 @@ ...@@ -1996,6 +2709,46 @@
"package-json": "^4.0.0" "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": { "lodash": {
"version": "4.17.11", "version": "4.17.11",
"resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz", "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz",
...@@ -2007,6 +2760,18 @@ ...@@ -2007,6 +2760,18 @@
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
"dev": true "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": { "lowercase-keys": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz", "resolved": "http://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz",
...@@ -2091,6 +2856,12 @@ ...@@ -2091,6 +2856,12 @@
"mime-db": "~1.37.0" "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": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
...@@ -2127,11 +2898,32 @@ ...@@ -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": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" "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": { "nan": {
"version": "2.12.1", "version": "2.12.1",
"resolved": "http://registry.npm.taobao.org/nan/download/nan-2.12.1.tgz", "resolved": "http://registry.npm.taobao.org/nan/download/nan-2.12.1.tgz",
...@@ -2158,11 +2950,23 @@ ...@@ -2158,11 +2950,23 @@
"to-regex": "^3.0.1" "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": { "negotiator": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz", "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" "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": { "nodemon": {
"version": "1.18.9", "version": "1.18.9",
"resolved": "http://registry.npm.taobao.org/nodemon/download/nodemon-1.18.9.tgz", "resolved": "http://registry.npm.taobao.org/nodemon/download/nodemon-1.18.9.tgz",
...@@ -2190,6 +2994,18 @@ ...@@ -2190,6 +2994,18 @@
"abbrev": "1" "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": { "normalize-path": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
...@@ -2244,6 +3060,12 @@ ...@@ -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": { "object-visit": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", "resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz",
...@@ -2253,6 +3075,30 @@ ...@@ -2253,6 +3075,30 @@
"isobject": "^3.0.0" "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": { "object.pick": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", "resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz",
...@@ -2270,17 +3116,79 @@ ...@@ -2270,17 +3116,79 @@
"ee-first": "1.1.1" "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": { "only": {
"version": "0.0.2", "version": "0.0.2",
"resolved": "http://registry.npm.taobao.org/only/download/only-0.0.2.tgz", "resolved": "http://registry.npm.taobao.org/only/download/only-0.0.2.tgz",
"integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" "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": { "p-finally": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true "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": { "package-json": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/package-json/download/package-json-4.0.1.tgz", "resolved": "http://registry.npm.taobao.org/package-json/download/package-json-4.0.1.tgz",
...@@ -2293,6 +3201,24 @@ ...@@ -2293,6 +3201,24 @@
"semver": "^5.1.0" "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": { "parseurl": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz", "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz",
...@@ -2310,6 +3236,12 @@ ...@@ -2310,6 +3236,12 @@
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true "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": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
...@@ -2328,6 +3260,12 @@ ...@@ -2328,6 +3260,12 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true "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": { "path-to-regexp": {
"version": "1.7.0", "version": "1.7.0",
"resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.7.0.tgz", "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.7.0.tgz",
...@@ -2336,6 +3274,23 @@ ...@@ -2336,6 +3274,23 @@
"isarray": "0.0.1" "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": { "performance-now": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
...@@ -2347,12 +3302,27 @@ ...@@ -2347,12 +3302,27 @@
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true "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": { "posix-character-classes": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", "resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
"dev": true "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": { "prepend-http": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", "resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
...@@ -2362,7 +3332,12 @@ ...@@ -2362,7 +3332,12 @@
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz", "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 "dev": true
}, },
"pseudomap": { "pseudomap": {
...@@ -2436,11 +3411,31 @@ ...@@ -2436,11 +3411,31 @@
"strip-json-comments": "~2.0.1" "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": { "readable-stream": {
"version": "2.3.6", "version": "2.3.6",
"resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz", "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
"integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
"dev": true,
"requires": { "requires": {
"core-util-is": "~1.0.0", "core-util-is": "~1.0.0",
"inherits": "~2.0.3", "inherits": "~2.0.3",
...@@ -2454,8 +3449,7 @@ ...@@ -2454,8 +3449,7 @@
"isarray": { "isarray": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
"dev": true
} }
} }
}, },
...@@ -2480,6 +3474,12 @@ ...@@ -2480,6 +3474,12 @@
"safe-regex": "^1.1.0" "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": { "registry-auth-token": {
"version": "3.3.2", "version": "3.3.2",
"resolved": "http://registry.npm.taobao.org/registry-auth-token/download/registry-auth-token-3.3.2.tgz", "resolved": "http://registry.npm.taobao.org/registry-auth-token/download/registry-auth-token-3.3.2.tgz",
...@@ -2544,18 +3544,75 @@ ...@@ -2544,18 +3544,75 @@
"uuid": "^3.3.2" "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": { "resolve-url": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
"dev": true "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": { "ret": {
"version": "0.1.15", "version": "0.1.15",
"resolved": "http://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", "resolved": "http://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz",
"integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
"dev": true "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": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
...@@ -2639,6 +3696,17 @@ ...@@ -2639,6 +3696,17 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true "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": { "snapdragon": {
"version": "0.8.2", "version": "0.8.2",
"resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
...@@ -2780,6 +3848,38 @@ ...@@ -2780,6 +3848,38 @@
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
"dev": true "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": { "split-string": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "http://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", "resolved": "http://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
...@@ -2836,6 +3936,18 @@ ...@@ -2836,6 +3936,18 @@
"resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" "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": { "string-width": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
...@@ -2850,7 +3962,6 @@ ...@@ -2850,7 +3962,6 @@
"version": "1.1.1", "version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": { "requires": {
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
...@@ -2864,6 +3975,12 @@ ...@@ -2864,6 +3975,12 @@
"ansi-regex": "^3.0.0" "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": { "strip-eof": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz",
...@@ -2885,6 +4002,58 @@ ...@@ -2885,6 +4002,58 @@
"has-flag": "^3.0.0" "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": { "term-size": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "http://registry.npm.taobao.org/term-size/download/term-size-1.2.0.tgz", "resolved": "http://registry.npm.taobao.org/term-size/download/term-size-1.2.0.tgz",
...@@ -2894,12 +4063,33 @@ ...@@ -2894,12 +4063,33 @@
"execa": "^0.7.0" "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": { "timed-out": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/timed-out/download/timed-out-4.0.1.tgz", "resolved": "http://registry.npm.taobao.org/timed-out/download/timed-out-4.0.1.tgz",
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true "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": { "to-object-path": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "http://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", "resolved": "http://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz",
...@@ -2972,6 +4162,12 @@ ...@@ -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": { "tunnel-agent": {
"version": "0.6.0", "version": "0.6.0",
"resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
...@@ -2985,6 +4181,15 @@ ...@@ -2985,6 +4181,15 @@
"resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" "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": { "type-is": {
"version": "1.6.16", "version": "1.6.16",
"resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz", "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz",
...@@ -3058,6 +4263,11 @@ ...@@ -3058,6 +4263,11 @@
"crypto-random-string": "^1.0.0" "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": { "unpipe": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
...@@ -3176,14 +4386,23 @@ ...@@ -3176,14 +4386,23 @@
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
"dev": true
}, },
"uuid": { "uuid": {
"version": "3.3.2", "version": "3.3.2",
"resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz", "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz",
"integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=" "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": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
...@@ -3217,6 +4436,27 @@ ...@@ -3217,6 +4436,27 @@
"string-width": "^2.1.1" "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": { "write-file-atomic": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "http://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.3.0.tgz", "resolved": "http://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.3.0.tgz",
......
...@@ -7,17 +7,28 @@ ...@@ -7,17 +7,28 @@
"js-yaml": "^3.12.1", "js-yaml": "^3.12.1",
"koa": "^2.6.2", "koa": "^2.6.2",
"koa-bodyparser": "^4.2.1", "koa-bodyparser": "^4.2.1",
"koa-log4": "^2.3.2",
"koa-router": "^7.4.0", "koa-router": "^7.4.0",
"lodash": "^4.17.11", "lodash": "^4.17.11",
"log4js": "^4.0.2",
"request": "^2.88.0" "request": "^2.88.0"
}, },
"devDependencies": { "devDependencies": {
"eslint": "^5.15.3",
"eslint-config-airbnb-base": "^13.1.0",
"eslint-plugin-import": "^2.16.0",
"nodemon": "^1.18.9" "nodemon": "^1.18.9"
}, },
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "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": { "repository": {
"type": "git", "type": "git",
"url": "git@git.quantgroup.cn:QA/tke-eos.git" "url": "git@git.quantgroup.cn:QA/tke-eos.git"
......
const fs = require('fs') const fs = require('fs')
const ui = fs.readFileSync('serviceTemplate/ui.template.txt', 'utf8') const ui = fs.readFileSync('serviceTemplate/ui.template.txt', 'utf8')
const java = fs.readFileSync('serviceTemplate/java.template.txt', 'utf8') const java = fs.readFileSync('serviceTemplate/java.template.txt', 'utf8')
const node = fs.readFileSync('serviceTemplate/node.template.txt', 'utf8') const node = fs.readFileSync('serviceTemplate/node.template.txt', 'utf8')
...@@ -12,5 +13,5 @@ module.exports = { ...@@ -12,5 +13,5 @@ module.exports = {
java, java,
rabbitmq, rabbitmq,
zookeeper, zookeeper,
mysql mysql,
} }
...@@ -2,85 +2,91 @@ const Client = require('./tke.service') ...@@ -2,85 +2,91 @@ const Client = require('./tke.service')
const domainConfig = require('../config') const domainConfig = require('../config')
class Cluster extends Client { class Cluster extends Client {
constructor() { constructor() {
super(); super();
this.endpoint = domainConfig.clusterPoint this.endpoint = domainConfig.clusterPoint
} }
namespace_get() { namespace_get() {
return this.post('DescribeClusterNameSpaces', {clusterId: this.clusterId}) return this.post('DescribeClusterNameSpaces', { clusterId: this.clusterId })
} }
namespace_create(name) { namespace_create(name) {
return this.post('CreateClusterNamespace', {name, description: '', clusterId: this.clusterId}) return this.post('CreateClusterNamespace', { name, description: '', clusterId: this.clusterId })
} }
namespace_delete(name) { 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) { 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) { 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) { async service_create(params, type) {
params.clusterId = this.clusterId params.clusterId = this.clusterId
let str = JSON.stringify(params) const str = JSON.stringify(params)
await this.post('CreateClusterService', params) await this.post('CreateClusterService', params)
// 腾讯云api暂只能通过修改服务来改成Recreate策略 // 腾讯云api暂只能通过修改服务来改成Recreate策略
let modifyParams = JSON.parse(str) const modifyParams = JSON.parse(str)
modifyParams.strategy = 'Recreate' modifyParams.strategy = 'Recreate'
await this.post('ModifyClusterService', modifyParams) await this.post('ModifyClusterService', modifyParams)
let updateLabels = { const updateLabels = {
clusterId: params.clusterId, clusterId: params.clusterId,
serviceName: params.serviceName, serviceName: params.serviceName,
namespace: params.namespace, namespace: params.namespace,
"labels.type": type 'labels.type': type,
}
return this.post('ModifyServiceLabels', updateLabels)
} }
service_delete(serviceName, namespace) { return this.post('ModifyServiceLabels', updateLabels)
return this.post('DeleteClusterService', {serviceName, namespace, clusterId: this.clusterId}) }
}
service_modifyImage(serviceName, image, namespace) { service_delete(serviceName, namespace) {
return this.post('ModifyClusterServiceImage', {serviceName, namespace, image, clusterId: this.clusterId}) return this.post('DeleteClusterService', { 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})
}
ingress_get(namespace) {
return this.post('DescribeIngress', {namespace, clusterId: this.clusterId})
}
ingress_create(namespace) { service_modifyImage(serviceName, image, namespace) {
return this.post('CreateIngress', { return this.post('ModifyClusterServiceImage', {
ingressName: `qa-${namespace}`, serviceName, namespace, image, clusterId: this.clusterId,
ingressDesc: '', })
namespace, }
clusterId: this.clusterId
})
}
ingress_delete(ingressName, namespace) { service_redeployment(serviceName, namespace) {
return this.post('DeleteIngress', {ingressName, namespace, clusterId: this.clusterId}) return this.post('RedeployClusterService', { serviceName, namespace, clusterId: this.clusterId })
} }
ingress_modify(ingressName, namespace, rules) { instance_get(serviceName, namespace) {
return this.post('MosifyIngress', {ingressName, namespace, ...rules, clusterId: this.clusterId}) return this.post('DescribeServiceInstance', { serviceName, namespace, clusterId: this.clusterId })
} }
ingress_get(namespace) {
return this.post('DescribeIngress', { namespace, clusterId: this.clusterId })
}
ingress_create(namespace) {
return this.post('CreateIngress', {
ingressName: `qa-${namespace}`,
ingressDesc: '',
namespace,
clusterId: this.clusterId,
})
}
ingress_delete(ingressName, namespace) {
return this.post('DeleteIngress', { ingressName, namespace, clusterId: this.clusterId })
}
ingress_modify(ingressName, namespace, rules) {
return this.post('MosifyIngress', {
ingressName, namespace, ...rules, clusterId: this.clusterId,
})
}
} }
exports.create = function () { exports.create = function () {
return new Cluster() return new Cluster()
} }
...@@ -2,19 +2,20 @@ const Client = require('./tke.service') ...@@ -2,19 +2,20 @@ const Client = require('./tke.service')
const domainConfig = require('../config') const domainConfig = require('../config')
class Container extends Client { class Container extends Client {
constructor() { constructor() {
super(); super();
this.endpoint = domainConfig.containerPoint this.endpoint = domainConfig.containerPoint
} }
repository_get( namespace) { repository_get(namespace) {
return this.post('SearchUserRepository', {namespace}) return this.post('SearchUserRepository', { namespace })
} }
tag_get( reponame) {
return this.post('GetTagList', {reponame}) tag_get(reponame) {
} return this.post('GetTagList', { reponame })
}
} }
exports.create = function () { exports.create = function () {
return new Container() return new Container()
} }
...@@ -3,84 +3,82 @@ const crypto = require('crypto') ...@@ -3,84 +3,82 @@ const crypto = require('crypto')
const domainConfig = require('../config') const domainConfig = require('../config')
class Client { class Client {
constructor() { constructor() {
this.secretId = domainConfig.secretId this.secretId = domainConfig.secretId
this.secretKey = domainConfig.secretKey this.secretKey = domainConfig.secretKey
this.region = domainConfig.region this.region = domainConfig.region
this.clusterId = domainConfig.clusterId this.clusterId = domainConfig.clusterId
this.method = domainConfig.method this.method = domainConfig.method
this.protocal = domainConfig.protocal this.protocal = domainConfig.protocal
this.endpoint = '' this.endpoint = ''
this.path = domainConfig.path this.path = domainConfig.path
this.domain = domainConfig.domain this.domain = domainConfig.domain
// 禁止操作以下命名空间 // 禁止操作以下命名空间
this.defaultNamespaces = ['default', 'kube-system', 'kube-public'] this.defaultNamespaces = ['default', 'kube-system', 'kube-public']
} }
sign(params, signMethod) {
let str = ''
let keys = Object.keys(params)
keys.sort()
for (let key of keys) {
str += '&' + key + '=' + params[key]
}
str = str.slice(1)
let signStr = this.method + this.endpoint + this.path + '?' + str
let signMethodMap = { sign(params, signMethod) {
HmacSHA1: "sha1", let str = ''
HmacSHA256: "sha256" const keys = Object.keys(params)
} keys.sort()
let hmac = crypto.createHmac(signMethodMap[signMethod], this.secretKey) for (const key of keys) {
return hmac.update(Buffer.from(signStr, 'utf-8')).digest('base64') str += `&${key}=${params[key]}`
} }
str = str.slice(1)
const signStr = `${this.method + this.endpoint + this.path}?${str}`
// 公共参数 const signMethodMap = {
// Action: '', HmacSHA1: 'sha1',
// Region: '', HmacSHA256: 'sha256',
// Timestamp: null,
// Nonce: null,
// SecretId: '',
// Signature: ''
formatRequestData(action, params = {}) {
params.Action = action
params.Region = this.region
params.Timestamp = Math.round(Date.now() / 1000)
params.Nonce = Math.round(Math.random() * 65535)
params.SecretId = this.secretId
params.SignatureMethod = params.SignatureMethod || 'HmacSHA256'
params.Signature = this.sign(params, params.SignatureMethod)
} }
const hmac = crypto.createHmac(signMethodMap[signMethod], this.secretKey)
return hmac.update(Buffer.from(signStr, 'utf-8')).digest('base64')
}
post(action, params = {}) { // 公共参数
if (params.namespace && this.defaultNamespaces.includes(params.namespace)) { // Action: '',
return Promise.reject(new Error('未授权的namespace')) // Region: '',
} // Timestamp: null,
// Nonce: null,
// SecretId: '',
// Signature: ''
formatRequestData(action, params = {}) {
params.Action = action
params.Region = this.region
params.Timestamp = Math.round(Date.now() / 1000)
params.Nonce = Math.round(Math.random() * 65535)
params.SecretId = this.secretId
params.SignatureMethod = params.SignatureMethod || 'HmacSHA256'
params.Signature = this.sign(params, params.SignatureMethod)
}
this.formatRequestData(action, params) post(action, params = {}) {
let url = this.protocal + this.endpoint + this.path if (params.namespace && this.defaultNamespaces.includes(params.namespace)) {
let self = this return Promise.reject(new Error('未授权的namespace'))
return new Promise(function (resolve, reject) {
request({
method: self.method,
url,
json: true,
form: params
}, function (err, res, body) {
if (err) {
console.error(err)
reject(err)
} else {
if (body.code === 0) {
resolve(body.data)
} else {
reject(body)
}
}
})
})
} }
this.formatRequestData(action, params)
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,
}, (err, res, body) => {
if (err) {
// console.error(err)
reject(err)
} else if (body.code === 0) {
resolve(body.data)
} else {
reject(body)
}
})
}))
}
} }
module.exports = Client module.exports = Client
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