├── 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 | --------------------------------------------------------------------------------