Commit e46d3e95 authored by 薛智杰's avatar 薛智杰

Merge branch 'kewei' into 'master'

Kewei



See merge request !2
parents fb65af1d e59246f5
......@@ -7,33 +7,29 @@ const result = require('../middleware/result')
const namespaceRoute = require('./namespace')
const serviceRoute = require('./service')
// const rabbitmqRoute = require('./rabbitmq')
// const zookeeperRoute = require('./zookeeper')
const repositoryRouter = require('./repository')
const tag = require('./tag')
const commonServiceRoute = require('./commonService')
const ingressRoute = require('./ingress')
const client = require('../services/tke.service').create({
secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
clusterId: 'cls-acfx4pvj',
region: 'ap-beijing'
})
const cluster = require('../services/tke.clusterService').create()
const container = require('../services/tke.containerService').create()
function loadRoutes (router) {
router
.use(error())
.use(result())
.use(async (ctx, next) => {
// 腾讯云
ctx.client = client
ctx.container = container
ctx.cluster = cluster
await next()
}, bodyParser())
.use('/namespace', namespaceRoute.routes())
.use('/service', serviceRoute.routes())
// .use('/rabbitmq', rabbitmqRoute.routes())
// .use('/zookeeper', zookeeperRoute.routes())
.use('/commonService', commonServiceRoute.routes())
.use('/ingress', ingressRoute.routes())
.use('/namespace', namespaceRoute.routes())
.use('/service', serviceRoute.routes())
.use('/commonService', commonServiceRoute.routes())
.use('/ingress', ingressRoute.routes())
.use('/repository',repositoryRouter.routes())
.use('/tag',tag.routes())
}
exports.start = function () {
......
......@@ -4,17 +4,17 @@ const router = new Router();
module.exports = router
router.get('/', async ctx => {
let data = await ctx.client.namespace_get()
let data = await ctx.cluster.namespace_get()
ctx.body = ctx.ok(data)
})
router.post('/create', async ctx => {
await ctx.client.namespace_create(ctx.request.body.name)
await ctx.client.ingress_create(ctx.request.body.name)
await ctx.cluster.namespace_create(ctx.request.body.name)
await ctx.cluster.ingress_create(ctx.request.body.name)
ctx.body = ctx.ok()
})
router.post('/delete', async ctx => {
await ctx.client.namespace_delete(ctx.request.body.name)
await ctx.cluster.namespace_delete(ctx.request.body.name)
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
// }
let data = {
namespace: ctx.request.body.namespace,
image: IMAGES[0]
}
let template = templates['rabbitmq'].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
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('删除成功')
})
const Router = require('koa-router')
const router = new Router()
module.exports = router
router.post('/', async ctx => {
let data = await ctx.container.repository_get(ctx.request.body.namespace)
ctx.body = ctx.ok(data)
})
......@@ -2,57 +2,52 @@ const Router = require('koa-router')
const yaml = require('js-yaml')
const templates = require('../serviceTemplate')
const TYPES = ['ui', 'java', 'nodejs', 'python', 'go']
const TYPES = ['ui', 'java', 'node', 'python', 'go']
const router = new Router()
module.exports = router
router.get('/', async ctx => {
let data = await ctx.client.service_list(ctx.query.namespace)
ctx.body = ctx.ok(data)
let data = await ctx.cluster.service_list(ctx.query.namespace)
ctx.body = ctx.ok(data)
})
router.post('/create', async ctx => {
let { type, serviceName, namespace, image, system_name } = ctx.request.body
if (!TYPES.includes(type)) {
return ctx.body = ctx.fail('不支持的服务类型')
}
// try {
// let svc = await ctx.client.service_get(serviceName, namespace)
// if (svc) {
// return ctx.body = ctx.fail('服务已经存在')
// }
// } catch (e) {
// }
let data = {
serviceName,
namespace,
image,
system_name
}
if (!system_name) {
// ui abTest的时候不一样
data.system_name = serviceName
}
let template = templates[type].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
let {type, serviceName, namespace, image, system_name, lable} = ctx.request.body
if (!TYPES.includes(type)) {
return ctx.body = ctx.fail('不支持的服务类型')
}
let data = {
serviceName,
namespace,
image,
system_name,
lable
}
return data[arguments[1]]
})
let params = yaml.load(template)
await ctx.client.service_create(params)
ctx.body = ctx.ok('创建成功')
if (!system_name) {
// ui abTest的时候不一样
data.system_name = serviceName
}
let template = templates[type].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
await ctx.cluster.service_create(params, type)
ctx.body = ctx.ok('创建成功')
})
router.post('/details', async ctx => {
let data = await ctx.cluster.service_get(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok(data)
})
router.post('/delete', async ctx => {
await ctx.client.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
await ctx.cluster.service_delete(ctx.request.body.serviceName, ctx.request.body.namespace)
ctx.body = ctx.ok('删除成功')
})
router.post('/modifyImage', async ctx => {
await ctx.client.service_modifyImage(ctx.request.body.serviceName, ctx.request.body.image, ctx.request.body.namespace)
ctx.body = ctx.ok('更新成功')
await ctx.cluster.service_modifyImage(ctx.request.body.serviceName, ctx.request.body.image, ctx.request.body.namespace)
ctx.body = ctx.ok('更新成功')
})
const Router = require('koa-router')
const router = new Router()
module.exports = router
router.post('/', async ctx => {
let data = await ctx.container.tag_get(ctx.request.body.reponame)
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 => {
let data = {
namespace: ctx.request.body.namespace,
image: IMAGES[0]
}
let template = templates['zookeeper'].replace(/{{([A-Za-z0-9_]+)}}/g, function () {
if (data[arguments[1]] === undefined) {
throw new Error('缺少模板所需变量')
}
return data[arguments[1]]
})
let params = yaml.load(template)
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('删除成功')
})
module.exports={
secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
clusterId: 'cls-acfx4pvj',
region: 'ap-beijing',
method :'POST',
protocal : 'https://',
clusterPoint : 'ccs.api.qcloud.com', //访问集群以及服务的域名
containerPoint : 'ccr.api.qcloud.com', //访问镜像仓库的域名
path : '/v2/index.php',
domain : ".lkbang.com",
}
......@@ -15,7 +15,7 @@
"resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz",
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"requires": {
"mime-types": "2.1.21",
"mime-types": "~2.1.18",
"negotiator": "0.6.1"
}
},
......@@ -24,10 +24,10 @@
"resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.7.0.tgz",
"integrity": "sha1-4857s3LWV3uxg58d/fy/WtKUjZY=",
"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"
"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-align": {
......@@ -36,7 +36,7 @@
"integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
"dev": true,
"requires": {
"string-width": "2.1.1"
"string-width": "^2.0.0"
}
},
"ansi-regex": {
......@@ -51,7 +51,7 @@
"integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
"dev": true,
"requires": {
"color-convert": "1.9.3"
"color-convert": "^1.9.0"
}
},
"any-promise": {
......@@ -65,8 +65,8 @@
"integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
"dev": true,
"requires": {
"micromatch": "3.1.10",
"normalize-path": "2.1.1"
"micromatch": "^3.1.4",
"normalize-path": "^2.1.1"
}
},
"argparse": {
......@@ -74,7 +74,7 @@
"resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
"integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
"requires": {
"sprintf-js": "1.0.3"
"sprintf-js": "~1.0.2"
}
},
"arr-diff": {
......@@ -106,7 +106,7 @@
"resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
"integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
"requires": {
"safer-buffer": "2.1.2"
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
......@@ -159,13 +159,13 @@
"integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
"dev": true,
"requires": {
"cache-base": "1.0.1",
"class-utils": "0.3.6",
"component-emitter": "1.2.1",
"define-property": "1.0.0",
"isobject": "3.0.1",
"mixin-deep": "1.3.1",
"pascalcase": "0.1.1"
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
"component-emitter": "^1.2.1",
"define-property": "^1.0.0",
"isobject": "^3.0.1",
"mixin-deep": "^1.2.0",
"pascalcase": "^0.1.1"
},
"dependencies": {
"define-property": {
......@@ -174,7 +174,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
"is-descriptor": "1.0.2"
"is-descriptor": "^1.0.0"
}
},
"is-accessor-descriptor": {
......@@ -183,7 +183,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
......@@ -192,7 +192,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
......@@ -201,9 +201,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
......@@ -213,7 +213,7 @@
"resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
"tweetnacl": "0.14.5"
"tweetnacl": "^0.14.3"
}
},
"binary-extensions": {
......@@ -228,13 +228,13 @@
"integrity": "sha1-VcbDmouljZxhrSLNh3Uy3rZlogs=",
"dev": true,
"requires": {
"ansi-align": "2.0.0",
"camelcase": "4.1.0",
"chalk": "2.4.2",
"cli-boxes": "1.0.0",
"string-width": "2.1.1",
"term-size": "1.2.0",
"widest-line": "2.0.1"
"ansi-align": "^2.0.0",
"camelcase": "^4.0.0",
"chalk": "^2.0.1",
"cli-boxes": "^1.0.0",
"string-width": "^2.0.0",
"term-size": "^1.2.0",
"widest-line": "^2.0.0"
}
},
"brace-expansion": {
......@@ -243,7 +243,7 @@
"integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
......@@ -253,16 +253,16 @@
"integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
"dev": true,
"requires": {
"arr-flatten": "1.1.0",
"array-unique": "0.3.2",
"extend-shallow": "2.0.1",
"fill-range": "4.0.0",
"isobject": "3.0.1",
"repeat-element": "1.1.3",
"snapdragon": "0.8.2",
"snapdragon-node": "2.1.1",
"split-string": "3.1.0",
"to-regex": "3.0.2"
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
"extend-shallow": "^2.0.1",
"fill-range": "^4.0.0",
"isobject": "^3.0.1",
"repeat-element": "^1.1.2",
"snapdragon": "^0.8.1",
"snapdragon-node": "^2.0.1",
"split-string": "^3.0.2",
"to-regex": "^3.0.1"
},
"dependencies": {
"extend-shallow": {
......@@ -271,7 +271,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
}
}
......@@ -287,15 +287,15 @@
"integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
"dev": true,
"requires": {
"collection-visit": "1.0.0",
"component-emitter": "1.2.1",
"get-value": "2.0.6",
"has-value": "1.0.0",
"isobject": "3.0.1",
"set-value": "2.0.0",
"to-object-path": "0.3.0",
"union-value": "1.0.0",
"unset-value": "1.0.0"
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
"get-value": "^2.0.6",
"has-value": "^1.0.0",
"isobject": "^3.0.1",
"set-value": "^2.0.0",
"to-object-path": "^0.3.0",
"union-value": "^1.0.0",
"unset-value": "^1.0.0"
}
},
"cache-content-type": {
......@@ -303,8 +303,8 @@
"resolved": "http://registry.npm.taobao.org/cache-content-type/download/cache-content-type-1.0.1.tgz",
"integrity": "sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=",
"requires": {
"mime-types": "2.1.21",
"ylru": "1.2.1"
"mime-types": "^2.1.18",
"ylru": "^1.2.0"
}
},
"camelcase": {
......@@ -330,9 +330,9 @@
"integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
"dev": true,
"requires": {
"ansi-styles": "3.2.1",
"escape-string-regexp": "1.0.5",
"supports-color": "5.5.0"
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"chokidar": {
......@@ -341,19 +341,19 @@
"integrity": "sha1-NW/04rDo5D4yLRijckYLvPOszSY=",
"dev": true,
"requires": {
"anymatch": "2.0.0",
"async-each": "1.0.1",
"braces": "2.3.2",
"fsevents": "1.2.7",
"glob-parent": "3.1.0",
"inherits": "2.0.3",
"is-binary-path": "1.0.1",
"is-glob": "4.0.0",
"lodash.debounce": "4.0.8",
"normalize-path": "2.1.1",
"path-is-absolute": "1.0.1",
"readdirp": "2.2.1",
"upath": "1.1.0"
"anymatch": "^2.0.0",
"async-each": "^1.0.0",
"braces": "^2.3.0",
"fsevents": "^1.2.2",
"glob-parent": "^3.1.0",
"inherits": "^2.0.1",
"is-binary-path": "^1.0.0",
"is-glob": "^4.0.0",
"lodash.debounce": "^4.0.8",
"normalize-path": "^2.1.1",
"path-is-absolute": "^1.0.0",
"readdirp": "^2.0.0",
"upath": "^1.0.5"
}
},
"ci-info": {
......@@ -368,10 +368,10 @@
"integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
"dev": true,
"requires": {
"arr-union": "3.1.0",
"define-property": "0.2.5",
"isobject": "3.0.1",
"static-extend": "0.1.2"
"arr-union": "^3.1.0",
"define-property": "^0.2.5",
"isobject": "^3.0.0",
"static-extend": "^0.1.1"
},
"dependencies": {
"define-property": {
......@@ -380,7 +380,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "0.1.6"
"is-descriptor": "^0.1.0"
}
}
}
......@@ -401,10 +401,10 @@
"resolved": "http://registry.npm.taobao.org/co-body/download/co-body-6.0.0.tgz",
"integrity": "sha1-lluTN9f1ZVSAeHRx9CN2ZIIIJ+M=",
"requires": {
"inflation": "2.0.0",
"qs": "6.5.2",
"raw-body": "2.3.3",
"type-is": "1.6.16"
"inflation": "^2.0.0",
"qs": "^6.5.2",
"raw-body": "^2.3.3",
"type-is": "^1.6.16"
}
},
"collection-visit": {
......@@ -413,8 +413,8 @@
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
"dev": true,
"requires": {
"map-visit": "1.0.0",
"object-visit": "1.0.1"
"map-visit": "^1.0.0",
"object-visit": "^1.0.0"
}
},
"color-convert": {
......@@ -437,7 +437,7 @@
"resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.7.tgz",
"integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=",
"requires": {
"delayed-stream": "1.0.0"
"delayed-stream": "~1.0.0"
}
},
"component-emitter": {
......@@ -458,12 +458,12 @@
"integrity": "sha1-xvJd767vJt8S3TNBSwAf6BpUP48=",
"dev": true,
"requires": {
"dot-prop": "4.2.0",
"graceful-fs": "4.1.15",
"make-dir": "1.3.0",
"unique-string": "1.0.0",
"write-file-atomic": "2.3.0",
"xdg-basedir": "3.0.0"
"dot-prop": "^4.1.0",
"graceful-fs": "^4.1.2",
"make-dir": "^1.0.0",
"unique-string": "^1.0.0",
"write-file-atomic": "^2.0.0",
"xdg-basedir": "^3.0.0"
}
},
"content-disposition": {
......@@ -484,8 +484,8 @@
"resolved": "http://registry.npm.taobao.org/cookies/download/cookies-0.7.3.tgz",
"integrity": "sha1-eRLOIfvy6MLacM8cPzUa7PWdrfo=",
"requires": {
"depd": "1.1.2",
"keygrip": "1.0.3"
"depd": "~1.1.2",
"keygrip": "~1.0.3"
}
},
"copy-descriptor": {
......@@ -510,7 +510,7 @@
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"dev": true,
"requires": {
"capture-stack-trace": "1.0.1"
"capture-stack-trace": "^1.0.0"
}
},
"cross-spawn": {
......@@ -519,9 +519,9 @@
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
"dev": true,
"requires": {
"lru-cache": "4.1.5",
"shebang-command": "1.2.0",
"which": "1.3.1"
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"crypto-random-string": {
......@@ -535,7 +535,7 @@
"resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
"assert-plus": "1.0.0"
"assert-plus": "^1.0.0"
}
},
"debug": {
......@@ -569,8 +569,8 @@
"integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
"dev": true,
"requires": {
"is-descriptor": "1.0.2",
"isobject": "3.0.1"
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
},
"dependencies": {
"is-accessor-descriptor": {
......@@ -579,7 +579,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
......@@ -588,7 +588,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
......@@ -597,9 +597,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
......@@ -630,7 +630,7 @@
"integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=",
"dev": true,
"requires": {
"is-obj": "1.0.1"
"is-obj": "^1.0.0"
}
},
"duplexer3": {
......@@ -644,8 +644,8 @@
"resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
"jsbn": "0.1.1",
"safer-buffer": "2.1.2"
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"ee-first": {
......@@ -680,13 +680,13 @@
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
"dev": true,
"requires": {
"cross-spawn": "5.1.0",
"get-stream": "3.0.0",
"is-stream": "1.1.0",
"npm-run-path": "2.0.2",
"p-finally": "1.0.0",
"signal-exit": "3.0.2",
"strip-eof": "1.0.0"
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
}
},
"expand-brackets": {
......@@ -695,13 +695,13 @@
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"requires": {
"debug": "2.6.9",
"define-property": "0.2.5",
"extend-shallow": "2.0.1",
"posix-character-classes": "0.1.1",
"regex-not": "1.0.2",
"snapdragon": "0.8.2",
"to-regex": "3.0.2"
"debug": "^2.3.3",
"define-property": "^0.2.5",
"extend-shallow": "^2.0.1",
"posix-character-classes": "^0.1.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"debug": {
......@@ -719,7 +719,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "0.1.6"
"is-descriptor": "^0.1.0"
}
},
"extend-shallow": {
......@@ -728,7 +728,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
}
}
......@@ -744,8 +744,8 @@
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
"requires": {
"assign-symbols": "1.0.0",
"is-extendable": "1.0.1"
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
},
"dependencies": {
"is-extendable": {
......@@ -754,7 +754,7 @@
"integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
"dev": true,
"requires": {
"is-plain-object": "2.0.4"
"is-plain-object": "^2.0.4"
}
}
}
......@@ -765,14 +765,14 @@
"integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
"dev": true,
"requires": {
"array-unique": "0.3.2",
"define-property": "1.0.0",
"expand-brackets": "2.1.4",
"extend-shallow": "2.0.1",
"fragment-cache": "0.2.1",
"regex-not": "1.0.2",
"snapdragon": "0.8.2",
"to-regex": "3.0.2"
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
"expand-brackets": "^2.1.4",
"extend-shallow": "^2.0.1",
"fragment-cache": "^0.2.1",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"define-property": {
......@@ -781,7 +781,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
"is-descriptor": "1.0.2"
"is-descriptor": "^1.0.0"
}
},
"extend-shallow": {
......@@ -790,7 +790,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
},
"is-accessor-descriptor": {
......@@ -799,7 +799,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
......@@ -808,7 +808,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
......@@ -817,9 +817,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
......@@ -845,10 +845,10 @@
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
"extend-shallow": "2.0.1",
"is-number": "3.0.0",
"repeat-string": "1.6.1",
"to-regex-range": "2.1.1"
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
"repeat-string": "^1.6.1",
"to-regex-range": "^2.1.0"
},
"dependencies": {
"extend-shallow": {
......@@ -857,7 +857,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
}
}
......@@ -878,9 +878,9 @@
"resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz",
"integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.7",
"mime-types": "2.1.21"
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"fragment-cache": {
......@@ -889,7 +889,7 @@
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
"dev": true,
"requires": {
"map-cache": "0.2.2"
"map-cache": "^0.2.2"
}
},
"fresh": {
......@@ -904,8 +904,8 @@
"dev": true,
"optional": true,
"requires": {
"nan": "2.12.1",
"node-pre-gyp": "0.10.3"
"nan": "^2.9.2",
"node-pre-gyp": "^0.10.0"
},
"dependencies": {
"abbrev": {
......@@ -931,8 +931,8 @@
"dev": true,
"optional": true,
"requires": {
"delegates": "1.0.0",
"readable-stream": "2.3.6"
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
......@@ -945,7 +945,7 @@
"bundled": true,
"dev": true,
"requires": {
"balanced-match": "1.0.0",
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
......@@ -1009,7 +1009,7 @@
"dev": true,
"optional": true,
"requires": {
"minipass": "2.3.5"
"minipass": "^2.2.1"
}
},
"fs.realpath": {
......@@ -1024,14 +1024,14 @@
"dev": true,
"optional": true,
"requires": {
"aproba": "1.2.0",
"console-control-strings": "1.1.0",
"has-unicode": "2.0.1",
"object-assign": "4.1.1",
"signal-exit": "3.0.2",
"string-width": "1.0.2",
"strip-ansi": "3.0.1",
"wide-align": "1.1.3"
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
......@@ -1040,12 +1040,12 @@
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
"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"
}
},
"has-unicode": {
......@@ -1060,7 +1060,7 @@
"dev": true,
"optional": true,
"requires": {
"safer-buffer": "2.1.2"
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
......@@ -1069,7 +1069,7 @@
"dev": true,
"optional": true,
"requires": {
"minimatch": "3.0.4"
"minimatch": "^3.0.4"
}
},
"inflight": {
......@@ -1078,8 +1078,8 @@
"dev": true,
"optional": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
......@@ -1098,7 +1098,7 @@
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "1.0.1"
"number-is-nan": "^1.0.0"
}
},
"isarray": {
......@@ -1112,7 +1112,7 @@
"bundled": true,
"dev": true,
"requires": {
"brace-expansion": "1.1.11"
"brace-expansion": "^1.1.7"
}
},
"minimist": {
......@@ -1125,8 +1125,8 @@
"bundled": true,
"dev": true,
"requires": {
"safe-buffer": "5.1.2",
"yallist": "3.0.3"
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
......@@ -1135,7 +1135,7 @@
"dev": true,
"optional": true,
"requires": {
"minipass": "2.3.5"
"minipass": "^2.2.1"
}
},
"mkdirp": {
......@@ -1158,9 +1158,9 @@
"dev": true,
"optional": true,
"requires": {
"debug": "2.6.9",
"iconv-lite": "0.4.24",
"sax": "1.2.4"
"debug": "^2.1.2",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
......@@ -1169,16 +1169,16 @@
"dev": true,
"optional": true,
"requires": {
"detect-libc": "1.0.3",
"mkdirp": "0.5.1",
"needle": "2.2.4",
"nopt": "4.0.1",
"npm-packlist": "1.2.0",
"npmlog": "4.1.2",
"rc": "1.2.8",
"rimraf": "2.6.3",
"semver": "5.6.0",
"tar": "4.4.8"
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
"needle": "^2.2.1",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
}
},
"nopt": {
......@@ -1187,8 +1187,8 @@
"dev": true,
"optional": true,
"requires": {
"abbrev": "1.1.1",
"osenv": "0.1.5"
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
......@@ -1203,8 +1203,8 @@
"dev": true,
"optional": true,
"requires": {
"ignore-walk": "3.0.1",
"npm-bundled": "1.0.5"
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
......@@ -1213,10 +1213,10 @@
"dev": true,
"optional": true,
"requires": {
"are-we-there-yet": "1.1.5",
"console-control-strings": "1.1.0",
"gauge": "2.7.4",
"set-blocking": "2.0.0"
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
......@@ -1235,7 +1235,7 @@
"bundled": true,
"dev": true,
"requires": {
"wrappy": "1.0.2"
"wrappy": "1"
}
},
"os-homedir": {
......@@ -1256,8 +1256,8 @@
"dev": true,
"optional": true,
"requires": {
"os-homedir": "1.0.2",
"os-tmpdir": "1.0.2"
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
......@@ -1278,10 +1278,10 @@
"dev": true,
"optional": true,
"requires": {
"deep-extend": "0.6.0",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
......@@ -1298,13 +1298,13 @@
"dev": true,
"optional": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.2",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"rimraf": {
......@@ -1313,7 +1313,7 @@
"dev": true,
"optional": true,
"requires": {
"glob": "7.1.3"
"glob": "^7.1.3"
}
},
"safe-buffer": {
......@@ -1356,9 +1356,9 @@
"bundled": true,
"dev": true,
"requires": {
"code-point-at": "1.1.0",
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
......@@ -1367,7 +1367,7 @@
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "5.1.2"
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
......@@ -1375,7 +1375,7 @@
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "2.1.1"
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
......@@ -1390,13 +1390,13 @@
"dev": true,
"optional": true,
"requires": {
"chownr": "1.1.1",
"fs-minipass": "1.2.5",
"minipass": "2.3.5",
"minizlib": "1.2.1",
"mkdirp": "0.5.1",
"safe-buffer": "5.1.2",
"yallist": "3.0.3"
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.4",
"minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
"util-deprecate": {
......@@ -1411,7 +1411,7 @@
"dev": true,
"optional": true,
"requires": {
"string-width": "1.0.2"
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
......@@ -1443,7 +1443,7 @@
"resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "1.0.0"
"assert-plus": "^1.0.0"
}
},
"glob-parent": {
......@@ -1452,8 +1452,8 @@
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
"is-glob": "3.1.0",
"path-dirname": "1.0.2"
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
......@@ -1462,7 +1462,7 @@
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
"is-extglob": "2.1.1"
"is-extglob": "^2.1.0"
}
}
}
......@@ -1473,7 +1473,7 @@
"integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
"dev": true,
"requires": {
"ini": "1.3.5"
"ini": "^1.3.4"
}
},
"got": {
......@@ -1482,17 +1482,17 @@
"integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
"dev": true,
"requires": {
"create-error-class": "3.0.2",
"duplexer3": "0.1.4",
"get-stream": "3.0.0",
"is-redirect": "1.0.0",
"is-retry-allowed": "1.1.0",
"is-stream": "1.1.0",
"lowercase-keys": "1.0.1",
"safe-buffer": "5.1.2",
"timed-out": "4.0.1",
"unzip-response": "2.0.1",
"url-parse-lax": "1.0.0"
"create-error-class": "^3.0.0",
"duplexer3": "^0.1.4",
"get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
"safe-buffer": "^5.0.1",
"timed-out": "^4.0.0",
"unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
}
},
"graceful-fs": {
......@@ -1511,8 +1511,8 @@
"resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz",
"integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
"requires": {
"ajv": "6.7.0",
"har-schema": "2.0.0"
"ajv": "^6.5.5",
"har-schema": "^2.0.0"
}
},
"has-flag": {
......@@ -1527,9 +1527,9 @@
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
"get-value": "2.0.6",
"has-values": "1.0.0",
"isobject": "3.0.1"
"get-value": "^2.0.6",
"has-values": "^1.0.0",
"isobject": "^3.0.0"
}
},
"has-values": {
......@@ -1538,8 +1538,8 @@
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
"is-number": "3.0.0",
"kind-of": "4.0.0"
"is-number": "^3.0.0",
"kind-of": "^4.0.0"
},
"dependencies": {
"kind-of": {
......@@ -1548,7 +1548,7 @@
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -1558,8 +1558,8 @@
"resolved": "http://registry.npm.taobao.org/http-assert/download/http-assert-1.4.0.tgz",
"integrity": "sha1-DlULT8pq3xIbvu2DJIwX5i9ZOpo=",
"requires": {
"deep-equal": "1.0.1",
"http-errors": "1.7.1"
"deep-equal": "~1.0.1",
"http-errors": "~1.7.1"
}
},
"http-errors": {
......@@ -1567,10 +1567,10 @@
"resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.7.1.tgz",
"integrity": "sha1-ak/+XTUYjhw5+HJTRpBYWFLh8Cc=",
"requires": {
"depd": "1.1.2",
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
"statuses": "1.5.0",
"statuses": ">= 1.5.0 < 2",
"toidentifier": "1.0.0"
}
},
......@@ -1579,9 +1579,9 @@
"resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"requires": {
"assert-plus": "1.0.0",
"jsprim": "1.4.1",
"sshpk": "1.16.0"
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"ignore-by-default": {
......@@ -1624,7 +1624,7 @@
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
......@@ -1633,7 +1633,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -1644,7 +1644,7 @@
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"requires": {
"binary-extensions": "1.12.0"
"binary-extensions": "^1.0.0"
}
},
"is-buffer": {
......@@ -1659,7 +1659,7 @@
"integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=",
"dev": true,
"requires": {
"ci-info": "1.6.0"
"ci-info": "^1.5.0"
}
},
"is-data-descriptor": {
......@@ -1668,7 +1668,7 @@
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
......@@ -1677,7 +1677,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -1688,9 +1688,9 @@
"integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
"dev": true,
"requires": {
"is-accessor-descriptor": "0.1.6",
"is-data-descriptor": "0.1.4",
"kind-of": "5.1.0"
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
},
"dependencies": {
"kind-of": {
......@@ -1730,7 +1730,7 @@
"integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
"dev": true,
"requires": {
"is-extglob": "2.1.1"
"is-extglob": "^2.1.1"
}
},
"is-installed-globally": {
......@@ -1739,8 +1739,8 @@
"integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
"dev": true,
"requires": {
"global-dirs": "0.1.1",
"is-path-inside": "1.0.1"
"global-dirs": "^0.1.0",
"is-path-inside": "^1.0.0"
}
},
"is-npm": {
......@@ -1755,7 +1755,7 @@
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
......@@ -1764,7 +1764,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -1781,7 +1781,7 @@
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
"dev": true,
"requires": {
"path-is-inside": "1.0.2"
"path-is-inside": "^1.0.1"
}
},
"is-plain-object": {
......@@ -1790,7 +1790,7 @@
"integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
"dev": true,
"requires": {
"isobject": "3.0.1"
"isobject": "^3.0.1"
}
},
"is-redirect": {
......@@ -1849,8 +1849,8 @@
"resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.12.1.tgz",
"integrity": "sha1-KVyGMqGKI+BUz1ydPOyv5ngWdgA=",
"requires": {
"argparse": "1.0.10",
"esprima": "4.0.1"
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"jsbn": {
......@@ -1900,30 +1900,30 @@
"resolved": "http://registry.npm.taobao.org/koa/download/koa-2.6.2.tgz",
"integrity": "sha1-V7pNBJsKmcrg1ZTmFE4pMZSafOE=",
"requires": {
"accepts": "1.3.5",
"cache-content-type": "1.0.1",
"content-disposition": "0.5.3",
"content-type": "1.0.4",
"cookies": "0.7.3",
"debug": "3.1.0",
"delegates": "1.0.0",
"depd": "1.1.2",
"destroy": "1.0.4",
"error-inject": "1.0.0",
"escape-html": "1.0.3",
"fresh": "0.5.2",
"http-assert": "1.4.0",
"http-errors": "1.7.1",
"is-generator-function": "1.0.7",
"koa-compose": "4.1.0",
"koa-convert": "1.2.0",
"koa-is-json": "1.0.0",
"on-finished": "2.3.0",
"only": "0.0.2",
"parseurl": "1.3.2",
"statuses": "1.5.0",
"type-is": "1.6.16",
"vary": "1.1.2"
"accepts": "^1.3.5",
"cache-content-type": "^1.0.0",
"content-disposition": "~0.5.2",
"content-type": "^1.0.4",
"cookies": "~0.7.1",
"debug": "~3.1.0",
"delegates": "^1.0.0",
"depd": "^1.1.2",
"destroy": "^1.0.4",
"error-inject": "^1.0.0",
"escape-html": "^1.0.3",
"fresh": "~0.5.2",
"http-assert": "^1.3.0",
"http-errors": "^1.6.3",
"is-generator-function": "^1.0.7",
"koa-compose": "^4.1.0",
"koa-convert": "^1.2.0",
"koa-is-json": "^1.0.0",
"on-finished": "^2.3.0",
"only": "~0.0.2",
"parseurl": "^1.3.2",
"statuses": "^1.5.0",
"type-is": "^1.6.16",
"vary": "^1.1.2"
}
},
"koa-bodyparser": {
......@@ -1931,8 +1931,8 @@
"resolved": "http://registry.npm.taobao.org/koa-bodyparser/download/koa-bodyparser-4.2.1.tgz",
"integrity": "sha1-TX2stebbEQZkm1ldnlzLFYtvOyk=",
"requires": {
"co-body": "6.0.0",
"copy-to": "2.0.1"
"co-body": "^6.0.0",
"copy-to": "^2.0.1"
}
},
"koa-compose": {
......@@ -1945,8 +1945,8 @@
"resolved": "http://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz",
"integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=",
"requires": {
"co": "4.6.0",
"koa-compose": "3.2.1"
"co": "^4.6.0",
"koa-compose": "^3.0.0"
},
"dependencies": {
"koa-compose": {
......@@ -1954,7 +1954,7 @@
"resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz",
"integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=",
"requires": {
"any-promise": "1.3.0"
"any-promise": "^1.1.0"
}
}
}
......@@ -1969,12 +1969,12 @@
"resolved": "http://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz",
"integrity": "sha1-ruH3rcAtXLMdfWdGXJ6syCXoxeA=",
"requires": {
"debug": "3.1.0",
"http-errors": "1.7.1",
"koa-compose": "3.2.1",
"methods": "1.1.2",
"path-to-regexp": "1.7.0",
"urijs": "1.19.1"
"debug": "^3.1.0",
"http-errors": "^1.3.1",
"koa-compose": "^3.0.0",
"methods": "^1.0.1",
"path-to-regexp": "^1.1.1",
"urijs": "^1.19.0"
},
"dependencies": {
"koa-compose": {
......@@ -1982,7 +1982,7 @@
"resolved": "http://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz",
"integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=",
"requires": {
"any-promise": "1.3.0"
"any-promise": "^1.1.0"
}
}
}
......@@ -1993,7 +1993,7 @@
"integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
"dev": true,
"requires": {
"package-json": "4.0.1"
"package-json": "^4.0.0"
}
},
"lodash": {
......@@ -2019,8 +2019,8 @@
"integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
"dev": true,
"requires": {
"pseudomap": "1.0.2",
"yallist": "2.1.2"
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"make-dir": {
......@@ -2029,7 +2029,7 @@
"integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=",
"dev": true,
"requires": {
"pify": "3.0.0"
"pify": "^3.0.0"
}
},
"map-cache": {
......@@ -2044,7 +2044,7 @@
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
"dev": true,
"requires": {
"object-visit": "1.0.1"
"object-visit": "^1.0.0"
}
},
"media-typer": {
......@@ -2063,19 +2063,19 @@
"integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
"dev": true,
"requires": {
"arr-diff": "4.0.0",
"array-unique": "0.3.2",
"braces": "2.3.2",
"define-property": "2.0.2",
"extend-shallow": "3.0.2",
"extglob": "2.0.4",
"fragment-cache": "0.2.1",
"kind-of": "6.0.2",
"nanomatch": "1.2.13",
"object.pick": "1.3.0",
"regex-not": "1.0.2",
"snapdragon": "0.8.2",
"to-regex": "3.0.2"
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"braces": "^2.3.1",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"extglob": "^2.0.4",
"fragment-cache": "^0.2.1",
"kind-of": "^6.0.2",
"nanomatch": "^1.2.9",
"object.pick": "^1.3.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.2"
}
},
"mime-db": {
......@@ -2088,7 +2088,7 @@
"resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.21.tgz",
"integrity": "sha1-KJlaoey3cHQv5q5+WPkYHHRLP5Y=",
"requires": {
"mime-db": "1.37.0"
"mime-db": "~1.37.0"
}
},
"minimatch": {
......@@ -2097,7 +2097,7 @@
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"dev": true,
"requires": {
"brace-expansion": "1.1.11"
"brace-expansion": "^1.1.7"
}
},
"minimist": {
......@@ -2112,8 +2112,8 @@
"integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=",
"dev": true,
"requires": {
"for-in": "1.0.2",
"is-extendable": "1.0.1"
"for-in": "^1.0.2",
"is-extendable": "^1.0.1"
},
"dependencies": {
"is-extendable": {
......@@ -2122,7 +2122,7 @@
"integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
"dev": true,
"requires": {
"is-plain-object": "2.0.4"
"is-plain-object": "^2.0.4"
}
}
}
......@@ -2145,17 +2145,17 @@
"integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
"dev": true,
"requires": {
"arr-diff": "4.0.0",
"array-unique": "0.3.2",
"define-property": "2.0.2",
"extend-shallow": "3.0.2",
"fragment-cache": "0.2.1",
"is-windows": "1.0.2",
"kind-of": "6.0.2",
"object.pick": "1.3.0",
"regex-not": "1.0.2",
"snapdragon": "0.8.2",
"to-regex": "3.0.2"
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"fragment-cache": "^0.2.1",
"is-windows": "^1.0.2",
"kind-of": "^6.0.2",
"object.pick": "^1.3.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
}
},
"negotiator": {
......@@ -2169,16 +2169,16 @@
"integrity": "sha1-kLRn79OzyBuUUzgK6yosulNdDq0=",
"dev": true,
"requires": {
"chokidar": "2.0.4",
"debug": "3.1.0",
"ignore-by-default": "1.0.1",
"minimatch": "3.0.4",
"pstree.remy": "1.1.6",
"semver": "5.6.0",
"supports-color": "5.5.0",
"touch": "3.1.0",
"undefsafe": "2.0.2",
"update-notifier": "2.5.0"
"chokidar": "^2.0.4",
"debug": "^3.1.0",
"ignore-by-default": "^1.0.1",
"minimatch": "^3.0.4",
"pstree.remy": "^1.1.6",
"semver": "^5.5.0",
"supports-color": "^5.2.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.2",
"update-notifier": "^2.5.0"
}
},
"nopt": {
......@@ -2187,7 +2187,7 @@
"integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
"dev": true,
"requires": {
"abbrev": "1.1.1"
"abbrev": "1"
}
},
"normalize-path": {
......@@ -2196,7 +2196,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
"remove-trailing-separator": "1.1.0"
"remove-trailing-separator": "^1.0.1"
}
},
"npm-run-path": {
......@@ -2205,7 +2205,7 @@
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
"path-key": "2.0.1"
"path-key": "^2.0.0"
}
},
"oauth-sign": {
......@@ -2219,9 +2219,9 @@
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
"dev": true,
"requires": {
"copy-descriptor": "0.1.1",
"define-property": "0.2.5",
"kind-of": "3.2.2"
"copy-descriptor": "^0.1.0",
"define-property": "^0.2.5",
"kind-of": "^3.0.3"
},
"dependencies": {
"define-property": {
......@@ -2230,7 +2230,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "0.1.6"
"is-descriptor": "^0.1.0"
}
},
"kind-of": {
......@@ -2239,7 +2239,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -2250,7 +2250,7 @@
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
"isobject": "3.0.1"
"isobject": "^3.0.0"
}
},
"object.pick": {
......@@ -2259,7 +2259,7 @@
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
"dev": true,
"requires": {
"isobject": "3.0.1"
"isobject": "^3.0.1"
}
},
"on-finished": {
......@@ -2287,10 +2287,10 @@
"integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
"dev": true,
"requires": {
"got": "6.7.1",
"registry-auth-token": "3.3.2",
"registry-url": "3.1.0",
"semver": "5.6.0"
"got": "^6.7.1",
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
}
},
"parseurl": {
......@@ -2408,10 +2408,10 @@
"resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"requires": {
"depd": "1.1.2",
"depd": "~1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.0",
"statuses": "1.5.0"
"statuses": ">= 1.4.0 < 2"
}
},
"iconv-lite": {
......@@ -2419,7 +2419,7 @@
"resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.23.tgz",
"integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=",
"requires": {
"safer-buffer": "2.1.2"
"safer-buffer": ">= 2.1.2 < 3"
}
}
}
......@@ -2430,10 +2430,10 @@
"integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=",
"dev": true,
"requires": {
"deep-extend": "0.6.0",
"ini": "1.3.5",
"minimist": "1.2.0",
"strip-json-comments": "2.0.1"
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
}
},
"readable-stream": {
......@@ -2442,13 +2442,13 @@
"integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "2.0.0",
"safe-buffer": "5.1.2",
"string_decoder": "1.1.1",
"util-deprecate": "1.0.2"
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
},
"dependencies": {
"isarray": {
......@@ -2465,9 +2465,9 @@
"integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
"dev": true,
"requires": {
"graceful-fs": "4.1.15",
"micromatch": "3.1.10",
"readable-stream": "2.3.6"
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
"readable-stream": "^2.0.2"
}
},
"regex-not": {
......@@ -2476,8 +2476,8 @@
"integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
"dev": true,
"requires": {
"extend-shallow": "3.0.2",
"safe-regex": "1.1.0"
"extend-shallow": "^3.0.2",
"safe-regex": "^1.1.0"
}
},
"registry-auth-token": {
......@@ -2486,8 +2486,8 @@
"integrity": "sha1-hR/UkDjuy1hpERFa+EUmDuyYPyA=",
"dev": true,
"requires": {
"rc": "1.2.8",
"safe-buffer": "5.1.2"
"rc": "^1.1.6",
"safe-buffer": "^5.0.1"
}
},
"registry-url": {
......@@ -2496,7 +2496,7 @@
"integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
"dev": true,
"requires": {
"rc": "1.2.8"
"rc": "^1.0.1"
}
},
"remove-trailing-separator": {
......@@ -2522,26 +2522,26 @@
"resolved": "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz",
"integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=",
"requires": {
"aws-sign2": "0.7.0",
"aws4": "1.8.0",
"caseless": "0.12.0",
"combined-stream": "1.0.7",
"extend": "3.0.2",
"forever-agent": "0.6.1",
"form-data": "2.3.3",
"har-validator": "5.1.3",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.21",
"oauth-sign": "0.9.0",
"performance-now": "2.1.0",
"qs": "6.5.2",
"safe-buffer": "5.1.2",
"tough-cookie": "2.4.3",
"tunnel-agent": "0.6.0",
"uuid": "3.3.2"
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"resolve-url": {
......@@ -2567,7 +2567,7 @@
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
"ret": "0.1.15"
"ret": "~0.1.10"
}
},
"safer-buffer": {
......@@ -2587,7 +2587,7 @@
"integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
"dev": true,
"requires": {
"semver": "5.6.0"
"semver": "^5.0.3"
}
},
"set-value": {
......@@ -2596,10 +2596,10 @@
"integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=",
"dev": true,
"requires": {
"extend-shallow": "2.0.1",
"is-extendable": "0.1.1",
"is-plain-object": "2.0.4",
"split-string": "3.1.0"
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"is-plain-object": "^2.0.3",
"split-string": "^3.0.1"
},
"dependencies": {
"extend-shallow": {
......@@ -2608,7 +2608,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
}
}
......@@ -2624,7 +2624,7 @@
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
"shebang-regex": "1.0.0"
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
......@@ -2645,14 +2645,14 @@
"integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
"dev": true,
"requires": {
"base": "0.11.2",
"debug": "2.6.9",
"define-property": "0.2.5",
"extend-shallow": "2.0.1",
"map-cache": "0.2.2",
"source-map": "0.5.7",
"source-map-resolve": "0.5.2",
"use": "3.1.1"
"base": "^0.11.1",
"debug": "^2.2.0",
"define-property": "^0.2.5",
"extend-shallow": "^2.0.1",
"map-cache": "^0.2.2",
"source-map": "^0.5.6",
"source-map-resolve": "^0.5.0",
"use": "^3.1.0"
},
"dependencies": {
"debug": {
......@@ -2670,7 +2670,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "0.1.6"
"is-descriptor": "^0.1.0"
}
},
"extend-shallow": {
......@@ -2679,7 +2679,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
}
}
......@@ -2690,9 +2690,9 @@
"integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
"dev": true,
"requires": {
"define-property": "1.0.0",
"isobject": "3.0.1",
"snapdragon-util": "3.0.1"
"define-property": "^1.0.0",
"isobject": "^3.0.0",
"snapdragon-util": "^3.0.1"
},
"dependencies": {
"define-property": {
......@@ -2701,7 +2701,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
"is-descriptor": "1.0.2"
"is-descriptor": "^1.0.0"
}
},
"is-accessor-descriptor": {
......@@ -2710,7 +2710,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
......@@ -2719,7 +2719,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
"kind-of": "6.0.2"
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
......@@ -2728,9 +2728,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
"is-accessor-descriptor": "1.0.0",
"is-data-descriptor": "1.0.0",
"kind-of": "6.0.2"
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
}
}
......@@ -2741,7 +2741,7 @@
"integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
"kind-of": "^3.2.0"
},
"dependencies": {
"kind-of": {
......@@ -2750,7 +2750,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -2767,11 +2767,11 @@
"integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
"dev": true,
"requires": {
"atob": "2.1.2",
"decode-uri-component": "0.2.0",
"resolve-url": "0.2.1",
"source-map-url": "0.4.0",
"urix": "0.1.0"
"atob": "^2.1.1",
"decode-uri-component": "^0.2.0",
"resolve-url": "^0.2.1",
"source-map-url": "^0.4.0",
"urix": "^0.1.0"
}
},
"source-map-url": {
......@@ -2786,7 +2786,7 @@
"integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
"dev": true,
"requires": {
"extend-shallow": "3.0.2"
"extend-shallow": "^3.0.0"
}
},
"sprintf-js": {
......@@ -2799,15 +2799,15 @@
"resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.16.0.tgz",
"integrity": "sha1-HUljovv/5YBQqpCEyiC+gXQcB94=",
"requires": {
"asn1": "0.2.4",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.2",
"dashdash": "1.14.1",
"ecc-jsbn": "0.1.2",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"safer-buffer": "2.1.2",
"tweetnacl": "0.14.5"
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"static-extend": {
......@@ -2816,8 +2816,8 @@
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
"define-property": "0.2.5",
"object-copy": "0.1.0"
"define-property": "^0.2.5",
"object-copy": "^0.1.0"
},
"dependencies": {
"define-property": {
......@@ -2826,7 +2826,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "0.1.6"
"is-descriptor": "^0.1.0"
}
}
}
......@@ -2842,8 +2842,8 @@
"integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
"dev": true,
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
}
},
"string_decoder": {
......@@ -2852,7 +2852,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
"safe-buffer": "5.1.2"
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
......@@ -2861,7 +2861,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
"ansi-regex": "3.0.0"
"ansi-regex": "^3.0.0"
}
},
"strip-eof": {
......@@ -2882,7 +2882,7 @@
"integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
"dev": true,
"requires": {
"has-flag": "3.0.0"
"has-flag": "^3.0.0"
}
},
"term-size": {
......@@ -2891,7 +2891,7 @@
"integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
"dev": true,
"requires": {
"execa": "0.7.0"
"execa": "^0.7.0"
}
},
"timed-out": {
......@@ -2906,7 +2906,7 @@
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
"dev": true,
"requires": {
"kind-of": "3.2.2"
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
......@@ -2915,7 +2915,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "1.1.6"
"is-buffer": "^1.1.5"
}
}
}
......@@ -2926,10 +2926,10 @@
"integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
"dev": true,
"requires": {
"define-property": "2.0.2",
"extend-shallow": "3.0.2",
"regex-not": "1.0.2",
"safe-regex": "1.1.0"
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"regex-not": "^1.0.2",
"safe-regex": "^1.1.0"
}
},
"to-regex-range": {
......@@ -2938,8 +2938,8 @@
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
"requires": {
"is-number": "3.0.0",
"repeat-string": "1.6.1"
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
}
},
"toidentifier": {
......@@ -2953,7 +2953,7 @@
"integrity": "sha1-/jZfX3XsntTlaCXgu3bSSrdK+Ds=",
"dev": true,
"requires": {
"nopt": "1.0.10"
"nopt": "~1.0.10"
}
},
"tough-cookie": {
......@@ -2961,8 +2961,8 @@
"resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz",
"integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=",
"requires": {
"psl": "1.1.31",
"punycode": "1.4.1"
"psl": "^1.1.24",
"punycode": "^1.4.1"
},
"dependencies": {
"punycode": {
......@@ -2977,7 +2977,7 @@
"resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
"safe-buffer": "5.1.2"
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
......@@ -2991,7 +2991,7 @@
"integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=",
"requires": {
"media-typer": "0.3.0",
"mime-types": "2.1.21"
"mime-types": "~2.1.18"
}
},
"undefsafe": {
......@@ -3000,7 +3000,7 @@
"integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=",
"dev": true,
"requires": {
"debug": "2.6.9"
"debug": "^2.2.0"
},
"dependencies": {
"debug": {
......@@ -3020,10 +3020,10 @@
"integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
"dev": true,
"requires": {
"arr-union": "3.1.0",
"get-value": "2.0.6",
"is-extendable": "0.1.1",
"set-value": "0.4.3"
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
"is-extendable": "^0.1.1",
"set-value": "^0.4.3"
},
"dependencies": {
"extend-shallow": {
......@@ -3032,7 +3032,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "0.1.1"
"is-extendable": "^0.1.0"
}
},
"set-value": {
......@@ -3041,10 +3041,10 @@
"integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
"dev": true,
"requires": {
"extend-shallow": "2.0.1",
"is-extendable": "0.1.1",
"is-plain-object": "2.0.4",
"to-object-path": "0.3.0"
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"is-plain-object": "^2.0.1",
"to-object-path": "^0.3.0"
}
}
}
......@@ -3055,7 +3055,7 @@
"integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
"dev": true,
"requires": {
"crypto-random-string": "1.0.0"
"crypto-random-string": "^1.0.0"
}
},
"unpipe": {
......@@ -3069,8 +3069,8 @@
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
"dev": true,
"requires": {
"has-value": "0.3.1",
"isobject": "3.0.1"
"has-value": "^0.3.1",
"isobject": "^3.0.0"
},
"dependencies": {
"has-value": {
......@@ -3079,9 +3079,9 @@
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
"dev": true,
"requires": {
"get-value": "2.0.6",
"has-values": "0.1.4",
"isobject": "2.1.0"
"get-value": "^2.0.3",
"has-values": "^0.1.4",
"isobject": "^2.0.0"
},
"dependencies": {
"isobject": {
......@@ -3127,16 +3127,16 @@
"integrity": "sha1-0HRFk+E/Fh5AassdlAi3LK0Ir/Y=",
"dev": true,
"requires": {
"boxen": "1.3.0",
"chalk": "2.4.2",
"configstore": "3.1.2",
"import-lazy": "2.1.0",
"is-ci": "1.2.1",
"is-installed-globally": "0.1.0",
"is-npm": "1.0.0",
"latest-version": "3.1.0",
"semver-diff": "2.1.0",
"xdg-basedir": "3.0.0"
"boxen": "^1.2.1",
"chalk": "^2.0.1",
"configstore": "^3.0.0",
"import-lazy": "^2.1.0",
"is-ci": "^1.0.10",
"is-installed-globally": "^0.1.0",
"is-npm": "^1.0.0",
"latest-version": "^3.0.0",
"semver-diff": "^2.0.0",
"xdg-basedir": "^3.0.0"
}
},
"uri-js": {
......@@ -3144,7 +3144,7 @@
"resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz",
"integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
"requires": {
"punycode": "2.1.1"
"punycode": "^2.1.0"
}
},
"urijs": {
......@@ -3164,7 +3164,7 @@
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"dev": true,
"requires": {
"prepend-http": "1.0.4"
"prepend-http": "^1.0.1"
}
},
"use": {
......@@ -3194,9 +3194,9 @@
"resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
"assert-plus": "1.0.0",
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "1.3.0"
"extsprintf": "^1.2.0"
}
},
"which": {
......@@ -3205,7 +3205,7 @@
"integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
"dev": true,
"requires": {
"isexe": "2.0.0"
"isexe": "^2.0.0"
}
},
"widest-line": {
......@@ -3214,7 +3214,7 @@
"integrity": "sha1-dDh2RzDsfvQ4HOTfgvuYpTFCo/w=",
"dev": true,
"requires": {
"string-width": "2.1.1"
"string-width": "^2.1.1"
}
},
"write-file-atomic": {
......@@ -3223,9 +3223,9 @@
"integrity": "sha1-H/YVdcLipOjlENb6TiQ8zhg5mas=",
"dev": true,
"requires": {
"graceful-fs": "4.1.15",
"imurmurhash": "0.1.4",
"signal-exit": "3.0.2"
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.2"
}
},
"xdg-basedir": {
......
const fs = require('fs')
const ui = fs.readFileSync('serviceTemplate/ui.template.txt', 'utf8')
const java = fs.readFileSync('serviceTemplate/java.template.txt', 'utf8')
const nodejs = fs.readFileSync('serviceTemplate/nodejs.template.txt', 'utf8')
const node = fs.readFileSync('serviceTemplate/node.template.txt', 'utf8')
const rabbitmq = fs.readFileSync('serviceTemplate/rabbitmq.template.txt', 'utf8')
const zookeeper = fs.readFileSync('serviceTemplate/zookeeper.template.txt', 'utf8')
const mysql = fs.readFileSync('serviceTemplate/mysql.template.txt', 'utf8')
module.exports = {
ui,
nodejs,
node,
java,
rabbitmq,
zookeeper,
......
const Client = require('./tke.service')
const domainConfig = require('../config')
class Cluster extends Client {
constructor() {
super();
this.endpoint = domainConfig.clusterPoint
}
namespace_get() {
return this.post('DescribeClusterNameSpaces', {clusterId: this.clusterId})
}
namespace_create(name) {
return this.post('CreateClusterNamespace', {name, description: '', clusterId: this.clusterId})
}
namespace_delete(name) {
return this.post('DeleteClusterNamespace', {"names.0": name, clusterId: this.clusterId})
}
service_list(namespace) {
return this.post('DescribeClusterService', {namespace, clusterId: this.clusterId, allnamespace: 0})
}
service_get(serviceName, namespace) {
return this.post('DescribeClusterServiceInfo', {serviceName, namespace, clusterId: this.clusterId})
}
async service_create(params, type) {
params.clusterId = this.clusterId
let str = JSON.stringify(params)
await this.post('CreateClusterService', params)
let updateLabels = {
clusterId: params.clusterId,
serviceName: params.serviceName,
namespace: params.namespace,
"labels.type": type
}
return this.post('ModifyServiceLabels', updateLabels)
}
service_delete(serviceName, namespace) {
return this.post('DeleteClusterService', {serviceName, namespace, clusterId: this.clusterId})
}
service_modifyImage(serviceName, image, namespace) {
return this.post('ModifyClusterServiceImage', {serviceName, namespace, image, 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 () {
return new Cluster()
}
const Client = require('./tke.service')
const domainConfig = require('../config')
class Container extends Client {
constructor() {
super();
this.endpoint = domainConfig.containerPoint
}
repository_get( namespace) {
return this.post('SearchUserRepository', {namespace})
}
tag_get( reponame) {
return this.post('GetTagList', {reponame})
}
}
exports.create = function () {
return new Container()
}
const request = require('request')
const crypto = require('crypto')
class Client {
constructor ({secretId, secretKey, region, clusterId}) {
this.secretId = secretId
this.secretKey = secretKey
this.region = region
this.clusterId = clusterId
this.method = 'POST'
this.protocal = 'https://'
this.endpoint = 'ccs.api.qcloud.com'
this.path = '/v2/index.php'
this.domain = ".lkbang.com"
// 禁止操作以下命名空间
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]
const domainConfig = require('../config')
class Client {
constructor() {
this.secretId = domainConfig.secretId
this.secretKey = domainConfig.secretKey
this.region = domainConfig.region
this.clusterId = domainConfig.clusterId
this.method = domainConfig.method
this.protocal = domainConfig.protocal
this.endpoint = ''
this.path = domainConfig.path
this.domain = domainConfig.domain
// 禁止操作以下命名空间
this.defaultNamespaces = ['default', 'kube-system', 'kube-public']
}
str = str.slice(1)
let signStr = this.method + this.endpoint + this.path + '?' + str
let signMethodMap = {
HmacSHA1: "sha1",
HmacSHA256: "sha256"
}
let hmac = crypto.createHmac(signMethodMap[signMethod], this.secretKey)
return hmac.update(Buffer.from(signStr, 'utf-8')).digest('base64')
}
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
// 公共参数
// Action: '',
// 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)
}
let signMethodMap = {
HmacSHA1: "sha1",
HmacSHA256: "sha256"
}
let 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)) {
return Promise.reject(new Error('未授权的namespace'))
// 公共参数
// Action: '',
// 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)
let url = this.protocal + this.endpoint + this.path
let self = this
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)
}
post(action, params = {}) {
if (params.namespace && this.defaultNamespaces.includes(params.namespace)) {
return Promise.reject(new Error('未授权的namespace'))
}
})
})
}
namespace_get () {
return this.post('DescribeClusterNameSpaces', {clusterId: this.clusterId})
}
namespace_create (name) {
return this.post('CreateClusterNamespace', {name, description: '', clusterId: this.clusterId})
}
namespace_delete (name) {
return this.post('DeleteClusterNamespace', {"names.0": name, clusterId: this.clusterId})
}
service_list (namespace) {
return this.post('DescribeClusterService', {namespace, clusterId: this.clusterId, allnamespace: 0})
}
service_get (serviceName, namespace) {
return this.post('DescribeClusterServiceInfo', {serviceName, namespace, clusterId: this.clusterId})
}
async service_create (params) {
params.clusterId = this.clusterId
let str = JSON.stringify(params)
await this.post('CreateClusterService', params)
// 腾讯云api暂只能通过修改服务来改成Recreate策略
let modifyParams = JSON.parse(str)
modifyParams.strategy = 'Recreate'
return this.post('ModifyClusterService', modifyParams)
}
service_delete (serviceName, namespace) {
return this.post('DeleteClusterService', {serviceName, namespace, clusterId: this.clusterId})
}
service_modifyImage (serviceName, image, namespace) {
// 修改示例的第一个容器
return this.post('ModifyClusterServiceImage', {serviceName, namespace, image, 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 (config) {
return new Client(config)
this.formatRequestData(action, params)
let url = this.protocal + this.endpoint + this.path
let self = this
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)
}
}
})
})
}
}
// let client = new Client({
// secretId: 'AKID4rY7wwNphsUcaFsy1pRtKhQvDj4CA3Ac',
// secretKey: 'YBduRnjgVRGzmagZJbss3Vo58wWCyhgc',
// clusterId: 'cls-acfx4pvj',
// region: 'ap-beijing'
// })
// client.post('DescribeClusterNameSpaces', {clusterId: 'cls-acfx4pvj'}).then(res => {
// console.log(5, res)
// })
\ No newline at end of file
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