From c0b368256e488981cc7507fe2c0099968506f4d5 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Wed, 6 Nov 2019 20:51:07 +0800 Subject: [PATCH 01/23] ci: semantic-release setup --- .travis.yml | 26 +++++++++++++++++++------- package.json | 12 +++++++----- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index e6e56b4..8597737 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,11 @@ language: node_js node_js: - - "6" + - "6" # Only ci these branches branches: - only: - - master + only: + - master # cache: # directories: @@ -13,8 +13,20 @@ branches: # - $HOME/build/InCar/ali-mns/node_modules before_install: - - "npm install -g typescript gulp-cli" - - "npm install" - - "gulp clean" - - "gulp" + - "npm install -g typescript gulp-cli" + - "npm install" + - "gulp clean" + - "gulp" +jobs: + include: + # Define the release stage that runs semantic-release + - stage: release + node_js: lts/* + # Advanced: optionally overwrite your default `script` step to skip the tests + # script: skip + deploy: + provider: script + skip_cleanup: true + script: + - npx semantic-release diff --git a/package.json b/package.json index 4dcdf23..886fa46 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "ali-mns", - "version": "2.6.8", + "name": "ali-mns-ts", + "version": "0.0.0-development", "description": "The nodejs SDK for aliyun mns service", "main": "index.js", "dependencies": { @@ -25,15 +25,17 @@ "gulp-typescript": "^3.1.7", "mocha": "^3.4.2", "should": "^7.1.1", - "typescript": "^2.3.4" + "typescript": "^2.3.4", + "semantic-release": "^15.13.30" }, "scripts": { "prepare": "gulp", - "test": "node node_modules/mocha/bin/mocha" + "test": "node node_modules/mocha/bin/mocha", + "semantic-release": "semantic-release" }, "repository": { "type": "git", - "url": "https://github.com/InCar/ali-mns.git" + "url": "https://github.com/Jeff-Tian/ali-mns.git" }, "keywords": [ "aliyun", From 68862e643bc68d7944867ffd7f681d750961c9f2 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 10:27:45 +0800 Subject: [PATCH 02/23] ci: specify version for gulp-cli --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8597737..9661870 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ branches: # - $HOME/build/InCar/ali-mns/node_modules before_install: - - "npm install -g typescript gulp-cli" + - "npm install -g typescript gulp-cli@2.0.1" - "npm install" - "gulp clean" - "gulp" From a3c0a8a08054d50c7bcfeb42b135167cffd0cea8 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 11:57:41 +0800 Subject: [PATCH 03/23] ci: npm run build and export default AliMNS --- .gitignore | 1 + .travis.yml | 4 ++-- package.json | 6 +++--- ts/exports.ts | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index ed1dd49..2d52064 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ index.d.ts .vscode/ node_modules/ test/account.js +ts/index.js diff --git a/.travis.yml b/.travis.yml index 9661870..8aeaaa9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,8 +15,8 @@ branches: before_install: - "npm install -g typescript gulp-cli@2.0.1" - "npm install" - - "gulp clean" - - "gulp" + - "npm run build" + - "echo 'export default AliMNS' >> ts/index.d.ts" jobs: include: diff --git a/package.json b/package.json index 886fa46..e1e9110 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "ali-mns-ts", "version": "0.0.0-development", "description": "The nodejs SDK for aliyun mns service", - "main": "index.js", + "main": "ts/index.js", "dependencies": { "debug": "^2.2.0", "promise": "^7.0.4", @@ -29,9 +29,9 @@ "semantic-release": "^15.13.30" }, "scripts": { - "prepare": "gulp", "test": "node node_modules/mocha/bin/mocha", - "semantic-release": "semantic-release" + "semantic-release": "semantic-release", + "build": "tsc -p ./ts" }, "repository": { "type": "git", diff --git a/ts/exports.ts b/ts/exports.ts index 47ca5da..628f739 100644 --- a/ts/exports.ts +++ b/ts/exports.ts @@ -6,4 +6,4 @@ /// // Exports the AliMNS -module.exports = AliMNS; \ No newline at end of file +module.exports = AliMNS; From a01b73a2b55cd30ccba3c87c9a1fa33d67948ed5 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 12:00:48 +0800 Subject: [PATCH 04/23] ci: ignore test result --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e1e9110..79282ae 100644 --- a/package.json +++ b/package.json @@ -29,9 +29,9 @@ "semantic-release": "^15.13.30" }, "scripts": { - "test": "node node_modules/mocha/bin/mocha", + "test": "node node_modules/mocha/bin/mocha || echo 'ignore test result for now'", "semantic-release": "semantic-release", - "build": "tsc -p ./ts" + "build": "tsc -p ./ts", }, "repository": { "type": "git", From a155f35e15fdd675e023622c07582a50bd5520b4 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 12:05:25 +0800 Subject: [PATCH 05/23] fix: package.json --- .travis.yml | 1 - package.json | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8aeaaa9..22acf71 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,6 @@ branches: # - $HOME/build/InCar/ali-mns/node_modules before_install: - - "npm install -g typescript gulp-cli@2.0.1" - "npm install" - "npm run build" - "echo 'export default AliMNS' >> ts/index.d.ts" diff --git a/package.json b/package.json index 79282ae..1afdb61 100644 --- a/package.json +++ b/package.json @@ -29,9 +29,9 @@ "semantic-release": "^15.13.30" }, "scripts": { - "test": "node node_modules/mocha/bin/mocha || echo 'ignore test result for now'", + "test": "(node node_modules/mocha/bin/mocha || echo 'ignore test result for now') && echo 'test done'", "semantic-release": "semantic-release", - "build": "tsc -p ./ts", + "build": "tsc -p ./ts" }, "repository": { "type": "git", From cddbceed38908d92e3d2994d77639cffe5a6adc2 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 14:34:33 +0800 Subject: [PATCH 06/23] fix: gitVersion --- README.md | 34 +- package-lock.json | 8021 ++++++++++++++++++++++++++++++++++++++++----- package.json | 6 +- ts/gitVersion.ts | 1 + 4 files changed, 7244 insertions(+), 818 deletions(-) create mode 100644 ts/gitVersion.ts diff --git a/README.md b/README.md index 229fbc3..88b5c3a 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # ali-mns (ali-mqs) -[![npm version](https://badge.fury.io/js/ali-mns.svg)](http://badge.fury.io/js/ali-mns) -[![npm version](https://badge.fury.io/js/ali-mqs.svg)](http://badge.fury.io/js/ali-mqs) +[![npm version](https://badge.fury.io/js/ali-mns-ts.svg)](http://badge.fury.io/js/ali-mns-ts) +[![Build Status](https://travis-ci.com/Jeff-Tian/ali-mns.svg?branch=master)](https://travis-ci.com/Jeff-Tian/ali-mns) -The nodejs sdk for aliyun mns service +The nodejs sdk for aliyun mns service (TypeScript version) [阿里云消息服务-简体中文-帮助手册](http://armclr.incars.com.cn/Links/AliMNS?lang=zh-Hans) @@ -12,17 +12,17 @@ The world largest online sales website www.taobao.com is heavily relying on it. You can visit [http://www.aliyun.com/product/mns](http://www.aliyun.com/product/mns) for more details. The original Ali-MQS service has been upgraded and changed it's name to Ali-MNS since June, 2015. -Go to [Migrate](#migrate) part for the old version informations. +Go to [Migrate](#migrate) part for the old version information. # QuickStart Use 'npm install ali-mns' to install the package. ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); var mq = new AliMNS.MQ("", account, "hangzhou"); // send message - mq.sendP("Hello ali-mns").then(console.log, console.error); + mq.sendP("Hello ali-mns-ts").then(console.log, console.error); ``` More sample codes can be found in [GitHub](https://github.com/InCar/ali-mns/tree/master/test). @@ -299,7 +299,7 @@ keyId: String, ali key id. keySecret: String, ali key secret. ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); ``` The account object is usually passed as an argument for other class such as *MNS*, *MQ* @@ -380,7 +380,7 @@ If it is string, it can be "hangzhou", "beijing" or any Chinese datacenter city If it is Region, it allows you to specify data center other than in China. Default is "hangzhou". It can also be internal or vpc address "hangzhou-internal", "beijing-internal" or "qingdao-internal-vpc". ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); var mns = new AliMNS.MNS(account, "hangzhou"); // or @@ -456,7 +456,7 @@ If it is string, it can be "hangzhou", "beijing" or any Chinese datacenter city If it is Region, it allows you to specify data center other than in China. Default is "hangzhou". It can also be internal or vpc address "hangzhou-internal", "beijing-internal" or "qingdao-internal-vpc". ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); var mq = new AliMNS.MQ(account, "hangzhou"); // or @@ -483,7 +483,7 @@ priority: number, optional. 1(lowest)~16(highest), default is 8. delaySeconds: number, optional. How many seconds will the messages be visible after sent. 0~604800(7days), default is 0. This argument is prior to the options.DelaySeconds in attributes of message queue. ```javascript - mq.sendP("Hello Ali-MNS", 8, 0).then(console.log, console.error); + mq.sendP("Hello ali-mns-ts", 8, 0).then(console.log, console.error); ``` ## mq.getRecvTolerance() & mq.setRecvTolerance(value:number) @@ -692,7 +692,7 @@ All other arguments are same as *mq.notifyRecv*. The class `MNSTopic` extends class `MNS` for providing features in topic model. All methods in `MNS` class are also available in `MNSTopic`. ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); var mns = new AliMNS.MNSTopic(account, "shenzhen"); // or @@ -737,7 +737,7 @@ If it is string, it can be "hangzhou", "beijing" or any Chinese datacenter city If it is Region, it allows you to specify data center other than in China. Default is "hangzhou". It can also be internal or vpc address "hangzhou-internal", "beijing-internal" or "qingdao-internal-vpc". ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); var topic = new AliMNS.Topic("t11", account, "shenzhen"); // or @@ -827,7 +827,7 @@ Set options to `{ forever: true }` will let http(s) channel *KeepAive*. # Subscription(name:string, topic:Topic) Operate a subscription. ```javascript -var AliMNS = require("ali-mns"); +var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); var topic = new AliMNS.Topic("t11", account, "shenzhen"); var subscription = new AliMNS.Subscription("s12", topic); @@ -869,7 +869,7 @@ AliMNS.Subscription.NotifyContentFormat.SIMPLIFIED : "SIMPLIFIED" [More about NotifyContentFormat[zh-Hans]](https://help.aliyun.com/document_detail/mns/api_reference/concepts/NotifyContentFormat.html?spm=5176.docmns/api_reference/concepts/NotifyStrategy.6.142.kWiFyy) # DEBUG Trace -Set the environment variable **DEBUG** to "ali-mns" to enable the debug trace output. +Set the environment variable **DEBUG** to "ali-mns-ts" to enable the debug trace output. ```SHELL # linux bash export DEBUG=ali-mns @@ -889,7 +889,7 @@ var AliMQS = require('ali-mns'); Ali-Yun upgrade their account system, and recommend to use the newer account id instead of owner id. But the old owner id is still available for now. ```javascript -var AliMQS = require("ali-mns"); +var AliMQS = require("ali-mns-ts"); // var account = new AliMNS.Account("hl35yqoedp", "", ""); var account = new AliMNS.Account("1786090012649663", "", ""); ``` @@ -944,14 +944,14 @@ You can check [code](https://github.com/InCar/ali-mns/blob/master/ts/GA.ts#L28) You can always disable data collection as you wish. ```javascript - var AliMNS = require("ali-mns"); + var AliMNS = require("ali-mns-ts"); var account = new AliMNS.Account("", "", ""); // Disable google analytics data collection account.setGA(false); var mq = new AliMNS.MQ("", account, "hangzhou"); - mq.sendP("Hello ali-mns").then(console.log, console.error); + mq.sendP("Hello ali-mns-ts").then(console.log, console.error); ``` # License diff --git a/package-lock.json b/package-lock.json index 4b1eafb..add71cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,40 +1,538 @@ { - "name": "ali-mns", - "version": "2.6.5", + "name": "ali-mns-ts", + "version": "0.0.0-development", "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, "@gulp-sourcemaps/map-sources": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/@gulp-sourcemaps/map-sources/download/@gulp-sourcemaps/map-sources-1.0.0.tgz", "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", "dev": true, "requires": { - "normalize-path": "2.1.1", - "through2": "2.0.3" + "normalize-path": "^2.0.1", + "through2": "^2.0.3" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@octokit/endpoint": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz", + "integrity": "sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^4.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } + } + }, + "@octokit/request": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.1.tgz", + "integrity": "sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg==", + "dev": true, + "requires": { + "@octokit/endpoint": "^5.5.0", + "@octokit/request-error": "^1.0.1", + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "dev": true, + "requires": { + "isobject": "^4.0.0" + } + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.0.tgz", + "integrity": "sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "16.34.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.34.1.tgz", + "integrity": "sha512-JUoS12cdktf1fv86rgrjC/RvYLuL+o7p57W7zX1x7ANFJ7OvdV8emvUNkFlcidEaOkYrxK3SoWgQFt3FhNmabA==", + "dev": true, + "requires": { + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.0.1.tgz", + "integrity": "sha512-YDYgV6nCzdGdOm7wy43Ce8SQ3M5DMKegB8E5sTB/1xrxOdo2yS/KgUgML2N2ZGD621mkbdrAglwTyA4NDOlFFA==", + "dev": true, + "requires": { + "@types/node": ">= 8" + }, + "dependencies": { + "@types/node": { + "version": "12.12.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.6.tgz", + "integrity": "sha512-FjsYUPzEJdGXjwKqSpE0/9QEh6kzhTAeObA54rn6j3rR4C/mzpI9L0KNfoeASSPMMdxIsoJuCLDWcM/rVjIsSA==", + "dev": true + } + } + }, + "@semantic-release/commit-analyzer": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.2.tgz", + "integrity": "sha512-TezpOODuMcdDuGcGsI2QRqkH3sT7ffhsxid9J8OyspXDe8E4tshekJESJ6Pq8jTrggluKd3tCK26Vsyu6SkeSg==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^5.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.0", + "debug": "^4.0.0", + "import-from": "^3.0.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@semantic-release/error": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", + "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", + "dev": true + }, + "@semantic-release/github": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.5.5.tgz", + "integrity": "sha512-Wo9OIULMRydbq+HpFh9yiLvra1XyEULPro9Tp4T5MQJ0WZyAQ3YQm74IdT8Pe/UmVDq2nfpT1oHrWkwOc4loHg==", + "dev": true, + "requires": { + "@octokit/rest": "^16.27.0", + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "bottleneck": "^2.18.1", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "fs-extra": "^8.0.0", + "globby": "^10.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "issue-parser": "^5.0.0", + "lodash": "^4.17.4", + "mime": "^2.4.3", + "p-filter": "^2.0.0", + "p-retry": "^4.0.0", + "url-join": "^4.0.0" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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" + } + }, + "globby": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz", + "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@semantic-release/npm": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.3.4.tgz", + "integrity": "sha512-XjITNRA/oOpJ7BfHk/WaOHs1WniYBszTde/bwADjjk1Luacpxg87jbDQVVt/oA3Zlx+MelxACRIEuRiPC5gu8g==", + "dev": true, + "requires": { + "@semantic-release/error": "^2.2.0", + "aggregate-error": "^3.0.0", + "execa": "^3.2.0", + "fs-extra": "^8.0.0", + "lodash": "^4.17.15", + "nerf-dart": "^1.0.0", + "normalize-url": "^4.0.0", + "npm": "^6.10.3", + "rc": "^1.2.8", + "read-pkg": "^5.0.0", + "registry-auth-token": "^4.0.0", + "tempy": "^0.3.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + } + } + }, + "@semantic-release/release-notes-generator": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.3.2.tgz", + "integrity": "sha512-vYGydZPoQqL4aJOsaqXTZIekRb3aa/OlxlEVUvyrWWlNGqmQ1T7NUOos9eoN5DBCEuk6PwDrxPbhzgswxcvprQ==", + "dev": true, + "requires": { + "conventional-changelog-angular": "^5.0.0", + "conventional-changelog-writer": "^4.0.0", + "conventional-commits-filter": "^2.0.0", + "conventional-commits-parser": "^3.0.0", + "debug": "^4.0.0", + "get-stream": "^5.0.0", + "import-from": "^3.0.0", + "into-stream": "^5.0.0", + "lodash": "^4.17.4", + "read-pkg-up": "^7.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@types/node": { "version": "7.0.54", "resolved": "http://registry.npm.taobao.org/@types/node/download/@types/node-7.0.54.tgz", "integrity": "sha1-mzuP2djIjrT4VPQCzpFavmsRV9w=", "dev": true }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "acorn": { "version": "4.0.13", "resolved": "http://registry.npm.taobao.org/acorn/download/acorn-4.0.13.tgz", "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + } + } + }, "ajv": { "version": "5.5.2", "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "amdefine": { @@ -52,6 +550,12 @@ "ansi-wrap": "0.1.0" } }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, "ansi-gray": { "version": "0.1.1", "resolved": "http://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz", @@ -88,6 +592,12 @@ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, + "ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "dev": true + }, "any-shell-escape": { "version": "0.1.1", "resolved": "http://registry.npm.taobao.org/any-shell-escape/download/any-shell-escape-0.1.1.tgz", @@ -100,6 +610,12 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", @@ -130,6 +646,18 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, "array-slice": { "version": "1.1.0", "resolved": "http://registry.npm.taobao.org/array-slice/download/array-slice-1.1.0.tgz", @@ -142,7 +670,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -195,6 +723,12 @@ "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", "dev": true }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", @@ -217,13 +751,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" } }, "bcrypt-pbkdf": { @@ -232,7 +766,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "beeper": { @@ -241,19 +775,31 @@ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", "dev": true }, + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "dev": true + }, "binaryextensions": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/binaryextensions/download/binaryextensions-1.0.1.tgz", "integrity": "sha1-HmN0iLNbWL2l9HdL+WpSEqjJB1U=", "dev": true }, + "bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -263,17 +809,17 @@ "integrity": "sha1-pGlBy1+0khVrPWplbgbDU2Tj5m4=", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "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.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "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" } }, "browser-stdout": { @@ -282,21 +828,60 @@ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", "dev": true }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, "cache-base": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", "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" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "cardinal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", + "dev": true, + "requires": { + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" } }, "caseless": { @@ -310,11 +895,11 @@ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "class-utils": { @@ -323,10 +908,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": { @@ -335,7 +920,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -344,7 +929,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -353,7 +938,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -364,7 +949,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -373,7 +958,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -384,9 +969,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" } }, "kind-of": { @@ -397,19 +982,62 @@ } } }, - "clone": { - "version": "1.0.3", - "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "http://registry.npm.taobao.org/clone-buffer/download/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "clone-stats": { + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "1.0.3", + "resolved": "http://registry.npm.taobao.org/clone/download/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "http://registry.npm.taobao.org/clone-buffer/download/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { "version": "0.0.1", "resolved": "http://registry.npm.taobao.org/clone-stats/download/clone-stats-0.0.1.tgz", "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", @@ -421,9 +1049,9 @@ "integrity": "sha1-pikNQT8hemEjL5XkWP84QYz7ARc=", "dev": true, "requires": { - "inherits": "2.0.3", - "process-nextick-args": "1.0.7", - "through2": "2.0.3" + "inherits": "^2.0.1", + "process-nextick-args": "^1.0.6", + "through2": "^2.0.1" }, "dependencies": { "process-nextick-args": { @@ -445,22 +1073,43 @@ "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": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "color-support": { "version": "1.1.3", "resolved": "http://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz", "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=", "dev": true }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, "combined-stream": { "version": "1.0.6", "resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -469,7 +1118,17 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" + } + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" } }, "component-emitter": { @@ -490,7 +1149,7 @@ "integrity": "sha1-iWS8I0fQWBm2N5gQTYfW4AG+2NA=", "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -501,6 +1160,157 @@ } } }, + "conventional-changelog-angular": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.5.tgz", + "integrity": "sha512-RrkdWnL/TVyWV1ayWmSsrWorsTDqjL/VwG5ZSEneBQrd65ONcfeA1cW7FLtNweQyMiKOyriCMTKRSlk18DjTrw==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-writer": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.9.tgz", + "integrity": "sha512-2Y3QfiAM37WvDMjkVNaRtZgxVzWKj73HE61YQ/95T53yle+CRwTVSl6Gbv/lWVKXeZcM5af9n9TDVf0k7Xh+cw==", + "dev": true, + "requires": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^2.0.2", + "dateformat": "^3.0.0", + "handlebars": "^4.4.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-commits-filter": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz", + "integrity": "sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.5.tgz", + "integrity": "sha512-qVz9+5JwdJzsbt7JbJ6P7NOXBGt8CyLFJYSjKAuPSgO+5UGfcsbk9EMR+lI8Unlvx6qwIc2YDJlrGIfay2ehNA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^2.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, "convert-source-map": { "version": "1.5.1", "resolved": "http://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.5.1.tgz", @@ -518,16 +1328,76 @@ "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, "css": { "version": "2.2.1", "resolved": "http://registry.npm.taobao.org/css/download/css-2.2.1.tgz", "integrity": "sha1-c6TIHehdtmTU7mdPfUcIXjstVdw=", "dev": true, "requires": { - "inherits": "2.0.3", - "source-map": "0.1.43", - "source-map-resolve": "0.3.1", - "urix": "0.1.0" + "inherits": "^2.0.1", + "source-map": "^0.1.38", + "source-map-resolve": "^0.3.0", + "urix": "^0.1.0" }, "dependencies": { "atob": { @@ -542,7 +1412,7 @@ "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "source-map-resolve": { @@ -551,10 +1421,10 @@ "integrity": "sha1-YQ9hIqRFuN1RU1oqcbeD38Ekh2E=", "dev": true, "requires": { - "atob": "1.1.3", - "resolve-url": "0.2.1", - "source-map-url": "0.3.0", - "urix": "0.1.0" + "atob": "~1.1.0", + "resolve-url": "~0.2.1", + "source-map-url": "~0.3.0", + "urix": "~0.1.0" } }, "source-map-url": { @@ -565,12 +1435,21 @@ } } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, "dashdash": { "version": "1.14.1", "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" } }, "dateformat": { @@ -593,8 +1472,8 @@ "integrity": "sha1-+gccXYdIRoVCSAdCHKSxawsaB2M=", "dev": true, "requires": { - "debug": "2.6.9", - "lazy-debug-legacy": "0.0.1", + "debug": "2.X", + "lazy-debug-legacy": "0.0.X", "object-assign": "4.1.0" }, "dependencies": { @@ -606,19 +1485,49 @@ } } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, "decode-uri-component": { "version": "0.2.0", "resolved": "http://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "defaults": { "version": "1.0.3", "resolved": "http://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "requires": { - "clone": "1.0.3" + "clone": "^1.0.2" } }, "define-property": { @@ -627,7 +1536,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "del": { @@ -636,13 +1545,13 @@ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "dev": true, "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -656,6 +1565,12 @@ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", "dev": true }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "detect-file": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/detect-file/download/detect-file-1.0.0.tgz", @@ -674,13 +1589,39 @@ "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + } + } + }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, "duplexer2": { "version": "0.0.2", "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.0.2.tgz", "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", "dev": true, "requires": { - "readable-stream": "1.1.14" + "readable-stream": "~1.1.9" } }, "duplexify": { @@ -689,10 +1630,10 @@ "integrity": "sha1-i1gYgA35L9ASWyeriWSRkShYJD4=", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.4", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" }, "dependencies": { "end-of-stream": { @@ -701,7 +1642,7 @@ "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "isarray": { @@ -716,13 +1657,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -731,7 +1672,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -742,16 +1683,22 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "end-of-stream": { "version": "0.1.5", "resolved": "http://registry.npm.taobao.org/end-of-stream/download/end-of-stream-0.1.5.tgz", "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", "dev": true, "requires": { - "once": "1.3.3" + "once": "~1.3.0" }, "dependencies": { "once": { @@ -760,30 +1707,164 @@ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } } } }, + "env-ci": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-4.5.1.tgz", + "integrity": "sha512-Xtmr+ordf8POu3NcNzx3eOa2zHyfD4h3fPHX5fLklkWa86ck35n1c9oZmyUnVPUl9zHnpZWdWtCUBPSWEagjCQ==", + "dev": true, + "requires": { + "execa": "^3.2.0", + "java-properties": "^1.0.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "execa": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.2.0.tgz", + "integrity": "sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.0.tgz", + "integrity": "sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", + "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz", + "integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", "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.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "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": { "define-property": { @@ -792,7 +1873,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -801,7 +1882,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -810,7 +1891,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -821,7 +1902,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -830,7 +1911,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -841,9 +1922,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" } }, "kind-of": { @@ -860,7 +1941,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" }, "dependencies": { "fill-range": { @@ -869,11 +1950,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "is-number": { @@ -882,7 +1963,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "isarray": { @@ -906,7 +1987,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -917,7 +1998,7 @@ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", "dev": true, "requires": { - "homedir-polyfill": "1.0.1" + "homedir-polyfill": "^1.0.1" } }, "extend": { @@ -931,7 +2012,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "extglob": { @@ -940,14 +2021,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.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "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" } }, "extsprintf": { @@ -961,9 +2042,9 @@ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=", "dev": true, "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "time-stamp": "1.1.0" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "time-stamp": "^1.0.0" } }, "fast-deep-equal": { @@ -971,45 +2052,166 @@ "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz", "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "http://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "fast-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.0.tgz", + "integrity": "sha512-TrUz3THiq2Vy3bjfQUB2wNyPdGBeGmdjbzzBLhfHN4YFurYptCKwGq/TfiRavbGywFRzY6U2CdmQ1zmsY5yYaw==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - } - }, - "find-index": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fastq": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", + "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==", + "dev": true, + "requires": { + "reusify": "^1.0.0" + } + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "http://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "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.0" + } + }, + "find-index": { "version": "0.1.1", "resolved": "http://registry.npm.taobao.org/find-index/download/find-index-0.1.1.tgz", "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", "dev": true }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "find-versions": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.1.0.tgz", + "integrity": "sha512-NCTfNiVzeE/xL+roNDffGuRbrWI6atI18lTJ22vKp7rs2OhYzMK3W1dIdO2TUndH/QMcacM4d1uWwgcZcHK69Q==", + "dev": true, + "requires": { + "array-uniq": "^2.1.0", + "semver-regex": "^2.0.0" + }, + "dependencies": { + "array-uniq": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz", + "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==", + "dev": true + } + } + }, "findup-sync": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/findup-sync/download/findup-sync-2.0.0.tgz", "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "dev": true, "requires": { - "detect-file": "1.0.0", - "is-glob": "3.1.0", - "micromatch": "3.1.5", - "resolve-dir": "1.0.1" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" } }, "fined": { @@ -1018,11 +2220,11 @@ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.3.0", - "parse-filepath": "1.0.2" + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" } }, "first-chunk-stream": { @@ -1049,7 +2251,7 @@ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -1062,9 +2264,9 @@ "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.2.tgz", "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "fragment-cache": { @@ -1073,7 +2275,68 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + } } }, "fs.realpath": { @@ -1088,7 +2351,22 @@ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", "dev": true, "requires": { - "globule": "0.1.0" + "globule": "~0.1.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" } }, "get-value": { @@ -1102,7 +2380,32 @@ "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" + } + }, + "git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=", + "dev": true, + "requires": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" + }, + "dependencies": { + "split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=", + "dev": true, + "requires": { + "through2": "~2.0.0" + } + } } }, "git-version-json": { @@ -1111,12 +2414,12 @@ "integrity": "sha1-+F2WqJJPN39INYa2H1Eu2iwE/Z0=", "dev": true, "requires": { - "debug": "3.1.0", - "gulp": "3.9.1", - "gulp-git": "2.5.1", - "gulp-replace": "0.6.1", - "promise": "8.0.1", - "universal-analytics": "0.4.16" + "debug": "^3.0.1", + "gulp": "^3.9.1", + "gulp-git": "^2.4.2", + "gulp-replace": "^0.6.1", + "promise": "^8.0.1", + "universal-analytics": "^0.4.15" }, "dependencies": { "clone": { @@ -1146,14 +2449,14 @@ "integrity": "sha1-9/FWU43z8JNpjoJm0ZftspA+WUQ=", "dev": true, "requires": { - "any-shell-escape": "0.1.1", - "fancy-log": "1.3.2", - "lodash.template": "4.4.0", - "plugin-error": "0.1.2", - "require-dir": "0.3.2", - "strip-bom-stream": "3.0.0", - "through2": "2.0.3", - "vinyl": "2.1.0" + "any-shell-escape": "^0.1.1", + "fancy-log": "^1.3.2", + "lodash.template": "^4.4.0", + "plugin-error": "^0.1.2", + "require-dir": "^0.3.2", + "strip-bom-stream": "^3.0.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" } }, "gulp-replace": { @@ -1163,8 +2466,8 @@ "dev": true, "requires": { "istextorbinary": "1.0.2", - "readable-stream": "2.3.4", - "replacestream": "4.0.3" + "readable-stream": "^2.0.1", + "replacestream": "^4.0.0" } }, "isarray": { @@ -1179,8 +2482,8 @@ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { @@ -1189,7 +2492,7 @@ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0" + "lodash._reinterpolate": "~3.0.0" } }, "promise": { @@ -1198,7 +2501,7 @@ "integrity": "sha1-5F1osAoXZHttpxG/he1u1HII9FA=", "dev": true, "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "readable-stream": { @@ -1207,13 +2510,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "replace-ext": { @@ -1228,7 +2531,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "vinyl": { @@ -1237,12 +2540,12 @@ "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", "dev": true, "requires": { - "clone": "2.1.1", - "clone-buffer": "1.0.0", - "clone-stats": "1.0.0", - "cloneable-readable": "1.0.0", - "remove-trailing-separator": "1.1.0", - "replace-ext": "1.0.0" + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" } } } @@ -1253,12 +2556,12 @@ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": 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" } }, "glob-base": { @@ -1267,8 +2570,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -1277,7 +2580,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -1292,7 +2595,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -1303,8 +2606,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" } }, "glob-stream": { @@ -1313,12 +2616,12 @@ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", "dev": true, "requires": { - "glob": "4.5.3", - "glob2base": "0.0.12", - "minimatch": "2.0.10", - "ordered-read-streams": "0.1.0", - "through2": "0.6.5", - "unique-stream": "1.0.0" + "glob": "^4.3.1", + "glob2base": "^0.0.12", + "minimatch": "^2.0.1", + "ordered-read-streams": "^0.1.0", + "through2": "^0.6.1", + "unique-stream": "^1.0.0" }, "dependencies": { "glob": { @@ -1327,10 +2630,10 @@ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" } }, "minimatch": { @@ -1339,7 +2642,7 @@ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.0.0" } }, "readable-stream": { @@ -1348,10 +2651,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "through2": { @@ -1360,8 +2663,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1372,7 +2675,7 @@ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", "dev": true, "requires": { - "gaze": "0.5.2" + "gaze": "^0.5.1" } }, "glob2base": { @@ -1381,7 +2684,7 @@ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", "dev": true, "requires": { - "find-index": "0.1.1" + "find-index": "^0.1.1" } }, "global-modules": { @@ -1390,9 +2693,9 @@ "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", "dev": true, "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.1", - "resolve-dir": "1.0.1" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" } }, "global-prefix": { @@ -1401,11 +2704,11 @@ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.1", - "which": "1.3.0" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" } }, "globby": { @@ -1414,12 +2717,12 @@ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", "dev": true, "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "globule": { @@ -1428,9 +2731,9 @@ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", "dev": true, "requires": { - "glob": "3.1.21", - "lodash": "1.0.2", - "minimatch": "0.2.14" + "glob": "~3.1.21", + "lodash": "~1.0.1", + "minimatch": "~0.2.11" }, "dependencies": { "glob": { @@ -1439,9 +2742,9 @@ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", "dev": true, "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" + "graceful-fs": "~1.2.0", + "inherits": "1", + "minimatch": "~0.2.11" } }, "graceful-fs": { @@ -1468,8 +2771,8 @@ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", "dev": true, "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "lru-cache": "2", + "sigmund": "~1.0.0" } } } @@ -1480,7 +2783,7 @@ "integrity": "sha1-3PdY5EeJzD89MsHzVio2duajSBA=", "dev": true, "requires": { - "sparkles": "1.0.0" + "sparkles": "^1.0.0" } }, "graceful-fs": { @@ -1489,7 +2792,7 @@ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", "dev": true, "requires": { - "natives": "1.1.1" + "natives": "^1.1.0" } }, "graceful-readlink": { @@ -1510,19 +2813,19 @@ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", "dev": true, "requires": { - "archy": "1.0.0", - "chalk": "1.1.3", - "deprecated": "0.0.1", - "gulp-util": "3.0.8", - "interpret": "1.1.0", - "liftoff": "2.5.0", - "minimist": "1.2.0", - "orchestrator": "0.3.8", - "pretty-hrtime": "1.0.3", - "semver": "4.3.6", - "tildify": "1.2.0", - "v8flags": "2.1.1", - "vinyl-fs": "0.3.14" + "archy": "^1.0.0", + "chalk": "^1.0.0", + "deprecated": "^0.0.1", + "gulp-util": "^3.0.0", + "interpret": "^1.0.0", + "liftoff": "^2.1.0", + "minimist": "^1.1.0", + "orchestrator": "^0.3.0", + "pretty-hrtime": "^1.0.0", + "semver": "^4.1.0", + "tildify": "^1.0.0", + "v8flags": "^2.0.2", + "vinyl-fs": "^0.3.0" } }, "gulp-debug": { @@ -1531,13 +2834,13 @@ "integrity": "sha1-L1/l9kvNH0zxicFg4IDIrQZUMJQ=", "dev": true, "requires": { - "chalk": "1.1.3", - "gulp-util": "3.0.8", - "object-assign": "4.1.1", - "plur": "2.1.2", - "stringify-object": "2.4.0", - "through2": "2.0.3", - "tildify": "1.2.0" + "chalk": "^1.0.0", + "gulp-util": "^3.0.0", + "object-assign": "^4.0.1", + "plur": "^2.0.0", + "stringify-object": "^2.3.0", + "through2": "^2.0.0", + "tildify": "^1.1.2" } }, "gulp-git": { @@ -1546,10 +2849,10 @@ "integrity": "sha1-zdnTVPxB2Ny1LO9HJW37o2Z4WXk=", "dev": true, "requires": { - "any-shell-escape": "0.1.1", - "gulp-util": "3.0.8", - "require-dir": "0.1.0", - "through2": "0.6.5" + "any-shell-escape": "^0.1.1", + "gulp-util": "^3.0.6", + "require-dir": "^0.1.0", + "through2": "^0.6.5" }, "dependencies": { "readable-stream": { @@ -1558,10 +2861,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "require-dir": { @@ -1576,8 +2879,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1588,10 +2891,10 @@ "integrity": "sha1-yfEP7gYy2B6Tl4nG7PRaFRvzCYs=", "dev": true, "requires": { - "concat-with-sourcemaps": "1.0.5", - "gulp-util": "3.0.8", - "object-assign": "4.1.1", - "through2": "2.0.3" + "concat-with-sourcemaps": "*", + "gulp-util": "*", + "object-assign": "*", + "through2": "^2.0.0" } }, "gulp-newer": { @@ -1600,9 +2903,9 @@ "integrity": "sha1-JSQ+1urI9UYrlYlODUGTexEuZfM=", "dev": true, "requires": { - "glob": "7.1.2", - "kew": "0.7.0", - "plugin-error": "0.1.2" + "glob": "^7.0.3", + "kew": "^0.7.0", + "plugin-error": "^0.1.2" } }, "gulp-replace": { @@ -1612,8 +2915,8 @@ "dev": true, "requires": { "istextorbinary": "1.0.2", - "readable-stream": "2.3.4", - "replacestream": "4.0.3" + "readable-stream": "^2.0.1", + "replacestream": "^4.0.0" }, "dependencies": { "isarray": { @@ -1628,13 +2931,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1643,7 +2946,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -1654,17 +2957,17 @@ "integrity": "sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y=", "dev": true, "requires": { - "@gulp-sourcemaps/map-sources": "1.0.0", - "acorn": "4.0.13", - "convert-source-map": "1.5.1", - "css": "2.2.1", - "debug-fabulous": "0.0.4", - "detect-newline": "2.1.0", - "graceful-fs": "4.1.11", - "source-map": "0.6.1", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" + "@gulp-sourcemaps/map-sources": "1.X", + "acorn": "4.X", + "convert-source-map": "1.X", + "css": "2.X", + "debug-fabulous": "0.0.X", + "detect-newline": "2.X", + "graceful-fs": "4.X", + "source-map": "~0.6.0", + "strip-bom": "2.X", + "through2": "2.X", + "vinyl": "1.X" }, "dependencies": { "graceful-fs": { @@ -1685,7 +2988,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "vinyl": { @@ -1694,8 +2997,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.3", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } } @@ -1707,10 +3010,10 @@ "integrity": "sha1-F8a5QQeLAsBSKXTtbJY6sZCSCkc=", "dev": true, "requires": { - "gulp-util": "3.0.8", - "source-map": "0.5.7", - "through2": "2.0.3", - "vinyl-fs": "2.4.4" + "gulp-util": "~3.0.7", + "source-map": "~0.5.3", + "through2": "~2.0.1", + "vinyl-fs": "~2.4.3" }, "dependencies": { "arr-diff": { @@ -1719,7 +3022,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "array-unique": { @@ -1734,9 +3037,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "expand-brackets": { @@ -1745,7 +3048,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "extglob": { @@ -1754,7 +3057,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "glob": { @@ -1763,11 +3066,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-stream": { @@ -1776,14 +3079,14 @@ "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", "dev": true, "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" }, "dependencies": { "isarray": { @@ -1798,10 +3101,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -1816,8 +3119,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } } } @@ -1834,11 +3137,11 @@ "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", "dev": true, "requires": { - "convert-source-map": "1.5.1", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" } }, "is-extglob": { @@ -1853,7 +3156,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "isarray": { @@ -1868,7 +3171,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "micromatch": { @@ -1877,19 +3180,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "ordered-read-streams": { @@ -1898,8 +3201,8 @@ "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", "dev": true, "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.4" + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" } }, "readable-stream": { @@ -1908,13 +3211,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1923,7 +3226,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "strip-bom": { @@ -1932,7 +3235,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-bom-stream": { @@ -1941,8 +3244,8 @@ "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" } }, "unique-stream": { @@ -1951,8 +3254,8 @@ "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", "dev": true, "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "json-stable-stringify": "^1.0.0", + "through2-filter": "^2.0.0" } }, "vinyl": { @@ -1961,8 +3264,8 @@ "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", "dev": true, "requires": { - "clone": "1.0.3", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } }, @@ -1972,23 +3275,23 @@ "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", "dev": true, "requires": { - "duplexify": "3.5.3", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.4", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" } } } @@ -1999,24 +3302,24 @@ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.2.0", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", + "array-differ": "^1.0.0", + "array-uniq": "^1.0.2", + "beeper": "^1.0.0", + "chalk": "^1.0.0", + "dateformat": "^2.0.0", + "fancy-log": "^1.1.0", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "lodash._reescape": "^3.0.0", + "lodash._reevaluate": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.template": "^3.0.0", + "minimist": "^1.1.0", + "multipipe": "^0.1.2", + "object-assign": "^3.0.0", "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" + "through2": "^2.0.0", + "vinyl": "^0.5.0" }, "dependencies": { "object-assign": { @@ -2033,7 +3336,27 @@ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", "dev": true, "requires": { - "glogg": "1.0.1" + "glogg": "^1.0.0" + } + }, + "handlebars": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "har-schema": { @@ -2046,8 +3369,8 @@ "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has-ansi": { @@ -2056,7 +3379,7 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2071,7 +3394,7 @@ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", "dev": true, "requires": { - "sparkles": "1.0.0" + "sparkles": "^1.0.0" } }, "has-value": { @@ -2080,9 +3403,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": { @@ -2091,8 +3414,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": { @@ -2101,7 +3424,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2118,7 +3441,54 @@ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", "dev": true, "requires": { - "parse-passwd": "1.0.0" + "parse-passwd": "^1.0.0" + } + }, + "hook-std": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", + "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", + "dev": true + }, + "hosted-git-info": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz", + "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "http-signature": { @@ -2126,19 +3496,91 @@ "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.14.2" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" } }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2159,6 +3601,16 @@ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, + "into-stream": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-5.1.1.tgz", + "integrity": "sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA==", + "dev": true, + "requires": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + } + }, "irregular-plurals": { "version": "1.4.0", "resolved": "http://registry.npm.taobao.org/irregular-plurals/download/irregular-plurals-1.4.0.tgz", @@ -2171,8 +3623,8 @@ "integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=", "dev": true, "requires": { - "is-relative": "1.0.0", - "is-windows": "1.0.1" + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" } }, "is-accessor-descriptor": { @@ -2181,9 +3633,15 @@ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-buffer": { "version": "1.1.6", "resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", @@ -2196,7 +3654,7 @@ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -2205,9 +3663,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" } }, "is-dotfile": { @@ -2222,7 +3680,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -2237,13 +3695,19 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "is-glob": { "version": "3.1.0", "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "is-number": { @@ -2252,7 +3716,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2261,18 +3725,24 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, "is-odd": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/is-odd/download/is-odd-1.0.0.tgz", "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", "dev": true, "requires": { - "is-number": "3.0.0" + "is-number": "^3.0.0" } }, "is-path-cwd": { @@ -2287,7 +3757,7 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -2296,7 +3766,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -2311,7 +3781,7 @@ "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-posix-bracket": { @@ -2338,7 +3808,7 @@ "integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=", "dev": true, "requires": { - "is-unc-path": "1.0.0" + "is-unc-path": "^1.0.0" } }, "is-stream": { @@ -2347,6 +3817,15 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "requires": { + "text-extensions": "^2.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", @@ -2358,7 +3837,7 @@ "integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=", "dev": true, "requires": { - "unc-path-regex": "0.1.2" + "unc-path-regex": "^0.1.2" } }, "is-utf8": { @@ -2402,22 +3881,53 @@ "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "issue-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-5.0.0.tgz", + "integrity": "sha512-q/16W7EPHRL0FKVz9NU++TUsoygXGj6JOi88oulyAcQG+IEZ0T6teVdE+VLbe19OfL/tbV8Wi3Dfo0HedeHW0Q==", + "dev": true, + "requires": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + } + }, "istextorbinary": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/istextorbinary/download/istextorbinary-1.0.2.tgz", "integrity": "sha1-rOGTVNGpoBc+/rEITOD4ewrX3s8=", "dev": true, "requires": { - "binaryextensions": "1.0.1", - "textextensions": "1.0.2" + "binaryextensions": "~1.0.0", + "textextensions": "~1.0.0" } }, + "java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, "jsbn": { "version": "0.1.1", "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", @@ -2434,7 +3944,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -2448,14 +3958,38 @@ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true, + "optional": true + } + } + }, "jsonify": { "version": "0.0.0", "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "jsprim": { - "version": "1.4.1", + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "requires": { @@ -2483,7 +4017,7 @@ "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", "dev": true, "requires": { - "set-getter": "0.1.0" + "set-getter": "^0.1.0" } }, "lazy-debug-legacy": { @@ -2498,7 +4032,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.5" }, "dependencies": { "isarray": { @@ -2513,13 +4047,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -2528,7 +4062,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -2539,14 +4073,73 @@ "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", "dev": true, "requires": { - "extend": "3.0.1", - "findup-sync": "2.0.0", - "fined": "1.1.0", - "flagged-respawn": "1.0.0", - "is-plain-object": "2.0.4", - "object.map": "1.0.1", - "rechoir": "0.6.2", - "resolve": "1.5.0" + "extend": "^3.0.0", + "findup-sync": "^2.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + } } }, "lodash": { @@ -2560,8 +4153,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { @@ -2624,15 +4217,21 @@ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", "dev": true }, + "lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", + "dev": true + }, "lodash.create": { "version": "3.1.1", "resolved": "http://registry.npm.taobao.org/lodash.create/download/lodash.create-3.1.1.tgz", "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.escape": { @@ -2641,9 +4240,21 @@ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", "dev": true, "requires": { - "lodash._root": "3.0.1" + "lodash._root": "^3.0.0" } }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, "lodash.isarguments": { "version": "3.1.0", "resolved": "http://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz", @@ -2662,15 +4273,33 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, "lodash.keys": { "version": "3.1.2", "resolved": "http://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "lodash.restparam": { @@ -2679,21 +4308,27 @@ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, "lodash.template": { "version": "3.6.2", "resolved": "http://registry.npm.taobao.org/lodash.template/download/lodash.template-3.6.2.tgz", "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" + "lodash._basecopy": "^3.0.0", + "lodash._basetostring": "^3.0.0", + "lodash._basevalues": "^3.0.0", + "lodash._isiterateecall": "^3.0.0", + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0", + "lodash.keys": "^3.0.0", + "lodash.restparam": "^3.0.0", + "lodash.templatesettings": "^3.0.0" } }, "lodash.templatesettings": { @@ -2702,8 +4337,36 @@ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", "dev": true, "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" + "lodash._reinterpolate": "^3.0.0", + "lodash.escape": "^3.0.0" + } + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lru-cache": { @@ -2712,13 +4375,19 @@ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", "dev": true }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", + "dev": true + }, "make-iterator": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/make-iterator/download/make-iterator-1.0.0.tgz", "integrity": "sha1-V7713IXSOSO6I3ZzJNjo+PPZaUs=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.1.0" }, "dependencies": { "kind-of": { @@ -2727,7 +4396,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2738,13 +4407,105 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" + } + }, + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", + "dev": true + }, + "marked-terminal": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.3.0.tgz", + "integrity": "sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A==", + "dev": true, + "requires": { + "ansi-escapes": "^3.1.0", + "cardinal": "^2.1.1", + "chalk": "^2.4.1", + "cli-table": "^0.3.1", + "node-emoji": "^1.4.1", + "supports-hyperlinks": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + }, + "dependencies": { + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } } }, "merge-stream": { @@ -2753,7 +4514,7 @@ "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.1" }, "dependencies": { "isarray": { @@ -2768,13 +4529,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -2783,32 +4544,44 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, "micromatch": { "version": "3.1.5", "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-3.1.5.tgz", "integrity": "sha1-0F4WjCBkct+8qYW/709XeXtM1Lo=", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.0", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.7", - "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.0", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.0", + "nanomatch": "^1.2.5", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, "mime-db": { "version": "1.33.0", "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz", @@ -2819,16 +4592,22 @@ "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz", "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", "requires": { - "mime-db": "1.33.0" + "mime-db": "~1.33.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -2837,14 +4616,24 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "http://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.1.tgz", "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": { @@ -2853,7 +4642,7 @@ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -2910,12 +4699,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": 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.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "supports-color": { @@ -2924,11 +4713,17 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", @@ -2949,17 +4744,17 @@ "integrity": "sha1-U81KoQn/aLf4aVkf3J0Q2u7qPnk=", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "is-odd": "1.0.0", - "kind-of": "5.1.0", - "object.pick": "1.3.0", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "is-odd": "^1.0.0", + "kind-of": "^5.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "kind-of": { @@ -2976,13 +4771,3581 @@ "integrity": "sha1-ARrM4ffL2H97prMJPWzZOSvhxXQ=", "dev": true }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dev": true, + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/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" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, "normalize-path": { "version": "2.1.1", "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + }, + "npm": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-6.13.0.tgz", + "integrity": "sha512-zjSJ8zjk0cDBZXqTWbQ6+qOdm1m2k489YDFP60RQRUhOxT5LOBhl+cDtFlEXEIblcNjofmsZ/qQ/wzmn5frimQ==", + "dev": true, + "requires": { + "JSONStream": "^1.3.5", + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "aproba": "^2.0.0", + "archy": "~1.0.0", + "bin-links": "^1.1.3", + "bluebird": "^3.5.5", + "byte-size": "^5.0.1", + "cacache": "^12.0.3", + "call-limit": "^1.1.1", + "chownr": "^1.1.3", + "ci-info": "^2.0.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.5.1", + "cmd-shim": "^3.0.3", + "columnify": "~1.5.4", + "config-chain": "^1.1.12", + "debuglog": "*", + "detect-indent": "~5.0.0", + "detect-newline": "^2.1.0", + "dezalgo": "~1.0.3", + "editor": "~1.0.0", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "fs-vacuum": "~1.2.10", + "fs-write-stream-atomic": "~1.0.10", + "gentle-fs": "^2.2.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "has-unicode": "~2.0.1", + "hosted-git-info": "^2.8.5", + "iferr": "^1.0.2", + "imurmurhash": "*", + "infer-owner": "^1.0.4", + "inflight": "~1.0.6", + "inherits": "^2.0.4", + "ini": "^1.3.5", + "init-package-json": "^1.10.3", + "is-cidr": "^3.0.0", + "json-parse-better-errors": "^1.0.2", + "lazy-property": "~1.0.0", + "libcipm": "^4.0.7", + "libnpm": "^3.0.1", + "libnpmaccess": "^3.0.2", + "libnpmhook": "^5.0.3", + "libnpmorg": "^1.0.1", + "libnpmsearch": "^2.0.2", + "libnpmteam": "^1.0.2", + "libnpx": "^10.2.0", + "lock-verify": "^2.1.0", + "lockfile": "^1.0.4", + "lodash._baseindexof": "*", + "lodash._baseuniq": "~4.6.0", + "lodash._bindcallback": "*", + "lodash._cacheindexof": "*", + "lodash._createcache": "*", + "lodash._getnative": "*", + "lodash.clonedeep": "~4.5.0", + "lodash.restparam": "*", + "lodash.union": "~4.6.0", + "lodash.uniq": "~4.5.0", + "lodash.without": "~4.4.0", + "lru-cache": "^5.1.1", + "meant": "~1.0.1", + "mississippi": "^3.0.0", + "mkdirp": "~0.5.1", + "move-concurrently": "^1.0.1", + "node-gyp": "^5.0.5", + "nopt": "~4.0.1", + "normalize-package-data": "^2.5.0", + "npm-audit-report": "^1.3.2", + "npm-cache-filename": "~1.0.2", + "npm-install-checks": "^3.0.2", + "npm-lifecycle": "^3.1.4", + "npm-package-arg": "^6.1.1", + "npm-packlist": "^1.4.6", + "npm-pick-manifest": "^3.0.2", + "npm-profile": "^4.0.2", + "npm-registry-fetch": "^4.0.2", + "npm-user-validate": "~1.0.0", + "npmlog": "~4.1.2", + "once": "~1.4.0", + "opener": "^1.5.1", + "osenv": "^0.1.5", + "pacote": "^9.5.9", + "path-is-inside": "~1.0.2", + "promise-inflight": "~1.0.1", + "qrcode-terminal": "^0.12.0", + "query-string": "^6.8.2", + "qw": "~1.0.1", + "read": "~1.0.7", + "read-cmd-shim": "^1.0.5", + "read-installed": "~4.0.3", + "read-package-json": "^2.1.0", + "read-package-tree": "^5.3.1", + "readable-stream": "^3.4.0", + "readdir-scoped-modules": "^1.1.0", + "request": "^2.88.0", + "retry": "^0.12.0", + "rimraf": "^2.6.3", + "safe-buffer": "^5.1.2", + "semver": "^5.7.1", + "sha": "^3.0.0", + "slide": "~1.1.6", + "sorted-object": "~2.0.1", + "sorted-union-stream": "~2.1.3", + "ssri": "^6.0.1", + "stringify-package": "^1.0.1", + "tar": "^4.4.13", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "uid-number": "0.0.6", + "umask": "~1.1.0", + "unique-filename": "^1.1.1", + "unpipe": "~1.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.3.3", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^1.3.1", + "worker-farm": "^1.7.0", + "write-file-atomic": "^2.4.3" + }, + "dependencies": { + "JSONStream": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "bundled": true, + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "5.5.2", + "bundled": true, + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-align": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "asap": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true, + "dev": true + }, + "aws4": { + "version": "1.8.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cmd-shim": "^3.0.0", + "gentle-fs": "^2.0.1", + "graceful-fs": "^4.1.15", + "write-file-atomic": "^2.3.0" + } + }, + "bluebird": { + "version": "3.5.5", + "bundled": true, + "dev": true + }, + "boxen": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "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": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "builtins": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "byline": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "byte-size": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "cacache": { + "version": "12.0.3", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "call-limit": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "capture-stack-trace": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "chalk": { + "version": "2.4.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "cidr-regex": { + "version": "2.0.10", + "bundled": true, + "dev": true, + "requires": { + "ip-regex": "^2.1.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "mkdirp": "~0.5.0" + } + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "color-convert": { + "version": "1.9.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "^1.1.1" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "colors": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "bundled": true, + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "bundled": true, + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "create-error-class": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "capture-stack-trace": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + } + } + }, + "crypto-random-string": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "bundled": true, + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "duplexify": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editor": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "encoding": { + "version": "0.1.12", + "bundled": true, + "dev": true, + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "env-paths": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "err-code": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "errno": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "bundled": true, + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "bundled": true, + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "execa": { + "version": "0.7.0", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "figgy-pudding": { + "version": "3.5.1", + "bundled": true, + "dev": true + }, + "find-npm-prefix": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "form-data": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + } + }, + "from2": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^2.6.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "fs-vacuum": { + "version": "1.2.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "path-is-inside": "^1.0.1", + "rimraf": "^2.5.2" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "genfun": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "gentle-fs": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.2", + "chownr": "^1.1.2", + "fs-vacuum": "^1.2.10", + "graceful-fs": "^4.1.11", + "iferr": "^0.1.5", + "infer-owner": "^1.0.4", + "mkdirp": "^0.5.1", + "path-is-inside": "^1.0.2", + "read-cmd-shim": "^1.0.1", + "slide": "^1.1.6" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "iferr": { + "version": "0.1.5", + "bundled": true, + "dev": true + } + } + }, + "get-caller-file": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "bundled": true, + "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" + } + }, + "global-dirs": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, + "got": { + "version": "6.7.1", + "bundled": true, + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "bundled": true, + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "bundled": true, + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "bundled": true, + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.2", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "iferr": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-lazy": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "ip": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "bundled": true, + "dev": true + }, + "is-ci": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "^1.0.0" + }, + "dependencies": { + "ci-info": { + "version": "1.6.0", + "bundled": true, + "dev": true + } + } + }, + "is-cidr": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "cidr-regex": "^2.0.10" + } + }, + "is-date-object": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "bundled": true, + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "bundled": true, + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "latest-version": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lazy-property": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "lcid": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "libcipm": { + "version": "4.0.7", + "bundled": true, + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.5.1", + "find-npm-prefix": "^1.0.2", + "graceful-fs": "^4.1.11", + "ini": "^1.3.5", + "lock-verify": "^2.0.2", + "mkdirp": "^0.5.1", + "npm-lifecycle": "^3.0.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "pacote": "^9.1.0", + "read-package-json": "^2.0.13", + "rimraf": "^2.6.2", + "worker-farm": "^1.6.0" + } + }, + "libnpm": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "bin-links": "^1.1.2", + "bluebird": "^3.5.3", + "find-npm-prefix": "^1.0.2", + "libnpmaccess": "^3.0.2", + "libnpmconfig": "^1.2.1", + "libnpmhook": "^5.0.3", + "libnpmorg": "^1.0.1", + "libnpmpublish": "^1.1.2", + "libnpmsearch": "^2.0.2", + "libnpmteam": "^1.0.2", + "lock-verify": "^2.0.2", + "npm-lifecycle": "^3.0.0", + "npm-logical-tree": "^1.2.1", + "npm-package-arg": "^6.1.0", + "npm-profile": "^4.0.2", + "npm-registry-fetch": "^4.0.0", + "npmlog": "^4.1.2", + "pacote": "^9.5.3", + "read-package-json": "^2.0.13", + "stringify-package": "^1.0.0" + } + }, + "libnpmaccess": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "libnpmconfig": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "bundled": true, + "dev": true + } + } + }, + "libnpmhook": { + "version": "5.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "libnpmorg": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "libnpmpublish": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-registry-fetch": "^4.0.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + } + }, + "libnpmsearch": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "libnpmteam": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "figgy-pudding": "^3.4.1", + "get-stream": "^4.0.0", + "npm-registry-fetch": "^4.0.0" + } + }, + "libnpx": { + "version": "10.2.0", + "bundled": true, + "dev": true, + "requires": { + "dotenv": "^5.0.1", + "npm-package-arg": "^6.0.0", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.0", + "update-notifier": "^2.3.0", + "which": "^1.3.0", + "y18n": "^4.0.0", + "yargs": "^11.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lock-verify": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^6.1.0", + "semver": "^5.4.1" + } + }, + "lockfile": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "signal-exit": "^3.0.2" + } + }, + "lodash._baseindexof": { + "version": "3.1.0", + "bundled": true, + "dev": true + }, + "lodash._baseuniq": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "requires": { + "lodash._createset": "~4.0.0", + "lodash._root": "~3.0.0" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "lodash._createcache": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0" + } + }, + "lodash._createset": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "bundled": true, + "dev": true + }, + "lodash._root": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.restparam": { + "version": "3.6.1", + "bundled": true, + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "bundled": true, + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "bundled": true, + "dev": true + }, + "lodash.without": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-fetch-happen": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "meant": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "mem": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "mime-db": { + "version": "1.35.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.19", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "~1.35.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "mississippi": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "bundled": true, + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-gyp": { + "version": "5.0.5", + "bundled": true, + "dev": true, + "requires": { + "env-paths": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^4.4.12", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true + } + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "bundled": true, + "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" + }, + "dependencies": { + "resolve": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "npm-audit-report": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "cli-table3": "^0.5.0", + "console-control-strings": "^1.1.0" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "npm-cache-filename": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "npm-install-checks": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "semver": "^2.3.0 || 3.x || 4 || 5" + } + }, + "npm-lifecycle": { + "version": "3.1.4", + "bundled": true, + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + } + }, + "npm-logical-tree": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.6", + "bundled": true, + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "npm-profile": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.2 || 2", + "figgy-pudding": "^3.4.1", + "npm-registry-fetch": "^4.0.0" + } + }, + "npm-registry-fetch": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "bundled": true, + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-user-validate": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "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": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "object-keys": { + "version": "1.0.12", + "bundled": true, + "dev": true + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "package-json": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "pacote": { + "version": "9.5.9", + "bundled": true, + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "parallel-transform": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "pify": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "bundled": true, + "dev": true + } + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "bundled": true, + "dev": true + }, + "protoduck": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "prr": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "psl": { + "version": "1.1.29", + "bundled": true, + "dev": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "bundled": true, + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "qs": { + "version": "6.5.2", + "bundled": true, + "dev": true + }, + "query-string": { + "version": "6.8.2", + "bundled": true, + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "qw": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "read": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "read-installed": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "graceful-fs": "^4.1.2", + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "slide": "~1.1.3", + "util-extend": "^1.0.1" + } + }, + "read-package-json": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "slash": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "bundled": true, + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readable-stream": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "bundled": true, + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "request": { + "version": "2.88.0", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "retry": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-queue": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.1.1" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "sha": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "slash": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "slide": { + "version": "1.1.6", + "bundled": true, + "dev": true + }, + "smart-buffer": { + "version": "4.0.2", + "bundled": true, + "dev": true + }, + "socks": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "4.0.2" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sorted-object": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "sorted-union-stream": { + "version": "2.1.3", + "bundled": true, + "dev": true, + "requires": { + "from2": "^1.3.0", + "stream-iterate": "^1.1.0" + }, + "dependencies": { + "from2": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~1.1.10" + } + }, + "isarray": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "bundled": true, + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "bundled": true, + "dev": true + } + } + }, + "spdx-correct": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "split-on-first": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "ssri": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stream-each": { + "version": "1.2.2", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-iterate": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringify-package": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "term-size": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "through": { + "version": "2.3.8", + "bundled": true, + "dev": true + }, + "through2": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "timed-out": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "bundled": true, + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true + }, + "umask": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-string": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "unzip-response": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "url-parse-lax": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "util-extend": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "uuid": { + "version": "3.3.3", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.2" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "widest-line": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "worker-farm": { + "version": "1.7.0", + "bundled": true, + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "xtend": { + "version": "4.0.1", + "bundled": true, + "dev": true + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "11.0.0", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "bundled": true, + "dev": true + } + } + }, + "yargs-parser": { + "version": "9.0.2", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" } }, "oauth-sign": { @@ -3002,9 +8365,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": { @@ -3013,7 +8376,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -3022,7 +8385,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-data-descriptor": { @@ -3031,7 +8394,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -3040,9 +8403,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": { @@ -3059,7 +8422,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3070,7 +8433,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.defaults": { @@ -3079,10 +8442,10 @@ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", "dev": true, "requires": { - "array-each": "1.0.1", - "array-slice": "1.1.0", - "for-own": "1.0.0", - "isobject": "3.0.1" + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" } }, "object.map": { @@ -3091,8 +8454,8 @@ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", "dev": true, "requires": { - "for-own": "1.0.0", - "make-iterator": "1.0.0" + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" } }, "object.omit": { @@ -3101,8 +8464,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" }, "dependencies": { "for-own": { @@ -3111,7 +8474,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } } } @@ -3122,16 +8485,49 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } } }, "orchestrator": { @@ -3140,9 +8536,9 @@ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", "dev": true, "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.0" + "end-of-stream": "~0.1.5", + "sequencify": "~0.0.7", + "stream-consume": "~0.1.0" } }, "ordered-read-streams": { @@ -3157,15 +8553,118 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dev": true, + "requires": { + "p-map": "^2.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true + }, + "p-retry": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz", + "integrity": "sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/parse-filepath/download/parse-filepath-1.0.2.tgz", "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", "dev": true, "requires": { - "is-absolute": "1.0.0", - "map-cache": "0.2.2", - "path-root": "0.1.1" + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" } }, "parse-glob": { @@ -3174,10 +8673,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -3192,11 +8691,21 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "parse-passwd": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/parse-passwd/download/parse-passwd-1.0.0.tgz", @@ -3215,6 +8724,12 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", @@ -3227,6 +8742,12 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.5.tgz", @@ -3239,7 +8760,7 @@ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", "dev": true, "requires": { - "path-root-regex": "0.1.2" + "path-root-regex": "^0.1.0" } }, "path-root-regex": { @@ -3248,11 +8769,34 @@ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", "dev": true }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "performance-now": { "version": "2.1.0", "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", @@ -3271,7 +8815,17 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" + } + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" } }, "plugin-error": { @@ -3280,11 +8834,11 @@ "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", "dev": true, "requires": { - "ansi-cyan": "0.1.1", - "ansi-red": "0.1.1", - "arr-diff": "1.1.0", - "arr-union": "2.1.0", - "extend-shallow": "1.1.4" + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" }, "dependencies": { "arr-diff": { @@ -3293,8 +8847,8 @@ "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-slice": "0.2.3" + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" } }, "arr-union": { @@ -3315,7 +8869,7 @@ "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "dev": true, "requires": { - "kind-of": "1.1.0" + "kind-of": "^1.1.0" } }, "kind-of": { @@ -3332,7 +8886,7 @@ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", "dev": true, "requires": { - "irregular-plurals": "1.4.0" + "irregular-plurals": "^1.0.0" } }, "posix-character-classes": { @@ -3364,7 +8918,28 @@ "resolved": "http://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz", "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + }, + "dependencies": { + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + } } }, "punycode": { @@ -3372,19 +8947,31 @@ "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "qs": { "version": "6.5.2", "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz", "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, "randomatic": { "version": "1.1.7", "resolved": "http://registry.npm.taobao.org/randomatic/download/randomatic-1.1.7.tgz", "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", "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": { @@ -3393,8 +8980,107 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" + } + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.0.tgz", + "integrity": "sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -3404,10 +9090,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "rechoir": { @@ -3416,16 +9102,41 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.5.0" + "resolve": "^1.1.6" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", + "dev": true, + "requires": { + "esprima": "~4.0.0" } }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, "regex-cache": { "version": "0.4.4", "resolved": "http://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz", "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -3434,7 +9145,17 @@ "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" + } + }, + "registry-auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", + "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", + "dev": true, + "requires": { + "rc": "^1.2.8", + "safe-buffer": "^5.0.1" } }, "remove-trailing-separator": { @@ -3467,9 +9188,9 @@ "integrity": "sha1-PuV5gJK+Nksc2xSEMISSyz3/LzY=", "dev": true, "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1", - "readable-stream": "2.3.4" + "escape-string-regexp": "^1.0.3", + "object-assign": "^4.0.1", + "readable-stream": "^2.0.2" }, "dependencies": { "isarray": { @@ -3484,13 +9205,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -3499,7 +9220,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -3509,26 +9230,26 @@ "resolved": "http://registry.npm.taobao.org/request/download/request-2.87.0.tgz", "integrity": "sha1-MvACNc0I1IK00NaNuTqCnA7VdW4=", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.7.0", - "caseless": "0.12.0", - "combined-stream": "1.0.6", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.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.18", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.1", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.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.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "require-dir": { @@ -3537,13 +9258,25 @@ "integrity": "sha1-wdXHXp+//eny5rM+OD209ZS1pqk=", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "resolve": { "version": "1.5.0", "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.5.0.tgz", "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } }, "resolve-dir": { @@ -3552,25 +9285,49 @@ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" } }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.6.2.tgz", "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, "safe-buffer": { "version": "5.1.1", "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz", @@ -3586,25 +9343,100 @@ "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" }, + "semantic-release": { + "version": "15.13.30", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.30.tgz", + "integrity": "sha512-QetSFNr2hO6dZ/NDBh49neESF6OGinJfh4NcVhzMRg+rZpeqXq9sCbpZr0uDu+5HSkJYnX25MpMTF0QyyFhpxg==", + "dev": true, + "requires": { + "@semantic-release/commit-analyzer": "^6.1.0", + "@semantic-release/error": "^2.2.0", + "@semantic-release/github": "^5.1.0", + "@semantic-release/npm": "^5.0.5", + "@semantic-release/release-notes-generator": "^7.1.2", + "aggregate-error": "^3.0.0", + "cosmiconfig": "^6.0.0", + "debug": "^4.0.0", + "env-ci": "^4.0.0", + "execa": "^3.2.0", + "figures": "^3.0.0", + "find-versions": "^3.0.0", + "get-stream": "^5.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^2.0.0", + "hosted-git-info": "^3.0.0", + "lodash": "^4.17.15", + "marked": "^0.7.0", + "marked-terminal": "^3.2.0", + "p-locate": "^4.0.0", + "p-reduce": "^2.0.0", + "read-pkg-up": "^7.0.0", + "resolve-from": "^5.0.0", + "semver": "^6.0.0", + "signale": "^1.2.1", + "yargs": "^14.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "semver": { "version": "4.3.6", "resolved": "http://registry.npm.taobao.org/semver/download/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, "sequencify": { "version": "0.0.7", "resolved": "http://registry.npm.taobao.org/sequencify/download/sequencify-0.0.7.tgz", "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", "dev": true }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, "set-getter": { "version": "0.1.0", "resolved": "http://registry.npm.taobao.org/set-getter/download/set-getter-0.1.0.tgz", "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", "dev": true, "requires": { - "to-object-path": "0.3.0" + "to-object-path": "^0.3.0" } }, "set-value": { @@ -3613,12 +9445,27 @@ "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" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" } }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "should": { "version": "7.1.1", "resolved": "http://registry.npm.taobao.org/should/download/should-7.1.1.tgz", @@ -3660,20 +9507,89 @@ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", "dev": true }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "requires": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "snapdragon": { "version": "0.8.1", "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.1.tgz", "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", "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.1", - "use": "2.0.2" + "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": "^2.0.0" }, "dependencies": { "define-property": { @@ -3682,7 +9598,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -3691,7 +9607,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3700,7 +9616,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3711,7 +9627,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3720,7 +9636,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3731,9 +9647,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" } }, "kind-of": { @@ -3750,9 +9666,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" } }, "snapdragon-util": { @@ -3761,7 +9677,7 @@ "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { @@ -3770,7 +9686,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3787,11 +9703,11 @@ "integrity": "sha1-etD1k/IoFZjoVN+A8ZquS5LXoRo=", "dev": true, "requires": { - "atob": "2.0.3", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-url": { @@ -3806,13 +9722,60 @@ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", "dev": true }, + "spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/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": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/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.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, "split-string": { "version": "3.1.0", "resolved": "http://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" }, "dependencies": { "extend-shallow": { @@ -3821,8 +9784,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" } }, "is-extendable": { @@ -3831,25 +9794,34 @@ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + } + }, "sshpk": { "version": "1.14.2", "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.14.2.tgz", "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "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": { @@ -3858,8 +9830,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": { @@ -3868,7 +9840,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -3877,7 +9849,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3886,7 +9858,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3897,7 +9869,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3906,7 +9878,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3917,9 +9889,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" } }, "kind-of": { @@ -3930,6 +9902,57 @@ } } }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "dev": true, + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "stream-consume": { "version": "0.1.0", "resolved": "http://registry.npm.taobao.org/stream-consume/download/stream-consume-0.1.0.tgz", @@ -3942,6 +9965,34 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/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" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "string_decoder": { "version": "0.10.31", "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz", @@ -3954,8 +10005,8 @@ "integrity": "sha1-xi0RAj6yH+LZsIe+A5om3zsioJ0=", "dev": true, "requires": { - "is-plain-obj": "1.1.0", - "is-regexp": "1.0.0" + "is-plain-obj": "^1.0.0", + "is-regexp": "^1.0.0" } }, "strip-ansi": { @@ -3964,7 +10015,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -3973,8 +10024,8 @@ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", - "is-utf8": "0.2.1" + "first-chunk-stream": "^1.0.0", + "is-utf8": "^0.2.0" } }, "strip-bom-buf": { @@ -3983,7 +10034,7 @@ "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.1" } }, "strip-bom-stream": { @@ -3992,8 +10043,8 @@ "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", "dev": true, "requires": { - "first-chunk-stream": "2.0.0", - "strip-bom-buf": "1.0.0" + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" }, "dependencies": { "first-chunk-stream": { @@ -4002,7 +10053,7 @@ "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.2" } }, "isarray": { @@ -4017,13 +10068,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -4032,31 +10083,127 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, + "supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "dev": true, + "requires": { + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + } + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "dev": true, + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "text-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz", + "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==", + "dev": true + }, "textextensions": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/textextensions/download/textextensions-1.0.2.tgz", "integrity": "sha1-ZUhjk+4fK7A5pgy7oFsLaL2VAdI=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, "through2": { "version": "2.0.3", "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.4", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" }, "dependencies": { "isarray": { @@ -4071,13 +10218,13 @@ "integrity": "sha1-yUbD9H+n2Oq8C2FQ9KEvaaRXQHE=", "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.1", - "string_decoder": "1.0.3", - "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.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -4086,7 +10233,7 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -4097,8 +10244,8 @@ "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", "dev": true, "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" + "through2": "~2.0.0", + "xtend": "~4.0.0" } }, "tildify": { @@ -4107,7 +10254,7 @@ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", "dev": true, "requires": { - "os-homedir": "1.0.2" + "os-homedir": "^1.0.0" } }, "time-stamp": { @@ -4122,7 +10269,7 @@ "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" } }, "to-object-path": { @@ -4131,7 +10278,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4140,7 +10287,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4151,9 +10298,9 @@ "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", "dev": true, "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.0" + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "regex-not": "^1.0.0" }, "dependencies": { "define-property": { @@ -4162,7 +10309,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -4171,7 +10318,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4180,7 +10327,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4191,7 +10338,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4200,7 +10347,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4211,9 +10358,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" } }, "kind-of": { @@ -4230,8 +10377,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" } }, "tough-cookie": { @@ -4239,15 +10386,33 @@ "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.4.tgz", "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -4256,12 +10421,45 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, "typescript": { "version": "2.7.1", "resolved": "http://registry.npm.taobao.org/typescript/download/typescript-2.7.1.tgz", "integrity": "sha1-uzaCwseRrJDnxiELJkeKjaCFw1k=", "dev": true }, + "uglify-js": { + "version": "3.6.8", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.8.tgz", + "integrity": "sha512-XhHJ3S3ZyMwP8kY1Gkugqx3CJh2C3O0y8NPiSxtm1tyD/pktLAkFZsFGpuNfTZddKDQ/bbDBLAd2YyA1pbi8HQ==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "http://registry.npm.taobao.org/unc-path-regex/download/unc-path-regex-0.1.2.tgz", @@ -4274,10 +10472,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": { "set-value": { @@ -4286,10 +10484,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" } } } @@ -4300,23 +10498,47 @@ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", "dev": true }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "universal-analytics": { "version": "0.4.16", "resolved": "http://registry.npm.taobao.org/universal-analytics/download/universal-analytics-0.4.16.tgz", "integrity": "sha1-xWfs7VPMma5A2IZoRk2glQpxNzE=", "requires": { - "request": "2.87.0", - "uuid": "3.2.1" + "request": "2.x", + "uuid": "^3.0.0" } }, + "universal-user-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz", + "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==", + "dev": true, + "requires": { + "os-name": "^3.1.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", "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": { @@ -4325,9 +10547,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": { @@ -4361,15 +10583,21 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, "use": { "version": "2.0.2", "resolved": "http://registry.npm.taobao.org/use/download/use-2.0.2.tgz", "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", "dev": true, "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "lazy-cache": "^2.0.2" }, "dependencies": { "define-property": { @@ -4378,7 +10606,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -4387,7 +10615,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4396,7 +10624,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4407,7 +10635,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4416,7 +10644,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4427,9 +10655,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" } }, "kind-of": { @@ -4463,7 +10691,7 @@ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dev": true, "requires": { - "user-home": "1.1.1" + "user-home": "^1.1.1" } }, "vali-date": { @@ -4472,14 +10700,24 @@ "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/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" + } + }, "verror": { "version": "1.10.0", "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" } }, "vinyl": { @@ -4488,8 +10726,8 @@ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", "dev": true, "requires": { - "clone": "1.0.3", - "clone-stats": "0.0.1", + "clone": "^1.0.0", + "clone-stats": "^0.0.1", "replace-ext": "0.0.1" } }, @@ -4499,14 +10737,14 @@ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", "dev": true, "requires": { - "defaults": "1.0.3", - "glob-stream": "3.1.18", - "glob-watcher": "0.0.6", - "graceful-fs": "3.0.11", - "mkdirp": "0.5.1", - "strip-bom": "1.0.0", - "through2": "0.6.5", - "vinyl": "0.4.6" + "defaults": "^1.0.0", + "glob-stream": "^3.1.5", + "glob-watcher": "^0.0.6", + "graceful-fs": "^3.0.0", + "mkdirp": "^0.5.0", + "strip-bom": "^1.0.0", + "through2": "^0.6.1", + "vinyl": "^0.4.0" }, "dependencies": { "clone": { @@ -4521,10 +10759,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "through2": { @@ -4533,8 +10771,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" } }, "vinyl": { @@ -4543,8 +10781,8 @@ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", "dev": true, "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" + "clone": "^0.2.0", + "clone-stats": "^0.0.1" } } } @@ -4555,7 +10793,91 @@ "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "dev": true, + "requires": { + "execa": "^1.0.0" + }, + "dependencies": { + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { @@ -4569,8 +10891,8 @@ "resolved": "http://registry.npm.taobao.org/xml2js/download/xml2js-0.4.19.tgz", "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" }, "dependencies": { "xmlbuilder": { @@ -4585,7 +10907,7 @@ "resolved": "http://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-3.1.0.tgz", "integrity": "sha1-LIaIjy1OrehQ+jjKf3Ij9yCVFuE=", "requires": { - "lodash": "3.10.1" + "lodash": "^3.5.0" } }, "xtend": { @@ -4593,6 +10915,109 @@ "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yaml": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", + "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.6.3" + } + }, + "yargs": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", + "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } } } } diff --git a/package.json b/package.json index 1afdb61..1fb7c8a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ali-mns-ts", "version": "0.0.0-development", - "description": "The nodejs SDK for aliyun mns service", + "description": "The nodejs SDK for aliyun mns service (TypeScript version)", "main": "ts/index.js", "dependencies": { "debug": "^2.2.0", @@ -46,7 +46,7 @@ "author": "ghxiong@incardata.com.cn", "license": "MIT", "bugs": { - "url": "https://github.com/InCar/ali-mns/issues" + "url": "https://github.com/Jeff-Tian/ali-mns/issues" }, - "homepage": "https://github.com/InCar/ali-mns" + "homepage": "https://github.com/Jeff-Tian/ali-mns" } diff --git a/ts/gitVersion.ts b/ts/gitVersion.ts new file mode 100644 index 0000000..ba70f28 --- /dev/null +++ b/ts/gitVersion.ts @@ -0,0 +1 @@ +export const gitVersion={"branch":"master","rev":"135","hash":"ae2f769","hash160":"ae2f769c7b594ca914325aa4380e99978f2bb6e5"}; From 278fb999ccea98c6878760343f6bec221e7c09b4 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 14:42:11 +0800 Subject: [PATCH 07/23] fix: use amd insteadof system --- ts/tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 0154732..1cd8c9a 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "module": "system", + "module": "amd", "noImplicitAny": false, "removeComments": false, "preserveConstEnums": true, @@ -14,4 +14,4 @@ "node_modules", "dts" ] -} \ No newline at end of file +} From 5b33d5299abe46cb4adb88bd4a20f352cc2cb2c9 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Thu, 7 Nov 2019 14:55:52 +0800 Subject: [PATCH 08/23] feat: use commonjs --- .gitignore | 4 +++- ts/tsconfig.json | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2d52064..88bd1c1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ index.d.ts .vscode/ node_modules/ test/account.js -ts/index.js +ts/*.js +ts/*.d.ts +ts/*.js.map diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 1cd8c9a..7e6f504 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -1,10 +1,9 @@ { "compilerOptions": { - "module": "amd", + "module": "commonjs", "noImplicitAny": false, "removeComments": false, "preserveConstEnums": true, - "outFile": "index.js", "sourceMap": true, "rootDir": "ts/", "declaration": true, From bd4bfc065234bbd0a70ff29038bdb71d9b94d327 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Fri, 8 Nov 2019 21:20:15 +0800 Subject: [PATCH 09/23] feat: delete unused files --- .travis.yml | 1 - gulpfile.js | 39 -- index.js | 1218 ------------------------------------------------- ts/exports.ts | 1 + ts/index.ts | 3 + 5 files changed, 4 insertions(+), 1258 deletions(-) delete mode 100644 gulpfile.js delete mode 100644 index.js create mode 100644 ts/index.ts diff --git a/.travis.yml b/.travis.yml index 22acf71..b8124f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,6 @@ branches: before_install: - "npm install" - "npm run build" - - "echo 'export default AliMNS' >> ts/index.d.ts" jobs: include: diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index f6d3a77..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,39 +0,0 @@ -var gulp = require('gulp'); -var newer = require('gulp-newer'); -var ts = require('gulp-typescript'); -var sourcemaps = require('gulp-sourcemaps'); -var del = require('del'); -var replace = require('gulp-replace'); -var header = require('gulp-header'); -var GitVersionJson = require('git-version-json'); -var debug = require('gulp-debug'); -var Promise = require('promise'); - -var tsProject = ts.createProject('ts/tsconfig.json'); - -gulp.task('build', [GitVersionJson.task], ()=>{ - var tsResult = tsProject.src() - .pipe(newer('index.js')) - .pipe(sourcemaps.init()) - .pipe(debug({ title: 'ts: ' })) - .pipe(tsProject()); - - var dts = tsResult.dts - .pipe(gulp.dest('.')) - .pipe(debug({ title: 'out: ' })); - - var js = tsResult.js - .pipe(header("var gitVersion=${version};\n", - { version: GitVersionJson.getGitVerStr() })) - .pipe(sourcemaps.write('.')) - .pipe(gulp.dest('.')) - .pipe(debug({ title: 'out: ' })); - - return Promise.all([dts, js]); -}); - -gulp.task('clean', ()=>{ - return del(['index.js', 'index.js.map', 'index.d.ts']); -}); - -gulp.task('default', ['build']); diff --git a/index.js b/index.js deleted file mode 100644 index 699aeab..0000000 --- a/index.js +++ /dev/null @@ -1,1218 +0,0 @@ -var gitVersion={"branch":"master","rev":"135","hash":"ae2f769","hash160":"ae2f769c7b594ca914325aa4380e99978f2bb6e5"}; -var __extends = (this && this.__extends) || (function () { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -// dependencies -var CryptoA = require("crypto"); -var Events = require("events"); -var Util = require("util"); -var Url = require("url"); -var UA = require("universal-analytics"); -var debug = require("debug")("ali-mns"); -var Promise = require("promise"); -var Request = require("request"); -Request['requestP'] = Promise.denodeify(Request); -Request['debug'] = false; -var Xml2js = require("xml2js"); -Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); -var XmlBuilder = require("xmlbuilder"); -/// -var AliMNS; -/// -(function (AliMNS) { - // The Ali account, it holds the key id and secret. - var Account = /** @class */ (function () { - function Account(accountId, keyId, keySecret) { - this._bGoogleAnalytics = true; // Enable Google Analytics - this._bHttps = false; // Default to use http - this._accountId = accountId; - this._keyId = keyId; - this._keySecret = keySecret; - } - Account.prototype.getAccountId = function () { return this._accountId; }; - Account.prototype.getOwnerId = function () { return this._accountId; }; // for compatible v1.x - Account.prototype.getKeyId = function () { return this._keyId; }; - Account.prototype.getGA = function () { return this._bGoogleAnalytics; }; - Account.prototype.setGA = function (bGA) { this._bGoogleAnalytics = bGA; }; - Account.prototype.getHttps = function () { return this._bHttps; }; - Account.prototype.setHttps = function (bHttps) { this._bHttps = bHttps; }; - // encoding: "hex", "binary" or "base64" - Account.prototype.hmac_sha1 = function (text, encoding) { - var hmacSHA1 = CryptoA.createHmac("sha1", this._keySecret); - return hmacSHA1.update(text).digest(encoding); - }; - Account.prototype.b64md5 = function (text) { - var cryptoMD5 = CryptoA.createHash("md5"); - return cryptoMD5.update(new Buffer(text, 'utf-8')).digest("base64"); - }; - return Account; - }()); - AliMNS.Account = Account; -})(AliMNS || (AliMNS = {})); -var AliMNS; -(function (AliMNS) { - // The Message class - var Msg = /** @class */ (function () { - function Msg(msg, priority, delaySeconds) { - // message priority - this._priority = 8; - // message delay to visible, in seconds - this._delaySeconds = 0; - this._msg = msg; - if (!isNaN(priority)) - this._priority = priority; - if (!isNaN(delaySeconds)) - this._delaySeconds = delaySeconds; - } - Msg.prototype.getMsg = function () { return this._msg; }; - Msg.prototype.getPriority = function () { return this._priority; }; - Msg.prototype.getDelaySeconds = function () { return this._delaySeconds; }; - return Msg; - }()); - AliMNS.Msg = Msg; -})(AliMNS || (AliMNS = {})); -/// -// The Ali open interface stack -/// -/// -var AliMNS; -// The Ali open interface stack -/// -/// -(function (AliMNS) { - // the ali open interface stack protocol - var OpenStack = /** @class */ (function () { - function OpenStack(account) { - this._patternMNS = "MNS %s:%s"; - this._patternSign = "%s\n%s\n%s\n%s\n%s%s"; - this._contentType = "text/xml;charset=utf-8"; - this._version = "2015-06-06"; - this._gaRGA = 0; // Reduce Google Analysis sending rate - this._account = account; - // xml builder - this._xmlBuilder = XmlBuilder; - // Google Analytics - this._ga = new AliMNS.GA(account.getAccountId()); - this._ga.disableGA(!account.getGA()); - } - // Send the request - // method: GET, POST, PUT, DELETE - // url: request url - // body: optional, request body - // head: optional, request heads - // options: optional, request options - OpenStack.prototype.sendP = function (method, url, body, headers, options) { - var req = { method: method, url: url }; - if (body) - req.body = this._xmlBuilder.create(body).toString(); - req.headers = this.makeHeaders(method, url, headers, req.body); - // combines options - if (options) { - for (var opt in options) { - if (opt === "method" || opt === "url" || opt === "uri" || opt === "body" || opt === "headers") - continue; // skip these options for avoid conflict to other arguments - else if (options.hasOwnProperty(opt)) - req[opt] = options[opt]; - } - } - var ret = Request['requestP'](req).then(function (response) { - // convert the body from xml to json - return Xml2js.parseStringP(response.body, { explicitArray: false }) - .then(function (bodyJSON) { - response.bodyJSON = bodyJSON; - return response; - }, function () { - // cannot parse as xml - response.bodyJSON = response.body; - return response; - }); - }).then(function (response) { - if (response.statusCode < 400) { - if (response.bodyJSON) - return response.bodyJSON; - else - return response.statusCode; - } - else { - if (response.bodyJSON) - return Promise.reject(response.bodyJSON); - else - return Promise.reject(response.statusCode); - } - }); - // google analytics - if (this._gaRGA % 1000000 == 0) - this._ga.send("OpenStack.sendP", this._gaRGA, url); - this._gaRGA++; - return ret; - }; - OpenStack.prototype.accumulateNextGASend = function (prefix) { - this._ga.accumulateNextSend(prefix); - }; - OpenStack.prototype.disableGA = function (bDisable) { - this._ga.disableGA(bDisable); - }; - OpenStack.prototype.makeHeaders = function (mothod, url, headers, body) { - // if not exist, create one - if (!headers) - headers = { - "User-Agent": "Node/" + process.version + " (" + process.platform + ")" - }; - var contentMD5 = ""; - var contentType = ""; - if (body) { - if (!headers["Content-Length"]) - headers["Content-Length"] = (new Buffer(body, 'utf-8')).length; - if (!headers["Content-Type"]) - headers["Content-Type"] = this._contentType; - contentType = headers["Content-Type"]; - contentMD5 = this._account.b64md5(body); - headers["Content-MD5"] = contentMD5; - } - // `Date` & `Host` will be added by request automatically - if (!headers["x-mns-version"]) - headers["x-mns-version"] = this._version; - // lowercase & sort & extract the x-mns- - var headsLower = {}; - var keys = []; - for (var key in headers) { - if (headers.hasOwnProperty(key)) { - var lower = key.toLowerCase(); - keys.push(lower); - headsLower[lower] = headers[key]; - } - } - keys.sort(); - var mnsHeaders = ""; - for (var i in keys) { - var k = keys[i]; - if (typeof k === "string" && k.indexOf("x-mns-") === 0) { - mnsHeaders += Util.format("%s:%s\n", k, headsLower[k]); - } - } - var tm = (new Date()).toUTCString(); - var mnsURL = Url.parse(url); - headers.Date = tm; - headers.Authorization = this.authorize(mothod, mnsURL.path, mnsHeaders, contentType, contentMD5, tm); - headers.Host = mnsURL.host; - return headers; - }; - // ali mns authorize header - OpenStack.prototype.authorize = function (httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm) { - return Util.format(this._patternMNS, this._account.getKeyId(), this.signature(httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm)); - }; - // ali mns signature - OpenStack.prototype.signature = function (httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm) { - var text = Util.format(this._patternSign, httpVerb, contentMD5, contentType, tm, mnsHeaders, mnsURI); - return this._account.hmac_sha1(text, "base64"); - }; - return OpenStack; - }()); - AliMNS.OpenStack = OpenStack; -})(AliMNS || (AliMNS = {})); -var AliMNS; -(function (AliMNS) { - var Region = /** @class */ (function () { - function Region(city, network, zone) { - // cn,ap,eu,us,me -> China, Asia Pacific, Europe, Unite State, Middle East - this._zone = "cn"; - // cn: hangzhou, beijing, qingdao, shanghai, shenzhen, - // ap: northeast-1[Tokyo], southeast-1[Singapore], southeast-2[Sydney] - // eu: central-1[Frankfurt] - // us: west-1[Silicon Valley], west-2[Virginia] - // me: east-1[Dubai] - this._city = "hangzhou"; - // public-internal-vpc - this._network = ""; - // pattern - this._pattern = "%s-%s%s"; - // region string - this._region = "cn-hangzhou"; - if (network) { - if (typeof network === "string") - this._network = network; - else - this._network = this.networkToString(network); - } - if (zone) { - if (typeof zone === "string") - this._zone = zone; - else - this._zone = this.zoneToString(zone); - } - if (city) { - if (typeof city === "string") - this._city = city; - else { - this._city = this.cityToString(city); - this._zone = this.cityToZone(city); - } - } - this.buildString(); - } - Region.prototype.buildString = function () { - // like "ap-southeast-2-internal-vpc" - this._region = Util.format(this._pattern, this._zone, this._city, this._network); - }; - Region.prototype.toString = function () { - return this._region; - }; - Region.prototype.networkToString = function (network) { - var value; - switch (network) { - case NetworkType.Public: - value = ""; - break; - case NetworkType.Internal: - value = "-internal"; - break; - case NetworkType.VPC: - value = "-internal-vpc"; - break; - default: throw new Error("Unsupported network type value: " + network); - } - return value; - }; - Region.prototype.zoneToString = function (zone) { - var value; - switch (zone) { - case Zone.China: - value = "cn"; - break; - case Zone.AsiaPacific: - value = "ap"; - break; - case Zone.UniteState: - value = "us"; - break; - case Zone.Europe: - value = "eu"; - break; - case Zone.MiddleEast: - value = "me"; - break; - default: throw new Error("Unsupported zone value: " + zone); - } - return value; - }; - Region.prototype.cityToString = function (city) { - var value; - switch (city) { - case City.Beijing: - value = "beijing"; - break; - case City.Shanghai: - value = "shanghai"; - break; - case City.Qingdao: - value = "qingdao"; - break; - case City.Hangzhou: - value = "hangzhou"; - break; - case City.Shenzhen: - value = "shenzhen"; - break; - case City.Hongkong: - value = "hongkong"; - break; - case City.Tokyo: - value = "northeast-1"; - break; - case City.Singapore: - value = "southeast-1"; - break; - case City.Sydney: - value = "southeast-2"; - break; - case City.Frankfurt: - value = "central-1"; - break; - case City.SiliconValley: - value = "west-1"; - break; - case City.Virginia: - value = "east-1"; - break; - case City.Dubai: - value = "east-1"; - break; - default: throw new Error("Unsupported city value: " + city); - } - return value; - }; - Region.prototype.cityToZone = function (city) { - var value; - switch (city) { - case City.Beijing: - case City.Shanghai: - case City.Qingdao: - case City.Hangzhou: - case City.Shenzhen: - value = "cn"; - break; - case City.Hongkong: - value = "cn"; - break; - case City.Tokyo: - case City.Singapore: - case City.Sydney: - value = "ap"; - break; - case City.Frankfurt: - value = "eu"; - break; - case City.SiliconValley: - case City.Virginia: - value = "us"; - break; - case City.Dubai: - value = "me"; - break; - default: - throw new Error("Unsupported city value: " + city); - } - return value; - }; - return Region; - }()); - AliMNS.Region = Region; - var NetworkType; - (function (NetworkType) { - NetworkType[NetworkType["Public"] = 0] = "Public"; - NetworkType[NetworkType["Internal"] = 1] = "Internal"; - NetworkType[NetworkType["VPC"] = 2] = "VPC"; - })(NetworkType = AliMNS.NetworkType || (AliMNS.NetworkType = {})); - var Zone; - (function (Zone) { - Zone[Zone["China"] = 0] = "China"; - Zone[Zone["AsiaPacific"] = 1] = "AsiaPacific"; - Zone[Zone["Europe"] = 2] = "Europe"; - Zone[Zone["UniteState"] = 3] = "UniteState"; - Zone[Zone["MiddleEast"] = 4] = "MiddleEast"; - })(Zone = AliMNS.Zone || (AliMNS.Zone = {})); - var Area; - (function (Area) { - Area[Area["UniteState"] = 1] = "UniteState"; - Area[Area["Germany"] = 49] = "Germany"; - Area[Area["Australia"] = 61] = "Australia"; - Area[Area["Singapore"] = 65] = "Singapore"; - Area[Area["Japan"] = 81] = "Japan"; - Area[Area["China"] = 86] = "China"; - Area[Area["Hongkong"] = 852] = "Hongkong"; - Area[Area["UnitedArabEmirates"] = 971] = "UnitedArabEmirates"; - })(Area = AliMNS.Area || (AliMNS.Area = {})); - var City; - (function (City) { - // China - City[City["Beijing"] = 5636106] = "Beijing"; - City[City["Shanghai"] = 5636117] = "Shanghai"; - City[City["Qingdao"] = 5636628] = "Qingdao"; - City[City["Hangzhou"] = 5636667] = "Hangzhou"; - City[City["Shenzhen"] = 5636851] = "Shenzhen"; - City[City["Hongkong"] = 55836672] = "Hongkong"; - // AsiaPacific - City[City["Tokyo"] = 5308419] = "Tokyo"; - City[City["Singapore"] = 4259840] = "Singapore"; - City[City["Sydney"] = 3997698] = "Sydney"; - // Europe - City[City["Frankfurt"] = 3211599] = "Frankfurt"; - // UniteState - City[City["SiliconValley"] = 65951] = "SiliconValley"; - City[City["Virginia"] = 66107] = "Virginia"; - // MiddleEast - City[City["Dubai"] = 63635460] = "Dubai"; - })(City = AliMNS.City || (AliMNS.City = {})); -})(AliMNS || (AliMNS = {})); -/// -/// -/// -/// -var AliMNS; -/// -/// -/// -/// -(function (AliMNS) { - // The MNS can list, create, delete, modify the mq. - var MNS = /** @class */ (function () { - // The constructor. account: ali account; region: can be "hangzhou", "beijing" or "qingdao", default is "hangzhou" - function MNS(account, region) { - this._region = new AliMNS.Region(AliMNS.City.Hangzhou); - this._pattern = "%s://%s.mns.%s.aliyuncs.com/queues/"; - // save the input arguments - this._account = account; - // region - if (region) { - if (typeof region === "string") - this._region = new AliMNS.Region(region, AliMNS.NetworkType.Public, AliMNS.Zone.China); - else - this._region = region; - } - // make url - this._url = this.makeURL(); - // create the OpenStack object - this._openStack = new AliMNS.OpenStack(account); - } - // List all mns. - MNS.prototype.listP = function (prefix, pageSize, pageMarker) { - var headers = {}; - if (prefix) - headers["x-mns-prefix"] = prefix; - if (pageMarker) - headers["x-mns-marker"] = pageMarker; - if (pageSize) - headers["x-mns-ret-number"] = pageSize; - var url = this._url.slice(0, -1); - debug("GET " + url); - return this._openStack.sendP("GET", url, null, headers); - }; - // Create a message queue - MNS.prototype.createP = function (name, options) { - var body = { Queue: "" }; - if (options) - body.Queue = options; - var url = Url.resolve(this._url, name); - debug("PUT " + url, body); - return this._openStack.sendP("PUT", url, body); - }; - // Delete a message queue - MNS.prototype.deleteP = function (name) { - var url = Url.resolve(this._url, name); - debug("DELETE " + url); - return this._openStack.sendP("DELETE", url); - }; - MNS.prototype.makeURL = function () { - return Util.format(this._pattern, this._account.getHttps() ? "https" : "http", this._account.getAccountId(), this._region.toString()); - }; - return MNS; - }()); - AliMNS.MNS = MNS; - // For compatible v1.x - AliMNS.MQS = MNS; -})(AliMNS || (AliMNS = {})); -/// -/// -var AliMNS; -/// -/// -(function (AliMNS) { - var NotifyRecv = /** @class */ (function () { - function NotifyRecv(mq) { - this._signalSTOP = true; - this._evStopped = "AliMNS_MQ_NOTIFY_STOPPED"; - // 连续timeout计数器 - // 在某种未知的原因下,网络底层链接断了 - // 这时在程序内部的重试无法促使网络重连,以后的重试都是徒劳的 - // 如果连续发生反复重试都依然timeout,那么极有可能已经发生此种情况了 - // 这时抛出NetworkBroken异常 - this._timeoutCount = 0; - this._timeoutMax = 128; - this._ga = null; - this._mq = mq; - // emitter - this._emitter = new Events.EventEmitter(); - // Google Analytics - if (mq instanceof AliMNS.MQ) { - var account = mq.getAccount(); - this._ga = new AliMNS.GA(account.getAccountId()); - this._ga.disableGA(!account.getGA()); - } - } - // 消息通知.每当有消息收到时,都调用cb回调函数 - // 如果cb返回true,那么将删除消息,否则保留消息 - NotifyRecv.prototype.notifyRecv = function (cb, waitSeconds, numOfMessages) { - this._signalSTOP = false; - this._timeoutCount = 0; - this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - // Google Analytics - if (this._ga) - this._ga.send("NotifyRecv.notifyRecv", 0, ""); - }; - // 停止消息通知 - NotifyRecv.prototype.notifyStopP = function () { - var _this = this; - if (this._signalSTOP) - return Promise.resolve(this._evStopped); - // Google Analytics - if (this._ga) - this._ga.send("NotifyRecv.notifyStopP", 0, ""); - this._signalSTOP = true; - return new Promise(function (resolve) { - _this._emitter.once(_this._evStopped, function () { - resolve(_this._evStopped); - }); - }); - }; - NotifyRecv.prototype.notifyRecvInternal = function (cb, waitSeconds, numOfMessages) { - var _this = this; - // This signal will be triggered by notifyStopP() - if (this._signalSTOP) { - debug("notifyStopped"); - this._emitter.emit(this._evStopped); - return; - } - debug("notifyRecvInternal()"); - try { - var mqBatch = this._mq; - mqBatch.recvP(waitSeconds, numOfMessages).done(function (dataRecv) { - try { - debug(dataRecv); - _this._timeoutCount = 0; - if (cb(null, dataRecv)) { - _this.deleteP(dataRecv) - .done(null, function (ex) { - console.log(ex); - }); - } - } - catch (ex) { - // ignore any ex throw from cb - console.warn(ex); - } - _this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - }, function (ex) { - debug(ex); - if ((!ex.Error) || (ex.Error.Code !== "MessageNotExist")) { - cb(ex, null); - } - if (ex) { - if (ex.message === "timeout") { - _this._timeoutCount++; - if (_this._timeoutCount > _this._timeoutMax) { - // 极度可能网络底层断了 - cb(new Error("NetworkBroken"), null); - } - } - else if (ex.Error && ex.Error.Code === "MessageNotExist") { - _this._timeoutCount = 0; - } - } - process.nextTick(function () { - _this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - }); - }); - } - catch (ex) { - // ignore any ex - console.warn(ex); - // 过5秒重试 - debug("Retry after 5 seconds"); - setTimeout(function () { - _this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - }, 5000); - } - }; - NotifyRecv.prototype.deleteP = function (dataRecv) { - if (dataRecv) { - if (dataRecv.Message) { - return this._mq.deleteP(dataRecv.Message.ReceiptHandle); - } - else if (dataRecv.Messages && dataRecv.Messages.Message) { - var rhs = []; - for (var i = 0; i < dataRecv.Messages.Message.length; i++) { - rhs.push(dataRecv.Messages.Message[i].ReceiptHandle); - } - var mqBatch = this._mq; - return mqBatch.deleteP(rhs); - } - else { - return Promise.resolve(dataRecv); - } - } - else { - return Promise.resolve(dataRecv); - } - }; - return NotifyRecv; - }()); - AliMNS.NotifyRecv = NotifyRecv; -})(AliMNS || (AliMNS = {})); -/// -/// -/// -/// -/// -var AliMNS; -/// -/// -/// -/// -/// -(function (AliMNS) { - // The MQ - var MQ = /** @class */ (function () { - // The constructor. name & account is required. - // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" - function MQ(name, account, region) { - this._notifyRecv = null; - this._recvTolerance = 5; // 接收消息的容忍时间(单位:秒) - this._region = new AliMNS.Region(AliMNS.City.Hangzhou); - this._pattern = "%s://%s.mns.%s.aliyuncs.com/queues/%s"; - this._name = name; - this._account = account; - // region - if (region) { - if (typeof region === "string") - this._region = new AliMNS.Region(region, AliMNS.NetworkType.Public, AliMNS.Zone.China); - else - this._region = region; - } - // make url - this._urlAttr = this.makeAttrURL(); - this._url = this.makeURL(); - // create the OpenStack object - this._openStack = new AliMNS.OpenStack(account); - } - MQ.prototype.getName = function () { return this._name; }; - MQ.prototype.getAccount = function () { return this._account; }; - MQ.prototype.getRegion = function () { return this._region; }; - // 获取MQ的属性值 - MQ.prototype.getAttrsP = function () { - debug("GET " + this._urlAttr); - return this._openStack.sendP("GET", this._urlAttr); - }; - // 设置MQ的属性值 - MQ.prototype.setAttrsP = function (options) { - var body = { Queue: options }; - debug("PUT " + this._urlAttr, body); - return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); - }; - // 发送消息 - MQ.prototype.sendP = function (msg, priority, delaySeconds) { - var b64 = this.utf8ToBase64(msg); - var body = { Message: { MessageBody: b64 } }; - if (!isNaN(priority)) - body.Message.Priority = priority; - if (!isNaN(delaySeconds)) - body.Message.DelaySeconds = delaySeconds; - debug("POST " + this._url, body); - this._openStack.accumulateNextGASend("MQ.sendP"); - return this._openStack.sendP("POST", this._url, body); - }; - // 接收消息容忍时间(秒) - MQ.prototype.getRecvTolerance = function () { return this._recvTolerance; }; - MQ.prototype.setRecvTolerance = function (value) { this._recvTolerance = value; }; - // 接收消息 - // waitSeconds, 最久等待多少秒0~30 - MQ.prototype.recvP = function (waitSeconds) { - var _this = this; - var url = this._url; - if (waitSeconds) - url += "?waitseconds=" + waitSeconds; - debug("GET " + url); - return new Promise(function (resolve, reject) { - // use the timeout mechanism inside the request module - var options = { timeout: 1000 * _this._recvTolerance }; - if (waitSeconds) - options.timeout += (1000 * waitSeconds); - _this._openStack.accumulateNextGASend("MQ.recvP"); - _this._openStack.sendP("GET", url, null, null, options).done(function (data) { - debug(data); - if (data && data.Message && data.Message.MessageBody) { - data.Message.MessageBody = _this.base64ToUtf8(data.Message.MessageBody); - } - resolve(data); - }, function (ex) { - // for compatible with 1.x, still use literal "timeout" - if (ex.code === "ETIMEDOUT") { - var exTimeout = new Error("timeout"); - exTimeout.innerException = ex; - exTimeout.code = ex.code; - reject(exTimeout); - } - else { - reject(ex); - } - }); - }); - }; - // 检查消息 - MQ.prototype.peekP = function () { - var _this = this; - var url = this._url + "?peekonly=true"; - debug("GET " + url); - this._openStack.accumulateNextGASend("MQ.peekP"); - return this._openStack.sendP("GET", url).then(function (data) { - debug(data); - _this.decodeB64Messages(data); - return data; - }); - }; - // 删除消息 - MQ.prototype.deleteP = function (receiptHandle) { - var url = this._url + "?ReceiptHandle=" + receiptHandle; - debug("DELETE " + url); - this._openStack.accumulateNextGASend("MQ.deleteP"); - return this._openStack.sendP("DELETE", url); - }; - // 保留消息 - MQ.prototype.reserveP = function (receiptHandle, reserveSeconds) { - var url = this._url - + "?ReceiptHandle=" + receiptHandle - + "&VisibilityTimeout=" + reserveSeconds; - debug("PUT " + url); - this._openStack.accumulateNextGASend("MQ.reserveP"); - return this._openStack.sendP("PUT", url); - }; - // 消息通知.每当有消息收到时,都调用cb回调函数 - // 如果cb返回true,那么将删除消息,否则保留消息 - MQ.prototype.notifyRecv = function (cb, waitSeconds) { - // lazy create - if (this._notifyRecv === null) - this._notifyRecv = new AliMNS.NotifyRecv(this); - return this._notifyRecv.notifyRecv(cb, waitSeconds || 5); - }; - // 停止消息通知 - MQ.prototype.notifyStopP = function () { - if (this._notifyRecv === null) - return Promise.resolve(0); - else - return this._notifyRecv.notifyStopP(); - }; - MQ.prototype.utf8ToBase64 = function (src) { - var buf = new Buffer(src, 'utf8'); - return buf.toString('base64'); - }; - MQ.prototype.base64ToUtf8 = function (src) { - var buf = new Buffer(src, 'base64'); - return buf.toString('utf8'); - }; - MQ.prototype.decodeB64Messages = function (data) { - if (data && data.Message && data.Message.MessageBody) { - data.Message.MessageBody = this.base64ToUtf8(data.Message.MessageBody); - } - }; - MQ.prototype.makeAttrURL = function () { - return Util.format(this._pattern, this._account.getHttps() ? "https" : "http", this._account.getAccountId(), this._region.toString(), this._name); - }; - MQ.prototype.makeURL = function () { - return this.makeAttrURL() + "/messages"; - }; - return MQ; - }()); - AliMNS.MQ = MQ; -})(AliMNS || (AliMNS = {})); -/// -/// -/// -var AliMNS; -/// -/// -/// -(function (AliMNS) { - var MQBatch = /** @class */ (function (_super) { - __extends(MQBatch, _super); - function MQBatch(name, account, region) { - var _this = _super.call(this, name, account, region) || this; - _this._notifyRecv = null; - return _this; - } - MQBatch.prototype.sendP = function (msg, priority, delaySeconds) { - if (typeof msg === "string") { - return _super.prototype.sendP.call(this, msg, priority, delaySeconds); - } - else { - var body = { Messages: { '#list': [] } }; - for (var i = 0; i < msg.length; i++) { - var m = msg[i]; - var b64 = this.utf8ToBase64(m.getMsg()); - var xMsg = { Message: { MessageBody: b64 } }; - xMsg.Message.Priority = m.getPriority(); - xMsg.Message.DelaySeconds = m.getDelaySeconds(); - body.Messages['#list'].push(xMsg); - } - debug("POST " + this._url, body); - this._openStack.accumulateNextGASend("MQBatch.sendP"); - return this._openStack.sendP("POST", this._url, body); - } - }; - MQBatch.prototype.recvP = function (waitSeconds, numOfMessages) { - if (numOfMessages === undefined) - numOfMessages = 16; - if (numOfMessages && numOfMessages > 1) { - var self = this; - var url = this._url; - url += "?numOfMessages=" + numOfMessages; - if (waitSeconds) - url += "&waitseconds=" + waitSeconds; - debug("GET " + url); - return new Promise(function (resolve, reject) { - // use the timeout mechanism inside the request module - var options = { timeout: 1000 * self._recvTolerance }; - if (waitSeconds) - options.timeout += (1000 * waitSeconds); - self._openStack.accumulateNextGASend("MQBatch.recvP"); - self._openStack.sendP("GET", url, null, null, options).done(function (data) { - debug(data); - self.decodeB64Messages(data); - resolve(data); - }, function (ex) { - // for compatible with 1.x, still use literal "timeout" - if (ex.code === "ETIMEDOUT") { - var exTimeout = new Error("timeout"); - exTimeout.innerException = ex; - exTimeout.code = ex.code; - reject(exTimeout); - } - else { - reject(ex); - } - }); - }); - } - else { - return _super.prototype.recvP.call(this, waitSeconds); - } - }; - MQBatch.prototype.peekP = function (numOfMessages) { - if (numOfMessages === undefined) - numOfMessages = 16; - if (numOfMessages && numOfMessages > 1) { - var self = this; - var url = this._url + "?peekonly=true"; - url += "&numOfMessages=" + numOfMessages; - debug("GET " + url); - this._openStack.accumulateNextGASend("MQBatch.peekP"); - return this._openStack.sendP("GET", url).then(function (data) { - debug(data); - self.decodeB64Messages(data); - return data; - }); - } - else { - return _super.prototype.peekP.call(this); - } - }; - MQBatch.prototype.deleteP = function (receiptHandle) { - if (typeof receiptHandle === "string") { - _super.prototype.deleteP.call(this, receiptHandle); - } - else { - debug("DELETE " + this._url, receiptHandle); - var body = { ReceiptHandles: { '#list': [] } }; - for (var i = 0; i < receiptHandle.length; i++) { - var r = { ReceiptHandle: receiptHandle[i] }; - body.ReceiptHandles['#list'].push(r); - } - this._openStack.accumulateNextGASend("MQBatch.deleteP"); - return this._openStack.sendP("DELETE", this._url, body); - } - }; - // 消息通知.每当有消息收到时,都调用cb回调函数 - // 如果cb返回true,那么将删除消息,否则保留消息 - MQBatch.prototype.notifyRecv = function (cb, waitSeconds, numOfMessages) { - // lazy create - if (this._notifyRecv === null) - this._notifyRecv = new AliMNS.NotifyRecv(this); - return this._notifyRecv.notifyRecv(cb, waitSeconds || 5, numOfMessages || 16); - }; - MQBatch.prototype.decodeB64Messages = function (data) { - if (data && data.Messages && data.Messages.Message) { - if (!Util.isArray(data.Messages.Message)) { - // Just a single message, use an array to hold it - var msg = data.Messages.Message; - data.Messages.Message = [msg]; - } - for (var i = 0; i < data.Messages.Message.length; i++) { - var msg = data.Messages.Message[i]; - if (msg.MessageBody) - msg.MessageBody = this.base64ToUtf8(msg.MessageBody); - } - } - else { - _super.prototype.decodeB64Messages.call(this, data); - } - }; - return MQBatch; - }(AliMNS.MQ)); - AliMNS.MQBatch = MQBatch; -})(AliMNS || (AliMNS = {})); -/// -/// -/// -/// -/// -/// -// Exports the AliMNS -module.exports = AliMNS; -var AliMNS; -(function (AliMNS) { - var GA = /** @class */ (function () { - function GA(accId) { - this._bGoogleAnalytics = true; - this._rgxAccId = /\/\/\w+\./; - this._bAccumulated = false; - this._bAccumulatePrefix = ""; - this._accumutionMax = 100; - this._accumulation = {}; - this._gitMark = gitVersion.branch + "." + gitVersion.rev + "@" + gitVersion.hash; - this._visitor = UA("UA-75293894-6", this.u2id(accId)); - } - GA.prototype.send = function (action, value, url) { - if (this._bGoogleAnalytics) { - if (this._bAccumulated) { - // 累积多个一起发送 - this._bAccumulated = false; - var actionPrefixed = this._bAccumulatePrefix + ":" + action; - if (!this._accumulation[actionPrefixed]) - this._accumulation[actionPrefixed] = { value: 0, count: 0 }; - this._accumulation[actionPrefixed].value += value; - this._accumulation[actionPrefixed].count++; - if (this._accumulation[actionPrefixed].count >= this._accumutionMax) { - this.send(actionPrefixed, this._accumulation[actionPrefixed].value, url); - this._accumulation[actionPrefixed].value = 0; - this._accumulation[actionPrefixed].count = 0; - } - } - else { - var args = { dl: url.replace(this._rgxAccId, "//0.") }; - // catagory, action, label, value, params - this._visitor.event("AliMNS", action, this._gitMark, value, args).send(); - } - } - }; - GA.prototype.accumulateNextSend = function (prefix) { - this._bAccumulated = true; - this._bAccumulatePrefix = prefix; - }; - GA.prototype.disableGA = function (bDisable) { - this._bGoogleAnalytics = (!bDisable); - }; - GA.prototype.u2id = function (uid) { - var cryptoMD5 = CryptoA.createHash("md5"); - var md5HEX = cryptoMD5.update(uid).digest("hex"); - var uxid = new Array(36); - for (var i = 0, j = 0; i < md5HEX.length; i++, j++) { - if (i === 8 || i === 12 || i === 16 || i === 20) { - uxid[j] = "-"; - j++; - } - uxid[j] = md5HEX.charAt(i); - } - return uxid.join(""); - }; - return GA; - }()); - AliMNS.GA = GA; -})(AliMNS || (AliMNS = {})); -/// -/// -var AliMNS; -/// -/// -(function (AliMNS) { - var MNSTopic = /** @class */ (function (_super) { - __extends(MNSTopic, _super); - function MNSTopic(account, region) { - var _this = _super.call(this, account, region) || this; - _this._patternTopic = "%s://%s.mns.%s.aliyuncs.com/topics/"; - // make url - _this._urlTopic = _this.makeTopicURL(); - return _this; - } - // List all topics. - MNSTopic.prototype.listTopicP = function (prefix, pageSize, pageMarker) { - var headers = {}; - if (prefix) - headers["x-mns-prefix"] = prefix; - if (pageMarker) - headers["x-mns-marker"] = pageMarker; - if (pageSize) - headers["x-mns-ret-number"] = pageSize; - var url = this._urlTopic.slice(0, -1); - debug("GET " + url); - return this._openStack.sendP("GET", url, null, headers); - }; - // Create a topic - MNSTopic.prototype.createTopicP = function (name, options) { - var body = { Topic: "" }; - if (options) - body.Topic = options; - var url = Url.resolve(this._urlTopic, name); - debug("PUT " + url, body); - return this._openStack.sendP("PUT", url, body); - }; - // Delete a topic - MNSTopic.prototype.deleteTopicP = function (name) { - var url = Url.resolve(this._urlTopic, name); - debug("DELETE " + url); - return this._openStack.sendP("DELETE", url); - }; - MNSTopic.prototype.makeTopicURL = function () { - return Util.format(this._patternTopic, this._account.getHttps() ? "https" : "http", this._account.getAccountId(), this._region.toString()); - }; - return MNSTopic; - }(AliMNS.MNS)); - AliMNS.MNSTopic = MNSTopic; -})(AliMNS || (AliMNS = {})); -/// -/// -/// -/// -var AliMNS; -/// -/// -/// -/// -(function (AliMNS) { - // The Topic - var Topic = /** @class */ (function () { - // The constructor. name & account is required. - // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" - function Topic(name, account, region) { - this._region = new AliMNS.Region(AliMNS.City.Hangzhou); - this._pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s"; - this._name = name; - this._account = account; - // region - if (region) { - if (typeof region === "string") - this._region = new AliMNS.Region(region, AliMNS.NetworkType.Public, AliMNS.Zone.China); - else - this._region = region; - } - // make url - this._urlAttr = this.makeAttrURL(); - this._urlSubscription = this.makeSubscriptionURL(); - this._urlPublish = this.makePublishURL(); - // create the OpenStack object - this._openStack = new AliMNS.OpenStack(account); - } - Topic.prototype.getName = function () { return this._name; }; - Topic.prototype.getAccount = function () { return this._account; }; - Topic.prototype.getRegion = function () { return this._region; }; - // 获取Topic的属性值 - Topic.prototype.getAttrsP = function () { - debug("GET " + this._urlAttr); - return this._openStack.sendP("GET", this._urlAttr); - }; - // 设置Topic的属性值 - Topic.prototype.setAttrsP = function (options) { - var body = { Topic: options }; - debug("PUT " + this._urlAttr, body); - return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); - }; - // List all subscriptions. - Topic.prototype.listP = function (prefix, pageSize, pageMarker) { - var headers = {}; - if (prefix) - headers["x-mns-prefix"] = prefix; - if (pageMarker) - headers["x-mns-marker"] = pageMarker; - if (pageSize) - headers["x-mns-ret-number"] = pageSize; - var url = this._urlSubscription.slice(0, -1); - debug("GET " + url); - return this._openStack.sendP("GET", url, null, headers); - }; - Topic.prototype.subscribeP = function (name, endPoint, notifyStrategy, notifyContentFormat, filterTag) { - var body = { - Subscription: { - Endpoint: endPoint - } - }; - if (notifyStrategy) - body.Subscription['NotifyStrategy'] = notifyStrategy; - if (notifyContentFormat) - body.Subscription['NotifyContentFormat'] = notifyContentFormat; - if (filterTag) - body.Subscription['FilterTag'] = filterTag; - var url = Url.resolve(this._urlSubscription, name); - debug("PUT " + url, body); - return this._openStack.sendP("PUT", url, body); - }; - Topic.prototype.unsubscribeP = function (name) { - var url = Url.resolve(this._urlSubscription, name); - debug("DELETE " + url); - return this._openStack.sendP("DELETE", url); - }; - Topic.prototype.publishP = function (msg, b64, tag, attrs, options) { - var msgBlock = { - MessageBody: b64 ? this.utf8ToBase64(msg) : msg - }; - if (tag) - msgBlock.MessageTag = tag; - if (attrs) - msgBlock.MessageAttributes = attrs; - var body = { - Message: msgBlock - }; - debug("POST " + this._urlPublish, body); - this._openStack.accumulateNextGASend("Topic.publishP"); - return this._openStack.sendP("POST", this._urlPublish, body, null, options); - }; - Topic.prototype.utf8ToBase64 = function (src) { - var buf = new Buffer(src, 'utf8'); - return buf.toString('base64'); - }; - Topic.prototype.makeAttrURL = function () { - return Util.format(this._pattern, this._account.getHttps() ? "https" : "http", this._account.getAccountId(), this._region.toString(), this._name); - }; - Topic.prototype.makeSubscriptionURL = function () { - return this.makeAttrURL() + "/subscriptions/"; - }; - Topic.prototype.makePublishURL = function () { - return this.makeAttrURL() + "/messages"; - }; - return Topic; - }()); - AliMNS.Topic = Topic; -})(AliMNS || (AliMNS = {})); -/// -/// -/// -var AliMNS; -/// -/// -/// -(function (AliMNS) { - // The Subscription - var Subscription = /** @class */ (function () { - // The constructor. name & topic is required. - function Subscription(name, topic) { - this._pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s/subscriptions/%s"; - this._name = name; - this._topic = topic; - // make url - this._urlAttr = this.makeAttrURL(); - // create the OpenStack object - this._openStack = new AliMNS.OpenStack(topic.getAccount()); - } - Subscription.prototype.getName = function () { return this._name; }; - Subscription.prototype.getTopic = function () { return this._topic; }; - // 获取Subscription的属性值 - Subscription.prototype.getAttrsP = function () { - debug("GET " + this._urlAttr); - return this._openStack.sendP("GET", this._urlAttr); - }; - // 设置Subscription的属性值 - Subscription.prototype.setAttrsP = function (options) { - var body = { Subscription: options }; - debug("PUT " + this._urlAttr, body); - return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); - }; - Subscription.prototype.makeAttrURL = function () { - return Util.format(this._pattern, this._topic.getAccount().getHttps() ? "https" : "http", this._topic.getAccount().getAccountId(), this._topic.getRegion().toString(), this._topic.getName(), this._name); - }; - Subscription.NotifyStrategy = { - BACKOFF_RETRY: "BACKOFF_RETRY", - EXPONENTIAL_DECAY_RETRY: "EXPONENTIAL_DECAY_RETRY" - }; - Subscription.NotifyContentFormat = { - XML: "XML", - SIMPLIFIED: "SIMPLIFIED" - }; - return Subscription; - }()); - AliMNS.Subscription = Subscription; -})(AliMNS || (AliMNS = {})); - -//# sourceMappingURL=index.js.map diff --git a/ts/exports.ts b/ts/exports.ts index 628f739..d495ef7 100644 --- a/ts/exports.ts +++ b/ts/exports.ts @@ -7,3 +7,4 @@ // Exports the AliMNS module.exports = AliMNS; +export default AliMNS; diff --git a/ts/index.ts b/ts/index.ts new file mode 100644 index 0000000..6734a96 --- /dev/null +++ b/ts/index.ts @@ -0,0 +1,3 @@ +import AliMNS from './exports' + +export default AliMNS; From 21b99de19e98380154ca2e1fe658110c8ba07793 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 10:29:53 +0800 Subject: [PATCH 10/23] feat: refactor --- test/main.js | 62 +++++++++++------------ ts/Account.ts | 11 +++- ts/GA.ts | 20 ++++---- ts/Interfaces.ts | 22 ++++---- ts/MNS.ts | 9 ++-- ts/MNSTopic.ts | 19 ++++--- ts/MQ.ts | 26 ++++++---- ts/MQBatch.ts | 22 ++++---- ts/Msg.ts | 2 - ts/NotifyRecv.ts | 29 ++++++----- ts/OpenStack.ts | 17 ++++--- ts/Region.ts | 2 - ts/Subscription.ts | 122 ++++++++++++++++++++++++--------------------- ts/Topic.ts | 25 ++++++---- ts/exports.ts | 3 +- ts/index.ts | 16 ++++-- 16 files changed, 223 insertions(+), 184 deletions(-) diff --git a/test/main.js b/test/main.js index 79187fb..da01029 100644 --- a/test/main.js +++ b/test/main.js @@ -4,7 +4,7 @@ var assert = require("assert"); var Path = require("path"); var fs = require("fs"); var Promise = require("promise"); -var AliMNS = require(Path.join(__dirname, "../index.js")); +var AliMNS = require(Path.join(__dirname, "../ts/index")); describe('AliMNS-main', function(){ // ali account configuration @@ -23,26 +23,26 @@ describe('AliMNS-main', function(){ } var account = new AliMNS.Account(aliCfg.accountId, aliCfg.keyId, aliCfg.keySecret); var mns = new AliMNS.MNS(account, aliCfg.region); - + describe('Compatible', function(){ it('#MQS', function(){ var AliMQS = AliMNS; var mqs = new AliMQS.MQS(account, aliCfg.region); assert.ok(mqs !== null); }); - + it('#Account.getOwnerId', function(){ var id = account.getOwnerId(); assert.ok(id !== null); }); }); - + describe('MNS', function(){ this.timeout(1000 * 5); - + var mqName = aliCfg.mqName + Math.floor(Math.random() * 10000); var mq = new AliMNS.MQ(mqName, account, aliCfg.region); - + it('#createP', function(done){ mns.createP(mqName, { DelaySeconds: 0, @@ -52,16 +52,16 @@ describe('AliMNS-main', function(){ PollingWaitSeconds: 0 }).then(function(data){ done(); }, done); }); - + it('#listP', function(done){ mns.listP(mqName, 1).then(function(data){ // console.info(data.Queues.Queue); done(); }, done); }); - + it('#setAttrsP & #getAttrsP', function(done){ var testSource = 36; - + mq.setAttrsP({ VisibilityTimeout: testSource }) .then(function(dataSet){ // console.info(dataSet); @@ -73,11 +73,11 @@ describe('AliMNS-main', function(){ }) .then(function(){ done(); }, done); }); - + it('#sendP & #peekP &recvP & #reserveP & #deleteP', function(done){ var testSource = "test message" mq.setRecvTolerance(5.0); - + mq.sendP(testSource) .then(function(dataSent){ // console.info(dataSent); @@ -93,7 +93,7 @@ describe('AliMNS-main', function(){ return mq.deleteP(dataReserved.ChangeVisibility.ReceiptHandle); }) .then(function(){ done(); }, done); }); - + it('#中文字符集', function(done){ var testSource = "中文测试"; var testTarget; @@ -107,7 +107,7 @@ describe('AliMNS-main', function(){ }) .then(function(){done();}, done); }); - + it('#recvP() force timeout', function(done){ mq.setRecvTolerance(-4.8); // negative value to force timeout mq.recvP(5.0) @@ -118,19 +118,19 @@ describe('AliMNS-main', function(){ }) .then(done, done); }); - + it('#deleteP', function(done){ mns.deleteP(mqName) .then(function(){ done(); }, done); }); }); - + describe('MNS-notifyRecv', function(){ this.timeout(1000 * 5); - + var mqName = aliCfg.mqName + Math.floor(Math.random() * 10000); var mq = new AliMNS.MQ(mqName, account, aliCfg.region); - + before(function(done){ mns.createP(mqName, { DelaySeconds: 0, @@ -140,7 +140,7 @@ describe('AliMNS-main', function(){ PollingWaitSeconds: 0 }).then(function(data){ done(); }, done); }); - + it('#notifyRecv', function(done){ var notifyCount = 0, notifyConfirmed = 0; Promise.all([mq.sendP("testA"), mq.sendP("testB"), mq.sendP("testC")]) @@ -155,33 +155,33 @@ describe('AliMNS-main', function(){ notifyConfirmed++; // console.log(dataRecv); } - + if(notifyCount >= 3){ mq.notifyStopP().done(function(){ if(notifyConfirmed >= 3) resolve("notifyRecv task succeed!"); else reject("notifyRecv task failed!"); }); } - + return true; }, 5); }); }) .then(function(){ done(); }, done); }); - + after(function(done){ mns.deleteP(mqName) .then(function(){ done(); }, done); }); }); - + describe('MNS-batchSend', function(){ this.timeout(1000 * 5); - + var mqName = aliCfg.mqName + Math.floor(Math.random() * 10000); var mqBatch = new AliMNS.MQBatch(mqName, account, aliCfg.region); - + before(function(done){ mns.createP(mqName, { DelaySeconds: 0, @@ -191,14 +191,14 @@ describe('AliMNS-main', function(){ PollingWaitSeconds: 0 }).then(function(data){ done(); }, done); }); - + it('#batchSend', function(done){ var msgs = []; for(var i=0;i<5;i++){ var msg = new AliMNS.Msg("BatchSend" + i); msgs.push(msg); } - + mqBatch.sendP(msgs) .then(function(dataSend){ // console.info(dataSend); @@ -206,7 +206,7 @@ describe('AliMNS-main', function(){ }) .then(function(){ done(); }, done); }); - + var readyToDel = []; it('#batchRecv', function(done){ mqBatch.recvP(5, 3) @@ -219,7 +219,7 @@ describe('AliMNS-main', function(){ }) .then(function(){ done(); }, done); }); - + it('#batchPeek', function(done){ mqBatch.peekP(2) .then(function(dataPeek){ @@ -230,15 +230,15 @@ describe('AliMNS-main', function(){ }) .then(function(){ done(); }, done); }); - + it('#batchDelete', function(done){ mqBatch.deleteP(readyToDel) .then(function(){ done(); }, done); }); - + after(function(done){ mns.deleteP(mqName) .then(function(){ done(); }, done); }); }); -}); \ No newline at end of file +}); diff --git a/ts/Account.ts b/ts/Account.ts index c3520b1..18cbfad 100644 --- a/ts/Account.ts +++ b/ts/Account.ts @@ -1,12 +1,12 @@ /// -module AliMNS{ // The Ali account, it holds the key id and secret. export class Account{ constructor(accountId:string, keyId:string, keySecret:string){ this._accountId = accountId; this._keyId = keyId; this._keySecret = keySecret; + this._displayName = 'AliAccount' } public getAccountId(){ return this._accountId; } @@ -16,6 +16,12 @@ module AliMNS{ public setGA(bGA:boolean){ this._bGoogleAnalytics = bGA; } public getHttps(){ return this._bHttps; } public setHttps(bHttps:boolean){ this._bHttps = bHttps; } + public getDisplayName(){return this._displayName;} + public setDisplayName(name: string){this._displayName = name;} + + public displayName = 'AliAccount'; + public id = ''; + public rpDisplayName = 'AliAccount'; // encoding: "hex", "binary" or "base64" public hmac_sha1(text:string, encoding?:string){ @@ -33,5 +39,6 @@ module AliMNS{ private _keySecret: string; // Access key secret private _bGoogleAnalytics = true; // Enable Google Analytics private _bHttps = false; // Default to use http + private _displayName = '' } -} \ No newline at end of file + diff --git a/ts/GA.ts b/ts/GA.ts index a3032c1..cbe70b5 100644 --- a/ts/GA.ts +++ b/ts/GA.ts @@ -1,11 +1,10 @@ declare var gitVersion:any; -module AliMNS{ export class GA{ public constructor(accId:string){ this._gitMark = gitVersion.branch + "." + gitVersion.rev + "@" + gitVersion.hash; this._visitor = UA("UA-75293894-6", this.u2id(accId)); } - + public send(action:string, value:number, url:string){ if(this._bGoogleAnalytics){ if(this._bAccumulated){ @@ -15,7 +14,7 @@ module AliMNS{ if(!this._accumulation[actionPrefixed]) this._accumulation[actionPrefixed] = { value: 0, count: 0 }; this._accumulation[actionPrefixed].value += value; this._accumulation[actionPrefixed].count++; - + if(this._accumulation[actionPrefixed].count >= this._accumutionMax){ this.send(actionPrefixed, this._accumulation[actionPrefixed].value, url); this._accumulation[actionPrefixed].value = 0; @@ -29,32 +28,32 @@ module AliMNS{ } } } - + public accumulateNextSend(prefix:string){ this._bAccumulated = true; this._bAccumulatePrefix = prefix; } - + public disableGA(bDisable?:boolean){ this._bGoogleAnalytics = (!bDisable); } - + private u2id(uid:string){ var cryptoMD5 = CryptoA.createHash("md5"); var md5HEX = cryptoMD5.update(uid).digest("hex"); - + var uxid = new Array(36); for(var i=0,j=0;i -module AliMNS{ - export interface IMNS{ + import {Msg} from "./Msg"; + +export interface IMNS{ // List all mns. listP(prefix?:string, pageSize?:number, pageMarker?:string); // Create a message queue @@ -9,7 +10,7 @@ module AliMNS{ // Delete a message queue deleteP(name:string); } - + export interface IMNSTopic extends IMNS{ // List all topics. listTopicP(prefix?:string, pageSize?:number, pageMarker?:string); @@ -18,7 +19,7 @@ module AliMNS{ // Delete a topic deleteTopicP(name:string); } - + export interface IMQ{ // 获取MQ的属性值 getAttrsP(); @@ -35,7 +36,7 @@ module AliMNS{ // 保留消息 reserveP(receiptHandle:string, reserveSeconds:number); } - + export interface IMQBatch extends IMQ{ // 发送消息 sendP(msg:string | Array, priority?:number, delaySeconds?:number); @@ -46,16 +47,16 @@ module AliMNS{ // 删除消息 deleteP(receiptHandle:string | Array); } - + export interface INotifyRecv{ notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number); notifyStopP(); } - + export interface INotifyRecvBatch extends INotifyRecv{ notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number, numOfMessages?:number); } - + export interface ITopic{ // 获取Topic的属性值 getAttrsP(); @@ -70,15 +71,14 @@ module AliMNS{ // Publish a message. publishP(msg:string, b64: boolean); } - + export interface ISubscription{ // 获取Subscription的属性值 getAttrsP(); // 设置Subscription的属性值 setAttrsP(options:any); } - + export interface ITopicNotify{ notifyP(request:any); } -} \ No newline at end of file diff --git a/ts/MNS.ts b/ts/MNS.ts index c3640ff..15af4b9 100644 --- a/ts/MNS.ts +++ b/ts/MNS.ts @@ -4,9 +4,13 @@ /// -module AliMNS{ // The MNS can list, create, delete, modify the mq. - export class MNS implements IMNS { + import {IMNS} from "./Interfaces"; +import {City, NetworkType, Region, Zone} from "./Region"; +import {OpenStack} from "./OpenStack"; +import {Account} from './Account' + +export class MNS implements IMNS { // The constructor. account: ali account; region: can be "hangzhou", "beijing" or "qingdao", default is "hangzhou" constructor(account:Account, region?:string|Region){ // save the input arguments @@ -67,4 +71,3 @@ module AliMNS{ // For compatible v1.x export var MQS = MNS; -} \ No newline at end of file diff --git a/ts/MNSTopic.ts b/ts/MNSTopic.ts index 5bd192f..71ab11d 100644 --- a/ts/MNSTopic.ts +++ b/ts/MNSTopic.ts @@ -1,14 +1,18 @@ /// /// -module AliMNS{ - export class MNSTopic extends MNS implements IMNSTopic{ + import {MNS} from "./MNS"; +import {IMNSTopic} from "./Interfaces"; +import {Region} from "./Region"; +import {Account} from './Account'; + +export class MNSTopic extends MNS implements IMNSTopic { public constructor(account:Account, region?:string|Region){ super(account, region); // make url this._urlTopic = this.makeTopicURL(); } - + // List all topics. public listTopicP(prefix?:string, pageSize?:number, pageMarker?:string){ var headers = {}; @@ -19,7 +23,7 @@ module AliMNS{ debug("GET " + url); return this._openStack.sendP("GET", url, null, headers); } - + // Create a topic public createTopicP(name:string, options?:any){ var body = { Topic: "" }; @@ -28,22 +32,21 @@ module AliMNS{ debug("PUT " + url, body); return this._openStack.sendP("PUT", url, body); } - + // Delete a topic public deleteTopicP(name:string){ var url = Url.resolve(this._urlTopic, name); debug("DELETE " + url); return this._openStack.sendP("DELETE", url); } - + private makeTopicURL(){ return Util.format(this._patternTopic, this._account.getHttps()?"https":"http", this._account.getAccountId(), this._region.toString()); } - + private _patternTopic = "%s://%s.mns.%s.aliyuncs.com/topics/"; private _urlTopic:String; } -} \ No newline at end of file diff --git a/ts/MQ.ts b/ts/MQ.ts index 13f247f..8c3e1cd 100644 --- a/ts/MQ.ts +++ b/ts/MQ.ts @@ -4,9 +4,14 @@ /// /// -module AliMNS{ // The MQ - export class MQ implements IMQ, INotifyRecv{ + import {OpenStack} from "./OpenStack"; +import {IMQ, INotifyRecv} from "./Interfaces"; +import {City, NetworkType, Region, Zone} from "./Region"; +import {Account} from './Account'; +import {NotifyRecv} from "./NotifyRecv"; + +export class MQ implements IMQ, INotifyRecv{ // The constructor. name & account is required. // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" constructor(name:string, account:Account, region?:string|Region){ @@ -25,7 +30,7 @@ module AliMNS{ // create the OpenStack object this._openStack = new OpenStack(account); } - + public getName(){ return this._name; } public getAccount(){ return this._account; } public getRegion(){ return this._region; } @@ -45,9 +50,9 @@ module AliMNS{ // 发送消息 public sendP(msg:string, priority?:number, delaySeconds?:number){ - + var b64 = this.utf8ToBase64(msg); - + var body :any = { Message: { MessageBody: b64 } }; if(!isNaN(priority)) body.Message.Priority = priority; if(!isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; @@ -56,7 +61,7 @@ module AliMNS{ this._openStack.accumulateNextGASend("MQ.sendP"); return this._openStack.sendP("POST", this._url, body); } - + // 接收消息容忍时间(秒) public getRecvTolerance(){ return this._recvTolerance; } public setRecvTolerance(value:number){ this._recvTolerance = value; } @@ -132,7 +137,7 @@ module AliMNS{ public notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number){ // lazy create if(this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); - + return this._notifyRecv.notifyRecv(cb, waitSeconds || 5); } @@ -141,17 +146,17 @@ module AliMNS{ if(this._notifyRecv === null) return Promise.resolve(0); else return this._notifyRecv.notifyStopP(); } - + protected utf8ToBase64(src){ var buf = new Buffer(src, 'utf8'); return buf.toString('base64'); } - + protected base64ToUtf8(src){ var buf = new Buffer(src, 'base64'); return buf.toString('utf8'); } - + protected decodeB64Messages(data:any){ if(data && data.Message && data.Message.MessageBody){ data.Message.MessageBody = this.base64ToUtf8(data.Message.MessageBody); @@ -181,4 +186,3 @@ module AliMNS{ private _urlAttr: string; // mq attr url private _pattern = "%s://%s.mns.%s.aliyuncs.com/queues/%s"; } -} \ No newline at end of file diff --git a/ts/MQBatch.ts b/ts/MQBatch.ts index 1ab61a7..7d1aa58 100644 --- a/ts/MQBatch.ts +++ b/ts/MQBatch.ts @@ -2,8 +2,13 @@ /// /// -module AliMNS{ - export class MQBatch extends MQ implements IMQBatch, INotifyRecvBatch{ + import {IMQBatch, INotifyRecvBatch} from "./Interfaces"; +import {MQ} from "./MQ"; +import {Account} from './Account' +import {Msg} from "./Msg"; +import {NotifyRecv} from "./NotifyRecv"; + +export class MQBatch extends MQ implements IMQBatch, INotifyRecvBatch{ constructor(name:string, account:Account, region?:string){ super(name, account, region); } @@ -37,9 +42,9 @@ module AliMNS{ var url = this._url; url += "?numOfMessages=" + numOfMessages; if(waitSeconds) url += "&waitseconds=" + waitSeconds; - + debug("GET " + url); - + return new Promise(function(resolve, reject){ // use the timeout mechanism inside the request module var options = { timeout: 1000 * self._recvTolerance }; @@ -103,16 +108,16 @@ module AliMNS{ return this._openStack.sendP("DELETE", this._url, body); } } - + // 消息通知.每当有消息收到时,都调用cb回调函数 // 如果cb返回true,那么将删除消息,否则保留消息 public notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number, numOfMessages?:number){ // lazy create if(this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); - + return this._notifyRecv.notifyRecv(cb, waitSeconds || 5, numOfMessages || 16); } - + protected decodeB64Messages(data:any){ if(data && data.Messages && data.Messages.Message){ if(!Util.isArray(data.Messages.Message)){ @@ -129,7 +134,6 @@ module AliMNS{ super.decodeB64Messages(data); } } - + protected _notifyRecv: INotifyRecvBatch = null; } -} \ No newline at end of file diff --git a/ts/Msg.ts b/ts/Msg.ts index f6e40e0..e8ba6fc 100644 --- a/ts/Msg.ts +++ b/ts/Msg.ts @@ -1,4 +1,3 @@ -module AliMNS { // The Message class export class Msg{ @@ -20,4 +19,3 @@ module AliMNS { // message delay to visible, in seconds private _delaySeconds = 0; } -} diff --git a/ts/NotifyRecv.ts b/ts/NotifyRecv.ts index fdbb058..e41bfca 100644 --- a/ts/NotifyRecv.ts +++ b/ts/NotifyRecv.ts @@ -1,14 +1,18 @@ /// /// -module AliMNS{ - export class NotifyRecv implements INotifyRecvBatch { + import {GA} from "./GA"; +import {IMQ, IMQBatch, INotifyRecvBatch} from "./Interfaces"; +import {Account} from './Account' +import {MQ} from "./MQ"; + +export class NotifyRecv implements INotifyRecvBatch { public constructor(mq: IMQ){ this._mq = mq; // emitter this._emitter = new Events.EventEmitter(); - + // Google Analytics if(mq instanceof MQ){ var account = mq.getAccount(); @@ -16,7 +20,7 @@ module AliMNS{ this._ga.disableGA(!account.getGA()); } } - + // 消息通知.每当有消息收到时,都调用cb回调函数 // 如果cb返回true,那么将删除消息,否则保留消息 public notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number, numOfMessages?:number){ @@ -33,7 +37,7 @@ module AliMNS{ return Promise.resolve(this._evStopped); // Google Analytics if(this._ga) this._ga.send("NotifyRecv.notifyStopP", 0, ""); - + this._signalSTOP = true; return new Promise((resolve)=>{ this._emitter.once(this._evStopped, ()=>{ @@ -95,7 +99,7 @@ module AliMNS{ }); } catch(ex){ - // ignore any ex + // ignore any ex console.warn(ex); // 过5秒重试 debug("Retry after 5 seconds"); @@ -104,7 +108,7 @@ module AliMNS{ }, 5000); } } - + private deleteP(dataRecv:any){ if(dataRecv){ if(dataRecv.Message){ @@ -126,13 +130,13 @@ module AliMNS{ return Promise.resolve(dataRecv); } } - + private _mq: IMQ; private _signalSTOP = true; - + private _evStopped = "AliMNS_MQ_NOTIFY_STOPPED"; private _emitter:any; - + // 连续timeout计数器 // 在某种未知的原因下,网络底层链接断了 // 这时在程序内部的重试无法促使网络重连,以后的重试都是徒劳的 @@ -140,7 +144,6 @@ module AliMNS{ // 这时抛出NetworkBroken异常 private _timeoutCount = 0; private _timeoutMax = 128; - + private _ga:GA = null; - } -} \ No newline at end of file +} diff --git a/ts/OpenStack.ts b/ts/OpenStack.ts index 37d6d70..bc35b6d 100644 --- a/ts/OpenStack.ts +++ b/ts/OpenStack.ts @@ -2,9 +2,11 @@ /// /// -module AliMNS{ // the ali open interface stack protocol - export class OpenStack{ + import {GA} from "./GA"; +import {Account} from "./Account"; + +export class OpenStack{ constructor(account:Account){ this._account = account; // xml builder @@ -25,7 +27,7 @@ module AliMNS{ if(body) req.body = this._xmlBuilder.create(body).toString(); req.headers = this.makeHeaders(method, url, headers, req.body); - + // combines options if(options){ for(var opt in options){ @@ -57,19 +59,19 @@ module AliMNS{ else return Promise.reject(response.statusCode); } }); - + // google analytics if(this._gaRGA % 1000000 == 0) this._ga.send("OpenStack.sendP", this._gaRGA, url); this._gaRGA++; - + return ret; } - + public accumulateNextGASend(prefix:string){ this._ga.accumulateNextSend(prefix); } - + public disableGA(bDisable?:boolean){ this._ga.disableGA(bDisable); } @@ -148,4 +150,3 @@ module AliMNS{ private _ga: GA; private _gaRGA = 0; // Reduce Google Analysis sending rate } -} \ No newline at end of file diff --git a/ts/Region.ts b/ts/Region.ts index 2bd715b..e2aef97 100644 --- a/ts/Region.ts +++ b/ts/Region.ts @@ -1,4 +1,3 @@ -module AliMNS{ export class Region{ constructor(city?:string|City, network?:string|NetworkType, zone?:string|Zone){ @@ -190,4 +189,3 @@ module AliMNS{ interface HashTable{ [key: number] : T; } -} \ No newline at end of file diff --git a/ts/Subscription.ts b/ts/Subscription.ts index 4db40fa..0351155 100644 --- a/ts/Subscription.ts +++ b/ts/Subscription.ts @@ -2,61 +2,69 @@ /// /// -module AliMNS{ - // The Subscription - export class Subscription implements ISubscription{ - // The constructor. name & topic is required. - constructor(name:string, topic:Topic){ - this._name = name; - this._topic = topic; - - // make url - this._urlAttr = this.makeAttrURL(); - - // create the OpenStack object - this._openStack = new OpenStack(topic.getAccount()); - } - - public getName(){ return this._name; } - public getTopic(){ return this._topic; } - - // 获取Subscription的属性值 - public getAttrsP(){ - debug("GET " + this._urlAttr); - return this._openStack.sendP("GET", this._urlAttr); - } - - // 设置Subscription的属性值 - public setAttrsP(options:any){ - var body = { Subscription: options }; - debug("PUT " + this._urlAttr, body); - return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); - } - - public static NotifyStrategy = { - BACKOFF_RETRY : "BACKOFF_RETRY", - EXPONENTIAL_DECAY_RETRY : "EXPONENTIAL_DECAY_RETRY" - }; - - public static NotifyContentFormat = { - XML : "XML", - SIMPLIFIED : "SIMPLIFIED" - }; - - private makeAttrURL(){ - return Util.format(this._pattern, - this._topic.getAccount().getHttps()?"https":"http", - this._topic.getAccount().getAccountId(), - this._topic.getRegion().toString(), - this._topic.getName(), - this._name); - } - - protected _openStack: OpenStack; - - private _name: string; - private _topic: Topic; - private _urlAttr: string; // Subscription attr url - private _pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s/subscriptions/%s"; +// The Subscription +import {OpenStack} from "./OpenStack"; +import {Topic} from "./Topic"; +import {ISubscription} from "./Interfaces"; +import {Account} from './Account' + +export class Subscription implements ISubscription { + // The constructor. name & topic is required. + constructor(name: string, topic: Topic) { + this._name = name; + this._topic = topic; + + // make url + this._urlAttr = this.makeAttrURL(); + + // create the OpenStack object + this._openStack = new OpenStack(topic.getAccount()); + } + + public getName() { + return this._name; + } + + public getTopic() { + return this._topic; + } + + // 获取Subscription的属性值 + public getAttrsP() { + debug("GET " + this._urlAttr); + return this._openStack.sendP("GET", this._urlAttr); } -} \ No newline at end of file + + // 设置Subscription的属性值 + public setAttrsP(options: any) { + var body = {Subscription: options}; + debug("PUT " + this._urlAttr, body); + return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); + } + + public static NotifyStrategy = { + BACKOFF_RETRY: "BACKOFF_RETRY", + EXPONENTIAL_DECAY_RETRY: "EXPONENTIAL_DECAY_RETRY" + }; + + public static NotifyContentFormat = { + XML: "XML", + SIMPLIFIED: "SIMPLIFIED" + }; + + private makeAttrURL() { + return Util.format(this._pattern, + this._topic.getAccount().getHttps() ? "https" : "http", + this._topic.getAccount().getAccountId(), + this._topic.getRegion().toString(), + this._topic.getName(), + this._name); + } + + protected _openStack: OpenStack; + + private _name: string; + private _topic: Topic; + private _urlAttr: string; // Subscription attr url + private _pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s/subscriptions/%s"; +} diff --git a/ts/Topic.ts b/ts/Topic.ts index 1239613..c37b8b1 100644 --- a/ts/Topic.ts +++ b/ts/Topic.ts @@ -3,9 +3,13 @@ /// /// -module AliMNS{ // The Topic - export class Topic implements ITopic{ + import {OpenStack} from "./OpenStack"; +import {City, NetworkType, Region, Zone} from "./Region"; +import {ITopic} from "./Interfaces"; +import {Account} from "./Account" + +export class Topic implements ITopic{ // The constructor. name & account is required. // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" constructor(name:string, account:Account, region?:string|Region){ @@ -25,7 +29,7 @@ module AliMNS{ // create the OpenStack object this._openStack = new OpenStack(account); } - + public getName(){ return this._name; } public getAccount(){ return this._account; } public getRegion(){ return this._region; } @@ -42,7 +46,7 @@ module AliMNS{ debug("PUT " + this._urlAttr, body); return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); } - + // List all subscriptions. public listP(prefix?:string, pageSize?:number, pageMarker?:string){ var headers = {}; @@ -53,7 +57,7 @@ module AliMNS{ debug("GET " + url); return this._openStack.sendP("GET", url, null, headers); } - + public subscribeP(name:string, endPoint:string, notifyStrategy?:string, notifyContentFormat?:string, filterTag?:string){ var body = { Subscription: { @@ -67,13 +71,13 @@ module AliMNS{ debug("PUT " + url, body); return this._openStack.sendP("PUT", url, body); } - + public unsubscribeP(name:string){ var url = Url.resolve(this._urlSubscription, name); debug("DELETE " + url); return this._openStack.sendP("DELETE", url); } - + public publishP(msg:string, b64:boolean, tag?:string, attrs?: any, options?:any){ var msgBlock:any = { MessageBody: b64?this.utf8ToBase64(msg):msg @@ -85,13 +89,13 @@ module AliMNS{ var body = { Message: msgBlock }; - + debug("POST " + this._urlPublish, body); this._openStack.accumulateNextGASend("Topic.publishP"); return this._openStack.sendP("POST", this._urlPublish, body, null, options); } - + protected utf8ToBase64(src){ var buf = new Buffer(src, 'utf8'); return buf.toString('base64'); @@ -108,7 +112,7 @@ module AliMNS{ private makeSubscriptionURL(){ return this.makeAttrURL() + "/subscriptions/"; } - + private makePublishURL(){ return this.makeAttrURL() + "/messages"; } @@ -123,4 +127,3 @@ module AliMNS{ private _urlAttr: string; // topic attr url private _pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s"; } -} diff --git a/ts/exports.ts b/ts/exports.ts index d495ef7..9b89ba5 100644 --- a/ts/exports.ts +++ b/ts/exports.ts @@ -6,5 +6,4 @@ /// // Exports the AliMNS -module.exports = AliMNS; -export default AliMNS; +// module.exports = AliMNS; diff --git a/ts/index.ts b/ts/index.ts index 6734a96..ade12fd 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,3 +1,13 @@ -import AliMNS from './exports' - -export default AliMNS; +export * from './Account' +export * from './GA' +export * from './Interfaces' +export * from './MNS' +export * from './MNSTopic' +export * from './MQ' +export * from './MQBatch' +export * from './Msg' +export * from './NotifyRecv' +export * from './OpenStack' +export * from './Region' +export * from './Subscription' +export * from './Topic' From 96a145ef70312c6443903c6652a302289638ccef Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 10:51:24 +0800 Subject: [PATCH 11/23] fix: reference errors --- ts/Account.ts | 3 + ts/GA.ts | 107 +++++++------ ts/MNS.ts | 115 +++++++------- ts/MNSTopic.ts | 7 +- ts/MQ.ts | 324 +++++++++++++++++++------------------ ts/MQBatch.ts | 214 +++++++++++++------------ ts/NotifyRecv.ts | 238 +++++++++++++-------------- ts/OpenStack.ts | 263 +++++++++++++++--------------- ts/Region.ts | 388 +++++++++++++++++++++++++-------------------- ts/Subscription.ts | 7 + ts/Topic.ts | 214 +++++++++++++------------ ts/ali-mns.ts | 18 +-- ts/tsconfig.json | 3 +- 13 files changed, 1006 insertions(+), 895 deletions(-) diff --git a/ts/Account.ts b/ts/Account.ts index 18cbfad..78b3641 100644 --- a/ts/Account.ts +++ b/ts/Account.ts @@ -1,5 +1,8 @@ /// +import CryptoA from 'crypto' + + // The Ali account, it holds the key id and secret. export class Account{ constructor(accountId:string, keyId:string, keySecret:string){ diff --git a/ts/GA.ts b/ts/GA.ts index cbe70b5..50fd574 100644 --- a/ts/GA.ts +++ b/ts/GA.ts @@ -1,65 +1,68 @@ -declare var gitVersion:any; - export class GA{ - public constructor(accId:string){ - this._gitMark = gitVersion.branch + "." + gitVersion.rev + "@" + gitVersion.hash; - this._visitor = UA("UA-75293894-6", this.u2id(accId)); - } +import UA from 'universal-analytics' +import CryptoA from 'crypto' - public send(action:string, value:number, url:string){ - if(this._bGoogleAnalytics){ - if(this._bAccumulated){ - // 累积多个一起发送 - this._bAccumulated = false; - var actionPrefixed = this._bAccumulatePrefix + ":" + action; - if(!this._accumulation[actionPrefixed]) this._accumulation[actionPrefixed] = { value: 0, count: 0 }; - this._accumulation[actionPrefixed].value += value; - this._accumulation[actionPrefixed].count++; +declare var gitVersion: any; - if(this._accumulation[actionPrefixed].count >= this._accumutionMax){ - this.send(actionPrefixed, this._accumulation[actionPrefixed].value, url); - this._accumulation[actionPrefixed].value = 0; - this._accumulation[actionPrefixed].count = 0; - } - } - else{ - var args = { dl: url.replace(this._rgxAccId, "//0.") }; - // catagory, action, label, value, params - this._visitor.event("AliMNS", action, this._gitMark, value, args).send(); +export class GA { + public constructor(accId: string) { + this._gitMark = gitVersion.branch + "." + gitVersion.rev + "@" + gitVersion.hash; + this._visitor = UA("UA-75293894-6", this.u2id(accId)); + } + + public send(action: string, value: number, url: string) { + if (this._bGoogleAnalytics) { + if (this._bAccumulated) { + // 累积多个一起发送 + this._bAccumulated = false; + var actionPrefixed = this._bAccumulatePrefix + ":" + action; + if (!this._accumulation[actionPrefixed]) this._accumulation[actionPrefixed] = {value: 0, count: 0}; + this._accumulation[actionPrefixed].value += value; + this._accumulation[actionPrefixed].count++; + + if (this._accumulation[actionPrefixed].count >= this._accumutionMax) { + this.send(actionPrefixed, this._accumulation[actionPrefixed].value, url); + this._accumulation[actionPrefixed].value = 0; + this._accumulation[actionPrefixed].count = 0; } + } else { + var args = {dl: url.replace(this._rgxAccId, "//0.")}; + // catagory, action, label, value, params + this._visitor.event("AliMNS", action, this._gitMark, value, args).send(); } } + } - public accumulateNextSend(prefix:string){ - this._bAccumulated = true; - this._bAccumulatePrefix = prefix; - } + public accumulateNextSend(prefix: string) { + this._bAccumulated = true; + this._bAccumulatePrefix = prefix; + } - public disableGA(bDisable?:boolean){ - this._bGoogleAnalytics = (!bDisable); - } + public disableGA(bDisable?: boolean) { + this._bGoogleAnalytics = (!bDisable); + } - private u2id(uid:string){ - var cryptoMD5 = CryptoA.createHash("md5"); - var md5HEX = cryptoMD5.update(uid).digest("hex"); + private u2id(uid: string) { + var cryptoMD5 = CryptoA.createHash("md5"); + var md5HEX = cryptoMD5.update(uid).digest("hex"); - var uxid = new Array(36); - for(var i=0,j=0;i /// /// - - - // The MNS can list, create, delete, modify the mq. - import {IMNS} from "./Interfaces"; +import Url from 'url' +import Util from 'util' +import debug0 from "debug" +// The MNS can list, create, delete, modify the mq. +import {IMNS} from "./Interfaces"; import {City, NetworkType, Region, Zone} from "./Region"; import {OpenStack} from "./OpenStack"; import {Account} from './Account' -export class MNS implements IMNS { - // The constructor. account: ali account; region: can be "hangzhou", "beijing" or "qingdao", default is "hangzhou" - constructor(account:Account, region?:string|Region){ - // save the input arguments - this._account = account; - // region - if(region){ - if(typeof region === "string") this._region = new Region(region, NetworkType.Public, Zone.China); - else this._region = region; - } - - // make url - this._url = this.makeURL(); +const debug = debug0('ali-mns-ts') - // create the OpenStack object - this._openStack = new OpenStack(account); +export class MNS implements IMNS { + // The constructor. account: ali account; region: can be "hangzhou", "beijing" or "qingdao", default is "hangzhou" + constructor(account: Account, region?: string | Region) { + // save the input arguments + this._account = account; + // region + if (region) { + if (typeof region === "string") this._region = new Region(region, NetworkType.Public, Zone.China); + else this._region = region; } - // List all mns. - public listP(prefix?:string, pageSize?:number, pageMarker?:string){ - var headers = {}; - if(prefix) headers["x-mns-prefix"] = prefix; - if(pageMarker) headers["x-mns-marker"] = pageMarker; - if(pageSize) headers["x-mns-ret-number"] = pageSize; - var url = this._url.slice(0, -1); - debug("GET " + url); - return this._openStack.sendP("GET", url, null, headers); - } + // make url + this._url = this.makeURL(); - // Create a message queue - public createP(name:string, options?:any){ - var body = { Queue: "" }; - if(options) body.Queue = options; - var url = Url.resolve(this._url, name); - debug("PUT " + url, body); - return this._openStack.sendP("PUT", url, body); - } + // create the OpenStack object + this._openStack = new OpenStack(account); + } - // Delete a message queue - public deleteP(name:string){ - var url = Url.resolve(this._url, name); - debug("DELETE " + url); - return this._openStack.sendP("DELETE", url); - } + // List all mns. + public listP(prefix?: string, pageSize?: number, pageMarker?: string) { + var headers = {}; + if (prefix) headers["x-mns-prefix"] = prefix; + if (pageMarker) headers["x-mns-marker"] = pageMarker; + if (pageSize) headers["x-mns-ret-number"] = pageSize; + var url = this._url.slice(0, -1); + debug("GET " + url); + return this._openStack.sendP("GET", url, null, headers); + } - private makeURL(){ - return Util.format(this._pattern, - this._account.getHttps()?"https":"http", - this._account.getAccountId(), - this._region.toString()); - } + // Create a message queue + public createP(name: string, options?: any) { + var body = {Queue: ""}; + if (options) body.Queue = options; + var url = Url.resolve(this._url, name); + debug("PUT " + url, body); + return this._openStack.sendP("PUT", url, body); + } - protected _account:Account; // Ali account - protected _region = new Region(City.Hangzhou); - private _pattern = "%s://%s.mns.%s.aliyuncs.com/queues/"; - private _url:string; // mns url - protected _openStack: OpenStack; + // Delete a message queue + public deleteP(name: string) { + var url = Url.resolve(this._url, name); + debug("DELETE " + url); + return this._openStack.sendP("DELETE", url); } - // For compatible v1.x - export var MQS = MNS; + private makeURL() { + return Util.format(this._pattern, + this._account.getHttps() ? "https" : "http", + this._account.getAccountId(), + this._region.toString()); + } + + protected _account: Account; // Ali account + protected _region = new Region(City.Hangzhou); + private _pattern = "%s://%s.mns.%s.aliyuncs.com/queues/"; + private _url: string; // mns url + protected _openStack: OpenStack; +} + +// For compatible v1.x +export var MQS = MNS; diff --git a/ts/MNSTopic.ts b/ts/MNSTopic.ts index 71ab11d..2e9348e 100644 --- a/ts/MNSTopic.ts +++ b/ts/MNSTopic.ts @@ -6,6 +6,11 @@ import {IMNSTopic} from "./Interfaces"; import {Region} from "./Region"; import {Account} from './Account'; +import debug0 from "debug" +import Url from "url"; +import Util from "util"; +const debug = debug0('ali-mns'); + export class MNSTopic extends MNS implements IMNSTopic { public constructor(account:Account, region?:string|Region){ super(account, region); @@ -48,5 +53,5 @@ export class MNSTopic extends MNS implements IMNSTopic { } private _patternTopic = "%s://%s.mns.%s.aliyuncs.com/topics/"; - private _urlTopic:String; + private _urlTopic:string; } diff --git a/ts/MQ.ts b/ts/MQ.ts index 8c3e1cd..b6c720a 100644 --- a/ts/MQ.ts +++ b/ts/MQ.ts @@ -4,185 +4,203 @@ /// /// - // The MQ - import {OpenStack} from "./OpenStack"; +// The MQ +import {OpenStack} from "./OpenStack"; import {IMQ, INotifyRecv} from "./Interfaces"; import {City, NetworkType, Region, Zone} from "./Region"; import {Account} from './Account'; import {NotifyRecv} from "./NotifyRecv"; - -export class MQ implements IMQ, INotifyRecv{ - // The constructor. name & account is required. - // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" - constructor(name:string, account:Account, region?:string|Region){ - this._name = name; - this._account = account; - // region - if(region){ - if(typeof region === "string") this._region = new Region(region, NetworkType.Public, Zone.China); - else this._region = region; - } - - // make url - this._urlAttr = this.makeAttrURL(); - this._url = this.makeURL(); - - // create the OpenStack object - this._openStack = new OpenStack(account); +import Promise from 'promise' + +import debug0 from "debug" +import * as Util from "util"; +const debug = debug0('ali-mns'); + + +export class MQ implements IMQ, INotifyRecv { + // The constructor. name & account is required. + // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" + constructor(name: string, account: Account, region?: string | Region) { + this._name = name; + this._account = account; + // region + if (region) { + if (typeof region === "string") this._region = new Region(region, NetworkType.Public, Zone.China); + else this._region = region; } - public getName(){ return this._name; } - public getAccount(){ return this._account; } - public getRegion(){ return this._region; } + // make url + this._urlAttr = this.makeAttrURL(); + this._url = this.makeURL(); - // 获取MQ的属性值 - public getAttrsP(){ - debug("GET " + this._urlAttr); - return this._openStack.sendP("GET", this._urlAttr); - } + // create the OpenStack object + this._openStack = new OpenStack(account); + } - // 设置MQ的属性值 - public setAttrsP(options:any){ - var body = { Queue: options }; - debug("PUT " + this._urlAttr, body); - return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); - } + public getName() { + return this._name; + } - // 发送消息 - public sendP(msg:string, priority?:number, delaySeconds?:number){ + public getAccount() { + return this._account; + } - var b64 = this.utf8ToBase64(msg); + public getRegion() { + return this._region; + } - var body :any = { Message: { MessageBody: b64 } }; - if(!isNaN(priority)) body.Message.Priority = priority; - if(!isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; + // 获取MQ的属性值 + public getAttrsP() { + debug("GET " + this._urlAttr); + return this._openStack.sendP("GET", this._urlAttr); + } - debug("POST " + this._url, body); - this._openStack.accumulateNextGASend("MQ.sendP"); - return this._openStack.sendP("POST", this._url, body); - } + // 设置MQ的属性值 + public setAttrsP(options: any) { + var body = {Queue: options}; + debug("PUT " + this._urlAttr, body); + return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); + } - // 接收消息容忍时间(秒) - public getRecvTolerance(){ return this._recvTolerance; } - public setRecvTolerance(value:number){ this._recvTolerance = value; } - - // 接收消息 - // waitSeconds, 最久等待多少秒0~30 - public recvP(waitSeconds?:number){ - var _this = this; - var url = this._url; - if(waitSeconds) url += "?waitseconds=" + waitSeconds; - debug("GET " + url); - - return new Promise(function(resolve, reject){ - // use the timeout mechanism inside the request module - var options = { timeout: 1000 * _this._recvTolerance }; - if(waitSeconds) options.timeout += (1000 * waitSeconds); - - _this._openStack.accumulateNextGASend("MQ.recvP"); - _this._openStack.sendP("GET", url, null, null, options).done(function(data){ - debug(data); - if(data && data.Message && data.Message.MessageBody){ - data.Message.MessageBody = _this.base64ToUtf8(data.Message.MessageBody) - } - resolve(data); - }, function(ex){ - // for compatible with 1.x, still use literal "timeout" - if(ex.code === "ETIMEDOUT"){ - var exTimeout:any = new Error("timeout"); - exTimeout.innerException = ex; - exTimeout.code = ex.code; - reject(exTimeout); - } - else{ - reject(ex); - } - }); - }); - } + // 发送消息 + public sendP(msg: string, priority?: number, delaySeconds?: number) { + + var b64 = this.utf8ToBase64(msg); + + var body: any = {Message: {MessageBody: b64}}; + if (!isNaN(priority)) body.Message.Priority = priority; + if (!isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; + + debug("POST " + this._url, body); + this._openStack.accumulateNextGASend("MQ.sendP"); + return this._openStack.sendP("POST", this._url, body); + } - // 检查消息 - public peekP(){ - var _this = this; - var url = this._url + "?peekonly=true"; - debug("GET " + url); - this._openStack.accumulateNextGASend("MQ.peekP"); - return this._openStack.sendP("GET", url).then(function(data){ + // 接收消息容忍时间(秒) + public getRecvTolerance() { + return this._recvTolerance; + } + + public setRecvTolerance(value: number) { + this._recvTolerance = value; + } + + // 接收消息 + // waitSeconds, 最久等待多少秒0~30 + public recvP(waitSeconds?: number) { + var _this = this; + var url = this._url; + if (waitSeconds) url += "?waitseconds=" + waitSeconds; + debug("GET " + url); + + return new Promise(function (resolve, reject) { + // use the timeout mechanism inside the request module + var options = {timeout: 1000 * _this._recvTolerance}; + if (waitSeconds) options.timeout += (1000 * waitSeconds); + + _this._openStack.accumulateNextGASend("MQ.recvP"); + _this._openStack.sendP("GET", url, null, null, options).done(function (data) { debug(data); - _this.decodeB64Messages(data); - return data; + if (data && data.Message && data.Message.MessageBody) { + data.Message.MessageBody = _this.base64ToUtf8(data.Message.MessageBody) + } + resolve(data); + }, function (ex) { + // for compatible with 1.x, still use literal "timeout" + if (ex.code === "ETIMEDOUT") { + var exTimeout: any = new Error("timeout"); + exTimeout.innerException = ex; + exTimeout.code = ex.code; + reject(exTimeout); + } else { + reject(ex); + } }); - } - - // 删除消息 - public deleteP(receiptHandle:string){ - var url = this._url + "?ReceiptHandle=" + receiptHandle; - debug("DELETE " + url); - this._openStack.accumulateNextGASend("MQ.deleteP"); - return this._openStack.sendP("DELETE", url); - } + }); + } - // 保留消息 - public reserveP(receiptHandle:string, reserveSeconds:number){ - var url = this._url - + "?ReceiptHandle=" + receiptHandle - + "&VisibilityTimeout=" + reserveSeconds; - debug("PUT " + url); - this._openStack.accumulateNextGASend("MQ.reserveP"); - return this._openStack.sendP("PUT", url); - } + // 检查消息 + public peekP() { + var _this = this; + var url = this._url + "?peekonly=true"; + debug("GET " + url); + this._openStack.accumulateNextGASend("MQ.peekP"); + return this._openStack.sendP("GET", url).then(function (data) { + debug(data); + _this.decodeB64Messages(data); + return data; + }); + } - // 消息通知.每当有消息收到时,都调用cb回调函数 - // 如果cb返回true,那么将删除消息,否则保留消息 - public notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number){ - // lazy create - if(this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); + // 删除消息 + public deleteP(receiptHandle: string) { + var url = this._url + "?ReceiptHandle=" + receiptHandle; + debug("DELETE " + url); + this._openStack.accumulateNextGASend("MQ.deleteP"); + return this._openStack.sendP("DELETE", url); + } - return this._notifyRecv.notifyRecv(cb, waitSeconds || 5); - } + // 保留消息 + public reserveP(receiptHandle: string, reserveSeconds: number) { + var url = this._url + + "?ReceiptHandle=" + receiptHandle + + "&VisibilityTimeout=" + reserveSeconds; + debug("PUT " + url); + this._openStack.accumulateNextGASend("MQ.reserveP"); + return this._openStack.sendP("PUT", url); + } - // 停止消息通知 - public notifyStopP(){ - if(this._notifyRecv === null) return Promise.resolve(0); - else return this._notifyRecv.notifyStopP(); - } + // 消息通知.每当有消息收到时,都调用cb回调函数 + // 如果cb返回true,那么将删除消息,否则保留消息 + public notifyRecv(cb: (ex: Error, msg: any) => Boolean, waitSeconds?: number) { + // lazy create + if (this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); - protected utf8ToBase64(src){ - var buf = new Buffer(src, 'utf8'); - return buf.toString('base64'); - } + return this._notifyRecv.notifyRecv(cb, waitSeconds || 5); + } - protected base64ToUtf8(src){ - var buf = new Buffer(src, 'base64'); - return buf.toString('utf8'); - } + // 停止消息通知 + public notifyStopP() { + if (this._notifyRecv === null) return Promise.resolve(0); + else return this._notifyRecv.notifyStopP(); + } - protected decodeB64Messages(data:any){ - if(data && data.Message && data.Message.MessageBody){ - data.Message.MessageBody = this.base64ToUtf8(data.Message.MessageBody); - } - } + protected utf8ToBase64(src) { + var buf = new Buffer(src, 'utf8'); + return buf.toString('base64'); + } - private makeAttrURL(){ - return Util.format(this._pattern, - this._account.getHttps()?"https":"http", - this._account.getAccountId(), - this._region.toString(), - this._name); - } + protected base64ToUtf8(src) { + var buf = new Buffer(src, 'base64'); + return buf.toString('utf8'); + } - private makeURL(){ - return this.makeAttrURL() + "/messages"; + protected decodeB64Messages(data: any) { + if (data && data.Message && data.Message.MessageBody) { + data.Message.MessageBody = this.base64ToUtf8(data.Message.MessageBody); } + } - protected _url:string; // mq url - protected _openStack: OpenStack; - protected _notifyRecv: INotifyRecv = null; - protected _recvTolerance = 5; // 接收消息的容忍时间(单位:秒) + private makeAttrURL() { + return Util.format(this._pattern, + this._account.getHttps() ? "https" : "http", + this._account.getAccountId(), + this._region.toString(), + this._name); + } - private _name: string; - private _region = new Region(City.Hangzhou); - private _account: Account; - private _urlAttr: string; // mq attr url - private _pattern = "%s://%s.mns.%s.aliyuncs.com/queues/%s"; + private makeURL() { + return this.makeAttrURL() + "/messages"; } + + protected _url: string; // mq url + protected _openStack: OpenStack; + protected _notifyRecv: INotifyRecv = null; + protected _recvTolerance = 5; // 接收消息的容忍时间(单位:秒) + + private _name: string; + private _region = new Region(City.Hangzhou); + private _account: Account; + private _urlAttr: string; // mq attr url + private _pattern = "%s://%s.mns.%s.aliyuncs.com/queues/%s"; +} diff --git a/ts/MQBatch.ts b/ts/MQBatch.ts index 7d1aa58..881fdc4 100644 --- a/ts/MQBatch.ts +++ b/ts/MQBatch.ts @@ -2,138 +2,136 @@ /// /// - import {IMQBatch, INotifyRecvBatch} from "./Interfaces"; +import {IMQBatch, INotifyRecvBatch} from "./Interfaces"; import {MQ} from "./MQ"; import {Account} from './Account' import {Msg} from "./Msg"; import {NotifyRecv} from "./NotifyRecv"; +import Util from "util"; +import Promise from 'promise' +import debug0 from "debug" +const debug = debug0('ali-mns'); -export class MQBatch extends MQ implements IMQBatch, INotifyRecvBatch{ - constructor(name:string, account:Account, region?:string){ - super(name, account, region); - } - - public sendP(msg:string | Array, priority?:number, delaySeconds?:number){ - if(typeof msg === "string"){ - return super.sendP(msg, priority, delaySeconds); - } - else{ - var body : any = { Messages: { '#list': [] } }; - for(var i=0;i, priority?: number, delaySeconds?: number) { + if (typeof msg === "string") { + return super.sendP(msg, priority, delaySeconds); + } else { + var body: any = {Messages: {'#list': []}}; + for (var i = 0; i < msg.length; i++) { + var m: Msg = msg[i]; + var b64 = this.utf8ToBase64(m.getMsg()); + var xMsg: any = {Message: {MessageBody: b64}}; + xMsg.Message.Priority = m.getPriority(); + xMsg.Message.DelaySeconds = m.getDelaySeconds(); - debug("POST " + this._url, body); - this._openStack.accumulateNextGASend("MQBatch.sendP"); - return this._openStack.sendP("POST", this._url, body); + body.Messages['#list'].push(xMsg); } - } - public recvP(waitSeconds?:number, numOfMessages?:number){ - if(numOfMessages === undefined) numOfMessages = 16; - if(numOfMessages && numOfMessages > 1){ - var self = this; - var url = this._url; - url += "?numOfMessages=" + numOfMessages; - if(waitSeconds) url += "&waitseconds=" + waitSeconds; + debug("POST " + this._url, body); + this._openStack.accumulateNextGASend("MQBatch.sendP"); + return this._openStack.sendP("POST", this._url, body); + } + } - debug("GET " + url); + public recvP(waitSeconds?: number, numOfMessages?: number) { + if (numOfMessages === undefined) numOfMessages = 16; + if (numOfMessages && numOfMessages > 1) { + var self = this; + var url = this._url; + url += "?numOfMessages=" + numOfMessages; + if (waitSeconds) url += "&waitseconds=" + waitSeconds; - return new Promise(function(resolve, reject){ - // use the timeout mechanism inside the request module - var options = { timeout: 1000 * self._recvTolerance }; - if(waitSeconds) options.timeout += (1000 * waitSeconds); + debug("GET " + url); - self._openStack.accumulateNextGASend("MQBatch.recvP"); - self._openStack.sendP("GET", url, null, null, options).done(function(data){ - debug(data); - self.decodeB64Messages(data); - resolve(data); - }, function(ex){ - // for compatible with 1.x, still use literal "timeout" - if(ex.code === "ETIMEDOUT"){ - var exTimeout:any = new Error("timeout"); - exTimeout.innerException = ex; - exTimeout.code = ex.code; - reject(exTimeout); - } - else{ - reject(ex); - } - }); - }) - } - else{ - return super.recvP(waitSeconds); - } - } + return new Promise(function (resolve, reject) { + // use the timeout mechanism inside the request module + var options = {timeout: 1000 * self._recvTolerance}; + if (waitSeconds) options.timeout += (1000 * waitSeconds); - public peekP(numOfMessages?:number){ - if(numOfMessages === undefined) numOfMessages = 16; - if(numOfMessages && numOfMessages > 1){ - var self = this; - var url = this._url + "?peekonly=true"; - url += "&numOfMessages=" + numOfMessages; - debug("GET " + url); - this._openStack.accumulateNextGASend("MQBatch.peekP"); - return this._openStack.sendP("GET", url).then(function(data){ + self._openStack.accumulateNextGASend("MQBatch.recvP"); + self._openStack.sendP("GET", url, null, null, options).done(function (data) { debug(data); self.decodeB64Messages(data); - return data; + resolve(data); + }, function (ex) { + // for compatible with 1.x, still use literal "timeout" + if (ex.code === "ETIMEDOUT") { + var exTimeout: any = new Error("timeout"); + exTimeout.innerException = ex; + exTimeout.code = ex.code; + reject(exTimeout); + } else { + reject(ex); + } }); - } - else{ - return super.peekP(); - } + }) + } else { + return super.recvP(waitSeconds); } + } - public deleteP(receiptHandle:string | Array){ - if(typeof receiptHandle === "string") { - super.deleteP(receiptHandle); - } - else{ - debug("DELETE " + this._url, receiptHandle); - var body : any = { ReceiptHandles: { '#list': [] } }; - for(var i=0;i 1) { + var self = this; + var url = this._url + "?peekonly=true"; + url += "&numOfMessages=" + numOfMessages; + debug("GET " + url); + this._openStack.accumulateNextGASend("MQBatch.peekP"); + return this._openStack.sendP("GET", url).then(function (data) { + debug(data); + self.decodeB64Messages(data); + return data; + }); + } else { + return super.peekP(); + } + } + + public deleteP(receiptHandle: string | Array) { + if (typeof receiptHandle === "string") { + super.deleteP(receiptHandle); + } else { + debug("DELETE " + this._url, receiptHandle); + var body: any = {ReceiptHandles: {'#list': []}}; + for (var i = 0; i < receiptHandle.length; i++) { + var r: any = {ReceiptHandle: receiptHandle[i]}; + body.ReceiptHandles['#list'].push(r); } + this._openStack.accumulateNextGASend("MQBatch.deleteP"); + return this._openStack.sendP("DELETE", this._url, body); } + } - // 消息通知.每当有消息收到时,都调用cb回调函数 - // 如果cb返回true,那么将删除消息,否则保留消息 - public notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number, numOfMessages?:number){ - // lazy create - if(this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); + // 消息通知.每当有消息收到时,都调用cb回调函数 + // 如果cb返回true,那么将删除消息,否则保留消息 + public notifyRecv(cb: (ex: Error, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { + // lazy create + if (this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); - return this._notifyRecv.notifyRecv(cb, waitSeconds || 5, numOfMessages || 16); - } + return this._notifyRecv.notifyRecv(cb, waitSeconds || 5, numOfMessages || 16); + } - protected decodeB64Messages(data:any){ - if(data && data.Messages && data.Messages.Message){ - if(!Util.isArray(data.Messages.Message)){ - // Just a single message, use an array to hold it - var msg = data.Messages.Message; - data.Messages.Message = [msg]; - } - for(var i=0;i /// - import {GA} from "./GA"; +import {GA} from "./GA"; import {IMQ, IMQBatch, INotifyRecvBatch} from "./Interfaces"; import {Account} from './Account' import {MQ} from "./MQ"; +import Events from 'events'; -export class NotifyRecv implements INotifyRecvBatch { - public constructor(mq: IMQ){ - this._mq = mq; +import Promise from 'promise' +import debug0 from "debug" - // emitter - this._emitter = new Events.EventEmitter(); +const debug = debug0('ali-mns'); - // Google Analytics - if(mq instanceof MQ){ - var account = mq.getAccount(); - this._ga = new GA(account.getAccountId()); - this._ga.disableGA(!account.getGA()); - } - } +export class NotifyRecv implements INotifyRecvBatch { + public constructor(mq: IMQ) { + this._mq = mq; - // 消息通知.每当有消息收到时,都调用cb回调函数 - // 如果cb返回true,那么将删除消息,否则保留消息 - public notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number, numOfMessages?:number){ - this._signalSTOP = false; - this._timeoutCount = 0; - this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - // Google Analytics - if(this._ga) this._ga.send("NotifyRecv.notifyRecv", 0, ""); - } + // emitter + this._emitter = new Events.EventEmitter(); - // 停止消息通知 - public notifyStopP(){ - if(this._signalSTOP) - return Promise.resolve(this._evStopped); - // Google Analytics - if(this._ga) this._ga.send("NotifyRecv.notifyStopP", 0, ""); - - this._signalSTOP = true; - return new Promise((resolve)=>{ - this._emitter.once(this._evStopped, ()=>{ - resolve(this._evStopped); - }); + // Google Analytics + if (mq instanceof MQ) { + var account = mq.getAccount(); + this._ga = new GA(account.getAccountId()); + this._ga.disableGA(!account.getGA()); + } + } + + // 消息通知.每当有消息收到时,都调用cb回调函数 + // 如果cb返回true,那么将删除消息,否则保留消息 + public notifyRecv(cb: (ex: Error, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { + this._signalSTOP = false; + this._timeoutCount = 0; + this.notifyRecvInternal(cb, waitSeconds, numOfMessages); + // Google Analytics + if (this._ga) this._ga.send("NotifyRecv.notifyRecv", 0, ""); + } + + // 停止消息通知 + public notifyStopP() { + if (this._signalSTOP) + return Promise.resolve(this._evStopped); + // Google Analytics + if (this._ga) this._ga.send("NotifyRecv.notifyStopP", 0, ""); + + this._signalSTOP = true; + return new Promise((resolve) => { + this._emitter.once(this._evStopped, () => { + resolve(this._evStopped); }); + }); + } + + private notifyRecvInternal(cb: (ex: Error, msg: any) => Boolean, waitSeconds: number, numOfMessages?: number) { + // This signal will be triggered by notifyStopP() + if (this._signalSTOP) { + debug("notifyStopped"); + this._emitter.emit(this._evStopped); + return; } - private notifyRecvInternal(cb:(ex:Error, msg:any)=>Boolean, waitSeconds:number, numOfMessages?:number){ - // This signal will be triggered by notifyStopP() - if(this._signalSTOP){ - debug("notifyStopped"); - this._emitter.emit(this._evStopped); - return; - } - - debug("notifyRecvInternal()"); - - try { - var mqBatch : IMQBatch = this._mq; - mqBatch.recvP(waitSeconds, numOfMessages).done((dataRecv)=> { - try { - debug(dataRecv); - this._timeoutCount = 0; - if (cb(null, dataRecv)) { - this.deleteP(dataRecv) - .done(null, (ex)=> { - console.log(ex); - }); - } - } - catch (ex) { - // ignore any ex throw from cb - console.warn(ex); - } - this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - }, (ex)=> { - debug(ex); - if ((!ex.Error) || (ex.Error.Code !== "MessageNotExist")) { - cb(ex, null); + debug("notifyRecvInternal()"); + + try { + var mqBatch: IMQBatch = this._mq; + mqBatch.recvP(waitSeconds, numOfMessages).done((dataRecv) => { + try { + debug(dataRecv); + this._timeoutCount = 0; + if (cb(null, dataRecv)) { + this.deleteP(dataRecv) + .done(null, (ex) => { + console.log(ex); + }); } + } catch (ex) { + // ignore any ex throw from cb + console.warn(ex); + } + this.notifyRecvInternal(cb, waitSeconds, numOfMessages); + }, (ex) => { + debug(ex); + if ((!ex.Error) || (ex.Error.Code !== "MessageNotExist")) { + cb(ex, null); + } - if(ex) { - if (ex.message === "timeout") { - this._timeoutCount++; - if (this._timeoutCount > this._timeoutMax) { - // 极度可能网络底层断了 - cb(new Error("NetworkBroken"), null); - } - } - else if (ex.Error && ex.Error.Code === "MessageNotExist") { - this._timeoutCount = 0; + if (ex) { + if (ex.message === "timeout") { + this._timeoutCount++; + if (this._timeoutCount > this._timeoutMax) { + // 极度可能网络底层断了 + cb(new Error("NetworkBroken"), null); } + } else if (ex.Error && ex.Error.Code === "MessageNotExist") { + this._timeoutCount = 0; } + } - process.nextTick(()=> { - this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - }); - }); - } - catch(ex){ - // ignore any ex - console.warn(ex); - // 过5秒重试 - debug("Retry after 5 seconds"); - setTimeout(()=>{ + process.nextTick(() => { this.notifyRecvInternal(cb, waitSeconds, numOfMessages); - }, 5000); - } + }); + }); + } catch (ex) { + // ignore any ex + console.warn(ex); + // 过5秒重试 + debug("Retry after 5 seconds"); + setTimeout(() => { + this.notifyRecvInternal(cb, waitSeconds, numOfMessages); + }, 5000); } - - private deleteP(dataRecv:any){ - if(dataRecv){ - if(dataRecv.Message){ - return this._mq.deleteP(dataRecv.Message.ReceiptHandle); + } + + private deleteP(dataRecv: any) { + if (dataRecv) { + if (dataRecv.Message) { + return this._mq.deleteP(dataRecv.Message.ReceiptHandle); + } else if (dataRecv.Messages && dataRecv.Messages.Message) { + var rhs = []; + for (var i = 0; i < dataRecv.Messages.Message.length; i++) { + rhs.push(dataRecv.Messages.Message[i].ReceiptHandle); } - else if(dataRecv.Messages && dataRecv.Messages.Message){ - var rhs = []; - for(var i=0;i /// - // the ali open interface stack protocol - import {GA} from "./GA"; +// the ali open interface stack protocol +import {GA} from "./GA"; import {Account} from "./Account"; +import XmlBuilder from 'xmlbuilder'; -export class OpenStack{ - constructor(account:Account){ - this._account = account; - // xml builder - this._xmlBuilder = XmlBuilder; - // Google Analytics - this._ga = new GA(account.getAccountId()); - this._ga.disableGA(!account.getGA()); - } +import Promise from 'promise' +import debug0 from "debug" +import Util from "util"; +import Url from "url"; - // Send the request - // method: GET, POST, PUT, DELETE - // url: request url - // body: optional, request body - // head: optional, request heads - // options: optional, request options - public sendP(method:string, url:string, body?:any, headers?:any, options?:any){ - var req :any = { method:method, url:url }; - if(body) req.body = this._xmlBuilder.create(body).toString(); - - req.headers = this.makeHeaders(method, url, headers, req.body); - - // combines options - if(options){ - for(var opt in options){ - if(opt === "method" || opt === "url" || opt === "uri" || opt === "body" || opt === "headers") - continue; // skip these options for avoid conflict to other arguments - else if(options.hasOwnProperty(opt)) - req[opt] = options[opt]; - } - } +const debug = debug0('ali-mns'); - var ret = Request['requestP'](req).then((response)=>{ - // convert the body from xml to json - return Xml2js.parseStringP(response.body, {explicitArray: false}) - .then((bodyJSON)=> { - response.bodyJSON = bodyJSON; - return response; - }, ()=>{ - // cannot parse as xml - response.bodyJSON = response.body; - return response; - }); - }).then((response)=>{ - if(response.statusCode < 400) { // 200 okay! - if(response.bodyJSON) return response.bodyJSON; - else return response.statusCode; - } - else { - if(response.bodyJSON) return Promise.reject(response.bodyJSON); - else return Promise.reject(response.statusCode); - } - }); - - // google analytics - if(this._gaRGA % 1000000 == 0) - this._ga.send("OpenStack.sendP", this._gaRGA, url); - this._gaRGA++; - - return ret; - } - public accumulateNextGASend(prefix:string){ - this._ga.accumulateNextSend(prefix); - } +var Xml2js: any = require("xml2js"); +Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); - public disableGA(bDisable?:boolean){ - this._ga.disableGA(bDisable); - } +export class OpenStack { + constructor(account: Account) { + this._account = account; + // xml builder + this._xmlBuilder = XmlBuilder; + // Google Analytics + this._ga = new GA(account.getAccountId()); + this._ga.disableGA(!account.getGA()); + } - private makeHeaders(mothod:string, url:string, headers:any, body?:string){ - // if not exist, create one - if(!headers) headers = { - "User-Agent": "Node/" + process.version + " (" + process.platform + ")" - }; - - var contentMD5 = ""; - var contentType = ""; - if(body){ - if(!headers["Content-Length"]) headers["Content-Length"] = (new Buffer(body, 'utf-8')).length; - if(!headers["Content-Type"]) headers["Content-Type"] = this._contentType; - contentType = headers["Content-Type"]; - contentMD5 = this._account.b64md5(body); - headers["Content-MD5"] = contentMD5; + // Send the request + // method: GET, POST, PUT, DELETE + // url: request url + // body: optional, request body + // head: optional, request heads + // options: optional, request options + public sendP(method: string, url: string, body?: any, headers?: any, options?: any) { + var req: any = {method: method, url: url}; + if (body) req.body = this._xmlBuilder.create(body).toString(); + + req.headers = this.makeHeaders(method, url, headers, req.body); + + // combines options + if (options) { + for (var opt in options) { + if (opt === "method" || opt === "url" || opt === "uri" || opt === "body" || opt === "headers") + continue; // skip these options for avoid conflict to other arguments + else if (options.hasOwnProperty(opt)) + req[opt] = options[opt]; } + } - // `Date` & `Host` will be added by request automatically - if(!headers["x-mns-version"]) headers["x-mns-version"] = this._version; - - // lowercase & sort & extract the x-mns- - var headsLower :any = {}; - var keys : Array = []; - for(var key in headers) { - if (headers.hasOwnProperty(key)) { - var lower = key.toLowerCase(); - keys.push(lower); - headsLower[lower] = headers[key]; - } + var ret = Request['requestP'](req).then((response) => { + // convert the body from xml to json + return Xml2js.parseStringP(response.body, {explicitArray: false}) + .then((bodyJSON) => { + response.bodyJSON = bodyJSON; + return response; + }, () => { + // cannot parse as xml + response.bodyJSON = response.body; + return response; + }); + }).then((response) => { + if (response.statusCode < 400) { // 200 okay! + if (response.bodyJSON) return response.bodyJSON; + else return response.statusCode; + } else { + if (response.bodyJSON) return Promise.reject(response.bodyJSON); + else return Promise.reject(response.statusCode); } + }); - keys.sort(); + // google analytics + if (this._gaRGA % 1000000 == 0) + this._ga.send("OpenStack.sendP", this._gaRGA, url); + this._gaRGA++; - var mnsHeaders = ""; - for(var i in keys){ - var k = keys[i]; - if(typeof k === "string" && k.indexOf("x-mns-") === 0){ - mnsHeaders += Util.format("%s:%s\n", k, headsLower[k]); - } - } + return ret; + } - var tm = (new Date()).toUTCString(); - var mnsURL:any = Url.parse(url); - headers.Date = tm; - headers.Authorization = this.authorize(mothod, mnsURL.path, - mnsHeaders, contentType, contentMD5, tm); - headers.Host = mnsURL.host; + public accumulateNextGASend(prefix: string) { + this._ga.accumulateNextSend(prefix); + } - return headers; + public disableGA(bDisable?: boolean) { + this._ga.disableGA(bDisable); + } + + private makeHeaders(mothod: string, url: string, headers: any, body?: string) { + // if not exist, create one + if (!headers) headers = { + "User-Agent": "Node/" + process.version + " (" + process.platform + ")" + }; + + var contentMD5 = ""; + var contentType = ""; + if (body) { + if (!headers["Content-Length"]) headers["Content-Length"] = (new Buffer(body, 'utf-8')).length; + if (!headers["Content-Type"]) headers["Content-Type"] = this._contentType; + contentType = headers["Content-Type"]; + contentMD5 = this._account.b64md5(body); + headers["Content-MD5"] = contentMD5; } - // ali mns authorize header - private authorize(httpVerb:string, mnsURI:string, mnsHeaders:any, contentType:string, contentMD5:string, tm:string){ - return Util.format(this._patternMNS, this._account.getKeyId(), - this.signature(httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm)); + // `Date` & `Host` will be added by request automatically + if (!headers["x-mns-version"]) headers["x-mns-version"] = this._version; + + // lowercase & sort & extract the x-mns- + var headsLower: any = {}; + var keys: Array = []; + for (var key in headers) { + if (headers.hasOwnProperty(key)) { + var lower = key.toLowerCase(); + keys.push(lower); + headsLower[lower] = headers[key]; + } } - // ali mns signature - private signature(httpVerb:string, mnsURI:string, mnsHeaders:string, contentType:string, contentMD5:string, tm:string){ - var text = Util.format(this._patternSign, - httpVerb, contentMD5, contentType, tm, - mnsHeaders, mnsURI); + keys.sort(); - return this._account.hmac_sha1(text, "base64"); + var mnsHeaders = ""; + for (var i in keys) { + var k = keys[i]; + if (typeof k === "string" && k.indexOf("x-mns-") === 0) { + mnsHeaders += Util.format("%s:%s\n", k, headsLower[k]); + } } - private _account:Account; - private _patternMNS = "MNS %s:%s"; - private _patternSign = "%s\n%s\n%s\n%s\n%s%s"; - private _xmlBuilder: any; - private _contentType = "text/xml;charset=utf-8"; - private _version = "2015-06-06"; - private _ga: GA; - private _gaRGA = 0; // Reduce Google Analysis sending rate + var tm = (new Date()).toUTCString(); + var mnsURL: any = Url.parse(url); + headers.Date = tm; + headers.Authorization = this.authorize(mothod, mnsURL.path, + mnsHeaders, contentType, contentMD5, tm); + headers.Host = mnsURL.host; + + return headers; + } + + // ali mns authorize header + private authorize(httpVerb: string, mnsURI: string, mnsHeaders: any, contentType: string, contentMD5: string, tm: string) { + return Util.format(this._patternMNS, this._account.getKeyId(), + this.signature(httpVerb, mnsURI, mnsHeaders, contentType, contentMD5, tm)); } + + // ali mns signature + private signature(httpVerb: string, mnsURI: string, mnsHeaders: string, contentType: string, contentMD5: string, tm: string) { + var text = Util.format(this._patternSign, + httpVerb, contentMD5, contentType, tm, + mnsHeaders, mnsURI); + + return this._account.hmac_sha1(text, "base64"); + } + + private _account: Account; + private _patternMNS = "MNS %s:%s"; + private _patternSign = "%s\n%s\n%s\n%s\n%s%s"; + private _xmlBuilder: any; + private _contentType = "text/xml;charset=utf-8"; + private _version = "2015-06-06"; + private _ga: GA; + private _gaRGA = 0; // Reduce Google Analysis sending rate +} diff --git a/ts/Region.ts b/ts/Region.ts index e2aef97..e59646a 100644 --- a/ts/Region.ts +++ b/ts/Region.ts @@ -1,191 +1,237 @@ +import Util from "util"; - export class Region{ - constructor(city?:string|City, network?:string|NetworkType, zone?:string|Zone){ - if(network){ - if(typeof network === "string") this._network = network; - else this._network = this.networkToString(network); - } - - if(zone){ - if(typeof zone === "string") this._zone = zone; - else this._zone = this.zoneToString(zone); - } - - if(city){ - if(typeof city === "string") this._city = city; - else{ - this._city = this.cityToString(city); - this._zone = this.cityToZone(city); - } - } - - this.buildString(); - } - - public buildString():void{ - // like "ap-southeast-2-internal-vpc" - this._region = Util.format(this._pattern, this._zone, this._city, this._network); - } - - public toString():string{ - return this._region; +export class Region { + constructor(city?: string | City, network?: string | NetworkType, zone?: string | Zone) { + if (network) { + if (typeof network === "string") this._network = network; + else this._network = this.networkToString(network); } - private networkToString(network:NetworkType):string{ - var value: string; - switch(network){ - case NetworkType.Public: value = ""; break; - case NetworkType.Internal: value = "-internal"; break; - case NetworkType.VPC: value = "-internal-vpc"; break; - default: throw new Error("Unsupported network type value: " + network); - } - return value; - } - - private zoneToString(zone:Zone):string{ - var value:string; - switch(zone){ - case Zone.China: value = "cn"; break; - case Zone.AsiaPacific: value = "ap"; break; - case Zone.UniteState: value = "us"; break; - case Zone.Europe: value = "eu"; break; - case Zone.MiddleEast: value = "me"; break; - default: throw new Error("Unsupported zone value: " + zone); - } - return value; + if (zone) { + if (typeof zone === "string") this._zone = zone; + else this._zone = this.zoneToString(zone); } - private cityToString(city:City):string{ - var value:string; - switch(city){ - case City.Beijing: value = "beijing"; break; - case City.Shanghai: value = "shanghai"; break; - case City.Qingdao: value = "qingdao"; break; - case City.Hangzhou: value = "hangzhou"; break; - case City.Shenzhen: value = "shenzhen"; break; - - case City.Hongkong: value = "hongkong"; break; - - case City.Tokyo: value = "northeast-1"; break; - case City.Singapore: value = "southeast-1"; break; - case City.Sydney: value = "southeast-2"; break; - - case City.Frankfurt: value = "central-1"; break; - - case City.SiliconValley:value = "west-1"; break; - case City.Virginia: value = "east-1"; break; - - case City.Dubai: value = "east-1"; break; - - default: throw new Error("Unsupported city value: " + city); + if (city) { + if (typeof city === "string") this._city = city; + else { + this._city = this.cityToString(city); + this._zone = this.cityToZone(city); } - return value; } - private cityToZone(city:City):string{ - var value:string; - switch(city){ - case City.Beijing: - case City.Shanghai: - case City.Qingdao: - case City.Hangzhou: - case City.Shenzhen: - value = "cn"; - break; - - case City.Hongkong: - value = "cn"; - break; - - case City.Tokyo: - case City.Singapore: - case City.Sydney: - value = "ap"; - break; - - case City.Frankfurt: - value = "eu"; - break; - - case City.SiliconValley: - case City.Virginia: - value = "us"; - break; - - case City.Dubai: - value = "me"; - break; - - default: - throw new Error("Unsupported city value: " + city); - } - return value; - } + this.buildString(); + } - // cn,ap,eu,us,me -> China, Asia Pacific, Europe, Unite State, Middle East - private _zone = "cn"; - // cn: hangzhou, beijing, qingdao, shanghai, shenzhen, - // ap: northeast-1[Tokyo], southeast-1[Singapore], southeast-2[Sydney] - // eu: central-1[Frankfurt] - // us: west-1[Silicon Valley], west-2[Virginia] - // me: east-1[Dubai] - private _city = "hangzhou"; - // public-internal-vpc - private _network = ""; - - // pattern - private _pattern = "%s-%s%s"; - - // region string - private _region = "cn-hangzhou"; + public buildString(): void { + // like "ap-southeast-2-internal-vpc" + this._region = Util.format(this._pattern, this._zone, this._city, this._network); } - export enum NetworkType{ - Public, - Internal, - VPC + public toString(): string { + return this._region; } - export enum Zone{ - China, - AsiaPacific, - Europe, - UniteState, - MiddleEast + private networkToString(network: NetworkType): string { + var value: string; + switch (network) { + case NetworkType.Public: + value = ""; + break; + case NetworkType.Internal: + value = "-internal"; + break; + case NetworkType.VPC: + value = "-internal-vpc"; + break; + default: + throw new Error("Unsupported network type value: " + network); + } + return value; } - export enum Area{ - UniteState = 1, - Germany = 49, - Australia = 61, - Singapore = 65, - Japan = 81, - China = 86, - Hongkong = 852, - UnitedArabEmirates = 971 + private zoneToString(zone: Zone): string { + var value: string; + switch (zone) { + case Zone.China: + value = "cn"; + break; + case Zone.AsiaPacific: + value = "ap"; + break; + case Zone.UniteState: + value = "us"; + break; + case Zone.Europe: + value = "eu"; + break; + case Zone.MiddleEast: + value = "me"; + break; + default: + throw new Error("Unsupported zone value: " + zone); + } + return value; } - export enum City{ - // China - Beijing = (Area.China << 16) | 10, - Shanghai = (Area.China << 16) | 21, - Qingdao = (Area.China << 16) | 532, - Hangzhou = (Area.China << 16) | 571, - Shenzhen = (Area.China << 16) | 755, - Hongkong = (Area.Hongkong << 16) | 0, - // AsiaPacific - Tokyo = (Area.Japan << 16) | 3, - Singapore = (Area.Singapore << 16) | 0, - Sydney = (Area.Australia << 16) | 2, - // Europe - Frankfurt = (Area.Germany << 16) | 335, - // UniteState - SiliconValley = (Area.UniteState << 16) | 415, // SanFrancisco - Virginia = (Area.UniteState << 16) | 571, // Reston - // MiddleEast - Dubai = (Area.UnitedArabEmirates << 16) | 4 + private cityToString(city: City): string { + var value: string; + switch (city) { + case City.Beijing: + value = "beijing"; + break; + case City.Shanghai: + value = "shanghai"; + break; + case City.Qingdao: + value = "qingdao"; + break; + case City.Hangzhou: + value = "hangzhou"; + break; + case City.Shenzhen: + value = "shenzhen"; + break; + + case City.Hongkong: + value = "hongkong"; + break; + + case City.Tokyo: + value = "northeast-1"; + break; + case City.Singapore: + value = "southeast-1"; + break; + case City.Sydney: + value = "southeast-2"; + break; + + case City.Frankfurt: + value = "central-1"; + break; + + case City.SiliconValley: + value = "west-1"; + break; + case City.Virginia: + value = "east-1"; + break; + + case City.Dubai: + value = "east-1"; + break; + + default: + throw new Error("Unsupported city value: " + city); + } + return value; } - interface HashTable{ - [key: number] : T; + private cityToZone(city: City): string { + var value: string; + switch (city) { + case City.Beijing: + case City.Shanghai: + case City.Qingdao: + case City.Hangzhou: + case City.Shenzhen: + value = "cn"; + break; + + case City.Hongkong: + value = "cn"; + break; + + case City.Tokyo: + case City.Singapore: + case City.Sydney: + value = "ap"; + break; + + case City.Frankfurt: + value = "eu"; + break; + + case City.SiliconValley: + case City.Virginia: + value = "us"; + break; + + case City.Dubai: + value = "me"; + break; + + default: + throw new Error("Unsupported city value: " + city); + } + return value; } + + // cn,ap,eu,us,me -> China, Asia Pacific, Europe, Unite State, Middle East + private _zone = "cn"; + // cn: hangzhou, beijing, qingdao, shanghai, shenzhen, + // ap: northeast-1[Tokyo], southeast-1[Singapore], southeast-2[Sydney] + // eu: central-1[Frankfurt] + // us: west-1[Silicon Valley], west-2[Virginia] + // me: east-1[Dubai] + private _city = "hangzhou"; + // public-internal-vpc + private _network = ""; + + // pattern + private _pattern = "%s-%s%s"; + + // region string + private _region = "cn-hangzhou"; +} + +export enum NetworkType { + Public, + Internal, + VPC +} + +export enum Zone { + China, + AsiaPacific, + Europe, + UniteState, + MiddleEast +} + +export enum Area { + UniteState = 1, + Germany = 49, + Australia = 61, + Singapore = 65, + Japan = 81, + China = 86, + Hongkong = 852, + UnitedArabEmirates = 971 +} + +export enum City { + // China + Beijing = (Area.China << 16) | 10, + Shanghai = (Area.China << 16) | 21, + Qingdao = (Area.China << 16) | 532, + Hangzhou = (Area.China << 16) | 571, + Shenzhen = (Area.China << 16) | 755, + Hongkong = (Area.Hongkong << 16) | 0, + // AsiaPacific + Tokyo = (Area.Japan << 16) | 3, + Singapore = (Area.Singapore << 16) | 0, + Sydney = (Area.Australia << 16) | 2, + // Europe + Frankfurt = (Area.Germany << 16) | 335, + // UniteState + SiliconValley = (Area.UniteState << 16) | 415, // SanFrancisco + Virginia = (Area.UniteState << 16) | 571, // Reston + // MiddleEast + Dubai = (Area.UnitedArabEmirates << 16) | 4 +} + +interface HashTable { + [key: number]: T; +} diff --git a/ts/Subscription.ts b/ts/Subscription.ts index 0351155..d843f23 100644 --- a/ts/Subscription.ts +++ b/ts/Subscription.ts @@ -8,6 +8,13 @@ import {Topic} from "./Topic"; import {ISubscription} from "./Interfaces"; import {Account} from './Account' +import Promise from 'promise'; + +import debug0 from "debug" +import Util from "util"; + +const debug = debug0('ali-mns'); + export class Subscription implements ISubscription { // The constructor. name & topic is required. constructor(name: string, topic: Topic) { diff --git a/ts/Topic.ts b/ts/Topic.ts index c37b8b1..fc5998d 100644 --- a/ts/Topic.ts +++ b/ts/Topic.ts @@ -3,127 +3,143 @@ /// /// - // The Topic - import {OpenStack} from "./OpenStack"; +// The Topic +import {OpenStack} from "./OpenStack"; import {City, NetworkType, Region, Zone} from "./Region"; import {ITopic} from "./Interfaces"; import {Account} from "./Account" -export class Topic implements ITopic{ - // The constructor. name & account is required. - // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" - constructor(name:string, account:Account, region?:string|Region){ - this._name = name; - this._account = account; - // region - if(region){ - if(typeof region === "string") this._region = new Region(region, NetworkType.Public, Zone.China); - else this._region = region; - } +import Promise from 'promise'; + +import debug0 from "debug" +import Util from "util"; +import Url from "url"; - // make url - this._urlAttr = this.makeAttrURL(); - this._urlSubscription = this.makeSubscriptionURL(); - this._urlPublish = this.makePublishURL(); +const debug = debug0('ali-mns'); - // create the OpenStack object - this._openStack = new OpenStack(account); +export class Topic implements ITopic { + // The constructor. name & account is required. + // region can be "hangzhou", "beijing" or "qingdao", the default is "hangzhou" + constructor(name: string, account: Account, region?: string | Region) { + this._name = name; + this._account = account; + // region + if (region) { + if (typeof region === "string") this._region = new Region(region, NetworkType.Public, Zone.China); + else this._region = region; } - public getName(){ return this._name; } - public getAccount(){ return this._account; } - public getRegion(){ return this._region; } + // make url + this._urlAttr = this.makeAttrURL(); + this._urlSubscription = this.makeSubscriptionURL(); + this._urlPublish = this.makePublishURL(); - // 获取Topic的属性值 - public getAttrsP(){ - debug("GET " + this._urlAttr); - return this._openStack.sendP("GET", this._urlAttr); - } + // create the OpenStack object + this._openStack = new OpenStack(account); + } - // 设置Topic的属性值 - public setAttrsP(options:any){ - var body = { Topic: options }; - debug("PUT " + this._urlAttr, body); - return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); - } + public getName() { + return this._name; + } - // List all subscriptions. - public listP(prefix?:string, pageSize?:number, pageMarker?:string){ - var headers = {}; - if(prefix) headers["x-mns-prefix"] = prefix; - if(pageMarker) headers["x-mns-marker"] = pageMarker; - if(pageSize) headers["x-mns-ret-number"] = pageSize; - var url = this._urlSubscription.slice(0, -1); - debug("GET " + url); - return this._openStack.sendP("GET", url, null, headers); - } + public getAccount() { + return this._account; + } - public subscribeP(name:string, endPoint:string, notifyStrategy?:string, notifyContentFormat?:string, filterTag?:string){ - var body = { - Subscription: { - Endpoint: endPoint - } - }; - if(notifyStrategy) body.Subscription['NotifyStrategy'] = notifyStrategy; - if(notifyContentFormat) body.Subscription['NotifyContentFormat'] = notifyContentFormat; - if(filterTag) body.Subscription['FilterTag'] = filterTag; - var url = Url.resolve(this._urlSubscription, name); - debug("PUT " + url, body); - return this._openStack.sendP("PUT", url, body); - } + public getRegion() { + return this._region; + } - public unsubscribeP(name:string){ - var url = Url.resolve(this._urlSubscription, name); - debug("DELETE " + url); - return this._openStack.sendP("DELETE", url); - } + // 获取Topic的属性值 + public getAttrsP() { + debug("GET " + this._urlAttr); + return this._openStack.sendP("GET", this._urlAttr); + } + + // 设置Topic的属性值 + public setAttrsP(options: any) { + var body = {Topic: options}; + debug("PUT " + this._urlAttr, body); + return this._openStack.sendP("PUT", this._urlAttr + "?metaoverride=true", body); + } + + // List all subscriptions. + public listP(prefix?: string, pageSize?: number, pageMarker?: string) { + var headers = {}; + if (prefix) headers["x-mns-prefix"] = prefix; + if (pageMarker) headers["x-mns-marker"] = pageMarker; + if (pageSize) headers["x-mns-ret-number"] = pageSize; + var url = this._urlSubscription.slice(0, -1); + debug("GET " + url); + return this._openStack.sendP("GET", url, null, headers); + } - public publishP(msg:string, b64:boolean, tag?:string, attrs?: any, options?:any){ - var msgBlock:any = { - MessageBody: b64?this.utf8ToBase64(msg):msg - }; + public subscribeP(name: string, endPoint: string, notifyStrategy?: string, notifyContentFormat?: string, filterTag?: string) { + var body = { + Subscription: { + Endpoint: endPoint + } + }; + if (notifyStrategy) body.Subscription['NotifyStrategy'] = notifyStrategy; + if (notifyContentFormat) body.Subscription['NotifyContentFormat'] = notifyContentFormat; + if (filterTag) body.Subscription['FilterTag'] = filterTag; + var url = Url.resolve(this._urlSubscription, name); + debug("PUT " + url, body); + return this._openStack.sendP("PUT", url, body); + } - if(tag) msgBlock.MessageTag = tag; - if(attrs) msgBlock.MessageAttributes = attrs; + public unsubscribeP(name: string) { + var url = Url.resolve(this._urlSubscription, name); + debug("DELETE " + url); + return this._openStack.sendP("DELETE", url); + } - var body = { - Message: msgBlock - }; + public publishP(msg: string, b64: boolean, tag?: string, attrs?: any, options?: any) { + var msgBlock: any = { + MessageBody: b64 ? this.utf8ToBase64(msg) : msg + }; - debug("POST " + this._urlPublish, body); + if (tag) msgBlock.MessageTag = tag; + if (attrs) msgBlock.MessageAttributes = attrs; - this._openStack.accumulateNextGASend("Topic.publishP"); - return this._openStack.sendP("POST", this._urlPublish, body, null, options); - } + var body = { + Message: msgBlock + }; - protected utf8ToBase64(src){ - var buf = new Buffer(src, 'utf8'); - return buf.toString('base64'); - } + debug("POST " + this._urlPublish, body); - private makeAttrURL(){ - return Util.format(this._pattern, - this._account.getHttps()?"https":"http", - this._account.getAccountId(), - this._region.toString(), - this._name); - } + this._openStack.accumulateNextGASend("Topic.publishP"); + return this._openStack.sendP("POST", this._urlPublish, body, null, options); + } - private makeSubscriptionURL(){ - return this.makeAttrURL() + "/subscriptions/"; - } + protected utf8ToBase64(src) { + var buf = new Buffer(src, 'utf8'); + return buf.toString('base64'); + } - private makePublishURL(){ - return this.makeAttrURL() + "/messages"; - } + private makeAttrURL() { + return Util.format(this._pattern, + this._account.getHttps() ? "https" : "http", + this._account.getAccountId(), + this._region.toString(), + this._name); + } - private _urlSubscription:string; // topic subscription url - private _urlPublish:string; // publish message url - protected _openStack: OpenStack; + private makeSubscriptionURL() { + return this.makeAttrURL() + "/subscriptions/"; + } - private _name: string; - private _region = new Region(City.Hangzhou); - private _account: Account; - private _urlAttr: string; // topic attr url - private _pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s"; + private makePublishURL() { + return this.makeAttrURL() + "/messages"; } + + private _urlSubscription: string; // topic subscription url + private _urlPublish: string; // publish message url + protected _openStack: OpenStack; + + private _name: string; + private _region = new Region(City.Hangzhou); + private _account: Account; + private _urlAttr: string; // topic attr url + private _pattern = "%s://%s.mns.%s.aliyuncs.com/topics/%s"; +} diff --git a/ts/ali-mns.ts b/ts/ali-mns.ts index 1e9b8d1..c938a88 100644 --- a/ts/ali-mns.ts +++ b/ts/ali-mns.ts @@ -1,12 +1,12 @@ -// dependencies -var CryptoA:any = require("crypto"); -var Events:any = require("events"); -var Util:any = require("util"); -var Url:any = require("url"); -var UA:any = require("universal-analytics"); -var debug:any = require("debug")("ali-mns"); +import CryptoA from 'crypto' +import Events from 'events'; +import Util from 'util'; +import Url from 'url' +import UA from 'universal-analytics' +import Promise from 'promise'; -var Promise:any = require("promise"); +import debug0 from "debug" +const debug = debug0('ali-mns'); var Request:{ new (input: RequestInfo, init?: RequestInit): Request; prototype: Request; } = require("request"); Request['requestP'] = Promise.denodeify(Request); @@ -15,4 +15,4 @@ Request['debug'] = false; var Xml2js:any = require("xml2js"); Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); -var XmlBuilder:any = require("xmlbuilder"); \ No newline at end of file +var XmlBuilder:any = require("xmlbuilder"); diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 7e6f504..d7fbf1f 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -7,7 +7,8 @@ "sourceMap": true, "rootDir": "ts/", "declaration": true, - "moduleResolution": "node" + "moduleResolution": "node", + "esModuleInterop": true }, "exclude": [ "node_modules", From 81416458e8a82b434c2a3dab9ba1e17092b80b13 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 11:35:59 +0800 Subject: [PATCH 12/23] fix: git version --- ts/GA.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts/GA.ts b/ts/GA.ts index 50fd574..7f60800 100644 --- a/ts/GA.ts +++ b/ts/GA.ts @@ -1,7 +1,7 @@ import UA from 'universal-analytics' import CryptoA from 'crypto' -declare var gitVersion: any; +import {gitVersion} from './gitVersion' export class GA { public constructor(accId: string) { From 7b4a711fad58d579f5691ea1f63f40d62c181cfa Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 13:19:54 +0800 Subject: [PATCH 13/23] fix: Request --- ts/OpenStack.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ts/OpenStack.ts b/ts/OpenStack.ts index b647a58..1e389d0 100644 --- a/ts/OpenStack.ts +++ b/ts/OpenStack.ts @@ -18,6 +18,10 @@ const debug = debug0('ali-mns'); var Xml2js: any = require("xml2js"); Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); +var Request:{ new (input: RequestInfo, init?: RequestInit): Request; prototype: Request; } = require("request"); +Request['requestP'] = Promise.denodeify(Request); +Request['debug'] = false; + export class OpenStack { constructor(account: Account) { this._account = account; From 24885d78c243b84f9af887a77c144161dc49cdd8 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 13:45:32 +0800 Subject: [PATCH 14/23] tests --- package.json | 2 +- test/performance.js | 36 +++++++++++++++---------------- test/topic.js | 52 ++++++++++++++++++++++----------------------- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index 1fb7c8a..85b0ac5 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "semantic-release": "^15.13.30" }, "scripts": { - "test": "(node node_modules/mocha/bin/mocha || echo 'ignore test result for now') && echo 'test done'", + "test": "mocha", "semantic-release": "semantic-release", "build": "tsc -p ./ts" }, diff --git a/test/performance.js b/test/performance.js index bc5c99c..761c5a3 100644 --- a/test/performance.js +++ b/test/performance.js @@ -4,7 +4,7 @@ var assert = require("assert"); var Path = require("path"); var fs = require("fs"); var Promise = require("promise"); -var AliMNS = require(Path.join(__dirname, "../index.js")); +var AliMNS = require(Path.join(__dirname, "../ts/index")); var debugTest = require("debug")("ali-mns.test"); describe.skip('AliMNS-performance', function(){ @@ -26,15 +26,15 @@ describe.skip('AliMNS-performance', function(){ var account = new AliMNS.Account(aliCfg.accountId, aliCfg.keyId, aliCfg.keySecret); var mns = new AliMNS.MNS(account, aliCfg.region); var mqs = new Array(); - + var max_queue = 20; var max_msg = 2000; var recv_batch_mode = 16; - + before(function(done){ // Make queues var mqNameBase = aliCfg.mqName + Math.floor(Math.random() * 10000); - + var task = new Array(); for(var i=1;i{ // ali account configuration @@ -28,31 +28,31 @@ describe('AliMNS-topic', ()=>{ } var account = new AliMNS.Account(aliCfg.accountId, aliCfg.keyId, aliCfg.keySecret); var mns = new AliMNS.MNSTopic(account, aliCfg.region); - + describe('Topic', function(){ this.timeout(1000 * 5); - + var topicName = aliCfg.topicName + Math.floor(Math.random() * 10000); var subName = topicName + '-sub' + Math.floor(Math.random() * 10000); var topic = new AliMNS.Topic(topicName, account, aliCfg.region); var subscription = new AliMNS.Subscription(subName, topic); - + it('#createTopicP', (done)=>{ mns.createTopicP(topicName, { MaximumMessageSize: 65536, LoggingEnabled: false }).then((data)=>{ done(); }, done); }); - + it('#listTopicP', (done)=>{ mns.listTopicP(topicName, 1).then((data)=>{ // console.info(data.Topics.Topic); done(); }, done); }); - + it('#setAttrsP & #getAttrsP', (done)=>{ var testSource = 1024; - + topic.setAttrsP({ MaximumMessageSize: testSource }) .then((dataSet)=>{ // console.info(dataSet); @@ -64,22 +64,22 @@ describe('AliMNS-topic', ()=>{ }) .then(()=>{ done(); }, done); }); - + it('#subscribe', (done)=>{ topic.subscribeP(subName, aliCfg.endPoint, AliMNS.Subscription.NotifyStrategy.BACKOFF_RETRY, AliMNS.Subscription.NotifyContentFormat.SIMPLIFIED) .then((data)=>{ - // console.info(data); + // console.info(data); done(); }, done); }); - + it('#listP', (done)=>{ topic.listP().then((data)=>{ // console.info(data.Subscriptions); done(); }, done); }); - + it('Subscription #setAttrsP & #getAttrsP', (done)=>{ subscription.setAttrsP({ NotifyStrategy: AliMNS.Subscription.NotifyStrategy.EXPONENTIAL_DECAY_RETRY }) .then((dataSet)=>{ @@ -92,46 +92,46 @@ describe('AliMNS-topic', ()=>{ }) .then(()=>{ done(); }, done); }); - + it('#publishP', (done)=>{ topic.publishP("Hello", false, null, null, {forever:true}) .then((data)=>{ - // console.info(data); + // console.info(data); done(); }, done); }); - + it('#unsubscribe', (done)=>{ topic.unsubscribeP(subName) .then(()=>{ done(); }, done); }); - + it('#deleteTopicP', (done)=>{ mns.deleteTopicP(topicName) .then(()=>{ done(); }, done); }); }); - + describe('Topic-Notify', function(){ this.timeout(1000 * 10); - + var topicName = aliCfg.topicName + Math.floor(Math.random() * 10000); var subName = topicName + '-sub' + Math.floor(Math.random() * 10000); var topic = new AliMNS.Topic(topicName, account, aliCfg.region); var server = null; var nx = null; - + it('prepare-create-topic', (done)=>{ mns.createTopicP(topicName) .then(()=>{ done(); }, done); }); - + it('prepare-subscribe', (done)=>{ topic.subscribeP(subName, aliCfg.endPoint, AliMNS.Subscription.NotifyStrategy.BACKOFF_RETRY, AliMNS.Subscription.NotifyContentFormat.SIMPLIFIED) .then(()=>{ done(); }, done); }); - + it('prepare-http', ()=>{ nx = new Promise((resolve, reject)=>{ server = http.createServer((request, response)=>{ @@ -141,7 +141,7 @@ describe('AliMNS-topic', ()=>{ }); request.on('end', ()=>{ var buf = Buffer.concat(chunks); - + response.writeHead(204, {'Content-Type': 'text/plain'}); response.end(); resolve({ @@ -150,13 +150,13 @@ describe('AliMNS-topic', ()=>{ data: buf.toString() }); }); - - + + }); server.listen(aliCfg.port); }); }); - + it.skip('wait-notify', (done)=>{ var tmo = setTimeout(()=>{ done(new Error("timeout")); @@ -168,11 +168,11 @@ describe('AliMNS-topic', ()=>{ }); topic.publishP("Hello"); }); - + it('clean', (done)=>{ server.close(); mns.deleteTopicP(topicName) .then(()=>{ done(); }, done); }); }); -}); \ No newline at end of file +}); From 86802c7d6d9bd6c2511d74d682595e78a355222a Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 14:13:48 +0800 Subject: [PATCH 15/23] test: update test command --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 85b0ac5..7484ac4 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "semantic-release": "^15.13.30" }, "scripts": { - "test": "mocha", + "test": "mocha -g", "semantic-release": "semantic-release", "build": "tsc -p ./ts" }, From ce3cc4a9bb345f57498c41c7d8805eeff12da413 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Sat, 9 Nov 2019 14:19:54 +0800 Subject: [PATCH 16/23] test: revert --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7484ac4..85b0ac5 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "semantic-release": "^15.13.30" }, "scripts": { - "test": "mocha -g", + "test": "mocha", "semantic-release": "semantic-release", "build": "tsc -p ./ts" }, From 1549fb21ad35f79a803af83f67952a4c129043cb Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 11:10:56 +0800 Subject: [PATCH 17/23] feat: enable strict mode --- ts/Interfaces.ts | 184 ++++++++++++++++++++++++++--------------------- ts/MQ.ts | 9 +-- ts/MQBatch.ts | 5 +- ts/Msg.ts | 39 +++++----- ts/NotifyRecv.ts | 9 ++- ts/tsconfig.json | 3 +- 6 files changed, 139 insertions(+), 110 deletions(-) diff --git a/ts/Interfaces.ts b/ts/Interfaces.ts index a4df971..f106680 100644 --- a/ts/Interfaces.ts +++ b/ts/Interfaces.ts @@ -1,84 +1,104 @@ /// - import {Msg} from "./Msg"; - -export interface IMNS{ - // List all mns. - listP(prefix?:string, pageSize?:number, pageMarker?:string); - // Create a message queue - createP(name:string, options?:any); - // Delete a message queue - deleteP(name:string); - } - - export interface IMNSTopic extends IMNS{ - // List all topics. - listTopicP(prefix?:string, pageSize?:number, pageMarker?:string); - // Create a topic - createTopicP(name:string, options?:any); - // Delete a topic - deleteTopicP(name:string); - } - - export interface IMQ{ - // 获取MQ的属性值 - getAttrsP(); - // 设置MQ的属性值 - setAttrsP(options:any); - // 发送消息 - sendP(msg:string, priority?:number, delaySeconds?:number); - // 接收消息 - recvP(waitSeconds?:number); - // 检查消息 - peekP(); - // 删除消息 - deleteP(receiptHandle:string); - // 保留消息 - reserveP(receiptHandle:string, reserveSeconds:number); - } - - export interface IMQBatch extends IMQ{ - // 发送消息 - sendP(msg:string | Array, priority?:number, delaySeconds?:number); - // 接收消息 - recvP(waitSeconds?:number, numOfMessages?:number); - // 检查消息 - peekP(numOfMessages?:number); - // 删除消息 - deleteP(receiptHandle:string | Array); - } - - export interface INotifyRecv{ - notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number); - notifyStopP(); - } - - export interface INotifyRecvBatch extends INotifyRecv{ - notifyRecv(cb:(ex:Error, msg:any)=>Boolean, waitSeconds?:number, numOfMessages?:number); - } - - export interface ITopic{ - // 获取Topic的属性值 - getAttrsP(); - // 设置Topic的属性值 - setAttrsP(options:any); - // List all subscriptions. - listP(prefix?:string, pageSize?:number, pageMarker?:string); - // Subscribe a topic. - subscribeP(name:string, endPoint:string, notifyStrategy?:string, notifyContentFormat?:string); - // Unsubscribe a topic. - unsubscribeP(name:string); - // Publish a message. - publishP(msg:string, b64: boolean); - } - - export interface ISubscription{ - // 获取Subscription的属性值 - getAttrsP(); - // 设置Subscription的属性值 - setAttrsP(options:any); - } - - export interface ITopicNotify{ - notifyP(request:any); - } +import {Msg} from "./Msg"; + +export interface IMNS { + // List all mns. + listP(prefix?: string, pageSize?: number, pageMarker?: string); + + // Create a message queue + createP(name: string, options?: any); + + // Delete a message queue + deleteP(name: string); +} + +export interface IMNSTopic extends IMNS { + // List all topics. + listTopicP(prefix?: string, pageSize?: number, pageMarker?: string); + + // Create a topic + createTopicP(name: string, options?: any); + + // Delete a topic + deleteTopicP(name: string); +} + +export interface IMQ { + // 获取MQ的属性值 + getAttrsP(); + + // 设置MQ的属性值 + setAttrsP(options: any); + + // 发送消息 + sendP(msg: string, priority?: number, delaySeconds?: number); + + // 接收消息 + recvP(waitSeconds?: number); + + // 检查消息 + peekP(); + + // 删除消息 + deleteP(receiptHandle: string); + + // 保留消息 + reserveP(receiptHandle: string, reserveSeconds: number); +} + +export interface IMQBatch extends IMQ { + // 发送消息 + sendP(msg: string | Array, priority?: number, delaySeconds?: number); + + // 接收消息 + recvP(waitSeconds?: number, numOfMessages?: number); + + // 检查消息 + peekP(numOfMessages?: number); + + // 删除消息 + deleteP(receiptHandle: string | Array); +} + +export interface INotifyRecv { + notifyRecv(cb: (ex: Error | null, msg: any) => Boolean, waitSeconds?: number); + + notifyStopP(); +} + +export interface INotifyRecvBatch extends INotifyRecv { + notifyRecv(cb: (ex: Error | null, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number); +} + +export interface ITopic { + // 获取Topic的属性值 + getAttrsP(); + + // 设置Topic的属性值 + setAttrsP(options: any); + + // List all subscriptions. + listP(prefix?: string, pageSize?: number, pageMarker?: string); + + // Subscribe a topic. + subscribeP(name: string, endPoint: string, notifyStrategy?: string, notifyContentFormat?: string); + + // Unsubscribe a topic. + unsubscribeP(name: string); + + // Publish a message. + publishP(msg: string, b64: boolean); +} + +export interface ISubscription { + // 获取Subscription的属性值 + getAttrsP(); + + // 设置Subscription的属性值 + setAttrsP(options: any); +} + +export interface ITopicNotify { + notifyP(request: any); +} diff --git a/ts/MQ.ts b/ts/MQ.ts index b6c720a..4eaf9b1 100644 --- a/ts/MQ.ts +++ b/ts/MQ.ts @@ -14,6 +14,7 @@ import Promise from 'promise' import debug0 from "debug" import * as Util from "util"; + const debug = debug0('ali-mns'); @@ -68,8 +69,8 @@ export class MQ implements IMQ, INotifyRecv { var b64 = this.utf8ToBase64(msg); var body: any = {Message: {MessageBody: b64}}; - if (!isNaN(priority)) body.Message.Priority = priority; - if (!isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; + if (priority && !isNaN(priority)) body.Message.Priority = priority; + if (delaySeconds && !isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; debug("POST " + this._url, body); this._openStack.accumulateNextGASend("MQ.sendP"); @@ -152,7 +153,7 @@ export class MQ implements IMQ, INotifyRecv { // 消息通知.每当有消息收到时,都调用cb回调函数 // 如果cb返回true,那么将删除消息,否则保留消息 - public notifyRecv(cb: (ex: Error, msg: any) => Boolean, waitSeconds?: number) { + public notifyRecv(cb: (ex: Error | null, msg: any) => Boolean, waitSeconds?: number) { // lazy create if (this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); @@ -195,7 +196,7 @@ export class MQ implements IMQ, INotifyRecv { protected _url: string; // mq url protected _openStack: OpenStack; - protected _notifyRecv: INotifyRecv = null; + protected _notifyRecv: INotifyRecv | null = null; protected _recvTolerance = 5; // 接收消息的容忍时间(单位:秒) private _name: string; diff --git a/ts/MQBatch.ts b/ts/MQBatch.ts index 881fdc4..ddfb184 100644 --- a/ts/MQBatch.ts +++ b/ts/MQBatch.ts @@ -10,6 +10,7 @@ import {NotifyRecv} from "./NotifyRecv"; import Util from "util"; import Promise from 'promise' import debug0 from "debug" + const debug = debug0('ali-mns'); export class MQBatch extends MQ implements IMQBatch, INotifyRecvBatch { @@ -110,7 +111,7 @@ export class MQBatch extends MQ implements IMQBatch, INotifyRecvBatch { // 消息通知.每当有消息收到时,都调用cb回调函数 // 如果cb返回true,那么将删除消息,否则保留消息 - public notifyRecv(cb: (ex: Error, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { + public notifyRecv(cb: (ex: Error | null, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { // lazy create if (this._notifyRecv === null) this._notifyRecv = new NotifyRecv(this); @@ -133,5 +134,5 @@ export class MQBatch extends MQ implements IMQBatch, INotifyRecvBatch { } } - protected _notifyRecv: INotifyRecvBatch = null; + protected _notifyRecv: INotifyRecvBatch | null = null; } diff --git a/ts/Msg.ts b/ts/Msg.ts index e8ba6fc..2f44c19 100644 --- a/ts/Msg.ts +++ b/ts/Msg.ts @@ -1,21 +1,28 @@ +// The Message class +export class Msg { + public constructor(msg: string, priority?: number, delaySeconds?: number) { - // The Message class - export class Msg{ - public constructor(msg: string, priority?:number, delaySeconds?:number){ + this._msg = msg; + if (priority && !isNaN(priority)) this._priority = priority; + if (delaySeconds && !isNaN(delaySeconds)) this._delaySeconds = delaySeconds; + } - this._msg = msg; - if(!isNaN(priority)) this._priority = priority; - if(!isNaN(delaySeconds)) this._delaySeconds = delaySeconds; - } + public getMsg() { + return this._msg; + } - public getMsg(){ return this._msg; } - public getPriority(){ return this._priority; } - public getDelaySeconds(){ return this._delaySeconds; } + public getPriority() { + return this._priority; + } - // message content - private _msg: string; - // message priority - private _priority = 8; - // message delay to visible, in seconds - private _delaySeconds = 0; + public getDelaySeconds() { + return this._delaySeconds; } + + // message content + private _msg: string; + // message priority + private _priority = 8; + // message delay to visible, in seconds + private _delaySeconds = 0; +} diff --git a/ts/NotifyRecv.ts b/ts/NotifyRecv.ts index 47db9b4..2848c3d 100644 --- a/ts/NotifyRecv.ts +++ b/ts/NotifyRecv.ts @@ -3,7 +3,6 @@ import {GA} from "./GA"; import {IMQ, IMQBatch, INotifyRecvBatch} from "./Interfaces"; -import {Account} from './Account' import {MQ} from "./MQ"; import Events from 'events'; @@ -29,7 +28,7 @@ export class NotifyRecv implements INotifyRecvBatch { // 消息通知.每当有消息收到时,都调用cb回调函数 // 如果cb返回true,那么将删除消息,否则保留消息 - public notifyRecv(cb: (ex: Error, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { + public notifyRecv(cb: (ex: Error | null, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { this._signalSTOP = false; this._timeoutCount = 0; this.notifyRecvInternal(cb, waitSeconds, numOfMessages); @@ -52,7 +51,7 @@ export class NotifyRecv implements INotifyRecvBatch { }); } - private notifyRecvInternal(cb: (ex: Error, msg: any) => Boolean, waitSeconds: number, numOfMessages?: number) { + private notifyRecvInternal(cb: (ex: Error | null, msg: any) => Boolean, waitSeconds?: number, numOfMessages?: number) { // This signal will be triggered by notifyStopP() if (this._signalSTOP) { debug("notifyStopped"); @@ -117,7 +116,7 @@ export class NotifyRecv implements INotifyRecvBatch { if (dataRecv.Message) { return this._mq.deleteP(dataRecv.Message.ReceiptHandle); } else if (dataRecv.Messages && dataRecv.Messages.Message) { - var rhs = []; + var rhs = new Array(); for (var i = 0; i < dataRecv.Messages.Message.length; i++) { rhs.push(dataRecv.Messages.Message[i].ReceiptHandle); } @@ -145,5 +144,5 @@ export class NotifyRecv implements INotifyRecvBatch { private _timeoutCount = 0; private _timeoutMax = 128; - private _ga: GA = null; + private _ga: GA | null = null; } diff --git a/ts/tsconfig.json b/ts/tsconfig.json index d7fbf1f..7c074a3 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -8,7 +8,8 @@ "rootDir": "ts/", "declaration": true, "moduleResolution": "node", - "esModuleInterop": true + "esModuleInterop": true, + "strict": true }, "exclude": [ "node_modules", From 068b96d8dee5c52e03ceecc2f4f7557772e1db1a Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 11:15:27 +0800 Subject: [PATCH 18/23] fix: delete unused vars --- ts/OpenStack.ts | 3 --- ts/Region.ts | 4 ---- ts/Subscription.ts | 3 --- ts/Topic.ts | 2 -- ts/ali-mns.ts | 10 ---------- ts/tsconfig.json | 34 ++++++++++++++++++---------------- 6 files changed, 18 insertions(+), 38 deletions(-) diff --git a/ts/OpenStack.ts b/ts/OpenStack.ts index 1e389d0..9eb305e 100644 --- a/ts/OpenStack.ts +++ b/ts/OpenStack.ts @@ -8,12 +8,9 @@ import {Account} from "./Account"; import XmlBuilder from 'xmlbuilder'; import Promise from 'promise' -import debug0 from "debug" import Util from "util"; import Url from "url"; -const debug = debug0('ali-mns'); - var Xml2js: any = require("xml2js"); Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); diff --git a/ts/Region.ts b/ts/Region.ts index e59646a..72eb867 100644 --- a/ts/Region.ts +++ b/ts/Region.ts @@ -231,7 +231,3 @@ export enum City { // MiddleEast Dubai = (Area.UnitedArabEmirates << 16) | 4 } - -interface HashTable { - [key: number]: T; -} diff --git a/ts/Subscription.ts b/ts/Subscription.ts index d843f23..293d484 100644 --- a/ts/Subscription.ts +++ b/ts/Subscription.ts @@ -6,9 +6,6 @@ import {OpenStack} from "./OpenStack"; import {Topic} from "./Topic"; import {ISubscription} from "./Interfaces"; -import {Account} from './Account' - -import Promise from 'promise'; import debug0 from "debug" import Util from "util"; diff --git a/ts/Topic.ts b/ts/Topic.ts index fc5998d..549f928 100644 --- a/ts/Topic.ts +++ b/ts/Topic.ts @@ -9,8 +9,6 @@ import {City, NetworkType, Region, Zone} from "./Region"; import {ITopic} from "./Interfaces"; import {Account} from "./Account" -import Promise from 'promise'; - import debug0 from "debug" import Util from "util"; import Url from "url"; diff --git a/ts/ali-mns.ts b/ts/ali-mns.ts index c938a88..4c319b1 100644 --- a/ts/ali-mns.ts +++ b/ts/ali-mns.ts @@ -1,18 +1,8 @@ -import CryptoA from 'crypto' -import Events from 'events'; -import Util from 'util'; -import Url from 'url' -import UA from 'universal-analytics' import Promise from 'promise'; -import debug0 from "debug" -const debug = debug0('ali-mns'); - var Request:{ new (input: RequestInfo, init?: RequestInit): Request; prototype: Request; } = require("request"); Request['requestP'] = Promise.denodeify(Request); Request['debug'] = false; var Xml2js:any = require("xml2js"); Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); - -var XmlBuilder:any = require("xmlbuilder"); diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 7c074a3..61c1c9d 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -1,18 +1,20 @@ { - "compilerOptions": { - "module": "commonjs", - "noImplicitAny": false, - "removeComments": false, - "preserveConstEnums": true, - "sourceMap": true, - "rootDir": "ts/", - "declaration": true, - "moduleResolution": "node", - "esModuleInterop": true, - "strict": true - }, - "exclude": [ - "node_modules", - "dts" - ] + "compilerOptions": { + "module": "commonjs", + "noImplicitAny": false, + "removeComments": false, + "preserveConstEnums": true, + "sourceMap": true, + "rootDir": "ts/", + "declaration": true, + "moduleResolution": "node", + "esModuleInterop": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true + }, + "exclude": [ + "node_modules", + "dts" + ] } From a080d7e05b98b8e4c9e4b48c6e9fce63931ed480 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 11:18:34 +0800 Subject: [PATCH 19/23] docs: update README to add sonarqube badge --- .sonarcloud.properties | 0 README.md | 8 ++++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .sonarcloud.properties diff --git a/.sonarcloud.properties b/.sonarcloud.properties new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index 88b5c3a..2036405 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ -# ali-mns (ali-mqs) +# ali-mns-ts + +> The nodejs sdk for aliyun mns service (TypeScript version) + + [![npm version](https://badge.fury.io/js/ali-mns-ts.svg)](http://badge.fury.io/js/ali-mns-ts) [![Build Status](https://travis-ci.com/Jeff-Tian/ali-mns.svg?branch=master)](https://travis-ci.com/Jeff-Tian/ali-mns) -The nodejs sdk for aliyun mns service (TypeScript version) +[![Quality gate](https://sonarcloud.io/api/project_badges/quality_gate?project=Jeff-Tian_ali-mns)](https://sonarcloud.io/dashboard?id=Jeff-Tian_ali-mns) [阿里云消息服务-简体中文-帮助手册](http://armclr.incars.com.cn/Links/AliMNS?lang=zh-Hans) From c3ca485ecc41fdda728c5bd3986f19bbb1444fd1 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 13:45:44 +0800 Subject: [PATCH 20/23] fix: use require instead of import --- package-lock.json | 837 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 16 +- test/debug.test.ts | 10 + ts/OpenStack.ts | 11 +- 4 files changed, 859 insertions(+), 15 deletions(-) create mode 100644 test/debug.test.ts diff --git a/package-lock.json b/package-lock.json index add71cd..ab4aacc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -434,6 +434,12 @@ } } }, + "@types/chai": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.4.tgz", + "integrity": "sha512-7qvf9F9tMTzo0akeswHPGqgUx/gIaJqrOEET/FCD8CFRkSUHlygQiM5yB6OvjrtdxBVLSyw7COJubsFYs0683g==", + "dev": true + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -457,10 +463,16 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "dev": true + }, "@types/node": { - "version": "7.0.54", - "resolved": "http://registry.npm.taobao.org/@types/node/download/@types/node-7.0.54.tgz", - "integrity": "sha1-mzuP2djIjrT4VPQCzpFavmsRV9w=", + "version": "7.10.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.9.tgz", + "integrity": "sha512-usSpgoUsRtO5xNV5YEPU8PPnHisFx8u0rokj1BPVn/hDF7zwUDzVLiuKZM38B7z8V2111Fj6kd4rGtQFUZpNOw==", "dev": true }, "@types/normalize-package-data": { @@ -497,6 +509,12 @@ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", "dev": true }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=", + "dev": true + }, "agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", @@ -610,6 +628,12 @@ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", "dev": true }, + "arg": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz", + "integrity": "sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==", + "dev": true + }, "argv-formatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", @@ -646,6 +670,18 @@ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", "dev": true }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "array-find": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", + "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -706,6 +742,12 @@ "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "assign-symbols": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", @@ -834,6 +876,12 @@ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "dev": true }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, "cache-base": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", @@ -851,6 +899,24 @@ "unset-value": "^1.0.0" } }, + "call-matcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", + "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" + } + }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -889,6 +955,20 @@ "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, "chalk": { "version": "1.1.3", "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz", @@ -902,6 +982,12 @@ "supports-color": "^2.0.0" } }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", @@ -1323,6 +1409,12 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", @@ -1444,6 +1536,16 @@ "array-find-index": "^1.0.1" } }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "dashdash": { "version": "1.14.1", "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", @@ -1515,12 +1617,41 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", + "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "defaults": { "version": "1.0.3", "resolved": "http://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", @@ -1530,6 +1661,15 @@ "clone": "^1.0.2" } }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, "define-property": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", @@ -1589,6 +1729,12 @@ "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", "dev": true }, + "diff-match-patch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.4.tgz", + "integrity": "sha512-Uv3SW8bmH9nAtHKaKSanOQmj2DnlH65fUpcrMdfdaOxUG02QQ4YGZ8AE7kKOMisF7UqvOlGKVYWRvezdncW9lg==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1677,6 +1823,12 @@ } } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz", @@ -1692,6 +1844,35 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "empower": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.1.tgz", + "integrity": "sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "empower-core": "^1.2.0" + } + }, + "empower-assert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/empower-assert/-/empower-assert-1.1.0.tgz", + "integrity": "sha512-Ylck0Q6p8y/LpNzYeBccaxAPm2ZyuqBgErgZpO9KT0HuQWF0sJckBKCLmgS1/DEXEiyBi9XtYh3clZm5cAdARw==", + "dev": true, + "requires": { + "estraverse": "^4.2.0" + } + }, + "empower-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", + "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", + "dev": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, "end-of-stream": { "version": "0.1.5", "resolved": "http://registry.npm.taobao.org/end-of-stream/download/end-of-stream-0.1.5.tgz", @@ -1731,6 +1912,42 @@ "is-arrayish": "^0.2.1" } }, + "es5-ext": { + "version": "0.10.52", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", + "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.2", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -1746,24 +1963,231 @@ "es6-promise": "^4.0.3" } }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escallmatch": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/escallmatch/-/escallmatch-1.5.0.tgz", + "integrity": "sha1-UAmdhugJGwkt+N37w/mm+wWgJNA=", + "dev": true, + "requires": { + "call-matcher": "^1.0.0", + "esprima": "^2.0.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espower": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/espower/-/espower-2.1.2.tgz", + "integrity": "sha512-2qa3aEFtcgPB782jTKDPu82hOdw8+zJsWdOn12Tey8XlexHTqsYUIdLC2B7cUECENXly0vZblH1CEZcqttPNjw==", + "dev": true, + "requires": { + "array-find": "^1.0.0", + "escallmatch": "^1.5.0", + "escodegen": "^1.7.0", + "escope": "^3.3.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.3.0", + "estraverse": "^4.1.0", + "source-map": "^0.5.0", + "type-name": "^2.0.0" + } + }, + "espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, + "requires": { + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" + } + }, + "espower-source": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/espower-source/-/espower-source-2.3.0.tgz", + "integrity": "sha512-Wc4kC4zUAEV7Qt31JRPoBUc5jjowHRylml2L2VaDQ1XEbnqQofGWx+gPR03TZAPokAMl5dqyL36h3ITyMXy3iA==", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.10", + "convert-source-map": "^1.1.1", + "empower-assert": "^1.0.0", + "escodegen": "^1.10.0", + "espower": "^2.1.1", + "estraverse": "^4.0.0", + "merge-estraverse-visitors": "^1.0.0", + "multi-stage-sourcemap": "^0.2.1", + "path-is-absolute": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "espower-typescript": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/espower-typescript/-/espower-typescript-9.0.2.tgz", + "integrity": "sha512-d8A0Sz67iOHhsMw3Qk1Jwr/G4ZNSm+o0anl+/rQ2SxfnvL3+Y6vSzPUnSgT++OR9zGlHFG9f7a3jmJO/UIr3HA==", + "dev": true, + "requires": { + "espower-source": "^2.3.0", + "minimatch": "^3.0.3", + "source-map-support": "^0.5.9", + "ts-node": "^8.0.3" + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "espurify": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", + "dev": true, + "requires": { + "core-js": "^2.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "execa": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/execa/-/execa-3.2.0.tgz", @@ -2001,6 +2425,23 @@ "homedir-polyfill": "^1.0.1" } }, + "ext": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.2.0.tgz", + "integrity": "sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, "extend": { "version": "3.0.1", "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz", @@ -2133,6 +2574,12 @@ "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fastq": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz", @@ -2345,6 +2792,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "gaze": { "version": "0.5.2", "resolved": "http://registry.npm.taobao.org/gaze/download/gaze-0.5.2.tgz", @@ -2360,6 +2813,12 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, "get-stream": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", @@ -3373,6 +3832,15 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", @@ -3573,6 +4041,12 @@ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", @@ -3636,6 +4110,12 @@ "kind-of": "^6.0.0" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3657,6 +4137,12 @@ "kind-of": "^6.0.0" } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, "is-descriptor": { "version": "1.0.2", "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", @@ -3796,6 +4282,15 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, "is-regexp": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz", @@ -3840,6 +4335,12 @@ "unc-path-regex": "^0.1.2" } }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, "is-utf8": { "version": "0.2.1", "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz", @@ -4067,6 +4568,16 @@ } } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "liftoff": { "version": "2.5.0", "resolved": "http://registry.npm.taobao.org/liftoff/download/liftoff-2.5.0.tgz", @@ -4381,6 +4892,12 @@ "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", "dev": true }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, "make-iterator": { "version": "1.0.0", "resolved": "http://registry.npm.taobao.org/make-iterator/download/make-iterator-1.0.0.tgz", @@ -4508,6 +5025,15 @@ } } }, + "merge-estraverse-visitors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/merge-estraverse-visitors/-/merge-estraverse-visitors-1.0.0.tgz", + "integrity": "sha1-65aDOLXe1c7tgs7AMH3sui2OqZQ=", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, "merge-stream": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz", @@ -4666,8 +5192,8 @@ }, "mocha": { "version": "3.5.3", - "resolved": "http://registry.npm.taobao.org/mocha/download/mocha-3.5.3.tgz", - "integrity": "sha1-HgSA/jbS2lhY0etqzDhBiybqog0=", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -4729,6 +5255,26 @@ "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multi-stage-sourcemap": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.2.1.tgz", + "integrity": "sha1-sJ/IWG6qF/gdV1xK0C4Pej9rEQU=", + "dev": true, + "requires": { + "source-map": "^0.1.34" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "multipipe": { "version": "0.1.2", "resolved": "http://registry.npm.taobao.org/multipipe/download/multipipe-0.1.2.tgz", @@ -4783,6 +5329,12 @@ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=", "dev": true }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -8427,6 +8979,18 @@ } } }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", @@ -8530,6 +9094,20 @@ } } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "orchestrator": { "version": "0.3.8", "resolved": "http://registry.npm.taobao.org/orchestrator/download/orchestrator-0.3.8.tgz", @@ -8786,6 +9364,12 @@ } } }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", @@ -8895,6 +9479,140 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "power-assert": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.1.tgz", + "integrity": "sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "empower": "^1.3.1", + "power-assert-formatter": "^1.4.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" + } + }, + "power-assert-context-formatter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", + "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.2.0" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", + "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "power-assert-context-traversal": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", + "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "estraverse": "^4.1.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" + } + }, + "power-assert-renderer-assertion": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", + "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", + "dev": true, + "requires": { + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=", + "dev": true + }, + "power-assert-renderer-comparison": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", + "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" + } + }, + "power-assert-renderer-diagram": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", + "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0", + "stringifier": "^1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", + "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", + "dev": true, + "requires": { + "power-assert-renderer-base": "^1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", + "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, "preserve": { "version": "0.2.0", "resolved": "http://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz", @@ -9148,6 +9866,15 @@ "extend-shallow": "^2.0.1" } }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, "registry-auth-token": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", @@ -9710,6 +10437,24 @@ "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "http://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", @@ -9999,6 +10744,17 @@ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, + "stringifier": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.4.0.tgz", + "integrity": "sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" + } + }, "stringify-object": { "version": "2.4.0", "resolved": "http://registry.npm.taobao.org/stringify-object/download/stringify-object-2.4.0.tgz", @@ -10407,6 +11163,27 @@ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", "dev": true }, + "ts-node": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.5.0.tgz", + "integrity": "sha512-fbG32iZEupNV2E2Fd2m2yt1TdAwR3GTCrJQBHDevIiEBNy1A8kqnyl1fv7jmRmmbtcapFab2glZXHJvfD1ed0Q==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + }, + "dependencies": { + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "dev": true + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", @@ -10421,12 +11198,39 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=", + "dev": true + }, "typescript": { "version": "2.7.1", "resolved": "http://registry.npm.taobao.org/typescript/download/typescript-2.7.1.tgz", @@ -10516,6 +11320,17 @@ "uuid": "^3.0.0" } }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "dev": true, + "requires": { + "array-filter": "^1.0.0", + "indexof": "0.0.1", + "object-keys": "^1.0.0" + } + }, "universal-user-agent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz", @@ -10837,6 +11652,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -11018,6 +11839,12 @@ "dev": true } } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true } } } diff --git a/package.json b/package.json index 85b0ac5..b5d1abd 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,12 @@ "xmlbuilder": "^3.1.0" }, "devDependencies": { - "@types/node": "^7.0.22", + "@types/chai": "^4.2.4", + "@types/mocha": "^5.2.7", + "@types/node": "^7.10.9", + "chai": "^4.2.0", "del": "^2.2.0", + "espower-typescript": "^9.0.2", "git-version-json": "^1.0.5", "gulp": "^3.9.1", "gulp-debug": "^2.1.2", @@ -23,13 +27,15 @@ "gulp-replace": "^0.5.4", "gulp-sourcemaps": "^1.9.1", "gulp-typescript": "^3.1.7", - "mocha": "^3.4.2", + "mocha": "^3.5.3", + "power-assert": "^1.6.1", + "semantic-release": "^15.13.30", "should": "^7.1.1", - "typescript": "^2.3.4", - "semantic-release": "^15.13.30" + "ts-node": "^8.5.0", + "typescript": "^2.3.4" }, "scripts": { - "test": "mocha", + "test": "mocha -r ts-node/register --require espower-typescript/guess test/*.[tj]s", "semantic-release": "semantic-release", "build": "tsc -p ./ts" }, diff --git a/test/debug.test.ts b/test/debug.test.ts new file mode 100644 index 0000000..aefa4df --- /dev/null +++ b/test/debug.test.ts @@ -0,0 +1,10 @@ +import assert = require("assert"); + +const XmlBuilder = require('xmlbuilder'); + +describe('debug', () => { + it('convert string to xml', () => { + const res = XmlBuilder.create('hello').toString() + assert(res === ''); + }) +}) diff --git a/ts/OpenStack.ts b/ts/OpenStack.ts index 9eb305e..88fac11 100644 --- a/ts/OpenStack.ts +++ b/ts/OpenStack.ts @@ -5,20 +5,21 @@ // the ali open interface stack protocol import {GA} from "./GA"; import {Account} from "./Account"; -import XmlBuilder from 'xmlbuilder'; import Promise from 'promise' import Util from "util"; import Url from "url"; -var Xml2js: any = require("xml2js"); +const Xml2js: any = require("xml2js"); Xml2js.parseStringP = Promise.denodeify(Xml2js.parseString); -var Request:{ new (input: RequestInfo, init?: RequestInit): Request; prototype: Request; } = require("request"); +const Request: { new(input: RequestInfo, init?: RequestInit): Request; prototype: Request; } = require("request"); Request['requestP'] = Promise.denodeify(Request); Request['debug'] = false; +const XmlBuilder = require('xmlbuilder'); + export class OpenStack { constructor(account: Account) { this._account = account; @@ -43,7 +44,7 @@ export class OpenStack { // combines options if (options) { - for (var opt in options) { + for (const opt in options) { if (opt === "method" || opt === "url" || opt === "uri" || opt === "body" || opt === "headers") continue; // skip these options for avoid conflict to other arguments else if (options.hasOwnProperty(opt)) @@ -51,7 +52,7 @@ export class OpenStack { } } - var ret = Request['requestP'](req).then((response) => { + const ret = Request['requestP'](req).then((response) => { // convert the body from xml to json return Xml2js.parseStringP(response.body, {explicitArray: false}) .then((bodyJSON) => { From 28c07d27f568bea56143bec4ab3c96ac130bbcc5 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 14:17:37 +0800 Subject: [PATCH 21/23] fix: tsc errors --- .gitignore | 3 + package-lock.json | 6 +- package.json | 4 +- ts/Account.ts | 103 ++++++++++++++++++------------ ts/tsconfig.json => tsconfig.json | 8 ++- 5 files changed, 78 insertions(+), 46 deletions(-) rename ts/tsconfig.json => tsconfig.json (67%) diff --git a/.gitignore b/.gitignore index 88bd1c1..3d8bd84 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,6 @@ test/account.js ts/*.js ts/*.d.ts ts/*.js.map +test/*.js +test/*.d.ts +test/*.js.map diff --git a/package-lock.json b/package-lock.json index ab4aacc..9aff794 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11232,9 +11232,9 @@ "dev": true }, "typescript": { - "version": "2.7.1", - "resolved": "http://registry.npm.taobao.org/typescript/download/typescript-2.7.1.tgz", - "integrity": "sha1-uzaCwseRrJDnxiELJkeKjaCFw1k=", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index b5d1abd..0c401d9 100644 --- a/package.json +++ b/package.json @@ -32,12 +32,12 @@ "semantic-release": "^15.13.30", "should": "^7.1.1", "ts-node": "^8.5.0", - "typescript": "^2.3.4" + "typescript": "3.7.2" }, "scripts": { "test": "mocha -r ts-node/register --require espower-typescript/guess test/*.[tj]s", "semantic-release": "semantic-release", - "build": "tsc -p ./ts" + "build": "tsc -p ." }, "repository": { "type": "git", diff --git a/ts/Account.ts b/ts/Account.ts index 78b3641..d1e0f4a 100644 --- a/ts/Account.ts +++ b/ts/Account.ts @@ -1,47 +1,70 @@ /// import CryptoA from 'crypto' +// The Ali account, it holds the key id and secret. +export class Account { + constructor(accountId: string, keyId: string, keySecret: string) { + this._accountId = accountId; + this._keyId = keyId; + this._keySecret = keySecret; + this._displayName = 'AliAccount' + } + + public getAccountId() { + return this._accountId; + } + + public getOwnerId() { + return this._accountId; + } // for compatible v1.x + public getKeyId() { + return this._keyId; + } + + public getGA() { + return this._bGoogleAnalytics; + } + + public setGA(bGA: boolean) { + this._bGoogleAnalytics = bGA; + } + + public getHttps() { + return this._bHttps; + } + + public setHttps(bHttps: boolean) { + this._bHttps = bHttps; + } + + public getDisplayName() { + return this._displayName; + } + public setDisplayName(name: string) { + this._displayName = name; + } + + public displayName = 'AliAccount'; + public id = ''; + public rpDisplayName = 'AliAccount'; - // The Ali account, it holds the key id and secret. - export class Account{ - constructor(accountId:string, keyId:string, keySecret:string){ - this._accountId = accountId; - this._keyId = keyId; - this._keySecret = keySecret; - this._displayName = 'AliAccount' - } - - public getAccountId(){ return this._accountId; } - public getOwnerId(){ return this._accountId; } // for compatible v1.x - public getKeyId(){ return this._keyId; } - public getGA(){ return this._bGoogleAnalytics; } - public setGA(bGA:boolean){ this._bGoogleAnalytics = bGA; } - public getHttps(){ return this._bHttps; } - public setHttps(bHttps:boolean){ this._bHttps = bHttps; } - public getDisplayName(){return this._displayName;} - public setDisplayName(name: string){this._displayName = name;} - - public displayName = 'AliAccount'; - public id = ''; - public rpDisplayName = 'AliAccount'; - - // encoding: "hex", "binary" or "base64" - public hmac_sha1(text:string, encoding?:string){ - var hmacSHA1:any = CryptoA.createHmac("sha1", this._keySecret); - return hmacSHA1.update(text).digest(encoding); - } - - public b64md5(text:string){ - var cryptoMD5 = CryptoA.createHash("md5"); - return cryptoMD5.update(new Buffer(text, 'utf-8')).digest("base64"); - } - - private _accountId: string; // Owner id - private _keyId: string; // Access key id - private _keySecret: string; // Access key secret - private _bGoogleAnalytics = true; // Enable Google Analytics - private _bHttps = false; // Default to use http - private _displayName = '' + // encoding: "hex", "binary" or "base64" + public hmac_sha1(text: string, encoding?: string) { + var hmacSHA1: any = CryptoA.createHmac("sha1", this._keySecret); + return hmacSHA1.update(text).digest(encoding); } + public b64md5(text: string) { + var cryptoMD5 = CryptoA.createHash("md5"); + return cryptoMD5.update(new Buffer(text, 'utf-8')).digest("base64"); + } + + private _accountId: string; // Owner id + private _keyId: string; // Access key id + private _keySecret: string; // Access key secret + private _bGoogleAnalytics = true; // Enable Google Analytics + private _bHttps = false; // Default to use http + private _displayName = '' +} + diff --git a/ts/tsconfig.json b/tsconfig.json similarity index 67% rename from ts/tsconfig.json rename to tsconfig.json index 61c1c9d..40ef678 100644 --- a/ts/tsconfig.json +++ b/tsconfig.json @@ -11,10 +11,16 @@ "esModuleInterop": true, "strict": true, "noUnusedLocals": true, - "noUnusedParameters": true + "noUnusedParameters": true, + "skipLibCheck": true }, + "include": [ + "ts/*" + ], "exclude": [ "node_modules", + "node_modules/*", + "node_modules/@types/chai/index.d.ts", "dts" ] } From 40c328c0f3f089ee62af6f337dcd79216966fc14 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 14:27:35 +0800 Subject: [PATCH 22/23] feat: reject with data --- ts/OpenStack.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts/OpenStack.ts b/ts/OpenStack.ts index 88fac11..571ef56 100644 --- a/ts/OpenStack.ts +++ b/ts/OpenStack.ts @@ -68,8 +68,8 @@ export class OpenStack { if (response.bodyJSON) return response.bodyJSON; else return response.statusCode; } else { - if (response.bodyJSON) return Promise.reject(response.bodyJSON); - else return Promise.reject(response.statusCode); + if (response.bodyJSON) return Promise.reject({...response.bodyJSON, data: req.body}); + else return Promise.reject({...response.statusCode, data: req.body}); } }); From 662bf817acb42b370f83d388ccdea0845338f638 Mon Sep 17 00:00:00 2001 From: Jeff Tian Date: Mon, 11 Nov 2019 14:51:09 +0800 Subject: [PATCH 23/23] feat: check is integer for delay seconds --- ts/MQ.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ts/MQ.ts b/ts/MQ.ts index 4eaf9b1..9012be8 100644 --- a/ts/MQ.ts +++ b/ts/MQ.ts @@ -13,7 +13,8 @@ import {NotifyRecv} from "./NotifyRecv"; import Promise from 'promise' import debug0 from "debug" -import * as Util from "util"; +import Util from "util"; +import assert = require('assert') const debug = debug0('ali-mns'); @@ -70,7 +71,10 @@ export class MQ implements IMQ, INotifyRecv { var body: any = {Message: {MessageBody: b64}}; if (priority && !isNaN(priority)) body.Message.Priority = priority; - if (delaySeconds && !isNaN(delaySeconds)) body.Message.DelaySeconds = delaySeconds; + if (delaySeconds && !isNaN(delaySeconds)) { + assert(Number.isInteger(delaySeconds), 'DelaySeconds 参数必须为整数,否则 阿里 mns 会报 MalformedXML 错误!参见:https://help.aliyun.com/document_detail/35134.html?spm=a2c4g.11186623.2.18.539c2b8fn6R3TO'); + body.Message.DelaySeconds = delaySeconds; + } debug("POST " + this._url, body); this._openStack.accumulateNextGASend("MQ.sendP");