├── tmp
├── 1.jpg
├── 2.jpg
└── 3.jpg
├── .gitignore
├── package.json
├── README.md
├── test.js
├── sendShuoshuo.js
├── index.js
└── yarn.lock
/tmp/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ice-Hazymoon/rsshub2qzone/HEAD/tmp/1.jpg
--------------------------------------------------------------------------------
/tmp/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ice-Hazymoon/rsshub2qzone/HEAD/tmp/2.jpg
--------------------------------------------------------------------------------
/tmp/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ice-Hazymoon/rsshub2qzone/HEAD/tmp/3.jpg
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 |
4 | # local env files
5 | .env.local
6 | .env.*.local
7 |
8 | # Log files
9 | npm-debug.log*
10 | yarn-debug.log*
11 | yarn-error.log*
12 |
13 | # Editor directories and files
14 | .idea
15 | .vscode
16 | *.suo
17 | *.ntvs*
18 | *.njsproj
19 | *.sln
20 | *.sw*
21 |
22 | credentials.js
23 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rsshub2qzone",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "cheerio": "^1.0.0-rc.2",
8 | "dayjs": "^1.7.8",
9 | "del": "^3.0.0",
10 | "file-type": "^10.7.0",
11 | "node-schedule": "^1.3.1",
12 | "puppeteer": "^1.11.0",
13 | "request": "^2.88.0",
14 | "request-promise": "^4.2.2",
15 | "rss-parser": "^3.6.2",
16 | "socks5-http-client": "^1.0.4",
17 | "socks5-https-client": "^1.2.1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # RSSHub2qzone
2 |
3 | > 将 rsshub 的订阅推送到QQ空间
4 |
5 | ## 使用
6 |
7 | 在项目根目录新建一个 `credentials.js` 文件,内容为:
8 |
9 | ```javascript
10 | module.exports = {
11 | qq_number: 'QQ号',
12 | username: 'QQ空间用户名',
13 | password: 'QQ密码',
14 | urls: [
15 | { name: 'Twitter-Ice_Hayzmoon', url: '/twitter/user/Ice_Hayzmoon'} //RSSHub链接
16 | ]
17 | }
18 | ```
19 |
20 | 安装并运行
21 |
22 | ```bash
23 | npm install
24 | node index
25 | ```
26 |
27 | ## 其他
28 |
29 | [https://imiku.me/2019/01/10/1260.html](https://imiku.me/2019/01/10/1260.html)
--------------------------------------------------------------------------------
/test.js:
--------------------------------------------------------------------------------
1 | const puppeteer = require('puppeteer');
2 | const cheerio = require('cheerio');
3 | const credentials = require('./credentials');
4 | const shuoshuo = '测试说说';
5 | const photos = ['./tmp/1.jpg', './tmp/2.jpg', './tmp/3.jpg'];
6 |
7 | (async () => {
8 | const timeout = function (delay) {
9 | return new Promise((resolve, reject) => {
10 | setTimeout(() => {
11 | try {
12 | resolve(1)
13 | } catch (e) {
14 | reject(0)
15 | }
16 | }, delay);
17 | })
18 | }
19 |
20 | const browser = await puppeteer.launch();
21 | const page = await browser.newPage();
22 |
23 | // 设置宽高
24 | await page.setViewport({
25 | height: 736,
26 | width: 414
27 | });
28 |
29 | // 设置UA
30 | await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1');
31 |
32 | // 设置拦截器,在无头浏览器内运行时不加载图片和视频资源
33 | await page.setRequestInterception(true);
34 | page.on('request', interceptedRequest => {
35 | if (interceptedRequest.resourceType() === 'image' || interceptedRequest.resourceType() === 'media') {
36 | interceptedRequest.respond({
37 | status: 200,
38 | contentType: 'image/gif',
39 | body: Buffer.from('R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=', 'base64')
40 | })
41 | } else {
42 | interceptedRequest.continue();
43 | }
44 | });
45 |
46 | await page.goto('https://i.qq.com');
47 |
48 | try {
49 | await page.type('#u', credentials.qq_number, {
50 | delay: 100
51 | });
52 | await page.type('#p', credentials.password, {
53 | delay: 100
54 | });
55 |
56 | await page.click('#go');
57 |
58 | await timeout(5000);
59 |
60 | let loginStatus = await page.content();
61 | let $ = cheerio.load(loginStatus);
62 | if($('#feed_list_cot_all > .feed').length){
63 | console.log('登陆成功');
64 | }else{
65 | console.log('登陆失败');
66 | return false;
67 | }
68 | await page.screenshot({path: './登陆成功.jpg'})
69 |
70 | await page.click('#page-content .tweet-txt button');
71 |
72 | await timeout(500);
73 |
74 | await page.type('.write-text.J_textareaWrapper textarea', shuoshuo);
75 |
76 | // 如果有图片
77 | if (photos.length > 0) {
78 | // 上传高清图片
79 | await page.click('.ui-switch');
80 | const input = await page.$('#addphoto');
81 |
82 | // 最多只能上传9张照片
83 | if (photos.length > 9) {
84 | photos.splice(0, 9)
85 | }
86 | await input.uploadFile(...photos);
87 | }
88 |
89 | await page.click('#form-0-submit');
90 |
91 | let time = 0;
92 | let verifySS = setInterval(async () => {
93 | let html = await page.content();
94 | if(html.indexOf('说说发表成功') !== -1){
95 | clearInterval(verifySS);
96 | await browser.close();
97 | console.log('说说发表成功')
98 | await page.screenshot({path: './发送成功.jpg'})
99 | }else{
100 | if(time>15){
101 | clearInterval(verifySS);
102 | await browser.close();
103 | console.log('说说发送超时');
104 | await page.screenshot({path: './发送失败.jpg'})
105 | return false;
106 | }else{
107 | time++;
108 | }
109 | }
110 | }, 1000)
111 | } catch (error) {
112 | console.log(error.stack)
113 | await browser.close();
114 | }
115 | })()
--------------------------------------------------------------------------------
/sendShuoshuo.js:
--------------------------------------------------------------------------------
1 | const puppeteer = require('puppeteer');
2 | const cheerio = require('cheerio');
3 | const credentials = require('./credentials');
4 | module.exports = function (shuoshuo, photos) {
5 | return new Promise(async (resolve, reject) => {
6 |
7 | const timeout = function (delay) {
8 | return new Promise((resolve, reject) => {
9 | setTimeout(() => {
10 | try {
11 | resolve(1)
12 | } catch (e) {
13 | reject(0)
14 | }
15 | }, delay);
16 | })
17 | }
18 |
19 | const browser = await puppeteer.launch();
20 | const page = await browser.newPage();
21 |
22 | // 设置宽高
23 | await page.setViewport({
24 | height: 736,
25 | width: 414
26 | });
27 |
28 | // 设置UA
29 | await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1');
30 |
31 | // 设置拦截器,在无头浏览器内运行时不加载图片和视频资源
32 | await page.setRequestInterception(true);
33 | page.on('request', interceptedRequest => {
34 | if (interceptedRequest.resourceType() === 'image' || interceptedRequest.resourceType() === 'media') {
35 | interceptedRequest.respond({
36 | status: 200,
37 | contentType: 'image/gif',
38 | body: Buffer.from('R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=', 'base64')
39 | })
40 | } else {
41 | interceptedRequest.continue();
42 | }
43 | });
44 |
45 | await page.goto('https://i.qq.com');
46 |
47 | try {
48 | await page.type('#u', credentials.qq_number, {
49 | delay: 100
50 | });
51 | await page.type('#p', credentials.password, {
52 | delay: 100
53 | });
54 |
55 | await page.click('#go');
56 |
57 | await timeout(5000);
58 |
59 | let loginStatus = await page.content();
60 | let $ = cheerio.load(loginStatus);
61 | if($('#feed_list_cot_all > .feed').length){
62 | console.log('登陆成功');
63 | }else{
64 | console.log('登陆失败');
65 | reject('登陆失败');
66 | return false;
67 | }
68 |
69 | await page.click('#page-content .tweet-txt button');
70 |
71 | await timeout(1000);
72 |
73 | await page.type('.write-text.J_textareaWrapper textarea', shuoshuo);
74 |
75 | // 如果有图片
76 | if (photos.length) {
77 | // 上传高清图片
78 | await page.click('.ui-switch');
79 | const input = await page.$('#addphoto');
80 |
81 | // 最多只能上传9张照片
82 | if (photos.length > 9) {
83 | photos.splice(0, 9)
84 | }
85 | await input.uploadFile(...photos);
86 | await timeout(photos.length * 3000);
87 | }
88 |
89 | await page.click('#form-0-submit');
90 |
91 | let time = 0;
92 | let verifySS = setInterval(async () => {
93 | let html = await page.content();
94 | if(html.indexOf('说说发表成功') !== -1){
95 | clearInterval(verifySS);
96 | await browser.close();
97 | resolve();
98 | }else{
99 | if(time>60){
100 | clearInterval(verifySS);
101 | await browser.close();
102 | reject('说说发送超时');
103 | return false;
104 | }else{
105 | time++;
106 | }
107 | }
108 | }, 1000)
109 |
110 | } catch (error) {
111 | console.log(error.stack)
112 | await browser.close();
113 | reject(error);
114 | }
115 | })
116 | }
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | const credentials = require('./credentials');
3 | const rp = require('request-promise');
4 | const cheerio = require('cheerio');
5 | const Parser = require('rss-parser');
6 | const Agent = require('socks5-http-client/lib/Agent');
7 | const Agent_s = require('socks5-https-client/lib/Agent');
8 | const dayjs = require('dayjs');
9 | const fs = require('fs');
10 | const fileType = require('file-type');
11 | const path = require('path');
12 | const del = require('del');
13 | const schedule = require('node-schedule');
14 |
15 | const sendShuoshuo = require('./sendShuoshuo');
16 |
17 | const log = (log) => {
18 | let date = dayjs(new Date()).format('YY年M月D日HH:mm:ss');
19 | console.log(`${date}: \n${log}\n`);
20 | }
21 |
22 | const downloadImg = (imgarr) => {
23 | return new Promise((resolve, reject) => {
24 | let promises = new Array();
25 | let files = new Array();
26 | imgarr.forEach(src => {
27 | let agentClass = /https/.test(src) ? Agent_s : Agent;
28 | let rpconfig = {
29 | method: 'GET',
30 | url: src,
31 | timeout: 1000 * 60,
32 | encoding: null
33 | }
34 | if(credentials.proxy){
35 | rpconfig.agentClass = agentClass;
36 | rpconfig.agentOptions = {
37 | socksHost: '127.0.0.1',
38 | socksPort: 1080
39 | }
40 | }
41 | promises.push(rp(rpconfig))
42 | });
43 | Promise.all(promises).then(e => {
44 | e.forEach(response => {
45 | const imgType = fileType(response).ext;
46 | const imgPath = path.relative(process.cwd(), __dirname + `/tmp/${dayjs().valueOf()}${~~(Math.random() * 10000)}.${imgType}`);
47 | fs.writeFileSync(imgPath, response);
48 | files.push(imgPath);
49 | });
50 | resolve(files);
51 | }).catch(err => {
52 | reject(err);
53 | })
54 | })
55 | }
56 |
57 | let upTime = new Object(); // 保存rss每次拉取的时间
58 | const baseURL = 'https://rsshub.app';
59 |
60 | function grss(config) {
61 | schedule.scheduleJob('*/2 * * * *', function(){
62 | rp.get(baseURL + config.url, {
63 | timeout: 1000 * 60,
64 | qs: {
65 | limit: 1
66 | }
67 | })
68 | .then(async e => {
69 | // 解析RSS
70 | const parser = new Parser();
71 | let feed = await parser.parseString(e);
72 |
73 | const date_published = dayjs(feed.items[0].pubDate).unix();
74 | if (!upTime[config.name]) { // 如果不存在说明是第一次请求
75 | log('首次请求' + config.name);
76 | upTime[config.name] = date_published;
77 | return false;
78 | }
79 |
80 | if (upTime[config.name] < date_published) { //有更新
81 | log('发现更新' + config.name)
82 |
83 | if (feed.items[0].title.search('Re') !== -1) { // 如果是回复类型的推文则不推送
84 | log('回复推文,不推送');
85 | return false;
86 | }
87 |
88 | // 过滤图片和视频前面的换行
89 | let content = feed.items[0].content.replace(/
<\/video>|
/g, e => {
90 | return e.replace(/
/, '');
91 | })
92 |
93 | // 解析HTML
94 | const $ = cheerio.load(content.replace(/
/g, '\n'));
95 |
96 | let imgArr = new Array();
97 | let posterArr = new Array();
98 |
99 | if($('video').length){ // 如果有视频,尝试获取视频封面
100 | let imgs = new Array();
101 | $('video').each(function (){
102 | let posterSrc = $(this).attr('poster');
103 | if(posterSrc) imgs.push(posterSrc);
104 | })
105 | try {
106 | posterArr = await downloadImg(imgs);
107 | } catch (error) {
108 | log(config.name + ':视频封面抓取失败' + error.stack);
109 | return false;
110 | }
111 | }
112 |
113 | if ($('img').length){ // 如果有图片,请求并转换为base64编码
114 | let imgs = new Array();
115 | $('img').each(function () {
116 | let imgSrc = $(this).attr('src');
117 | if(imgSrc) imgs.push(imgSrc);
118 | })
119 | try {
120 | imgArr = await downloadImg(imgs);
121 | } catch (error) {
122 | log(config.name + ':图片抓取失败' + error.stack);
123 | return false;
124 | }
125 | }
126 | const message = {
127 | text: `${config.name}更新推送`,
128 | content: $('video').length ? `${$.text()}\n${$('video').length}个视频,点击原链接查看` : $.text(),
129 | url: feed.items[0].link,
130 | date: dayjs(feed.items[0].pubDate).format('YY年M月D日HH:mm:ss')
131 | }
132 |
133 | const msg =
134 | `${message.text}\n` +
135 | `内容:${message.content}\n` +
136 | `原链接:${message.url}\n` +
137 | `日期:${message.date}`
138 |
139 | sendShuoshuo(msg, imgArr.concat(posterArr))
140 | .then(() => {
141 | log(config.name + '更新发送成功');
142 | upTime[config.name] = date_published;
143 | del.sync(imgArr);
144 | }).catch(error => {
145 | log(config.name + ' 更新发送失败:' + error.stack);
146 | del.sync(imgArr);
147 | })
148 | } else { //没有更新
149 | log(config.name + ' 没有更新 最后更新于:' + dayjs(feed.items[0].pubDate).format('YY年M月D日HH:mm:ss'));
150 | }
151 | })
152 | .catch(error => {
153 | log(config.name + '请求RSSHub失败\n' + error.stack);
154 | })
155 | })
156 | };
157 |
158 | credentials.urls.forEach((config, index) => {
159 | setTimeout(() => {
160 | grss(config)
161 | }, 1000 * 10 * index);
162 | })
163 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/node@*":
6 | version "10.12.18"
7 | resolved "http://registry.npm.taobao.org/@types/node/download/@types/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
8 |
9 | agent-base@^4.1.0:
10 | version "4.2.1"
11 | resolved "http://registry.npm.taobao.org/agent-base/download/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
12 | dependencies:
13 | es6-promisify "^5.0.0"
14 |
15 | ajv@^6.5.5:
16 | version "6.6.2"
17 | resolved "http://registry.npm.taobao.org/ajv/download/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
18 | dependencies:
19 | fast-deep-equal "^2.0.1"
20 | fast-json-stable-stringify "^2.0.0"
21 | json-schema-traverse "^0.4.1"
22 | uri-js "^4.2.2"
23 |
24 | array-union@^1.0.1:
25 | version "1.0.2"
26 | resolved "http://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
27 | dependencies:
28 | array-uniq "^1.0.1"
29 |
30 | array-uniq@^1.0.1:
31 | version "1.0.3"
32 | resolved "http://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
33 |
34 | asn1@~0.2.3:
35 | version "0.2.4"
36 | resolved "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
37 | dependencies:
38 | safer-buffer "~2.1.0"
39 |
40 | assert-plus@1.0.0, assert-plus@^1.0.0:
41 | version "1.0.0"
42 | resolved "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
43 |
44 | async-limiter@~1.0.0:
45 | version "1.0.0"
46 | resolved "http://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
47 |
48 | asynckit@^0.4.0:
49 | version "0.4.0"
50 | resolved "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
51 |
52 | aws-sign2@~0.7.0:
53 | version "0.7.0"
54 | resolved "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
55 |
56 | aws4@^1.8.0:
57 | version "1.8.0"
58 | resolved "http://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
59 |
60 | balanced-match@^1.0.0:
61 | version "1.0.0"
62 | resolved "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
63 |
64 | bcrypt-pbkdf@^1.0.0:
65 | version "1.0.2"
66 | resolved "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
67 | dependencies:
68 | tweetnacl "^0.14.3"
69 |
70 | bluebird@^3.5.0:
71 | version "3.5.3"
72 | resolved "http://registry.npm.taobao.org/bluebird/download/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
73 |
74 | boolbase@~1.0.0:
75 | version "1.0.0"
76 | resolved "http://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
77 |
78 | brace-expansion@^1.1.7:
79 | version "1.1.11"
80 | resolved "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
81 | dependencies:
82 | balanced-match "^1.0.0"
83 | concat-map "0.0.1"
84 |
85 | buffer-from@^1.0.0:
86 | version "1.1.1"
87 | resolved "http://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
88 |
89 | caseless@~0.12.0:
90 | version "0.12.0"
91 | resolved "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
92 |
93 | cheerio@^1.0.0-rc.2:
94 | version "1.0.0-rc.2"
95 | resolved "http://registry.npm.taobao.org/cheerio/download/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
96 | dependencies:
97 | css-select "~1.2.0"
98 | dom-serializer "~0.1.0"
99 | entities "~1.1.1"
100 | htmlparser2 "^3.9.1"
101 | lodash "^4.15.0"
102 | parse5 "^3.0.1"
103 |
104 | combined-stream@^1.0.6, combined-stream@~1.0.6:
105 | version "1.0.7"
106 | resolved "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
107 | dependencies:
108 | delayed-stream "~1.0.0"
109 |
110 | concat-map@0.0.1:
111 | version "0.0.1"
112 | resolved "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
113 |
114 | concat-stream@1.6.2:
115 | version "1.6.2"
116 | resolved "http://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
117 | dependencies:
118 | buffer-from "^1.0.0"
119 | inherits "^2.0.3"
120 | readable-stream "^2.2.2"
121 | typedarray "^0.0.6"
122 |
123 | core-util-is@1.0.2, core-util-is@~1.0.0:
124 | version "1.0.2"
125 | resolved "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
126 |
127 | cron-parser@^2.7.3:
128 | version "2.7.3"
129 | resolved "http://registry.npm.taobao.org/cron-parser/download/cron-parser-2.7.3.tgz#12603f89f5375af353a9357be2543d3172eac651"
130 | dependencies:
131 | is-nan "^1.2.1"
132 | moment-timezone "^0.5.23"
133 |
134 | css-select@~1.2.0:
135 | version "1.2.0"
136 | resolved "http://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
137 | dependencies:
138 | boolbase "~1.0.0"
139 | css-what "2.1"
140 | domutils "1.5.1"
141 | nth-check "~1.0.1"
142 |
143 | css-what@2.1:
144 | version "2.1.2"
145 | resolved "http://registry.npm.taobao.org/css-what/download/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d"
146 |
147 | dashdash@^1.12.0:
148 | version "1.14.1"
149 | resolved "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
150 | dependencies:
151 | assert-plus "^1.0.0"
152 |
153 | dayjs@^1.7.8:
154 | version "1.7.8"
155 | resolved "http://registry.npm.taobao.org/dayjs/download/dayjs-1.7.8.tgz#05d288f8d4b2140110cc1519cfe317d6f1f11a3c"
156 |
157 | debug@2.6.9:
158 | version "2.6.9"
159 | resolved "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
160 | dependencies:
161 | ms "2.0.0"
162 |
163 | debug@^3.1.0:
164 | version "3.2.6"
165 | resolved "http://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
166 | dependencies:
167 | ms "^2.1.1"
168 |
169 | debug@^4.1.0:
170 | version "4.1.1"
171 | resolved "http://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
172 | dependencies:
173 | ms "^2.1.1"
174 |
175 | define-properties@^1.1.1:
176 | version "1.1.3"
177 | resolved "http://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
178 | dependencies:
179 | object-keys "^1.0.12"
180 |
181 | del@^3.0.0:
182 | version "3.0.0"
183 | resolved "http://registry.npm.taobao.org/del/download/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
184 | dependencies:
185 | globby "^6.1.0"
186 | is-path-cwd "^1.0.0"
187 | is-path-in-cwd "^1.0.0"
188 | p-map "^1.1.1"
189 | pify "^3.0.0"
190 | rimraf "^2.2.8"
191 |
192 | delayed-stream@~1.0.0:
193 | version "1.0.0"
194 | resolved "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
195 |
196 | dom-serializer@0, dom-serializer@~0.1.0:
197 | version "0.1.0"
198 | resolved "http://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
199 | dependencies:
200 | domelementtype "~1.1.1"
201 | entities "~1.1.1"
202 |
203 | domelementtype@1, domelementtype@^1.3.0:
204 | version "1.3.1"
205 | resolved "http://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
206 |
207 | domelementtype@~1.1.1:
208 | version "1.1.3"
209 | resolved "http://registry.npm.taobao.org/domelementtype/download/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
210 |
211 | domhandler@^2.3.0:
212 | version "2.4.2"
213 | resolved "http://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
214 | dependencies:
215 | domelementtype "1"
216 |
217 | domutils@1.5.1:
218 | version "1.5.1"
219 | resolved "http://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
220 | dependencies:
221 | dom-serializer "0"
222 | domelementtype "1"
223 |
224 | domutils@^1.5.1:
225 | version "1.7.0"
226 | resolved "http://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
227 | dependencies:
228 | dom-serializer "0"
229 | domelementtype "1"
230 |
231 | ecc-jsbn@~0.1.1:
232 | version "0.1.2"
233 | resolved "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
234 | dependencies:
235 | jsbn "~0.1.0"
236 | safer-buffer "^2.1.0"
237 |
238 | entities@^1.1.1, entities@~1.1.1:
239 | version "1.1.2"
240 | resolved "http://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
241 |
242 | es6-promise@^4.0.3:
243 | version "4.2.5"
244 | resolved "http://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054"
245 |
246 | es6-promisify@^5.0.0:
247 | version "5.0.0"
248 | resolved "http://registry.npm.taobao.org/es6-promisify/download/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
249 | dependencies:
250 | es6-promise "^4.0.3"
251 |
252 | extend@~3.0.2:
253 | version "3.0.2"
254 | resolved "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
255 |
256 | extract-zip@^1.6.6:
257 | version "1.6.7"
258 | resolved "http://registry.npm.taobao.org/extract-zip/download/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
259 | dependencies:
260 | concat-stream "1.6.2"
261 | debug "2.6.9"
262 | mkdirp "0.5.1"
263 | yauzl "2.4.1"
264 |
265 | extsprintf@1.3.0:
266 | version "1.3.0"
267 | resolved "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
268 |
269 | extsprintf@^1.2.0:
270 | version "1.4.0"
271 | resolved "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
272 |
273 | fast-deep-equal@^2.0.1:
274 | version "2.0.1"
275 | resolved "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
276 |
277 | fast-json-stable-stringify@^2.0.0:
278 | version "2.0.0"
279 | resolved "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
280 |
281 | fd-slicer@~1.0.1:
282 | version "1.0.1"
283 | resolved "http://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
284 | dependencies:
285 | pend "~1.2.0"
286 |
287 | file-type@^10.7.0:
288 | version "10.7.0"
289 | resolved "http://registry.npm.taobao.org/file-type/download/file-type-10.7.0.tgz#b6a9bf24f1d14ba514ab9087c7864d4da4a7ce76"
290 |
291 | forever-agent@~0.6.1:
292 | version "0.6.1"
293 | resolved "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
294 |
295 | form-data@~2.3.2:
296 | version "2.3.3"
297 | resolved "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
298 | dependencies:
299 | asynckit "^0.4.0"
300 | combined-stream "^1.0.6"
301 | mime-types "^2.1.12"
302 |
303 | fs.realpath@^1.0.0:
304 | version "1.0.0"
305 | resolved "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
306 |
307 | getpass@^0.1.1:
308 | version "0.1.7"
309 | resolved "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
310 | dependencies:
311 | assert-plus "^1.0.0"
312 |
313 | glob@^7.0.3, glob@^7.1.3:
314 | version "7.1.3"
315 | resolved "http://registry.npm.taobao.org/glob/download/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
316 | dependencies:
317 | fs.realpath "^1.0.0"
318 | inflight "^1.0.4"
319 | inherits "2"
320 | minimatch "^3.0.4"
321 | once "^1.3.0"
322 | path-is-absolute "^1.0.0"
323 |
324 | globby@^6.1.0:
325 | version "6.1.0"
326 | resolved "http://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
327 | dependencies:
328 | array-union "^1.0.1"
329 | glob "^7.0.3"
330 | object-assign "^4.0.1"
331 | pify "^2.0.0"
332 | pinkie-promise "^2.0.0"
333 |
334 | har-schema@^2.0.0:
335 | version "2.0.0"
336 | resolved "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
337 |
338 | har-validator@~5.1.0:
339 | version "5.1.3"
340 | resolved "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
341 | dependencies:
342 | ajv "^6.5.5"
343 | har-schema "^2.0.0"
344 |
345 | htmlparser2@^3.9.1:
346 | version "3.10.0"
347 | resolved "http://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464"
348 | dependencies:
349 | domelementtype "^1.3.0"
350 | domhandler "^2.3.0"
351 | domutils "^1.5.1"
352 | entities "^1.1.1"
353 | inherits "^2.0.1"
354 | readable-stream "^3.0.6"
355 |
356 | http-signature@~1.2.0:
357 | version "1.2.0"
358 | resolved "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
359 | dependencies:
360 | assert-plus "^1.0.0"
361 | jsprim "^1.2.2"
362 | sshpk "^1.7.0"
363 |
364 | https-proxy-agent@^2.2.1:
365 | version "2.2.1"
366 | resolved "http://registry.npm.taobao.org/https-proxy-agent/download/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0"
367 | dependencies:
368 | agent-base "^4.1.0"
369 | debug "^3.1.0"
370 |
371 | inflight@^1.0.4:
372 | version "1.0.6"
373 | resolved "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
374 | dependencies:
375 | once "^1.3.0"
376 | wrappy "1"
377 |
378 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
379 | version "2.0.3"
380 | resolved "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
381 |
382 | ip-address@~5.8.0:
383 | version "5.8.9"
384 | resolved "http://registry.npm.taobao.org/ip-address/download/ip-address-5.8.9.tgz#6379277c23fc5adb20511e4d23ec2c1bde105dfd"
385 | dependencies:
386 | jsbn "1.1.0"
387 | lodash.find "^4.6.0"
388 | lodash.max "^4.0.1"
389 | lodash.merge "^4.6.0"
390 | lodash.padstart "^4.6.1"
391 | lodash.repeat "^4.1.0"
392 | sprintf-js "1.1.0"
393 |
394 | ip-regex@^3.0.0:
395 | version "3.0.0"
396 | resolved "http://registry.npm.taobao.org/ip-regex/download/ip-regex-3.0.0.tgz#0a934694b4066558c46294244a23cc33116bf732"
397 |
398 | is-nan@^1.2.1:
399 | version "1.2.1"
400 | resolved "http://registry.npm.taobao.org/is-nan/download/is-nan-1.2.1.tgz#9faf65b6fb6db24b7f5c0628475ea71f988401e2"
401 | dependencies:
402 | define-properties "^1.1.1"
403 |
404 | is-path-cwd@^1.0.0:
405 | version "1.0.0"
406 | resolved "http://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
407 |
408 | is-path-in-cwd@^1.0.0:
409 | version "1.0.1"
410 | resolved "http://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
411 | dependencies:
412 | is-path-inside "^1.0.0"
413 |
414 | is-path-inside@^1.0.0:
415 | version "1.0.1"
416 | resolved "http://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
417 | dependencies:
418 | path-is-inside "^1.0.1"
419 |
420 | is-typedarray@~1.0.0:
421 | version "1.0.0"
422 | resolved "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
423 |
424 | isarray@~1.0.0:
425 | version "1.0.0"
426 | resolved "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
427 |
428 | isstream@~0.1.2:
429 | version "0.1.2"
430 | resolved "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
431 |
432 | jsbn@1.1.0:
433 | version "1.1.0"
434 | resolved "http://registry.npm.taobao.org/jsbn/download/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
435 |
436 | jsbn@~0.1.0:
437 | version "0.1.1"
438 | resolved "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
439 |
440 | json-schema-traverse@^0.4.1:
441 | version "0.4.1"
442 | resolved "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
443 |
444 | json-schema@0.2.3:
445 | version "0.2.3"
446 | resolved "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
447 |
448 | json-stringify-safe@~5.0.1:
449 | version "5.0.1"
450 | resolved "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
451 |
452 | jsprim@^1.2.2:
453 | version "1.4.1"
454 | resolved "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
455 | dependencies:
456 | assert-plus "1.0.0"
457 | extsprintf "1.3.0"
458 | json-schema "0.2.3"
459 | verror "1.10.0"
460 |
461 | lodash.find@^4.6.0:
462 | version "4.6.0"
463 | resolved "http://registry.npm.taobao.org/lodash.find/download/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1"
464 |
465 | lodash.max@^4.0.1:
466 | version "4.0.1"
467 | resolved "http://registry.npm.taobao.org/lodash.max/download/lodash.max-4.0.1.tgz#8735566c618b35a9f760520b487ae79658af136a"
468 |
469 | lodash.merge@^4.6.0:
470 | version "4.6.1"
471 | resolved "http://registry.npm.taobao.org/lodash.merge/download/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
472 |
473 | lodash.padstart@^4.6.1:
474 | version "4.6.1"
475 | resolved "http://registry.npm.taobao.org/lodash.padstart/download/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b"
476 |
477 | lodash.repeat@^4.1.0:
478 | version "4.1.0"
479 | resolved "http://registry.npm.taobao.org/lodash.repeat/download/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44"
480 |
481 | lodash@^4.13.1, lodash@^4.15.0:
482 | version "4.17.11"
483 | resolved "http://registry.npm.taobao.org/lodash/download/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
484 |
485 | long-timeout@0.1.1:
486 | version "0.1.1"
487 | resolved "http://registry.npm.taobao.org/long-timeout/download/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514"
488 |
489 | mime-db@~1.37.0:
490 | version "1.37.0"
491 | resolved "http://registry.npm.taobao.org/mime-db/download/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
492 |
493 | mime-types@^2.1.12, mime-types@~2.1.19:
494 | version "2.1.21"
495 | resolved "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
496 | dependencies:
497 | mime-db "~1.37.0"
498 |
499 | mime@^2.0.3:
500 | version "2.4.0"
501 | resolved "http://registry.npm.taobao.org/mime/download/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
502 |
503 | minimatch@^3.0.4:
504 | version "3.0.4"
505 | resolved "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
506 | dependencies:
507 | brace-expansion "^1.1.7"
508 |
509 | minimist@0.0.8:
510 | version "0.0.8"
511 | resolved "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
512 |
513 | mkdirp@0.5.1:
514 | version "0.5.1"
515 | resolved "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
516 | dependencies:
517 | minimist "0.0.8"
518 |
519 | moment-timezone@^0.5.23:
520 | version "0.5.23"
521 | resolved "http://registry.npm.taobao.org/moment-timezone/download/moment-timezone-0.5.23.tgz#7cbb00db2c14c71b19303cb47b0fb0a6d8651463"
522 | dependencies:
523 | moment ">= 2.9.0"
524 |
525 | "moment@>= 2.9.0":
526 | version "2.24.0"
527 | resolved "http://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
528 |
529 | ms@2.0.0:
530 | version "2.0.0"
531 | resolved "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
532 |
533 | ms@^2.1.1:
534 | version "2.1.1"
535 | resolved "http://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
536 |
537 | node-schedule@^1.3.1:
538 | version "1.3.1"
539 | resolved "http://registry.npm.taobao.org/node-schedule/download/node-schedule-1.3.1.tgz#6909dd644211bca153b15afc62e1dc0afa7d28be"
540 | dependencies:
541 | cron-parser "^2.7.3"
542 | long-timeout "0.1.1"
543 | sorted-array-functions "^1.0.0"
544 |
545 | nth-check@~1.0.1:
546 | version "1.0.2"
547 | resolved "http://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
548 | dependencies:
549 | boolbase "~1.0.0"
550 |
551 | oauth-sign@~0.9.0:
552 | version "0.9.0"
553 | resolved "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
554 |
555 | object-assign@^4.0.1:
556 | version "4.1.1"
557 | resolved "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
558 |
559 | object-keys@^1.0.12:
560 | version "1.0.12"
561 | resolved "http://registry.npm.taobao.org/object-keys/download/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
562 |
563 | once@^1.3.0:
564 | version "1.4.0"
565 | resolved "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
566 | dependencies:
567 | wrappy "1"
568 |
569 | p-map@^1.1.1:
570 | version "1.2.0"
571 | resolved "http://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
572 |
573 | parse5@^3.0.1:
574 | version "3.0.3"
575 | resolved "http://registry.npm.taobao.org/parse5/download/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
576 | dependencies:
577 | "@types/node" "*"
578 |
579 | path-is-absolute@^1.0.0:
580 | version "1.0.1"
581 | resolved "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
582 |
583 | path-is-inside@^1.0.1:
584 | version "1.0.2"
585 | resolved "http://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
586 |
587 | pend@~1.2.0:
588 | version "1.2.0"
589 | resolved "http://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
590 |
591 | performance-now@^2.1.0:
592 | version "2.1.0"
593 | resolved "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
594 |
595 | pify@^2.0.0:
596 | version "2.3.0"
597 | resolved "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
598 |
599 | pify@^3.0.0:
600 | version "3.0.0"
601 | resolved "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
602 |
603 | pinkie-promise@^2.0.0:
604 | version "2.0.1"
605 | resolved "http://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
606 | dependencies:
607 | pinkie "^2.0.0"
608 |
609 | pinkie@^2.0.0:
610 | version "2.0.4"
611 | resolved "http://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
612 |
613 | process-nextick-args@~2.0.0:
614 | version "2.0.0"
615 | resolved "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
616 |
617 | progress@^2.0.1:
618 | version "2.0.3"
619 | resolved "http://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
620 |
621 | proxy-from-env@^1.0.0:
622 | version "1.0.0"
623 | resolved "http://registry.npm.taobao.org/proxy-from-env/download/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
624 |
625 | psl@^1.1.24, psl@^1.1.28:
626 | version "1.1.31"
627 | resolved "http://registry.npm.taobao.org/psl/download/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
628 |
629 | punycode@^1.4.1:
630 | version "1.4.1"
631 | resolved "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
632 |
633 | punycode@^2.1.0, punycode@^2.1.1:
634 | version "2.1.1"
635 | resolved "http://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
636 |
637 | puppeteer@^1.11.0:
638 | version "1.11.0"
639 | resolved "http://registry.npm.taobao.org/puppeteer/download/puppeteer-1.11.0.tgz#63cdbe12b07275cd6e0b94bce41f3fcb20305770"
640 | dependencies:
641 | debug "^4.1.0"
642 | extract-zip "^1.6.6"
643 | https-proxy-agent "^2.2.1"
644 | mime "^2.0.3"
645 | progress "^2.0.1"
646 | proxy-from-env "^1.0.0"
647 | rimraf "^2.6.1"
648 | ws "^6.1.0"
649 |
650 | qs@~6.5.2:
651 | version "6.5.2"
652 | resolved "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
653 |
654 | readable-stream@^2.2.2:
655 | version "2.3.6"
656 | resolved "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
657 | dependencies:
658 | core-util-is "~1.0.0"
659 | inherits "~2.0.3"
660 | isarray "~1.0.0"
661 | process-nextick-args "~2.0.0"
662 | safe-buffer "~5.1.1"
663 | string_decoder "~1.1.1"
664 | util-deprecate "~1.0.1"
665 |
666 | readable-stream@^3.0.6:
667 | version "3.1.1"
668 | resolved "http://registry.npm.taobao.org/readable-stream/download/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06"
669 | dependencies:
670 | inherits "^2.0.3"
671 | string_decoder "^1.1.1"
672 | util-deprecate "^1.0.1"
673 |
674 | request-promise-core@1.1.1:
675 | version "1.1.1"
676 | resolved "http://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
677 | dependencies:
678 | lodash "^4.13.1"
679 |
680 | request-promise@^4.2.2:
681 | version "4.2.2"
682 | resolved "http://registry.npm.taobao.org/request-promise/download/request-promise-4.2.2.tgz#d1ea46d654a6ee4f8ee6a4fea1018c22911904b4"
683 | dependencies:
684 | bluebird "^3.5.0"
685 | request-promise-core "1.1.1"
686 | stealthy-require "^1.1.0"
687 | tough-cookie ">=2.3.3"
688 |
689 | request@^2.88.0:
690 | version "2.88.0"
691 | resolved "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
692 | dependencies:
693 | aws-sign2 "~0.7.0"
694 | aws4 "^1.8.0"
695 | caseless "~0.12.0"
696 | combined-stream "~1.0.6"
697 | extend "~3.0.2"
698 | forever-agent "~0.6.1"
699 | form-data "~2.3.2"
700 | har-validator "~5.1.0"
701 | http-signature "~1.2.0"
702 | is-typedarray "~1.0.0"
703 | isstream "~0.1.2"
704 | json-stringify-safe "~5.0.1"
705 | mime-types "~2.1.19"
706 | oauth-sign "~0.9.0"
707 | performance-now "^2.1.0"
708 | qs "~6.5.2"
709 | safe-buffer "^5.1.2"
710 | tough-cookie "~2.4.3"
711 | tunnel-agent "^0.6.0"
712 | uuid "^3.3.2"
713 |
714 | rimraf@^2.2.8, rimraf@^2.6.1:
715 | version "2.6.3"
716 | resolved "http://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
717 | dependencies:
718 | glob "^7.1.3"
719 |
720 | rss-parser@^3.6.2:
721 | version "3.6.2"
722 | resolved "http://registry.npm.taobao.org/rss-parser/download/rss-parser-3.6.2.tgz#f4395e025881963a72964b8cedd6540daef62a4b"
723 | dependencies:
724 | entities "^1.1.1"
725 | xml2js "^0.4.19"
726 |
727 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
728 | version "5.1.2"
729 | resolved "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
730 |
731 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
732 | version "2.1.2"
733 | resolved "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
734 |
735 | sax@>=0.6.0:
736 | version "1.2.4"
737 | resolved "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
738 |
739 | socks5-client@~1.2.3, socks5-client@~1.2.6:
740 | version "1.2.6"
741 | resolved "http://registry.npm.taobao.org/socks5-client/download/socks5-client-1.2.6.tgz#05b7d695bcdce56d2cbcde2c8d731c20cf87a253"
742 | dependencies:
743 | ip-address "~5.8.0"
744 |
745 | socks5-http-client@^1.0.4:
746 | version "1.0.4"
747 | resolved "http://registry.npm.taobao.org/socks5-http-client/download/socks5-http-client-1.0.4.tgz#cfaaa993f91df58542806b458372c6fb3c1a32bd"
748 | dependencies:
749 | socks5-client "~1.2.6"
750 |
751 | socks5-https-client@^1.2.1:
752 | version "1.2.1"
753 | resolved "http://registry.npm.taobao.org/socks5-https-client/download/socks5-https-client-1.2.1.tgz#c8d4a000e39cdc1651d90245af04a735d75d8b09"
754 | dependencies:
755 | socks5-client "~1.2.3"
756 |
757 | sorted-array-functions@^1.0.0:
758 | version "1.2.0"
759 | resolved "http://registry.npm.taobao.org/sorted-array-functions/download/sorted-array-functions-1.2.0.tgz#43265b21d6e985b7df31621b1c11cc68d8efc7c3"
760 |
761 | sprintf-js@1.1.0:
762 | version "1.1.0"
763 | resolved "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.1.0.tgz#cffcaf702daf65ea39bb4e0fa2b299cec1a1be46"
764 |
765 | sshpk@^1.7.0:
766 | version "1.16.0"
767 | resolved "http://registry.npm.taobao.org/sshpk/download/sshpk-1.16.0.tgz#1d4963a2fbffe58050aa9084ca20be81741c07de"
768 | dependencies:
769 | asn1 "~0.2.3"
770 | assert-plus "^1.0.0"
771 | bcrypt-pbkdf "^1.0.0"
772 | dashdash "^1.12.0"
773 | ecc-jsbn "~0.1.1"
774 | getpass "^0.1.1"
775 | jsbn "~0.1.0"
776 | safer-buffer "^2.0.2"
777 | tweetnacl "~0.14.0"
778 |
779 | stealthy-require@^1.1.0:
780 | version "1.1.1"
781 | resolved "http://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
782 |
783 | string_decoder@^1.1.1:
784 | version "1.2.0"
785 | resolved "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
786 | dependencies:
787 | safe-buffer "~5.1.0"
788 |
789 | string_decoder@~1.1.1:
790 | version "1.1.1"
791 | resolved "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
792 | dependencies:
793 | safe-buffer "~5.1.0"
794 |
795 | tough-cookie@>=2.3.3:
796 | version "3.0.0"
797 | resolved "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-3.0.0.tgz#d2bceddebde633153ff20a52fa844a0dc71dacef"
798 | dependencies:
799 | ip-regex "^3.0.0"
800 | psl "^1.1.28"
801 | punycode "^2.1.1"
802 |
803 | tough-cookie@~2.4.3:
804 | version "2.4.3"
805 | resolved "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
806 | dependencies:
807 | psl "^1.1.24"
808 | punycode "^1.4.1"
809 |
810 | tunnel-agent@^0.6.0:
811 | version "0.6.0"
812 | resolved "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
813 | dependencies:
814 | safe-buffer "^5.0.1"
815 |
816 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
817 | version "0.14.5"
818 | resolved "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
819 |
820 | typedarray@^0.0.6:
821 | version "0.0.6"
822 | resolved "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
823 |
824 | uri-js@^4.2.2:
825 | version "4.2.2"
826 | resolved "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
827 | dependencies:
828 | punycode "^2.1.0"
829 |
830 | util-deprecate@^1.0.1, util-deprecate@~1.0.1:
831 | version "1.0.2"
832 | resolved "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
833 |
834 | uuid@^3.3.2:
835 | version "3.3.2"
836 | resolved "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
837 |
838 | verror@1.10.0:
839 | version "1.10.0"
840 | resolved "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
841 | dependencies:
842 | assert-plus "^1.0.0"
843 | core-util-is "1.0.2"
844 | extsprintf "^1.2.0"
845 |
846 | wrappy@1:
847 | version "1.0.2"
848 | resolved "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
849 |
850 | ws@^6.1.0:
851 | version "6.1.2"
852 | resolved "http://registry.npm.taobao.org/ws/download/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8"
853 | dependencies:
854 | async-limiter "~1.0.0"
855 |
856 | xml2js@^0.4.19:
857 | version "0.4.19"
858 | resolved "http://registry.npm.taobao.org/xml2js/download/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
859 | dependencies:
860 | sax ">=0.6.0"
861 | xmlbuilder "~9.0.1"
862 |
863 | xmlbuilder@~9.0.1:
864 | version "9.0.7"
865 | resolved "http://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
866 |
867 | yauzl@2.4.1:
868 | version "2.4.1"
869 | resolved "http://registry.npm.taobao.org/yauzl/download/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
870 | dependencies:
871 | fd-slicer "~1.0.1"
872 |
--------------------------------------------------------------------------------