├── .editorconfig ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .npmrc ├── .prettierrc ├── .yarnrc ├── LICENSE ├── README.md ├── app.js ├── config └── index.js ├── model ├── base.js ├── comment_song.js ├── index.js ├── lyric.js ├── playlist.js ├── playlist_detail.js ├── search.js ├── search_hot.js ├── singer_list.js ├── song.js ├── song_url.js └── toplist.js ├── package.json ├── routes ├── comment_song │ ├── 163.js │ └── qq.js ├── index.js ├── lyric │ ├── 163.js │ ├── migu.js │ └── qq.js ├── playlist │ ├── 163.js │ └── qq.js ├── playlist_detail │ ├── 163.js │ └── qq.js ├── search │ ├── 163.js │ ├── migu.js │ └── qq.js ├── search_hot │ ├── 163.js │ └── qq.js ├── singer_list │ ├── 163.js │ └── qq.js ├── song_url │ ├── 163.js │ └── qq.js ├── toplist │ ├── 163.js │ └── qq.js ├── toplist_detail │ ├── 163.js │ └── qq.js └── user_playlist │ └── 163.js ├── static └── index.html ├── utils ├── axios │ ├── crypto.js │ └── index.js ├── code.js ├── index.js ├── route.js ├── tips.js └── utils.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | commonjs: true, 4 | es6: true, 5 | node: true 6 | }, 7 | extends: ['plugin:prettier/recommended', 'prettier'], 8 | parserOptions: { 9 | ecmaVersion: 2020 10 | }, 11 | rules: {} 12 | } 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | package-lock.json 16 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npm.taobao.org 2 | sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ 3 | phantomjs_cdnurl=http://cnpmjs.org/downloads 4 | electron_mirror=https://npm.taobao.org/mirrors/electron/ 5 | sqlite3_binary_host_mirror=https://foxgis.oss-cn-shanghai.aliyuncs.com/ 6 | profiler_binary_host_mirror=https://npm.taobao.org/mirrors/node-inspector/ 7 | chromedriver_cdnurl=https://cdn.npm.taobao.org/dist/chromedriver 8 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "semi": false, 4 | "trailingComma": "none", 5 | "printWidth": 100 6 | } 7 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | registry "https://registry.npm.taobao.org" 2 | sass_binary_site "https://npm.taobao.org/mirrors/node-sass/" 3 | phantomjs_cdnurl "http://cnpmjs.org/downloads" 4 | electron_mirror "https://npm.taobao.org/mirrors/electron/" 5 | sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/" 6 | profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/" 7 | chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver" 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 茂茂 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 介绍 2 | 3 | * 基于 Koa2 打造的 Node JS API 4 | 5 | ## License 6 | 7 | [MIT](https://github.com/maomao1996/mmNodeApi/blob/master/LICENSE) 8 | 9 | ## 其他开源作品 10 | 11 | [React移动端版本(高仿网易云音乐)](https://github.com/maomao1996/react-music) 12 | 13 | [Vue PC/移动端二合一版本](https://github.com/maomao1996/Vue-mmPlayer) 14 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const Koa = require('koa') 2 | const koaStatic = require('koa-static') 3 | const KoaBody = require('koa-body') 4 | const path = require('path') 5 | const cors = require('koa2-cors') 6 | const config = require('./config') 7 | const router = require('./routes') 8 | const { Tips } = require('./utils') 9 | 10 | const app = new Koa() 11 | 12 | // 跨域配置 13 | app.use(cors({ origin: '*' })) 14 | 15 | // 托管静态文件 16 | app.use(koaStatic(path.resolve(__dirname, 'static'))) 17 | 18 | // 处理 post 请求 19 | app.use(KoaBody({ multipart: true })) 20 | 21 | // 异常处理 22 | app.use(async (ctx, next) => { 23 | try { 24 | await next() 25 | } catch (err) { 26 | ctx.body = Tips[1000] 27 | } 28 | }) 29 | 30 | // 参数校验 / 接口格式化配置处理 31 | app.use(async (ctx, next) => { 32 | if (/(detail|lyric)/.test(ctx.url)) { 33 | if (!ctx.query.id) { 34 | ctx.body = Tips[1001] 35 | return 36 | } 37 | } 38 | const { format } = ctx.query 39 | if (!format || format === '') { 40 | ctx.query.format = config.format 41 | } 42 | await next() 43 | }) 44 | 45 | // 调用路由中间件 46 | app.use(router.routes()) 47 | app.use(router.allowedMethods()) 48 | 49 | // 端口 50 | const PORT = config.PORT 51 | 52 | // 启动服务 53 | app.listen(PORT, () => { 54 | console.log(`http://localhost:${PORT}`) 55 | }) 56 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // 配置默认端口 2 | exports.PORT = process.env.PORT || 3163 3 | 4 | // 是否格式化字段 5 | exports.format = true 6 | 7 | // 默认平台 8 | exports.platform = '163' 9 | -------------------------------------------------------------------------------- /model/base.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 基础类 3 | */ 4 | 5 | // 歌曲信息 6 | class BaseSong { 7 | constructor({ name, singer }) { 8 | this.name = name // 歌曲名 9 | this.singer = singer // 歌手名 10 | } 11 | } 12 | 13 | // 创建者信息 14 | class Creator { 15 | constructor({ uid, name, picUrl }) { 16 | this.uid = uid // uid 17 | this.name = name // 名称 18 | this.picUrl = picUrl // 头像 19 | } 20 | } 21 | 22 | // 专辑信息 23 | class Album { 24 | constructor({ id, mid, name, picUrl }) { 25 | this.id = id // 专辑id 26 | this.mid = mid // 专辑id 27 | this.name = name // 专辑名 28 | this.picUrl = picUrl // 专辑封面 29 | } 30 | } 31 | 32 | // 歌手信息 33 | class BaseSinger { 34 | constructor({ id, mid, name }) { 35 | this.id = id // 歌手id 36 | this.mid = mid // 歌手id 37 | this.name = name // 歌手名 38 | } 39 | } 40 | 41 | module.exports = { 42 | BaseSong, 43 | Creator, 44 | Album, 45 | BaseSinger 46 | } 47 | -------------------------------------------------------------------------------- /model/comment_song.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 评论列表类模型 3 | */ 4 | const { Creator } = require('./base') 5 | 6 | // 回复 7 | class Replied { 8 | constructor({ creator, repliedCommentId, content, time, likedCount }) { 9 | this.creator = creator // 回复评论创建者信息(头像、昵称、ID) 10 | // this.repliedCommentId = repliedCommentId // 所回复的评论id 11 | this.content = content // 回复评论内容 12 | } 13 | } 14 | 15 | class Comment { 16 | constructor({ creator, commentId, content, time, likedCount, replied }) { 17 | this.creator = creator // 评论创建者信息(头像、昵称、ID) 18 | this.commentId = commentId // 评论id 19 | this.content = content // 评论内容 20 | this.time = time // 评论时间 21 | this.likedCount = likedCount // 评论点赞数 22 | this.replied = replied // 回复评论 23 | } 24 | } 25 | 26 | function formatReplied([data], platform, comment) { 27 | if (!data) { 28 | return null 29 | } 30 | switch (platform) { 31 | case 'qq': 32 | return new Replied({ 33 | creator: new Creator({ 34 | uid: data.replyeduin, 35 | name: data.replyednick, 36 | picUrl: null 37 | }), 38 | content: comment.rootcommentcontent 39 | }) 40 | case '163': 41 | return new Replied({ 42 | creator: new Creator({ 43 | uid: data.user.userId, 44 | name: data.user.nickname, 45 | picUrl: null 46 | }), 47 | // repliedCommentId: data.beRepliedCommentId, 48 | content: data.content 49 | }) 50 | } 51 | } 52 | 53 | module.exports = function formatComment(data, platform) { 54 | switch (platform) { 55 | case 'qq': 56 | return data.map((item) => { 57 | const isReplied = !!item.middlecommentcontent 58 | return new Comment({ 59 | creator: new Creator({ 60 | uid: item.uin, 61 | name: item.nick, 62 | picUrl: item.avatarurl 63 | }), 64 | commentId: item.commentid, 65 | content: isReplied 66 | ? item.middlecommentcontent[0].subcommentcontent 67 | : item.rootcommentcontent, 68 | time: item.time, 69 | likedCount: item.praisenum, 70 | replied: isReplied ? formatReplied(item.middlecommentcontent, platform, item) : null 71 | }) 72 | }) 73 | case '163': 74 | return data.map( 75 | (item) => 76 | new Comment({ 77 | creator: new Creator({ 78 | uid: item.user.userId, 79 | name: item.user.nickname, 80 | picUrl: item.user.avatarUrl 81 | }), 82 | commentId: item.commentId, 83 | content: item.content, 84 | time: item.time, 85 | likedCount: item.likedCount, 86 | replied: formatReplied(item.beReplied, platform) 87 | }) 88 | ) 89 | default: 90 | return data 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /model/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // 搜索 3 | formatSearch: require('./search'), 4 | // 搜索热词 5 | formatSearchHot: require('./search_hot'), 6 | // 排行榜 7 | formatTopList: require('./toplist'), 8 | // 歌单详情 9 | formatPlayListDetail: require('./playlist_detail'), 10 | // 歌单列表 11 | formatPlayList: require('./playlist'), 12 | // 歌词 13 | Lyric: require('./lyric'), 14 | // 歌曲 URL 15 | formatSongUrl: require('./song_url'), 16 | // 评论 17 | formatComment: require('./comment_song'), 18 | // 歌手列表 19 | formatSingerList: require('./singer_list') 20 | } 21 | -------------------------------------------------------------------------------- /model/lyric.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 歌词解析类模型 3 | */ 4 | const timeExp = /\[(\d{2,}):(\d{2})(?:\.(\d{2,3}))?]/g 5 | // const tagRegMap = { 6 | // title: 'ti', 7 | // artist: 'ar', 8 | // album: 'al', 9 | // offset: 'offset', 10 | // by: 'by' 11 | // }; 12 | 13 | module.exports = class Lyric { 14 | constructor(lrc, type = '163') { 15 | this.type = type 16 | this.lrc = lrc 17 | this.lyric = [] 18 | this._init() 19 | } 20 | 21 | _init() { 22 | this._initLines() 23 | } 24 | 25 | _initLines() { 26 | const lines = this.lrc.split('\n') 27 | for (let i = 0; i < lines.length; i++) { 28 | const line = lines[i] 29 | const result = timeExp.exec(line) 30 | if (result) { 31 | const text = line.replace(timeExp, '').trim() 32 | if (text) { 33 | const plus = (n) => result[1] * 6e4 + result[2] * 1e3 + (result[3] || 0) * n 34 | if (this.type === 'qq') { 35 | this.lyric.push({ 36 | time: plus(10), 37 | text 38 | }) 39 | } else { 40 | this.lyric.push({ 41 | time: plus(1), 42 | text 43 | }) 44 | } 45 | } 46 | } 47 | } 48 | 49 | this.lyric.sort((a, b) => { 50 | return a.time - b.time 51 | }) 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /model/playlist.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 歌单列表类模型 3 | */ 4 | const { Creator } = require('./base') 5 | 6 | class PlayList { 7 | constructor({ id, name, picUrl, creator, playCount, platform }) { 8 | this.id = id // 歌单id 9 | this.name = name // 歌单名称 10 | this.picUrl = picUrl // 歌单封面 11 | this.creator = creator // 歌单创建者信息(头像、昵称、ID) 12 | this.playCount = playCount // 播放数 13 | this.platform = platform // 来源平台 14 | } 15 | } 16 | 17 | module.exports = function formatPlayList(data, platform) { 18 | switch (platform) { 19 | case 'qq': 20 | return data.map( 21 | (item) => 22 | new PlayList({ 23 | id: item.dissid, 24 | name: item.dissname, 25 | picUrl: item.imgurl, 26 | creator: new Creator({ 27 | uid: item.creator.encrypt_uin, 28 | name: item.creator.name, 29 | picUrl: item.creator.avatarUrl || null 30 | }), 31 | playCount: item.listennum, 32 | platform 33 | }) 34 | ) 35 | case '163': 36 | return data.map( 37 | (item) => 38 | new PlayList({ 39 | id: item.id, 40 | name: item.name, 41 | picUrl: item.coverImgUrl, 42 | creator: new Creator({ 43 | uid: item.creator.userId, 44 | name: item.creator.nickname, 45 | picUrl: item.creator.avatarUrl 46 | }), 47 | playCount: item.playCount, 48 | platform 49 | }) 50 | ) 51 | case 'migu': 52 | return data.map( 53 | (item) => 54 | new PlayList({ 55 | id: item.id, 56 | name: item.name, 57 | picUrl: item.musicListPicUrl, 58 | creator: new Creator({ 59 | uid: item.userId, 60 | name: null, 61 | picUrl: null 62 | }), 63 | playCount: item.musicNum, 64 | platform 65 | }) 66 | ) 67 | default: 68 | return data 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /model/playlist_detail.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 歌单详情类模型 3 | */ 4 | const { Creator } = require('./base') 5 | const { formatSongs } = require('./song') 6 | 7 | class PlayListDetail { 8 | constructor({ 9 | id, 10 | name, 11 | picUrl, 12 | creator, 13 | createTime, 14 | updateTime, 15 | desc, 16 | songCount, 17 | playCount, 18 | shareCount, 19 | commentCount, 20 | songList 21 | }) { 22 | this.id = id // 歌单ID 23 | this.name = name // 歌单名称 24 | this.picUrl = picUrl // 歌单封面 25 | this.creator = creator // 歌单创建者信息(头像、昵称、ID) 26 | this.createTime = createTime // 歌单创建时间 27 | this.updateTime = updateTime // 歌单更新时间 28 | this.desc = desc // 歌单描述 29 | this.songCount = songCount // 歌曲数量 30 | this.playCount = playCount // 播放数 31 | this.shareCount = shareCount // 分享数 32 | this.commentCount = commentCount // 评论数 33 | this.songList = songList // 歌曲列表 34 | } 35 | } 36 | 37 | module.exports = function formatPlayListDetail(data, platform) { 38 | switch (platform) { 39 | case 'qqTOP': 40 | // qq 排行榜详情 41 | return new PlayListDetail({ 42 | id: Number(data.topinfo.topID), 43 | name: data.topinfo.ListName, 44 | picUrl: data.topinfo.pic, 45 | creator: null, 46 | createTime: null, 47 | updateTime: data.update_time, 48 | desc: data.topinfo.info, 49 | songCount: data.total_song_num, 50 | playCount: null, 51 | shareCount: null, 52 | commentCount: data.comment_num, 53 | songList: formatSongs(data.songlist, 'qq') 54 | }) 55 | case 'qq': 56 | // qq 歌单详情 57 | return new PlayListDetail({ 58 | id: Number(data.disstid), 59 | name: data.dissname, 60 | picUrl: data.logo, 61 | creator: new Creator({ 62 | uid: data.uin, 63 | name: data.nickname, 64 | picUrl: data.headurl 65 | }), 66 | createTime: data.ctime, 67 | updateTime: data.update_time, 68 | desc: data.desc, 69 | songCount: data.total_song_num, 70 | playCount: data.visitnum, 71 | shareCount: null, 72 | commentCount: null, 73 | songList: formatSongs(data.songlist, platform) 74 | }) 75 | case '163': 76 | return new PlayListDetail({ 77 | id: data.id, 78 | name: data.name, 79 | picUrl: data.coverImgUrl, 80 | creator: new Creator({ 81 | uid: data.creator.userId, 82 | name: data.creator.nickname, 83 | picUrl: data.creator.avatarUrl 84 | }), 85 | createTime: data.createTime, 86 | updateTime: data.updateTime, 87 | desc: data.description, 88 | songCount: data.trackCount, 89 | playCount: data.playCount, 90 | shareCount: data.shareCount, 91 | commentCount: data.commentCount, 92 | songList: formatSongs(data.tracks, platform) 93 | }) 94 | default: 95 | return data 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /model/search.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 搜索类模型 3 | */ 4 | const { formatSongs } = require('./song') 5 | const formatPlayList = require('./playlist') 6 | 7 | module.exports = function formatSearch(data, platform, type) { 8 | switch (type) { 9 | case 'song': 10 | return formatSongs(data, platform) 11 | case 'playlist': 12 | return formatPlayList(data, platform) 13 | default: 14 | return data 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /model/search_hot.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 热搜类模型 3 | */ 4 | 5 | module.exports = function formatSearchHot(data, platform) { 6 | switch (platform) { 7 | case 'qq': 8 | return data.map((item) => item.k) 9 | case '163': 10 | return data.map((item) => item.first) 11 | default: 12 | return data 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /model/singer_list.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 歌手类模型 3 | */ 4 | const { BaseSinger } = require('./base') 5 | 6 | class Singer extends BaseSinger { 7 | constructor({ id, mid, name, picUrl, platform }) { 8 | super({ id, mid, name }) 9 | this.picUrl = picUrl 10 | this.platform = platform 11 | } 12 | } 13 | 14 | // 格式化歌手 15 | function formatSingerList(data, platform) { 16 | switch (platform) { 17 | case 'qq': 18 | return data.map( 19 | (item) => 20 | new Singer({ 21 | id: item.singer_id, 22 | mid: item.singer_mid, 23 | name: item.singer_name, 24 | picUrl: item.singer_pic, 25 | platform: 'qq' 26 | }) 27 | ) 28 | case '163': 29 | return data.map( 30 | (item) => 31 | new Singer({ 32 | id: item.id, 33 | mid: item.id, 34 | name: item.name, 35 | picUrl: item.picUrl, 36 | platform: '163' 37 | }) 38 | ) 39 | default: 40 | return data 41 | } 42 | } 43 | 44 | module.exports = formatSingerList 45 | -------------------------------------------------------------------------------- /model/song.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 歌曲类模型 3 | */ 4 | const { BaseSong, Album, BaseSinger } = require('./base') 5 | 6 | class Song extends BaseSong { 7 | constructor({ id, mid, name, singer, album, duration, platform, privilege = null }) { 8 | super({ name, singer }) // 歌曲名称 歌手 9 | this.id = id // 歌曲ID 10 | this.mid = mid // 歌曲ID 11 | this.album = album // 专辑 12 | this.duration = duration // 时长 13 | if (privilege !== null) { 14 | this.privilege = privilege // 是否能播放 15 | } 16 | this.platform = platform // 来源平台 17 | } 18 | } 19 | 20 | // 格式化歌手 21 | function formatSinger(singers) { 22 | return singers.reduce((arr, item) => { 23 | arr.push( 24 | new BaseSinger({ 25 | id: item.id, 26 | mid: item.id, 27 | name: item.name 28 | }) 29 | ) 30 | return arr 31 | }, []) 32 | } 33 | 34 | function filterSinger(singers) { 35 | const arr = [] 36 | singers.forEach((item) => { 37 | arr.push(item.name) 38 | }) 39 | return arr.join('/') 40 | } 41 | 42 | // 格式化歌曲数据 43 | function formatSongs(data, platform) { 44 | switch (platform) { 45 | case 'qq': 46 | return data.reduce((arr, item) => { 47 | const obj = item.data ? item.data : item 48 | if (obj.songid && obj.songmid) { 49 | arr.push( 50 | new Song({ 51 | id: obj.songid, 52 | mid: obj.songmid, 53 | name: obj.songname, 54 | singer: obj.singer, 55 | album: new Album({ 56 | id: obj.albumid, 57 | mid: obj.albummid, 58 | name: obj.albumname, 59 | picUrl: `https://y.gtimg.cn/music/photo_new/T002R300x300M000${obj.albummid}.jpg?max_age=2592000` 60 | }), 61 | duration: obj.interval, 62 | platform 63 | }) 64 | ) 65 | } 66 | return arr 67 | }, []) 68 | case '163': 69 | return data.reduce((arr, item) => { 70 | if (item.id) { 71 | const singer = item.ar || item.artists 72 | const album = item.al || item.album 73 | const duration = item.dt || item.duration 74 | arr.push( 75 | new Song({ 76 | id: item.id, 77 | mid: item.id, 78 | name: item.name, 79 | singer: formatSinger(singer), 80 | album: new Album({ 81 | id: album.id, 82 | mid: album.id, 83 | name: album.name, 84 | picUrl: album.picUrl || null 85 | }), 86 | duration: duration / 1000, 87 | platform 88 | }) 89 | ) 90 | } 91 | return arr 92 | }, []) 93 | case 'migu': 94 | return data.reduce((arr, item) => { 95 | if (item.id) { 96 | const album = (item.albums || [])[0] || {} 97 | const imgItems = item.imgItems.find((v) => v.imgSizeType === '01') || item.imgItems[0] 98 | arr.push( 99 | new Song({ 100 | id: item.id, 101 | mid: item.contentId, 102 | name: item.name, 103 | singer: formatSinger(item.singers), 104 | album: new Album({ 105 | id: album.id, 106 | mid: album.id, 107 | name: album.name, 108 | picUrl: imgItems.img || null 109 | }), 110 | duration: null, 111 | platform 112 | }) 113 | ) 114 | } 115 | return arr 116 | }, []) 117 | default: 118 | return data 119 | } 120 | } 121 | 122 | module.exports = { 123 | filterSinger, 124 | Song, 125 | formatSongs 126 | } 127 | -------------------------------------------------------------------------------- /model/song_url.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 歌曲 URL 类模型 3 | */ 4 | 5 | class SongUrl { 6 | constructor({ id, url }) { 7 | this.id = id // 歌曲id 8 | this.url = url // 歌曲播放地址 9 | } 10 | } 11 | 12 | module.exports = function formatSongUrl(data, platform) { 13 | switch (platform) { 14 | case 'qq': 15 | return data.reduce((arr, item) => { 16 | arr.push(new SongUrl({ id: item.songmid, url: item.purl })) 17 | return arr 18 | }, []) 19 | case '163': 20 | return data.reduce((arr, item) => { 21 | arr.push(new SongUrl({ id: item.id, url: item.url })) 22 | return arr 23 | }, []) 24 | default: 25 | return data 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /model/toplist.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 排行榜类模型 3 | */ 4 | 5 | const { BaseSong } = require('./base') 6 | 7 | class TopList { 8 | constructor({ id, picUrl, name, songs, platform }) { 9 | this.id = id // id 10 | this.picUrl = picUrl // 图片 11 | this.name = name // 标题 12 | this.platform = platform // 来源平台 13 | this.songs = songs // 热门歌曲列表 14 | } 15 | } 16 | 17 | // 格式化热门歌曲 18 | function formatSongs(data, platform) { 19 | switch (platform) { 20 | case 'qq': 21 | return data.map( 22 | (item) => 23 | new BaseSong({ 24 | name: item.songname, 25 | singer: item.singername 26 | }) 27 | ) 28 | case '163': 29 | return data.map( 30 | (item) => 31 | new BaseSong({ 32 | name: item.first, 33 | singer: item.second 34 | }) 35 | ) 36 | default: 37 | return data 38 | } 39 | } 40 | 41 | // 排行榜列表格式化 42 | module.exports = function formatTopList(data, platform) { 43 | switch (platform) { 44 | case 'qq': 45 | return data.map((item) => { 46 | const songs = formatSongs(item.songList, platform) 47 | return new TopList({ 48 | id: item.id, 49 | picUrl: item.picUrl, 50 | name: item.topTitle, 51 | platform, 52 | songs 53 | }) 54 | }) 55 | case '163': 56 | return data.map((item) => { 57 | const songs = formatSongs(item.tracks, platform) 58 | return new TopList({ 59 | id: item.id, 60 | picUrl: item.coverImgUrl, 61 | name: item.name, 62 | platform, 63 | songs 64 | }) 65 | }) 66 | default: 67 | return data 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mmnodeapi", 3 | "version": "0.1.0", 4 | "description": "node music api", 5 | "scripts": { 6 | "dev": "nodemon app.js", 7 | "start": "node app.js", 8 | "lint:eslint": "eslint \"{config,model,routes,utils}/**/*.js\" app.js --fix", 9 | "lint:prettier": "prettier --write --loglevel warn \"{config,model,routes,utils}/**/*.js\" app.js", 10 | "lint": "npm run lint:eslint && npm run lint:prettier" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/maomao1996/mmNodeApi.git" 15 | }, 16 | "keywords": [], 17 | "author": "maomao1996 <1714487678@qq.com>", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/maomao1996/mmNodeApi/issues" 21 | }, 22 | "dependencies": { 23 | "axios": "^0.18.0", 24 | "koa": "^2.5.2", 25 | "koa-body": "^4.0.4", 26 | "koa-router": "^7.4.0", 27 | "koa-static": "^5.0.0", 28 | "koa2-cors": "^2.0.6" 29 | }, 30 | "devDependencies": { 31 | "eslint": "^7.24.0", 32 | "eslint-config-prettier": "^8.2.0", 33 | "eslint-plugin-prettier": "^3.3.1", 34 | "nodemon": "^1.19.1", 35 | "prettier": "^2.2.1" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /routes/comment_song/163.js: -------------------------------------------------------------------------------- 1 | const { formatComment } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 歌曲评论 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { page = 0, size = 20, id: rid, before: beforeTime, format } = ctx.query 8 | const params = { 9 | beforeTime, 10 | rid, 11 | offset: page * size, 12 | limit: size 13 | } 14 | const res = await axios(`/api/v1/resource/comments/R_SO_4_${rid}`, 'post', params) 15 | 16 | if (isTrue(format)) { 17 | const { total, comments, hotComments } = res 18 | const data = { 19 | page, 20 | size, 21 | total, 22 | comments: formatComment(comments, '163') 23 | } 24 | hotComments && (data.hotComments = formatComment(hotComments, '163')) 25 | ctx.body = { 26 | ...Tips[163], 27 | data 28 | } 29 | return 30 | } 31 | 32 | ctx.body = { 33 | ...Tips[163], 34 | ...res 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /routes/comment_song/qq.js: -------------------------------------------------------------------------------- 1 | const { formatComment } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 歌曲评论 qq 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { page = 0, size = 20, id: topid, format } = ctx.query 8 | 9 | const params = mergeQQParams({ 10 | loginUin: 0, 11 | hostUin: 0, 12 | platform: 'yqq.json', 13 | needNewCode: 0, 14 | reqtype: 2, 15 | biztype: 1, 16 | cmd: 8, 17 | domain: 'qq.com', 18 | topid, 19 | pagenum: page, 20 | pagesize: size 21 | }) 22 | const res = await axios('/base/fcgi-bin/fcg_global_comment_h5.fcg', 'get', params) 23 | 24 | if (isTrue(format)) { 25 | const { comment, hot_comment: hot } = res 26 | const data = { 27 | page, 28 | size, 29 | total: comment.commenttotal, 30 | comments: formatComment(comment.commentlist, 'qq') 31 | } 32 | hot && (data.hotComments = formatComment(hot.commentlist, 'qq')) 33 | ctx.body = { 34 | ...Tips.qq, 35 | data 36 | } 37 | return 38 | } 39 | 40 | ctx.body = { 41 | ...Tips.qq, 42 | ...res 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /routes/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const Router = require('koa-router') 3 | const { Route } = require('../utils') 4 | 5 | const router = new Router() 6 | 7 | // POST 路由映射 8 | const POSTRouterFileMap = ['song_url'] 9 | 10 | // 读取 routes 目录中的文件, 根据命名规则自动注册路由 11 | fs.readdirSync('./routes/') 12 | .reverse() 13 | .forEach((file) => { 14 | if (/^(?!.*\.js)/.test(file)) { 15 | const fileName = file.replace(/_/g, '/') 16 | if (POSTRouterFileMap.includes(file)) { 17 | router.use(`/${fileName}`, new Route(file, 'post')) 18 | } else { 19 | router.use(`/${fileName}`, new Route(file)) 20 | } 21 | } 22 | }) 23 | 24 | module.exports = router 25 | -------------------------------------------------------------------------------- /routes/lyric/163.js: -------------------------------------------------------------------------------- 1 | const { Lyric } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 歌词 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { id, format } = ctx.query 8 | const params = { 9 | id 10 | } 11 | const res = await axios('/weapi/song/lyric?lv=-1&kv=-1&tv=-1', 'post', params, {}, 'linuxapi') 12 | 13 | if (isTrue(format)) { 14 | ctx.body = { 15 | ...Tips[163], 16 | data: new Lyric(res.lrc.lyric) 17 | } 18 | return 19 | } 20 | 21 | ctx.body = { 22 | ...Tips[163], 23 | ...res 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /routes/lyric/migu.js: -------------------------------------------------------------------------------- 1 | const { Lyric } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 歌词 咪咕 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { id, format } = ctx.query 8 | const params = { 9 | copyrightId: id 10 | } 11 | const res = await axios( 12 | 'http://music.migu.cn/v3/api/music/audioPlayer/getLyric', 13 | 'get', 14 | params, 15 | {} 16 | ) 17 | 18 | if (isTrue(format)) { 19 | ctx.body = { 20 | ...Tips.migu, 21 | data: new Lyric(res.lyric, 'migu') 22 | } 23 | return 24 | } 25 | 26 | ctx.body = { 27 | ...Tips.migu, 28 | ...res 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /routes/lyric/qq.js: -------------------------------------------------------------------------------- 1 | const { Lyric } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 歌词 qq 5 | 6 | /* eslint-disable */ 7 | MusicJsonCallback_lrc = (data) => data 8 | /* eslint-enable */ 9 | 10 | module.exports = async (ctx, next, axios) => { 11 | const { id, format } = ctx.query 12 | const params = mergeQQParams({ 13 | jsonpCallback: 'MusicJsonCallback_lrc', 14 | loginUin: 0, 15 | hostUin: 0, 16 | format: 'jsonp', 17 | notice: 0, 18 | platform: 'yqq', 19 | needNewCode: 0, 20 | callback: 'MusicJsonCallback_lrc', 21 | pcachetime: +new Date(), 22 | songmid: id, 23 | nobase64: 1 24 | }) 25 | const res = await axios('/lyric/fcgi-bin/fcg_query_lyric_new.fcg', 'get', params) 26 | 27 | const evalRes = eval(res) // eslint-disable-line 28 | // console.log(eval(res)) 29 | 30 | if (isTrue(format)) { 31 | ctx.body = { 32 | ...Tips.qq, 33 | data: new Lyric(evalRes.lyric, 'qq') 34 | } 35 | return 36 | } 37 | 38 | ctx.body = { 39 | ...Tips.qq, 40 | ...evalRes 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /routes/playlist/163.js: -------------------------------------------------------------------------------- 1 | const { formatPlayList } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 分类歌单 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { order = 'hot', format } = ctx.query 8 | const page = parseInt(ctx.query.page || 0) 9 | const size = parseInt(ctx.query.size || 20) 10 | const params = { 11 | cat: '全部', 12 | order, // 热门 hot / 最新 new 13 | offset: page * size, // 偏移数量 14 | limit: size // 返回数量 15 | } 16 | const res = await axios('/weapi/playlist/list', 'post', params) 17 | 18 | if (isTrue(format)) { 19 | const { playlists, total } = res 20 | const data = { 21 | page, 22 | size, 23 | total, 24 | playlists: formatPlayList(playlists, '163') 25 | } 26 | ctx.body = { 27 | ...Tips[163], 28 | data 29 | } 30 | return 31 | } 32 | 33 | ctx.body = { 34 | ...Tips[163], 35 | ...res 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /routes/playlist/qq.js: -------------------------------------------------------------------------------- 1 | const { formatPlayList } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 分类歌单 qq 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { order = 'hot', format } = ctx.query 8 | const page = parseInt(ctx.query.page || 0) 9 | const size = parseInt(ctx.query.size || 20) 10 | const params = mergeQQParams({ 11 | picmid: 1, 12 | rnd: Math.random(), 13 | loginUin: 0, 14 | hostUin: 0, 15 | platform: 'yqq', 16 | needNewCode: 0, 17 | categoryId: 10000000, 18 | sortId: order === 'new' ? 2 : 5, // 热门 5 / 最新 2 19 | sin: page * size, // 偏移数量 20 | ein: (page + 1) * size - 1 // 返回数量 21 | }) 22 | const res = await axios('/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg', 'get', params) 23 | 24 | if (isTrue(format)) { 25 | const { list, sum } = res.data 26 | const data = { 27 | page, 28 | size, 29 | total: sum, 30 | playlists: formatPlayList(list, 'qq') 31 | } 32 | ctx.body = { 33 | ...Tips.qq, 34 | data 35 | } 36 | return 37 | } 38 | 39 | ctx.body = { 40 | ...Tips.qq, 41 | ...res 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /routes/playlist_detail/163.js: -------------------------------------------------------------------------------- 1 | const { formatPlayListDetail } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 歌单详情 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { id, format } = ctx.query 8 | const params = { 9 | n: 100000, 10 | s: 8, 11 | csrf_token: '', 12 | id 13 | } 14 | const res = await axios('/weapi/v3/playlist/detail', 'post', params, {}, 'linuxapi') 15 | 16 | if (isTrue(format)) { 17 | ctx.body = { 18 | ...Tips[163], 19 | data: formatPlayListDetail(res.playlist, '163') 20 | } 21 | return 22 | } 23 | 24 | ctx.body = { 25 | ...Tips[163], 26 | ...res 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /routes/playlist_detail/qq.js: -------------------------------------------------------------------------------- 1 | const { formatPlayListDetail } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 歌单详情 qq 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { id, format } = ctx.query 8 | const params = mergeQQParams({ 9 | disstid: id, 10 | type: 1, 11 | json: 1, 12 | utf8: 1, 13 | onlysong: 0, 14 | platform: 'yqq', 15 | hostUin: 0, 16 | needNewCode: 0 17 | }) 18 | const res = await axios('/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_cp.fcg', 'get', params) 19 | 20 | if (isTrue(format)) { 21 | ctx.body = { 22 | ...Tips.qq, 23 | data: formatPlayListDetail(res.cdlist[0], 'qq') 24 | } 25 | return 26 | } 27 | 28 | ctx.body = { 29 | ...Tips.qq, 30 | ...res 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /routes/search/163.js: -------------------------------------------------------------------------------- 1 | const { formatSearch } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 搜索 网易 5 | 6 | const TYPE_MAP = { 7 | song: 1, 8 | playlist: 1000 9 | } 10 | 11 | module.exports = async (ctx, next, axios) => { 12 | const { keywords: s, format, type = 'song' } = ctx.query 13 | if (!s) { 14 | ctx.body = Tips[1001] 15 | return 16 | } 17 | const page = parseInt(ctx.query.page || 0) 18 | const size = parseInt(ctx.query.size || 20) 19 | const params = { 20 | type: TYPE_MAP[type], 21 | offset: page * size, 22 | limit: size, 23 | s 24 | } 25 | const res = await axios('/weapi/search/get', 'post', params) 26 | 27 | if (isTrue(format)) { 28 | const { result } = res 29 | const data = { 30 | type, 31 | page, 32 | size 33 | } 34 | if (type === 'song') { 35 | data.total = result.songCount 36 | data.songs = formatSearch(result.songs, '163', type) 37 | } else if (type === 'playlist') { 38 | data.total = result.playlistCount 39 | data.playlists = formatSearch(result.playlists, '163', type) 40 | } 41 | ctx.body = { 42 | ...Tips[163], 43 | data 44 | } 45 | return 46 | } 47 | 48 | ctx.body = { 49 | ...Tips[163], 50 | ...res 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /routes/search/migu.js: -------------------------------------------------------------------------------- 1 | const { formatSearch } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 搜索 咪咕 5 | const TYPE_MAP = { 6 | song: '{"song":1}', 7 | playlist: '{"songlist":1}' 8 | } 9 | 10 | const RESULT_MAP = { 11 | song: 'songResultData', 12 | playlist: 'songListResultData' 13 | } 14 | 15 | module.exports = async (ctx, next, axios) => { 16 | const { keywords, format, type = 'song' } = ctx.query 17 | const page = parseInt(ctx.query.page || 0) 18 | const size = parseInt(ctx.query.size || 20) 19 | const params = { 20 | ua: 'Android_migu', 21 | version: '5.0.1', 22 | text: keywords, 23 | pageNo: page + 1, 24 | pageSize: size, 25 | searchSwitch: TYPE_MAP[type] 26 | // searchSwitch: '{"song":1,"album":0,"singer":0,"tagSong":0,"mvSong":0,"songlist":0,"bestShow":0}' 27 | } 28 | const res = await axios('/search_all.do', 'get', params) 29 | 30 | if (isTrue(format)) { 31 | const data = { 32 | type, 33 | page, 34 | size 35 | } 36 | const { totalCount, result } = res[RESULT_MAP[type]] 37 | data.total = totalCount 38 | data[`${type}s`] = formatSearch(result, 'migu', type) 39 | ctx.body = { 40 | ...Tips.migu, 41 | data 42 | } 43 | return 44 | } 45 | 46 | ctx.body = { 47 | ...Tips.migu, 48 | ...res 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /routes/search/qq.js: -------------------------------------------------------------------------------- 1 | const { formatSearch } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 搜索 qq 5 | 6 | const getParams = (type, keywords, page, size) => { 7 | let url = '/soso/fcgi-bin/search_for_qq_cp' 8 | let obj 9 | if (type === 'song') { 10 | obj = { 11 | platform: 'h5', 12 | uin: 0, 13 | needNewCode: 1, 14 | zhidaqu: 1, 15 | t: 0, 16 | flag: 1, 17 | ie: 'utf-8', 18 | sem: 1, 19 | aggr: 0, 20 | remoteplace: 'txt.yqq.playlist', 21 | w: keywords, 22 | p: page, 23 | perpage: size, 24 | n: size 25 | } 26 | } else if (type === 'playlist') { 27 | url = 'soso/fcgi-bin/client_music_search_songlist' 28 | obj = { 29 | remoteplace: 'txt.yqq.playlist', 30 | searchid: 0, 31 | flag_qc: 0, 32 | page_no: page, 33 | num_per_page: size, 34 | query: keywords, 35 | loginUin: 0, 36 | hostUin: 0, 37 | needNewCode: 0, 38 | platform: 'yqq.json' 39 | } 40 | } 41 | return { 42 | params: mergeQQParams(obj), 43 | url 44 | } 45 | } 46 | 47 | module.exports = async (ctx, next, axios) => { 48 | const { keywords, format, type = 'song' } = ctx.query 49 | if (!keywords) { 50 | ctx.body = Tips[1001] 51 | return 52 | } 53 | const page = parseInt(ctx.query.page || 0) 54 | const size = parseInt(ctx.query.size || 20) 55 | const { params, url } = getParams(type, keywords, page, size) 56 | const res = await axios(url, 'get', params) 57 | 58 | if (isTrue(format)) { 59 | const data = { 60 | type, 61 | page, 62 | size 63 | } 64 | if (type === 'song') { 65 | data.total = res.data.song.totalnum 66 | data.songs = formatSearch(res.data.song.list, 'qq', type) 67 | } else if (type === 'playlist') { 68 | data.total = res.data.sum 69 | data.playlists = formatSearch(res.data.list, 'qq', type) 70 | } 71 | ctx.body = { 72 | ...Tips.qq, 73 | data 74 | } 75 | return 76 | } 77 | 78 | ctx.body = { 79 | ...Tips.qq, 80 | ...res 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /routes/search_hot/163.js: -------------------------------------------------------------------------------- 1 | const { formatSearchHot } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 热搜 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const format = ctx.query.format 8 | const params = { 9 | type: 1111 10 | } 11 | const res = await axios('/weapi/search/hot', 'post', params) 12 | 13 | if (isTrue(format)) { 14 | ctx.body = { 15 | ...Tips[163], 16 | data: formatSearchHot(res.result.hots, '163') 17 | } 18 | return 19 | } 20 | 21 | ctx.body = { 22 | ...Tips[163], 23 | ...res 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /routes/search_hot/qq.js: -------------------------------------------------------------------------------- 1 | const { formatSearchHot } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 热搜 qq 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const format = ctx.query.format 8 | const params = mergeQQParams({ 9 | platform: 'h5', 10 | uin: 0, 11 | needNewCode: 1 12 | }) 13 | const res = await axios('/splcloud/fcgi-bin/gethotkey.fcg', 'get', params) 14 | 15 | if (isTrue(format)) { 16 | ctx.body = { 17 | ...Tips.qq, 18 | data: formatSearchHot(res.data.hotkey, 'qq') 19 | } 20 | return 21 | } 22 | 23 | ctx.body = { 24 | ...Tips.qq, 25 | ...res 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /routes/singer_list/163.js: -------------------------------------------------------------------------------- 1 | const { formatSingerList } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 歌手列表 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { format } = ctx.query 8 | const offset = 0 // parseInt(ctx.query.offset || 0) 9 | const limit = 80 // parseInt(ctx.query.limit || 50) 10 | const params = { 11 | offset, // 偏移数量 12 | limit, // 返回数量 13 | total: true 14 | } 15 | const res = await axios('/weapi/artist/list', 'post', params) 16 | 17 | if (isTrue(format)) { 18 | ctx.body = { 19 | ...Tips[163], 20 | data: formatSingerList(res.artists, '163') 21 | } 22 | return 23 | } 24 | 25 | ctx.body = { 26 | ...Tips[163], 27 | ...res 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /routes/singer_list/qq.js: -------------------------------------------------------------------------------- 1 | const { formatSingerList } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 歌手列表 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { format } = ctx.query 8 | const params = mergeQQParams({ 9 | '-': 'getUCGI' + (Math.random() + '').replace('0.', ''), 10 | loginUin: 0, 11 | hostUin: 0, 12 | platform: 'yqq.json', 13 | needNewCode: 0, 14 | data: { 15 | comm: { ct: 24, cv: 0 }, 16 | singerList: { 17 | module: 'Music.SingerListServer', 18 | method: 'get_singer_list', 19 | param: { 20 | area: -100, 21 | sex: -100, 22 | genre: -100, 23 | index: -100, 24 | sin: 0, 25 | cur_page: 1 26 | } 27 | } 28 | } 29 | }) 30 | const res = await axios('https://u.y.qq.com/cgi-bin/musicu.fcg', 'get', params, { 31 | Origin: 'https://y.qq.com', 32 | Referer: 'https://y.qq.com', 33 | Host: 'u.y.qq.com' 34 | }) 35 | 36 | if (isTrue(format)) { 37 | const { singerlist } = res.singerList.data 38 | ctx.body = { 39 | ...Tips.qq, 40 | data: formatSingerList(singerlist, 'qq') 41 | } 42 | return 43 | } 44 | 45 | ctx.body = { 46 | ...Tips.qq, 47 | ...res 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /routes/song_url/163.js: -------------------------------------------------------------------------------- 1 | const { formatSongUrl } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 歌曲 URL 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const format = ctx.query.format 8 | const { id } = ctx.request.body 9 | const ids = Array.isArray(id) ? id : JSON.parse(id) 10 | const params = { 11 | ids, 12 | br: 999000, 13 | csrf_token: '' 14 | } 15 | const res = await axios('/weapi/song/enhance/player/url', 'post', params) 16 | 17 | if (isTrue(format)) { 18 | ctx.body = { 19 | ...Tips[163], 20 | data: formatSongUrl(res.data, '163') 21 | } 22 | return 23 | } 24 | 25 | ctx.body = { 26 | ...Tips[163], 27 | ...res 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /routes/song_url/qq.js: -------------------------------------------------------------------------------- 1 | const { formatSongUrl } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 歌曲 URL qq 5 | 6 | const getGuid = () => 7 | '' + ((Math.round(Math.random() * 1e10) * new Date().getUTCMilliseconds()) % 1e9) 8 | 9 | module.exports = async (ctx, next, axios) => { 10 | const format = ctx.query.format 11 | const { id } = ctx.request.body 12 | const songmid = Array.isArray(id) ? id : JSON.parse(id) 13 | const songtype = [] 14 | songmid.forEach((item) => { 15 | songtype.push(0) 16 | }) 17 | const comm = mergeQQParams({ 18 | platform: 'h5', 19 | needNewCode: 1, 20 | notice: 0, 21 | uin: 0 22 | }) 23 | const guid = getGuid() 24 | const urlMid = { 25 | module: 'vkey.GetVkeyServer', 26 | method: 'CgiGetVkey', 27 | param: { 28 | uin: '0', 29 | loginflag: 0, 30 | platform: '23', 31 | guid, 32 | songmid, 33 | songtype 34 | } 35 | } 36 | const res = await axios( 37 | `https://u.y.qq.com/cgi-bin/musicu.fcg?_=${Date.now()}`, 38 | 'post', 39 | { comm, url_mid: urlMid }, 40 | { host: '' } 41 | ) 42 | 43 | if (isTrue(format)) { 44 | const { midurlinfo } = res.url_mid.data 45 | ctx.body = { 46 | ...Tips.qq, 47 | data: formatSongUrl(midurlinfo, 'qq') 48 | } 49 | return 50 | } 51 | 52 | ctx.body = { 53 | ...Tips.qq, 54 | ...res 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /routes/toplist/163.js: -------------------------------------------------------------------------------- 1 | const { formatTopList } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 排行榜 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const format = ctx.query.format 8 | const params = { csrf_token: '' } 9 | const res = await axios('/weapi/toplist/detail', 'post', params) 10 | 11 | if (isTrue(format)) { 12 | ctx.body = { 13 | ...Tips[163], 14 | data: formatTopList(res.list, '163') 15 | } 16 | return 17 | } 18 | 19 | ctx.body = { 20 | ...Tips[163], 21 | ...res 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /routes/toplist/qq.js: -------------------------------------------------------------------------------- 1 | const { formatTopList } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 排行榜 qq 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const format = ctx.query.format 8 | const params = mergeQQParams({ 9 | platform: 'h5', 10 | uin: 0, 11 | needNewCode: 1 12 | }) 13 | const res = await axios('/v8/fcg-bin/fcg_myqq_toplist.fcg', 'get', params) 14 | 15 | if (isTrue(format)) { 16 | ctx.body = { 17 | ...Tips.qq, 18 | data: formatTopList(res.data.topList, 'qq') 19 | } 20 | return 21 | } 22 | 23 | ctx.body = { 24 | ...Tips.qq, 25 | ...res 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /routes/toplist_detail/163.js: -------------------------------------------------------------------------------- 1 | module.exports = async (ctx, next, axios) => { 2 | ctx.redirect(`/playlist/detail/163?${ctx.querystring}`) 3 | } 4 | -------------------------------------------------------------------------------- /routes/toplist_detail/qq.js: -------------------------------------------------------------------------------- 1 | const { formatPlayListDetail } = require('../../model') 2 | const { Tips, mergeQQParams, isTrue } = require('../../utils') 3 | 4 | // 排行榜详情 qq 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { id, format } = ctx.query 8 | 9 | const params = mergeQQParams({ 10 | topid: id, 11 | needNewCode: 1, 12 | uin: 0, 13 | tpl: 3, 14 | page: 'detail', 15 | type: 'top', 16 | platform: 'yqq' 17 | }) 18 | const res = await axios('/v8/fcg-bin/fcg_v8_toplist_cp.fcg', 'get', params) 19 | 20 | if (isTrue(format)) { 21 | ctx.body = { 22 | ...Tips.qq, 23 | data: formatPlayListDetail(res, 'qqTOP') 24 | } 25 | return 26 | } 27 | 28 | ctx.body = { 29 | ...Tips.qq, 30 | ...res 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /routes/user_playlist/163.js: -------------------------------------------------------------------------------- 1 | const { formatPlayList } = require('../../model') 2 | const { Tips, isTrue } = require('../../utils') 3 | 4 | // 用户歌单列表 网易 5 | 6 | module.exports = async (ctx, next, axios) => { 7 | const { uid, format } = ctx.query 8 | const offset = 0 // parseInt(ctx.query.offset || 0) 9 | const limit = 1000 // parseInt(ctx.query.limit || 1000) 10 | const params = { 11 | uid: uid, 12 | limit, 13 | offset 14 | } 15 | const res = await axios('/weapi/user/playlist', 'post', params) 16 | 17 | if (isTrue(format)) { 18 | ctx.body = { 19 | ...Tips[163], 20 | data: formatPlayList(res.playlist, '163') 21 | } 22 | return 23 | } 24 | 25 | ctx.body = { 26 | ...Tips[163], 27 | ...res 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | mmNodeApi 10 | 49 | 50 | 51 |
52 |

mmNodeApi

53 |

NodeJS 版 API

54 | Github 57 |
58 |
59 |
    60 |
    61 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /utils/axios/crypto.js: -------------------------------------------------------------------------------- 1 | // 参数加密算法 源于https://github.com/Binaryify/NeteaseCloudMusicApi 2 | const crypto = require('crypto') 3 | const iv = Buffer.from('0102030405060708') 4 | const presetKey = Buffer.from('0CoJUm6Qyw8W8jud') 5 | const linuxapiKey = Buffer.from('rFgB&h#%2?^eDg:Q') 6 | const base62 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' 7 | const publicKey = 8 | '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDgtQn2JZ34ZC28NWYpAUd98iZ37BUrX/aKzmFbt7clFSs6sXqHauqKWqdtLkF2KexO40H1YTX8z2lSgBBOAxLsvaklV8k4cBFK9snQXE9/DDaFt6Rr7iVZMldczhC0JNgTz+SHXT6CBHuX3e9SdB1Ua44oncaTWz7OBGLbCiK45wIDAQAB\n-----END PUBLIC KEY-----' 9 | 10 | const aesEncrypt = (buffer, mode, key, iv) => { 11 | const cipher = crypto.createCipheriv('aes-128-' + mode, key, iv) 12 | return Buffer.concat([cipher.update(buffer), cipher.final()]) 13 | } 14 | 15 | const rsaEncrypt = (buffer, key) => { 16 | buffer = Buffer.concat([Buffer.alloc(128 - buffer.length), buffer]) 17 | return crypto.publicEncrypt({ key: key, padding: crypto.constants.RSA_NO_PADDING }, buffer) 18 | } 19 | 20 | const weapi = (object) => { 21 | const text = JSON.stringify(object) 22 | const secretKey = crypto.randomBytes(16).map((n) => base62.charAt(n % 62).charCodeAt()) 23 | return { 24 | params: aesEncrypt( 25 | Buffer.from(aesEncrypt(Buffer.from(text), 'cbc', presetKey, iv).toString('base64')), 26 | 'cbc', 27 | secretKey, 28 | iv 29 | ).toString('base64'), 30 | encSecKey: rsaEncrypt(secretKey.reverse(), publicKey).toString('hex') 31 | } 32 | } 33 | 34 | const linuxapi = (object) => { 35 | const text = JSON.stringify(object) 36 | return { 37 | eparams: aesEncrypt(Buffer.from(text), 'ecb', linuxapiKey, '').toString('hex').toUpperCase() 38 | } 39 | } 40 | 41 | module.exports = { weapi, linuxapi } 42 | -------------------------------------------------------------------------------- /utils/axios/index.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios') 2 | const querystring = require('querystring') 3 | const encrypt = require('./crypto') 4 | const { randomUserAgent, isPlainObject } = require('../utils') 5 | const { HTTP_CODE_MAP } = require('../code') 6 | 7 | // 网络请求配置 8 | 9 | const qq = axios.create({ 10 | baseURL: 'https://c.y.qq.com', 11 | headers: { 12 | Referer: 'https://c.y.qq.com/', 13 | Host: 'c.y.qq.com', 14 | 'User-Agent': randomUserAgent() 15 | }, 16 | platform: 'qq' 17 | }) 18 | 19 | // QQ请求配置 20 | function qqAxios(url, method, data, headers = {}) { 21 | const options = { 22 | url, 23 | method, 24 | headers, 25 | [`${method === 'get' ? 'params' : 'data'}`]: data 26 | } 27 | return qq(options) 28 | } 29 | 30 | const netease = axios.create({ 31 | baseURL: 'https://music.163.com', 32 | headers: { 33 | Accept: '*/*', 34 | 'Accept-Language': 'zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4', 35 | Connection: 'keep-alive', 36 | 'Content-Type': 'application/x-www-form-urlencoded', 37 | Referer: 'https://music.163.com/', 38 | Host: 'music.163.com', 39 | Origin: 'https://music.163.com', 40 | 'User-Agent': randomUserAgent() 41 | }, 42 | platform: 'netease' 43 | }) 44 | 45 | // 网易云请求配置 46 | function neteaseAxios(url, method, data, headers = {}, crypto = 'weapi') { 47 | if (crypto === 'weapi') { 48 | data = encrypt.weapi(data) 49 | url = url.replace(/\w*api/, 'weapi') 50 | } else if (crypto === 'linuxapi') { 51 | data = encrypt.linuxapi({ 52 | url: `https://music.163.com${url}`.replace(/\w*api/, 'api'), 53 | params: data, 54 | method 55 | }) 56 | url = 'https://music.163.com/api/linux/forward' 57 | } 58 | const options = { 59 | url, 60 | method, 61 | headers, 62 | data: querystring.stringify(data) 63 | } 64 | return netease(options) 65 | } 66 | 67 | // 咪咕请求配置 68 | const migu = axios.create({ 69 | baseURL: 'http://app.pd.nf.migu.cn/MIGUM2.0/v1.0/content', 70 | headers: { 71 | Referer: 'http://music.migu.cn/', 72 | Host: 'music.migu.cn', 73 | 'User-Agent': randomUserAgent() 74 | } 75 | }) 76 | function miguAxios(url, method, data, headers = {}) { 77 | const options = { 78 | url, 79 | method, 80 | headers, 81 | [`${method === 'get' ? 'params' : 'data'}`]: data 82 | } 83 | return migu(options) 84 | } 85 | 86 | ;[axios, qq, netease, migu].forEach((item) => { 87 | item.interceptors.response.use( 88 | (response) => { 89 | console.log(`${response.config.method} ${response.config.url}`) 90 | if ( 91 | item.defaults.platform && 92 | isPlainObject(response.data) && 93 | response.data.code !== HTTP_CODE_MAP[item.defaults.platform] 94 | ) { 95 | return Promise.reject(response) 96 | } 97 | return response.data 98 | }, 99 | (error) => Promise.reject(error) 100 | ) 101 | }) 102 | 103 | module.exports = { 104 | qq: qqAxios, 105 | netease: neteaseAxios, 106 | migu: miguAxios, 107 | axios 108 | } 109 | -------------------------------------------------------------------------------- /utils/code.js: -------------------------------------------------------------------------------- 1 | // qq 请求成功状态码 2 | const OK_QQ = 0 3 | 4 | // 网易 请求成功状态码 5 | const OK_163 = 200 6 | 7 | const HTTP_CODE_MAP = { 8 | qq: OK_QQ, 9 | netease: OK_163 10 | } 11 | 12 | module.exports = { 13 | HTTP_CODE_MAP, 14 | OK_QQ, 15 | OK_163 16 | } 17 | -------------------------------------------------------------------------------- /utils/index.js: -------------------------------------------------------------------------------- 1 | const code = require('./code') 2 | const utils = require('./utils') 3 | 4 | module.exports = { 5 | axios: require('./axios'), 6 | Route: require('./route'), 7 | Tips: require('./tips'), 8 | ...code, 9 | ...utils 10 | } 11 | -------------------------------------------------------------------------------- /utils/route.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const Router = require('koa-router') 3 | const axios = require('./axios') 4 | const { platform } = require('../config') 5 | 6 | // 路由包装函数 7 | const func = (fn, type) => { 8 | const t = type === '163' ? 'netease' : type 9 | return (ctx, next) => fn(ctx, next, axios[t]) 10 | } 11 | 12 | /** 13 | * 路由注册类 14 | * 通过读取指定目录下的文件自动注册路由 15 | */ 16 | 17 | module.exports = class Route { 18 | constructor(name, type = 'get') { 19 | this.name = name 20 | this.type = type 21 | this.router = new Router() 22 | return this.init() 23 | } 24 | 25 | init() { 26 | const path = this.name.replace(/_/g, '/') 27 | fs.readdirSync(`./routes/${this.name}/`) 28 | .reverse() 29 | .forEach((file) => { 30 | const fileName = file.replace(/.js/, '') 31 | this.router[this.type]( 32 | `/${fileName}`, 33 | func(require(`../routes/${this.name}/${file}`), fileName) 34 | ) 35 | }) 36 | this.router.redirect('/', `/${path}/${platform}`) 37 | return this.router.routes() 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /utils/tips.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | qq: { 3 | code: 0, 4 | platform: 'qq' 5 | }, 6 | 163: { 7 | code: 0, 8 | platform: '163' 9 | }, 10 | migu: { 11 | code: 0, 12 | platform: 'migu' 13 | }, 14 | 1000: { 15 | code: 1000, 16 | msg: '请求错误,请稍后再试' 17 | }, 18 | 1001: { 19 | code: 1001, 20 | msg: '参数错误' 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /utils/utils.js: -------------------------------------------------------------------------------- 1 | // 随机生成浏览器标识 2 | exports.randomUserAgent = () => { 3 | const userAgentList = [ 4 | 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36', 5 | 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1', 6 | 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1', 7 | 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36', 8 | 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36', 9 | 'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Mobile Safari/537.36', 10 | 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89;GameHelper', 11 | 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4', 12 | 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1', 13 | 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 14 | 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:46.0) Gecko/20100101 Firefox/46.0', 15 | 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0', 16 | 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)', 17 | 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)', 18 | 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)', 19 | 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)', 20 | 'Mozilla/5.0 (Windows NT 6.3; Win64, x64; Trident/7.0; rv:11.0) like Gecko', 21 | 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/13.10586', 22 | 'Mozilla/5.0 (iPad; CPU OS 10_0 like Mac OS X) AppleWebKit/602.1.38 (KHTML, like Gecko) Version/10.0 Mobile/14A300 Safari/602.1' 23 | ] 24 | const num = Math.floor(Math.random() * userAgentList.length) 25 | return userAgentList[num] 26 | } 27 | 28 | // qq 请求参数 29 | const commonParams = { 30 | g_tk: 5381, 31 | inCharset: 'utf-8', 32 | outCharset: 'utf-8', 33 | notice: 0, 34 | format: 'json' 35 | } 36 | // 合并 qq 请求参数 37 | exports.mergeQQParams = (o) => ({ ...commonParams, ...o }) 38 | 39 | exports.isPlainObject = (val) => toString.call(val) === '[object Object]' 40 | 41 | exports.isTrue = (v) => v === true 42 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8= 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0= 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.13.10" 19 | resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" 20 | integrity sha1-qLKmYUj1sn1maxXYF3Q0enMdUtE= 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.0": 27 | version "0.4.0" 28 | resolved "https://registry.npm.taobao.org/@eslint/eslintrc/download/@eslint/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" 29 | integrity sha1-mcwKBYTXLx3zi5APsGK6mV85VUc= 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@types/events@*": 42 | version "3.0.0" 43 | resolved "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" 44 | integrity sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc= 45 | 46 | "@types/formidable@^1.0.31": 47 | version "1.0.31" 48 | resolved "https://registry.npm.taobao.org/@types/formidable/download/@types/formidable-1.0.31.tgz#274f9dc2d0a1a9ce1feef48c24ca0859e7ec947b" 49 | integrity sha1-J0+dwtChqc4f7vSMJMoIWefslHs= 50 | dependencies: 51 | "@types/events" "*" 52 | "@types/node" "*" 53 | 54 | "@types/node@*": 55 | version "12.12.16" 56 | resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-12.12.16.tgz?cache=0&sync_timestamp=1575925534482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.12.16.tgz#3ebcbd7bf978fa4c5120fee8be57083271a8b3ac" 57 | integrity sha1-Pry9e/l4+kxRIP7ovlcIMnGos6w= 58 | 59 | abbrev@1: 60 | version "1.1.1" 61 | resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 62 | integrity sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg= 63 | 64 | accepts@^1.3.5: 65 | version "1.3.7" 66 | resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 67 | integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80= 68 | dependencies: 69 | mime-types "~2.1.24" 70 | negotiator "0.6.2" 71 | 72 | acorn-jsx@^5.3.1: 73 | version "5.3.1" 74 | resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz?cache=0&sync_timestamp=1599546317194&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 75 | integrity sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns= 76 | 77 | acorn@^7.4.0: 78 | version "7.4.1" 79 | resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1618214266304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 80 | integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo= 81 | 82 | ajv@^6.10.0: 83 | version "6.10.2" 84 | resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" 85 | integrity sha1-086gTWsBeyiUrWkED+yLYj60vVI= 86 | dependencies: 87 | fast-deep-equal "^2.0.1" 88 | fast-json-stable-stringify "^2.0.0" 89 | json-schema-traverse "^0.4.1" 90 | uri-js "^4.2.2" 91 | 92 | ajv@^6.12.4: 93 | version "6.12.6" 94 | resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 95 | integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ= 96 | dependencies: 97 | fast-deep-equal "^3.1.1" 98 | fast-json-stable-stringify "^2.0.0" 99 | json-schema-traverse "^0.4.1" 100 | uri-js "^4.2.2" 101 | 102 | ajv@^8.0.1: 103 | version "8.1.0" 104 | resolved "https://registry.npm.taobao.org/ajv/download/ajv-8.1.0.tgz#45d5d3d36c7cdd808930cc3e603cf6200dbeb736" 105 | integrity sha1-RdXT02x83YCJMMw+YDz2IA2+tzY= 106 | dependencies: 107 | fast-deep-equal "^3.1.1" 108 | json-schema-traverse "^1.0.0" 109 | require-from-string "^2.0.2" 110 | uri-js "^4.2.2" 111 | 112 | ansi-align@^2.0.0: 113 | version "2.0.0" 114 | resolved "https://registry.npm.taobao.org/ansi-align/download/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" 115 | integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= 116 | dependencies: 117 | string-width "^2.0.0" 118 | 119 | ansi-colors@^4.1.1: 120 | version "4.1.1" 121 | resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 122 | integrity sha1-y7muJWv3UK8eqzRPIpqif+lLo0g= 123 | 124 | ansi-regex@^2.0.0: 125 | version "2.1.1" 126 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 127 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 128 | 129 | ansi-regex@^3.0.0: 130 | version "3.0.0" 131 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 132 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 133 | 134 | ansi-regex@^5.0.0: 135 | version "5.0.0" 136 | resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 137 | integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= 138 | 139 | ansi-styles@^3.2.1: 140 | version "3.2.1" 141 | resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1573557674483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 142 | integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= 143 | dependencies: 144 | color-convert "^1.9.0" 145 | 146 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 147 | version "4.3.0" 148 | resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1617175602652&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 149 | integrity sha1-7dgDYornHATIWuegkG7a00tkiTc= 150 | dependencies: 151 | color-convert "^2.0.1" 152 | 153 | any-promise@^1.0.0, any-promise@^1.1.0: 154 | version "1.3.0" 155 | resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" 156 | integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= 157 | 158 | anymatch@^2.0.0: 159 | version "2.0.0" 160 | resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" 161 | integrity sha1-vLJLTzeTTZqnrBe0ra+J58du8us= 162 | dependencies: 163 | micromatch "^3.1.4" 164 | normalize-path "^2.1.1" 165 | 166 | aproba@^1.0.3: 167 | version "1.2.0" 168 | resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 169 | integrity sha1-aALmJk79GMeQobDVF/DyYnvyyUo= 170 | 171 | are-we-there-yet@~1.1.2: 172 | version "1.1.5" 173 | resolved "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 174 | integrity sha1-SzXClE8GKov82mZBB2A1D+nd/CE= 175 | dependencies: 176 | delegates "^1.0.0" 177 | readable-stream "^2.0.6" 178 | 179 | argparse@^1.0.7: 180 | version "1.0.10" 181 | resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 182 | integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= 183 | dependencies: 184 | sprintf-js "~1.0.2" 185 | 186 | arr-diff@^4.0.0: 187 | version "4.0.0" 188 | resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 189 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 190 | 191 | arr-flatten@^1.1.0: 192 | version "1.1.0" 193 | resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 194 | integrity sha1-NgSLv/TntH4TZkQxbJlmnqWukfE= 195 | 196 | arr-union@^3.1.0: 197 | version "3.1.0" 198 | resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 199 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 200 | 201 | array-unique@^0.3.2: 202 | version "0.3.2" 203 | resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 204 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 205 | 206 | assign-symbols@^1.0.0: 207 | version "1.0.0" 208 | resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 209 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 210 | 211 | astral-regex@^2.0.0: 212 | version "2.0.0" 213 | resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 214 | integrity sha1-SDFDxWeu7UeFdZwIZXhtx319LjE= 215 | 216 | async-each@^1.0.1: 217 | version "1.0.3" 218 | resolved "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" 219 | integrity sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8= 220 | 221 | atob@^2.1.1: 222 | version "2.1.2" 223 | resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 224 | integrity sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k= 225 | 226 | axios@^0.18.0: 227 | version "0.18.1" 228 | resolved "https://registry.npm.taobao.org/axios/download/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" 229 | integrity sha1-/z8N4ue10YDnV62YAA8Qgbh7zqM= 230 | dependencies: 231 | follow-redirects "1.5.10" 232 | is-buffer "^2.0.2" 233 | 234 | balanced-match@^1.0.0: 235 | version "1.0.0" 236 | resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 237 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 238 | 239 | base@^0.11.1: 240 | version "0.11.2" 241 | resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 242 | integrity sha1-e95c7RRbbVUakNuH+DxVi060io8= 243 | dependencies: 244 | cache-base "^1.0.1" 245 | class-utils "^0.3.5" 246 | component-emitter "^1.2.1" 247 | define-property "^1.0.0" 248 | isobject "^3.0.1" 249 | mixin-deep "^1.2.0" 250 | pascalcase "^0.1.1" 251 | 252 | binary-extensions@^1.0.0: 253 | version "1.13.1" 254 | resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" 255 | integrity sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U= 256 | 257 | boxen@^1.2.1: 258 | version "1.3.0" 259 | resolved "https://registry.npm.taobao.org/boxen/download/boxen-1.3.0.tgz?cache=0&sync_timestamp=1575618322445&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fboxen%2Fdownload%2Fboxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" 260 | integrity sha1-VcbDmouljZxhrSLNh3Uy3rZlogs= 261 | dependencies: 262 | ansi-align "^2.0.0" 263 | camelcase "^4.0.0" 264 | chalk "^2.0.1" 265 | cli-boxes "^1.0.0" 266 | string-width "^2.0.0" 267 | term-size "^1.2.0" 268 | widest-line "^2.0.0" 269 | 270 | brace-expansion@^1.1.7: 271 | version "1.1.11" 272 | resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 273 | integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= 274 | dependencies: 275 | balanced-match "^1.0.0" 276 | concat-map "0.0.1" 277 | 278 | braces@^2.3.1, braces@^2.3.2: 279 | version "2.3.2" 280 | resolved "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 281 | integrity sha1-WXn9PxTNUxVl5fot8av/8d+u5yk= 282 | dependencies: 283 | arr-flatten "^1.1.0" 284 | array-unique "^0.3.2" 285 | extend-shallow "^2.0.1" 286 | fill-range "^4.0.0" 287 | isobject "^3.0.1" 288 | repeat-element "^1.1.2" 289 | snapdragon "^0.8.1" 290 | snapdragon-node "^2.0.1" 291 | split-string "^3.0.2" 292 | to-regex "^3.0.1" 293 | 294 | bytes@3.1.0: 295 | version "3.1.0" 296 | resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbytes%2Fdownload%2Fbytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 297 | integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY= 298 | 299 | cache-base@^1.0.1: 300 | version "1.0.1" 301 | resolved "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 302 | integrity sha1-Cn9GQWgxyLZi7jb+TnxZ129marI= 303 | dependencies: 304 | collection-visit "^1.0.0" 305 | component-emitter "^1.2.1" 306 | get-value "^2.0.6" 307 | has-value "^1.0.0" 308 | isobject "^3.0.1" 309 | set-value "^2.0.0" 310 | to-object-path "^0.3.0" 311 | union-value "^1.0.0" 312 | unset-value "^1.0.0" 313 | 314 | cache-content-type@^1.0.0: 315 | version "1.0.1" 316 | resolved "https://registry.npm.taobao.org/cache-content-type/download/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" 317 | integrity sha1-A1zeKwjuISn0qDFeqPAKANuhRTw= 318 | dependencies: 319 | mime-types "^2.1.18" 320 | ylru "^1.2.0" 321 | 322 | call-bind@^1.0.0: 323 | version "1.0.2" 324 | resolved "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1610403020286&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 325 | integrity sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw= 326 | dependencies: 327 | function-bind "^1.1.1" 328 | get-intrinsic "^1.0.2" 329 | 330 | callsites@^3.0.0: 331 | version "3.1.0" 332 | resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 333 | integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= 334 | 335 | camelcase@^4.0.0: 336 | version "4.1.0" 337 | resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 338 | integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= 339 | 340 | capture-stack-trace@^1.0.0: 341 | version "1.0.1" 342 | resolved "https://registry.npm.taobao.org/capture-stack-trace/download/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" 343 | integrity sha1-psC74fOPOqC5Ijjstv9Cw0TUE10= 344 | 345 | chalk@^2.0.0, chalk@^2.0.1: 346 | version "2.4.2" 347 | resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1573282918610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 348 | integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= 349 | dependencies: 350 | ansi-styles "^3.2.1" 351 | escape-string-regexp "^1.0.5" 352 | supports-color "^5.3.0" 353 | 354 | chalk@^4.0.0: 355 | version "4.1.0" 356 | resolved "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1592843133653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 357 | integrity sha1-ThSHCmGNni7dl92DRf2dncMVZGo= 358 | dependencies: 359 | ansi-styles "^4.1.0" 360 | supports-color "^7.1.0" 361 | 362 | chokidar@^2.1.8: 363 | version "2.1.8" 364 | resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1572685135194&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" 365 | integrity sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc= 366 | dependencies: 367 | anymatch "^2.0.0" 368 | async-each "^1.0.1" 369 | braces "^2.3.2" 370 | glob-parent "^3.1.0" 371 | inherits "^2.0.3" 372 | is-binary-path "^1.0.0" 373 | is-glob "^4.0.0" 374 | normalize-path "^3.0.0" 375 | path-is-absolute "^1.0.0" 376 | readdirp "^2.2.1" 377 | upath "^1.1.1" 378 | optionalDependencies: 379 | fsevents "^1.2.7" 380 | 381 | chownr@^1.1.1: 382 | version "1.1.3" 383 | resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" 384 | integrity sha1-Qtg31SOWiNVfMDADpQgjD6ZycUI= 385 | 386 | ci-info@^1.5.0: 387 | version "1.6.0" 388 | resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" 389 | integrity sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc= 390 | 391 | class-utils@^0.3.5: 392 | version "0.3.6" 393 | resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 394 | integrity sha1-+TNprouafOAv1B+q0MqDAzGQxGM= 395 | dependencies: 396 | arr-union "^3.1.0" 397 | define-property "^0.2.5" 398 | isobject "^3.0.0" 399 | static-extend "^0.1.1" 400 | 401 | cli-boxes@^1.0.0: 402 | version "1.0.0" 403 | resolved "https://registry.npm.taobao.org/cli-boxes/download/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" 404 | integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= 405 | 406 | co-body@^5.1.1: 407 | version "5.2.0" 408 | resolved "https://registry.npm.taobao.org/co-body/download/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124" 409 | integrity sha1-WgpljEYCkTHg46MG9nZHMC9xwSQ= 410 | dependencies: 411 | inflation "^2.0.0" 412 | qs "^6.4.0" 413 | raw-body "^2.2.0" 414 | type-is "^1.6.14" 415 | 416 | co@^4.6.0: 417 | version "4.6.0" 418 | resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 419 | integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= 420 | 421 | code-point-at@^1.0.0: 422 | version "1.1.0" 423 | resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 424 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 425 | 426 | collection-visit@^1.0.0: 427 | version "1.0.0" 428 | resolved "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 429 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 430 | dependencies: 431 | map-visit "^1.0.0" 432 | object-visit "^1.0.0" 433 | 434 | color-convert@^1.9.0: 435 | version "1.9.3" 436 | resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 437 | integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= 438 | dependencies: 439 | color-name "1.1.3" 440 | 441 | color-convert@^2.0.1: 442 | version "2.0.1" 443 | resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 444 | integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= 445 | dependencies: 446 | color-name "~1.1.4" 447 | 448 | color-name@1.1.3: 449 | version "1.1.3" 450 | resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 451 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 452 | 453 | color-name@~1.1.4: 454 | version "1.1.4" 455 | resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 456 | integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= 457 | 458 | component-emitter@^1.2.1: 459 | version "1.3.0" 460 | resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 461 | integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A= 462 | 463 | concat-map@0.0.1: 464 | version "0.0.1" 465 | resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 466 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 467 | 468 | configstore@^3.0.0: 469 | version "3.1.2" 470 | resolved "https://registry.npm.taobao.org/configstore/download/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" 471 | integrity sha1-xvJd767vJt8S3TNBSwAf6BpUP48= 472 | dependencies: 473 | dot-prop "^4.1.0" 474 | graceful-fs "^4.1.2" 475 | make-dir "^1.0.0" 476 | unique-string "^1.0.0" 477 | write-file-atomic "^2.0.0" 478 | xdg-basedir "^3.0.0" 479 | 480 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 481 | version "1.1.0" 482 | resolved "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 483 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 484 | 485 | content-disposition@~0.5.2: 486 | version "0.5.3" 487 | resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcontent-disposition%2Fdownload%2Fcontent-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 488 | integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70= 489 | dependencies: 490 | safe-buffer "5.1.2" 491 | 492 | content-type@^1.0.4: 493 | version "1.0.4" 494 | resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 495 | integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js= 496 | 497 | cookies@~0.8.0: 498 | version "0.8.0" 499 | resolved "https://registry.npm.taobao.org/cookies/download/cookies-0.8.0.tgz?cache=0&sync_timestamp=1570851324736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookies%2Fdownload%2Fcookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90" 500 | integrity sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A= 501 | dependencies: 502 | depd "~2.0.0" 503 | keygrip "~1.1.0" 504 | 505 | copy-descriptor@^0.1.0: 506 | version "0.1.1" 507 | resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 508 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 509 | 510 | core-util-is@~1.0.0: 511 | version "1.0.2" 512 | resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 513 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 514 | 515 | create-error-class@^3.0.0: 516 | version "3.0.2" 517 | resolved "https://registry.npm.taobao.org/create-error-class/download/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 518 | integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= 519 | dependencies: 520 | capture-stack-trace "^1.0.0" 521 | 522 | cross-spawn@^5.0.1: 523 | version "5.1.0" 524 | resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 525 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 526 | dependencies: 527 | lru-cache "^4.0.1" 528 | shebang-command "^1.2.0" 529 | which "^1.2.9" 530 | 531 | cross-spawn@^7.0.2: 532 | version "7.0.3" 533 | resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz?cache=0&sync_timestamp=1606748073153&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 534 | integrity sha1-9zqFudXUHQRVUcF34ogtSshXKKY= 535 | dependencies: 536 | path-key "^3.1.0" 537 | shebang-command "^2.0.0" 538 | which "^2.0.1" 539 | 540 | crypto-random-string@^1.0.0: 541 | version "1.0.0" 542 | resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" 543 | integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= 544 | 545 | debug@=3.1.0, debug@~3.1.0: 546 | version "3.1.0" 547 | resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 548 | integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE= 549 | dependencies: 550 | ms "2.0.0" 551 | 552 | debug@^2.2.0, debug@^2.3.3: 553 | version "2.6.9" 554 | resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 555 | integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8= 556 | dependencies: 557 | ms "2.0.0" 558 | 559 | debug@^3.1.0, debug@^3.2.6: 560 | version "3.2.6" 561 | resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 562 | integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps= 563 | dependencies: 564 | ms "^2.1.1" 565 | 566 | debug@^4.0.1: 567 | version "4.1.1" 568 | resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 569 | integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= 570 | dependencies: 571 | ms "^2.1.1" 572 | 573 | debug@^4.1.1: 574 | version "4.3.1" 575 | resolved "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1614330710870&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 576 | integrity sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4= 577 | dependencies: 578 | ms "2.1.2" 579 | 580 | decode-uri-component@^0.2.0: 581 | version "0.2.0" 582 | resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 583 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 584 | 585 | deep-equal@~1.0.1: 586 | version "1.0.1" 587 | resolved "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz?cache=0&sync_timestamp=1575872560040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 588 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= 589 | 590 | deep-extend@^0.6.0: 591 | version "0.6.0" 592 | resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 593 | integrity sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw= 594 | 595 | deep-is@^0.1.3: 596 | version "0.1.3" 597 | resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 598 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 599 | 600 | define-property@^0.2.5: 601 | version "0.2.5" 602 | resolved "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 603 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 604 | dependencies: 605 | is-descriptor "^0.1.0" 606 | 607 | define-property@^1.0.0: 608 | version "1.0.0" 609 | resolved "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 610 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 611 | dependencies: 612 | is-descriptor "^1.0.0" 613 | 614 | define-property@^2.0.2: 615 | version "2.0.2" 616 | resolved "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 617 | integrity sha1-1Flono1lS6d+AqgX+HENcCyxbp0= 618 | dependencies: 619 | is-descriptor "^1.0.2" 620 | isobject "^3.0.1" 621 | 622 | delegates@^1.0.0: 623 | version "1.0.0" 624 | resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdelegates%2Fdownload%2Fdelegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 625 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 626 | 627 | depd@^1.1.2, depd@~1.1.2: 628 | version "1.1.2" 629 | resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 630 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 631 | 632 | depd@~2.0.0: 633 | version "2.0.0" 634 | resolved "https://registry.npm.taobao.org/depd/download/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 635 | integrity sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8= 636 | 637 | destroy@^1.0.4: 638 | version "1.0.4" 639 | resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 640 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 641 | 642 | detect-libc@^1.0.2: 643 | version "1.0.3" 644 | resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 645 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 646 | 647 | doctrine@^3.0.0: 648 | version "3.0.0" 649 | resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 650 | integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE= 651 | dependencies: 652 | esutils "^2.0.2" 653 | 654 | dot-prop@^4.1.0: 655 | version "4.2.0" 656 | resolved "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz?cache=0&sync_timestamp=1572621117377&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" 657 | integrity sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc= 658 | dependencies: 659 | is-obj "^1.0.0" 660 | 661 | duplexer3@^0.1.4: 662 | version "0.1.4" 663 | resolved "https://registry.npm.taobao.org/duplexer3/download/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 664 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 665 | 666 | ee-first@1.1.1: 667 | version "1.1.1" 668 | resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 669 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 670 | 671 | emoji-regex@^8.0.0: 672 | version "8.0.0" 673 | resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 674 | integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= 675 | 676 | encodeurl@^1.0.2: 677 | version "1.0.2" 678 | resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 679 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 680 | 681 | enquirer@^2.3.5: 682 | version "2.3.6" 683 | resolved "https://registry.npm.taobao.org/enquirer/download/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 684 | integrity sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00= 685 | dependencies: 686 | ansi-colors "^4.1.1" 687 | 688 | error-inject@^1.0.0: 689 | version "1.0.0" 690 | resolved "https://registry.npm.taobao.org/error-inject/download/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37" 691 | integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc= 692 | 693 | escape-html@^1.0.3: 694 | version "1.0.3" 695 | resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 696 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 697 | 698 | escape-string-regexp@^1.0.5: 699 | version "1.0.5" 700 | resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 701 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 702 | 703 | eslint-config-prettier@^8.2.0: 704 | version "8.2.0" 705 | resolved "https://registry.npm.taobao.org/eslint-config-prettier/download/eslint-config-prettier-8.2.0.tgz?cache=0&sync_timestamp=1618328292472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-config-prettier%2Fdownload%2Feslint-config-prettier-8.2.0.tgz#78de77d63bca8e9e59dae75a614b5299925bb7b3" 706 | integrity sha1-eN531jvKjp5Z2udaYUtSmZJbt7M= 707 | 708 | eslint-plugin-prettier@^3.3.1: 709 | version "3.3.1" 710 | resolved "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" 711 | integrity sha1-cHnPoklweJBQEeb4Lo3YRT0Tcbc= 712 | dependencies: 713 | prettier-linter-helpers "^1.0.0" 714 | 715 | eslint-scope@^5.1.1: 716 | version "5.1.1" 717 | resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1599933675196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 718 | integrity sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw= 719 | dependencies: 720 | esrecurse "^4.3.0" 721 | estraverse "^4.1.1" 722 | 723 | eslint-utils@^2.1.0: 724 | version "2.1.0" 725 | resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-2.1.0.tgz?cache=0&sync_timestamp=1592843197443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 726 | integrity sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc= 727 | dependencies: 728 | eslint-visitor-keys "^1.1.0" 729 | 730 | eslint-visitor-keys@^1.1.0: 731 | version "1.1.0" 732 | resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705511122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 733 | integrity sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI= 734 | 735 | eslint-visitor-keys@^1.3.0: 736 | version "1.3.0" 737 | resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1597435362955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 738 | integrity sha1-MOvR73wv3/AcOk8VEESvJfqwUj4= 739 | 740 | eslint-visitor-keys@^2.0.0: 741 | version "2.0.0" 742 | resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-2.0.0.tgz?cache=0&sync_timestamp=1597435362955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 743 | integrity sha1-If3I+82ceVzAMh8FY3AglXUVEag= 744 | 745 | eslint@^7.24.0: 746 | version "7.24.0" 747 | resolved "https://registry.npm.taobao.org/eslint/download/eslint-7.24.0.tgz#2e44fa62d93892bfdb100521f17345ba54b8513a" 748 | integrity sha1-LkT6Ytk4kr/bEAUh8XNFulS4UTo= 749 | dependencies: 750 | "@babel/code-frame" "7.12.11" 751 | "@eslint/eslintrc" "^0.4.0" 752 | ajv "^6.10.0" 753 | chalk "^4.0.0" 754 | cross-spawn "^7.0.2" 755 | debug "^4.0.1" 756 | doctrine "^3.0.0" 757 | enquirer "^2.3.5" 758 | eslint-scope "^5.1.1" 759 | eslint-utils "^2.1.0" 760 | eslint-visitor-keys "^2.0.0" 761 | espree "^7.3.1" 762 | esquery "^1.4.0" 763 | esutils "^2.0.2" 764 | file-entry-cache "^6.0.1" 765 | functional-red-black-tree "^1.0.1" 766 | glob-parent "^5.0.0" 767 | globals "^13.6.0" 768 | ignore "^4.0.6" 769 | import-fresh "^3.0.0" 770 | imurmurhash "^0.1.4" 771 | is-glob "^4.0.0" 772 | js-yaml "^3.13.1" 773 | json-stable-stringify-without-jsonify "^1.0.1" 774 | levn "^0.4.1" 775 | lodash "^4.17.21" 776 | minimatch "^3.0.4" 777 | natural-compare "^1.4.0" 778 | optionator "^0.9.1" 779 | progress "^2.0.0" 780 | regexpp "^3.1.0" 781 | semver "^7.2.1" 782 | strip-ansi "^6.0.0" 783 | strip-json-comments "^3.1.0" 784 | table "^6.0.4" 785 | text-table "^0.2.0" 786 | v8-compile-cache "^2.0.3" 787 | 788 | espree@^7.3.0, espree@^7.3.1: 789 | version "7.3.1" 790 | resolved "https://registry.npm.taobao.org/espree/download/espree-7.3.1.tgz?cache=0&sync_timestamp=1607144072939&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 791 | integrity sha1-8t8zC3Usb1UBn4vYm3ZgA5wbu7Y= 792 | dependencies: 793 | acorn "^7.4.0" 794 | acorn-jsx "^5.3.1" 795 | eslint-visitor-keys "^1.3.0" 796 | 797 | esprima@^4.0.0: 798 | version "4.0.1" 799 | resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesprima%2Fdownload%2Fesprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 800 | integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= 801 | 802 | esquery@^1.4.0: 803 | version "1.4.0" 804 | resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 805 | integrity sha1-IUj/w4uC6McFff7UhCWz5h8PJKU= 806 | dependencies: 807 | estraverse "^5.1.0" 808 | 809 | esrecurse@^4.3.0: 810 | version "4.3.0" 811 | resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 812 | integrity sha1-eteWTWeauyi+5yzsY3WLHF0smSE= 813 | dependencies: 814 | estraverse "^5.2.0" 815 | 816 | estraverse@^4.1.1: 817 | version "4.3.0" 818 | resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 819 | integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= 820 | 821 | estraverse@^5.1.0, estraverse@^5.2.0: 822 | version "5.2.0" 823 | resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596643087695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 824 | integrity sha1-MH30JUfmzHMk088DwVXVzbjFOIA= 825 | 826 | esutils@^2.0.2: 827 | version "2.0.3" 828 | resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz?cache=0&sync_timestamp=1564535492241&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesutils%2Fdownload%2Fesutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 829 | integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q= 830 | 831 | execa@^0.7.0: 832 | version "0.7.0" 833 | resolved "https://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 834 | integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= 835 | dependencies: 836 | cross-spawn "^5.0.1" 837 | get-stream "^3.0.0" 838 | is-stream "^1.1.0" 839 | npm-run-path "^2.0.0" 840 | p-finally "^1.0.0" 841 | signal-exit "^3.0.0" 842 | strip-eof "^1.0.0" 843 | 844 | expand-brackets@^2.1.4: 845 | version "2.1.4" 846 | resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 847 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 848 | dependencies: 849 | debug "^2.3.3" 850 | define-property "^0.2.5" 851 | extend-shallow "^2.0.1" 852 | posix-character-classes "^0.1.0" 853 | regex-not "^1.0.0" 854 | snapdragon "^0.8.1" 855 | to-regex "^3.0.1" 856 | 857 | extend-shallow@^2.0.1: 858 | version "2.0.1" 859 | resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 860 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 861 | dependencies: 862 | is-extendable "^0.1.0" 863 | 864 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 865 | version "3.0.2" 866 | resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 867 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 868 | dependencies: 869 | assign-symbols "^1.0.0" 870 | is-extendable "^1.0.1" 871 | 872 | extglob@^2.0.4: 873 | version "2.0.4" 874 | resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 875 | integrity sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM= 876 | dependencies: 877 | array-unique "^0.3.2" 878 | define-property "^1.0.0" 879 | expand-brackets "^2.1.4" 880 | extend-shallow "^2.0.1" 881 | fragment-cache "^0.2.1" 882 | regex-not "^1.0.0" 883 | snapdragon "^0.8.1" 884 | to-regex "^3.0.1" 885 | 886 | fast-deep-equal@^2.0.1: 887 | version "2.0.1" 888 | resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 889 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 890 | 891 | fast-deep-equal@^3.1.1: 892 | version "3.1.3" 893 | resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 894 | integrity sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU= 895 | 896 | fast-diff@^1.1.2: 897 | version "1.2.0" 898 | resolved "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 899 | integrity sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM= 900 | 901 | fast-json-stable-stringify@^2.0.0: 902 | version "2.0.0" 903 | resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 904 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 905 | 906 | fast-levenshtein@^2.0.6: 907 | version "2.0.6" 908 | resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 909 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 910 | 911 | file-entry-cache@^6.0.1: 912 | version "6.0.1" 913 | resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-6.0.1.tgz?cache=0&sync_timestamp=1613794272556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-entry-cache%2Fdownload%2Ffile-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 914 | integrity sha1-IRst2WWcsDlLBz5zI6w8kz1SICc= 915 | dependencies: 916 | flat-cache "^3.0.4" 917 | 918 | fill-range@^4.0.0: 919 | version "4.0.0" 920 | resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 921 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 922 | dependencies: 923 | extend-shallow "^2.0.1" 924 | is-number "^3.0.0" 925 | repeat-string "^1.6.1" 926 | to-regex-range "^2.1.0" 927 | 928 | flat-cache@^3.0.4: 929 | version "3.0.4" 930 | resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 931 | integrity sha1-YbAzgwKy/p+Vfcwy/CqH8cMEixE= 932 | dependencies: 933 | flatted "^3.1.0" 934 | rimraf "^3.0.2" 935 | 936 | flatted@^3.1.0: 937 | version "3.1.1" 938 | resolved "https://registry.npm.taobao.org/flatted/download/flatted-3.1.1.tgz?cache=0&sync_timestamp=1611059462226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" 939 | integrity sha1-xLSJ6ACW2d8d/JfHmHGup8YXxGk= 940 | 941 | follow-redirects@1.5.10: 942 | version "1.5.10" 943 | resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" 944 | integrity sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio= 945 | dependencies: 946 | debug "=3.1.0" 947 | 948 | for-in@^1.0.2: 949 | version "1.0.2" 950 | resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 951 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 952 | 953 | formidable@^1.1.1: 954 | version "1.2.1" 955 | resolved "https://registry.npm.taobao.org/formidable/download/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659" 956 | integrity sha1-cPt8oCkO5v+WEJBBX0s989IIJlk= 957 | 958 | fragment-cache@^0.2.1: 959 | version "0.2.1" 960 | resolved "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 961 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 962 | dependencies: 963 | map-cache "^0.2.2" 964 | 965 | fresh@~0.5.2: 966 | version "0.5.2" 967 | resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 968 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 969 | 970 | fs-minipass@^1.2.5: 971 | version "1.2.7" 972 | resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.7.tgz?cache=0&sync_timestamp=1569875077546&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-minipass%2Fdownload%2Ffs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" 973 | integrity sha1-zP+FcIQef+QmVpPaiJNsVa7X98c= 974 | dependencies: 975 | minipass "^2.6.0" 976 | 977 | fs.realpath@^1.0.0: 978 | version "1.0.0" 979 | resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 980 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 981 | 982 | fsevents@^1.2.7: 983 | version "1.2.9" 984 | resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz?cache=0&sync_timestamp=1573319936014&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" 985 | integrity sha1-P17WZYPM1vQAtaANtvfoYTY+OI8= 986 | dependencies: 987 | nan "^2.12.1" 988 | node-pre-gyp "^0.12.0" 989 | 990 | function-bind@^1.1.1: 991 | version "1.1.1" 992 | resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 993 | integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= 994 | 995 | functional-red-black-tree@^1.0.1: 996 | version "1.0.1" 997 | resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 998 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 999 | 1000 | gauge@~2.7.3: 1001 | version "2.7.4" 1002 | resolved "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 1003 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 1004 | dependencies: 1005 | aproba "^1.0.3" 1006 | console-control-strings "^1.0.0" 1007 | has-unicode "^2.0.0" 1008 | object-assign "^4.1.0" 1009 | signal-exit "^3.0.0" 1010 | string-width "^1.0.1" 1011 | strip-ansi "^3.0.1" 1012 | wide-align "^1.1.0" 1013 | 1014 | get-intrinsic@^1.0.2: 1015 | version "1.1.1" 1016 | resolved "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 1017 | integrity sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y= 1018 | dependencies: 1019 | function-bind "^1.1.1" 1020 | has "^1.0.3" 1021 | has-symbols "^1.0.1" 1022 | 1023 | get-stream@^3.0.0: 1024 | version "3.0.0" 1025 | resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 1026 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 1027 | 1028 | get-value@^2.0.3, get-value@^2.0.6: 1029 | version "2.0.6" 1030 | resolved "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 1031 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 1032 | 1033 | glob-parent@^3.1.0: 1034 | version "3.1.0" 1035 | resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz?cache=0&sync_timestamp=1569136652060&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob-parent%2Fdownload%2Fglob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" 1036 | integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= 1037 | dependencies: 1038 | is-glob "^3.1.0" 1039 | path-dirname "^1.0.0" 1040 | 1041 | glob-parent@^5.0.0: 1042 | version "5.1.0" 1043 | resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.0.tgz?cache=0&sync_timestamp=1569136652060&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 1044 | integrity sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI= 1045 | dependencies: 1046 | is-glob "^4.0.1" 1047 | 1048 | glob@^7.1.3: 1049 | version "7.1.6" 1050 | resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1051 | integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY= 1052 | dependencies: 1053 | fs.realpath "^1.0.0" 1054 | inflight "^1.0.4" 1055 | inherits "2" 1056 | minimatch "^3.0.4" 1057 | once "^1.3.0" 1058 | path-is-absolute "^1.0.0" 1059 | 1060 | global-dirs@^0.1.0: 1061 | version "0.1.1" 1062 | resolved "https://registry.npm.taobao.org/global-dirs/download/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" 1063 | integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= 1064 | dependencies: 1065 | ini "^1.3.4" 1066 | 1067 | globals@^12.1.0: 1068 | version "12.3.0" 1069 | resolved "https://registry.npm.taobao.org/globals/download/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" 1070 | integrity sha1-HlZO5cTd7SqwmLD4jyRwKjxWvhM= 1071 | dependencies: 1072 | type-fest "^0.8.1" 1073 | 1074 | globals@^13.6.0: 1075 | version "13.8.0" 1076 | resolved "https://registry.npm.taobao.org/globals/download/globals-13.8.0.tgz?cache=0&sync_timestamp=1617957658764&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" 1077 | integrity sha1-PiD1BIEM6HqNcuVa7PhDW1D0wbM= 1078 | dependencies: 1079 | type-fest "^0.20.2" 1080 | 1081 | got@^6.7.1: 1082 | version "6.7.1" 1083 | resolved "https://registry.npm.taobao.org/got/download/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 1084 | integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= 1085 | dependencies: 1086 | create-error-class "^3.0.0" 1087 | duplexer3 "^0.1.4" 1088 | get-stream "^3.0.0" 1089 | is-redirect "^1.0.0" 1090 | is-retry-allowed "^1.0.0" 1091 | is-stream "^1.0.0" 1092 | lowercase-keys "^1.0.0" 1093 | safe-buffer "^5.0.1" 1094 | timed-out "^4.0.0" 1095 | unzip-response "^2.0.1" 1096 | url-parse-lax "^1.0.0" 1097 | 1098 | graceful-fs@^4.1.11, graceful-fs@^4.1.2: 1099 | version "4.2.3" 1100 | resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 1101 | integrity sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM= 1102 | 1103 | has-flag@^3.0.0: 1104 | version "3.0.0" 1105 | resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1106 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1107 | 1108 | has-flag@^4.0.0: 1109 | version "4.0.0" 1110 | resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1577797756584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1111 | integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= 1112 | 1113 | has-symbols@^1.0.1: 1114 | version "1.0.2" 1115 | resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443557459&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 1116 | integrity sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM= 1117 | 1118 | has-unicode@^2.0.0: 1119 | version "2.0.1" 1120 | resolved "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1121 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 1122 | 1123 | has-value@^0.3.1: 1124 | version "0.3.1" 1125 | resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 1126 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 1127 | dependencies: 1128 | get-value "^2.0.3" 1129 | has-values "^0.1.4" 1130 | isobject "^2.0.0" 1131 | 1132 | has-value@^1.0.0: 1133 | version "1.0.0" 1134 | resolved "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 1135 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 1136 | dependencies: 1137 | get-value "^2.0.6" 1138 | has-values "^1.0.0" 1139 | isobject "^3.0.0" 1140 | 1141 | has-values@^0.1.4: 1142 | version "0.1.4" 1143 | resolved "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 1144 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 1145 | 1146 | has-values@^1.0.0: 1147 | version "1.0.0" 1148 | resolved "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 1149 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 1150 | dependencies: 1151 | is-number "^3.0.0" 1152 | kind-of "^4.0.0" 1153 | 1154 | has@^1.0.3: 1155 | version "1.0.3" 1156 | resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1157 | integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= 1158 | dependencies: 1159 | function-bind "^1.1.1" 1160 | 1161 | http-assert@^1.3.0: 1162 | version "1.4.1" 1163 | resolved "https://registry.npm.taobao.org/http-assert/download/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878" 1164 | integrity sha1-xfcl1neqfoc+9zYZm4lobM6zeHg= 1165 | dependencies: 1166 | deep-equal "~1.0.1" 1167 | http-errors "~1.7.2" 1168 | 1169 | http-errors@1.7.3, http-errors@^1.3.1, http-errors@^1.6.3, http-errors@~1.7.2: 1170 | version "1.7.3" 1171 | resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1172 | integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY= 1173 | dependencies: 1174 | depd "~1.1.2" 1175 | inherits "2.0.4" 1176 | setprototypeof "1.1.1" 1177 | statuses ">= 1.5.0 < 2" 1178 | toidentifier "1.0.0" 1179 | 1180 | http-errors@~1.6.2: 1181 | version "1.6.3" 1182 | resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1561418493658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" 1183 | integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= 1184 | dependencies: 1185 | depd "~1.1.2" 1186 | inherits "2.0.3" 1187 | setprototypeof "1.1.0" 1188 | statuses ">= 1.4.0 < 2" 1189 | 1190 | iconv-lite@0.4.24, iconv-lite@^0.4.4: 1191 | version "0.4.24" 1192 | resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1193 | integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= 1194 | dependencies: 1195 | safer-buffer ">= 2.1.2 < 3" 1196 | 1197 | ignore-by-default@^1.0.1: 1198 | version "1.0.1" 1199 | resolved "https://registry.npm.taobao.org/ignore-by-default/download/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1200 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 1201 | 1202 | ignore-walk@^3.0.1: 1203 | version "3.0.3" 1204 | resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" 1205 | integrity sha1-AX4kRxhL/q3nwjjkrv3R6PlbHjc= 1206 | dependencies: 1207 | minimatch "^3.0.4" 1208 | 1209 | ignore@^4.0.6: 1210 | version "4.0.6" 1211 | resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1212 | integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= 1213 | 1214 | import-fresh@^3.0.0: 1215 | version "3.2.1" 1216 | resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 1217 | integrity sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY= 1218 | dependencies: 1219 | parent-module "^1.0.0" 1220 | resolve-from "^4.0.0" 1221 | 1222 | import-fresh@^3.2.1: 1223 | version "3.3.0" 1224 | resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.3.0.tgz?cache=0&sync_timestamp=1608469579940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1225 | integrity sha1-NxYsJfy566oublPVtNiM4X2eDCs= 1226 | dependencies: 1227 | parent-module "^1.0.0" 1228 | resolve-from "^4.0.0" 1229 | 1230 | import-lazy@^2.1.0: 1231 | version "2.1.0" 1232 | resolved "https://registry.npm.taobao.org/import-lazy/download/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 1233 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 1234 | 1235 | imurmurhash@^0.1.4: 1236 | version "0.1.4" 1237 | resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1238 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1239 | 1240 | inflation@^2.0.0: 1241 | version "2.0.0" 1242 | resolved "https://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" 1243 | integrity sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8= 1244 | 1245 | inflight@^1.0.4: 1246 | version "1.0.6" 1247 | resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1248 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1249 | dependencies: 1250 | once "^1.3.0" 1251 | wrappy "1" 1252 | 1253 | inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: 1254 | version "2.0.4" 1255 | resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1256 | integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= 1257 | 1258 | inherits@2.0.3: 1259 | version "2.0.3" 1260 | resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1261 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1262 | 1263 | ini@^1.3.4, ini@~1.3.0: 1264 | version "1.3.5" 1265 | resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1266 | integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= 1267 | 1268 | is-accessor-descriptor@^0.1.6: 1269 | version "0.1.6" 1270 | resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 1271 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 1272 | dependencies: 1273 | kind-of "^3.0.2" 1274 | 1275 | is-accessor-descriptor@^1.0.0: 1276 | version "1.0.0" 1277 | resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 1278 | integrity sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY= 1279 | dependencies: 1280 | kind-of "^6.0.0" 1281 | 1282 | is-binary-path@^1.0.0: 1283 | version "1.0.1" 1284 | resolved "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1285 | integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= 1286 | dependencies: 1287 | binary-extensions "^1.0.0" 1288 | 1289 | is-boolean-object@^1.1.0: 1290 | version "1.1.0" 1291 | resolved "https://registry.npm.taobao.org/is-boolean-object/download/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" 1292 | integrity sha1-4qqtOjqPyjTCj27uE1sVbtJYf/A= 1293 | dependencies: 1294 | call-bind "^1.0.0" 1295 | 1296 | is-buffer@^1.1.5: 1297 | version "1.1.6" 1298 | resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 1299 | integrity sha1-76ouqdqg16suoTqXsritUf776L4= 1300 | 1301 | is-buffer@^2.0.2: 1302 | version "2.0.4" 1303 | resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 1304 | integrity sha1-PlcvI8hBGlz9lVfISeNmXgspBiM= 1305 | 1306 | is-ci@^1.0.10: 1307 | version "1.2.1" 1308 | resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" 1309 | integrity sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw= 1310 | dependencies: 1311 | ci-info "^1.5.0" 1312 | 1313 | is-data-descriptor@^0.1.4: 1314 | version "0.1.4" 1315 | resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 1316 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 1317 | dependencies: 1318 | kind-of "^3.0.2" 1319 | 1320 | is-data-descriptor@^1.0.0: 1321 | version "1.0.0" 1322 | resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 1323 | integrity sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc= 1324 | dependencies: 1325 | kind-of "^6.0.0" 1326 | 1327 | is-descriptor@^0.1.0: 1328 | version "0.1.6" 1329 | resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 1330 | integrity sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco= 1331 | dependencies: 1332 | is-accessor-descriptor "^0.1.6" 1333 | is-data-descriptor "^0.1.4" 1334 | kind-of "^5.0.0" 1335 | 1336 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 1337 | version "1.0.2" 1338 | resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 1339 | integrity sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw= 1340 | dependencies: 1341 | is-accessor-descriptor "^1.0.0" 1342 | is-data-descriptor "^1.0.0" 1343 | kind-of "^6.0.2" 1344 | 1345 | is-extendable@^0.1.0, is-extendable@^0.1.1: 1346 | version "0.1.1" 1347 | resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1348 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1349 | 1350 | is-extendable@^1.0.1: 1351 | version "1.0.1" 1352 | resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 1353 | integrity sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ= 1354 | dependencies: 1355 | is-plain-object "^2.0.4" 1356 | 1357 | is-extglob@^2.1.0, is-extglob@^2.1.1: 1358 | version "2.1.1" 1359 | resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1360 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1361 | 1362 | is-fullwidth-code-point@^1.0.0: 1363 | version "1.0.0" 1364 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1365 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 1366 | dependencies: 1367 | number-is-nan "^1.0.0" 1368 | 1369 | is-fullwidth-code-point@^2.0.0: 1370 | version "2.0.0" 1371 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1372 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1373 | 1374 | is-fullwidth-code-point@^3.0.0: 1375 | version "3.0.0" 1376 | resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1377 | integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= 1378 | 1379 | is-generator-function@^1.0.7: 1380 | version "1.0.7" 1381 | resolved "https://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-generator-function%2Fdownload%2Fis-generator-function-1.0.7.tgz#d2132e529bb0000a7f80794d4bdf5cd5e5813522" 1382 | integrity sha1-0hMuUpuwAAp/gHlNS99c1eWBNSI= 1383 | 1384 | is-glob@^3.1.0: 1385 | version "3.1.0" 1386 | resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" 1387 | integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= 1388 | dependencies: 1389 | is-extglob "^2.1.0" 1390 | 1391 | is-glob@^4.0.0, is-glob@^4.0.1: 1392 | version "4.0.1" 1393 | resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1394 | integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= 1395 | dependencies: 1396 | is-extglob "^2.1.1" 1397 | 1398 | is-installed-globally@^0.1.0: 1399 | version "0.1.0" 1400 | resolved "https://registry.npm.taobao.org/is-installed-globally/download/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" 1401 | integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= 1402 | dependencies: 1403 | global-dirs "^0.1.0" 1404 | is-path-inside "^1.0.0" 1405 | 1406 | is-npm@^1.0.0: 1407 | version "1.0.0" 1408 | resolved "https://registry.npm.taobao.org/is-npm/download/is-npm-1.0.0.tgz?cache=0&sync_timestamp=1571056897638&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-npm%2Fdownload%2Fis-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 1409 | integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= 1410 | 1411 | is-number-object@^1.0.4: 1412 | version "1.0.4" 1413 | resolved "https://registry.npm.taobao.org/is-number-object/download/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" 1414 | integrity sha1-NqyV50HPGLKD/B3fXoPaeY4+wZc= 1415 | 1416 | is-number@^3.0.0: 1417 | version "3.0.0" 1418 | resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 1419 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1420 | dependencies: 1421 | kind-of "^3.0.2" 1422 | 1423 | is-obj@^1.0.0: 1424 | version "1.0.1" 1425 | resolved "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 1426 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 1427 | 1428 | is-path-inside@^1.0.0: 1429 | version "1.0.1" 1430 | resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" 1431 | integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= 1432 | dependencies: 1433 | path-is-inside "^1.0.1" 1434 | 1435 | is-plain-object@^2.0.3, is-plain-object@^2.0.4: 1436 | version "2.0.4" 1437 | resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1438 | integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc= 1439 | dependencies: 1440 | isobject "^3.0.1" 1441 | 1442 | is-redirect@^1.0.0: 1443 | version "1.0.0" 1444 | resolved "https://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1445 | integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= 1446 | 1447 | is-retry-allowed@^1.0.0: 1448 | version "1.2.0" 1449 | resolved "https://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" 1450 | integrity sha1-13hIi9CkZmo76KFIK58rqv7eqLQ= 1451 | 1452 | is-stream@^1.0.0, is-stream@^1.1.0: 1453 | version "1.1.0" 1454 | resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1455 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1456 | 1457 | is-string@^1.0.5: 1458 | version "1.0.5" 1459 | resolved "https://registry.npm.taobao.org/is-string/download/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 1460 | integrity sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y= 1461 | 1462 | is-windows@^1.0.2: 1463 | version "1.0.2" 1464 | resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 1465 | integrity sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0= 1466 | 1467 | isarray@0.0.1: 1468 | version "0.0.1" 1469 | resolved "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1470 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1471 | 1472 | isarray@1.0.0, isarray@~1.0.0: 1473 | version "1.0.0" 1474 | resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592096220&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1475 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1476 | 1477 | isexe@^2.0.0: 1478 | version "2.0.0" 1479 | resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1480 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1481 | 1482 | isobject@^2.0.0: 1483 | version "2.1.0" 1484 | resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1485 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1486 | dependencies: 1487 | isarray "1.0.0" 1488 | 1489 | isobject@^3.0.0, isobject@^3.0.1: 1490 | version "3.0.1" 1491 | resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1492 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1493 | 1494 | js-tokens@^4.0.0: 1495 | version "4.0.0" 1496 | resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1497 | integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= 1498 | 1499 | js-yaml@^3.13.1: 1500 | version "3.13.1" 1501 | resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1502 | integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= 1503 | dependencies: 1504 | argparse "^1.0.7" 1505 | esprima "^4.0.0" 1506 | 1507 | json-schema-traverse@^0.4.1: 1508 | version "0.4.1" 1509 | resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1510 | integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA= 1511 | 1512 | json-schema-traverse@^1.0.0: 1513 | version "1.0.0" 1514 | resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1515 | integrity sha1-rnvLNlard6c7pcSb9lTzjmtoYOI= 1516 | 1517 | json-stable-stringify-without-jsonify@^1.0.1: 1518 | version "1.0.1" 1519 | resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1520 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1521 | 1522 | keygrip@~1.1.0: 1523 | version "1.1.0" 1524 | resolved "https://registry.npm.taobao.org/keygrip/download/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" 1525 | integrity sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY= 1526 | dependencies: 1527 | tsscmp "1.0.6" 1528 | 1529 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1530 | version "3.2.2" 1531 | resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1532 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1533 | dependencies: 1534 | is-buffer "^1.1.5" 1535 | 1536 | kind-of@^4.0.0: 1537 | version "4.0.0" 1538 | resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1539 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1540 | dependencies: 1541 | is-buffer "^1.1.5" 1542 | 1543 | kind-of@^5.0.0: 1544 | version "5.1.0" 1545 | resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1546 | integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0= 1547 | 1548 | kind-of@^6.0.0, kind-of@^6.0.2: 1549 | version "6.0.2" 1550 | resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1551 | integrity sha1-ARRrNqYhjmTljzqNZt5df8b20FE= 1552 | 1553 | koa-body@^4.0.4: 1554 | version "4.1.1" 1555 | resolved "https://registry.npm.taobao.org/koa-body/download/koa-body-4.1.1.tgz#50686d290891fc6f1acb986cf7cfcd605f855ef0" 1556 | integrity sha1-UGhtKQiR/G8ay5hs98/NYF+FXvA= 1557 | dependencies: 1558 | "@types/formidable" "^1.0.31" 1559 | co-body "^5.1.1" 1560 | formidable "^1.1.1" 1561 | 1562 | koa-compose@^3.0.0: 1563 | version "3.2.1" 1564 | resolved "https://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7" 1565 | integrity sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec= 1566 | dependencies: 1567 | any-promise "^1.1.0" 1568 | 1569 | koa-compose@^4.1.0: 1570 | version "4.1.0" 1571 | resolved "https://registry.npm.taobao.org/koa-compose/download/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" 1572 | integrity sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc= 1573 | 1574 | koa-convert@^1.2.0: 1575 | version "1.2.0" 1576 | resolved "https://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-convert%2Fdownload%2Fkoa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0" 1577 | integrity sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA= 1578 | dependencies: 1579 | co "^4.6.0" 1580 | koa-compose "^3.0.0" 1581 | 1582 | koa-router@^7.4.0: 1583 | version "7.4.0" 1584 | resolved "https://registry.npm.taobao.org/koa-router/download/koa-router-7.4.0.tgz#aee1f7adc02d5cb31d7d67465c9eacc825e8c5e0" 1585 | integrity sha1-ruH3rcAtXLMdfWdGXJ6syCXoxeA= 1586 | dependencies: 1587 | debug "^3.1.0" 1588 | http-errors "^1.3.1" 1589 | koa-compose "^3.0.0" 1590 | methods "^1.0.1" 1591 | path-to-regexp "^1.1.1" 1592 | urijs "^1.19.0" 1593 | 1594 | koa-send@^5.0.0: 1595 | version "5.0.0" 1596 | resolved "https://registry.npm.taobao.org/koa-send/download/koa-send-5.0.0.tgz#5e8441e07ef55737734d7ced25b842e50646e7eb" 1597 | integrity sha1-XoRB4H71VzdzTXztJbhC5QZG5+s= 1598 | dependencies: 1599 | debug "^3.1.0" 1600 | http-errors "^1.6.3" 1601 | mz "^2.7.0" 1602 | resolve-path "^1.4.0" 1603 | 1604 | koa-static@^5.0.0: 1605 | version "5.0.0" 1606 | resolved "https://registry.npm.taobao.org/koa-static/download/koa-static-5.0.0.tgz#5e92fc96b537ad5219f425319c95b64772776943" 1607 | integrity sha1-XpL8lrU3rVIZ9CUxnJW2R3J3aUM= 1608 | dependencies: 1609 | debug "^3.1.0" 1610 | koa-send "^5.0.0" 1611 | 1612 | koa2-cors@^2.0.6: 1613 | version "2.0.6" 1614 | resolved "https://registry.npm.taobao.org/koa2-cors/download/koa2-cors-2.0.6.tgz#9ad23df3a0b9bb84530b46f5944f3fb576086554" 1615 | integrity sha1-mtI986C5u4RTC0b1lE8/tXYIZVQ= 1616 | 1617 | koa@^2.5.2: 1618 | version "2.11.0" 1619 | resolved "https://registry.npm.taobao.org/koa/download/koa-2.11.0.tgz?cache=0&sync_timestamp=1572232118391&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa%2Fdownload%2Fkoa-2.11.0.tgz#fe5a51c46f566d27632dd5dc8fd5d7dd44f935a4" 1620 | integrity sha1-/lpRxG9WbSdjLdXcj9XX3UT5NaQ= 1621 | dependencies: 1622 | accepts "^1.3.5" 1623 | cache-content-type "^1.0.0" 1624 | content-disposition "~0.5.2" 1625 | content-type "^1.0.4" 1626 | cookies "~0.8.0" 1627 | debug "~3.1.0" 1628 | delegates "^1.0.0" 1629 | depd "^1.1.2" 1630 | destroy "^1.0.4" 1631 | encodeurl "^1.0.2" 1632 | error-inject "^1.0.0" 1633 | escape-html "^1.0.3" 1634 | fresh "~0.5.2" 1635 | http-assert "^1.3.0" 1636 | http-errors "^1.6.3" 1637 | is-generator-function "^1.0.7" 1638 | koa-compose "^4.1.0" 1639 | koa-convert "^1.2.0" 1640 | on-finished "^2.3.0" 1641 | only "~0.0.2" 1642 | parseurl "^1.3.2" 1643 | statuses "^1.5.0" 1644 | type-is "^1.6.16" 1645 | vary "^1.1.2" 1646 | 1647 | latest-version@^3.0.0: 1648 | version "3.1.0" 1649 | resolved "https://registry.npm.taobao.org/latest-version/download/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 1650 | integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= 1651 | dependencies: 1652 | package-json "^4.0.0" 1653 | 1654 | levn@^0.4.1: 1655 | version "0.4.1" 1656 | resolved "https://registry.npm.taobao.org/levn/download/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1657 | integrity sha1-rkViwAdHO5MqYgDUAyaN0v/8at4= 1658 | dependencies: 1659 | prelude-ls "^1.2.1" 1660 | type-check "~0.4.0" 1661 | 1662 | lodash.clonedeep@^4.5.0: 1663 | version "4.5.0" 1664 | resolved "https://registry.npm.taobao.org/lodash.clonedeep/download/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1665 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= 1666 | 1667 | lodash.flatten@^4.4.0: 1668 | version "4.4.0" 1669 | resolved "https://registry.npm.taobao.org/lodash.flatten/download/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" 1670 | integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= 1671 | 1672 | lodash.truncate@^4.4.2: 1673 | version "4.4.2" 1674 | resolved "https://registry.npm.taobao.org/lodash.truncate/download/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 1675 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 1676 | 1677 | lodash@^4.17.21: 1678 | version "4.17.21" 1679 | resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1680 | integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw= 1681 | 1682 | lowercase-keys@^1.0.0: 1683 | version "1.0.1" 1684 | resolved "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 1685 | integrity sha1-b54wtHCE2XGnyCD/FabFFnt0wm8= 1686 | 1687 | lru-cache@^4.0.1: 1688 | version "4.1.5" 1689 | resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1690 | integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80= 1691 | dependencies: 1692 | pseudomap "^1.0.2" 1693 | yallist "^2.1.2" 1694 | 1695 | lru-cache@^6.0.0: 1696 | version "6.0.0" 1697 | resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1698 | integrity sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ= 1699 | dependencies: 1700 | yallist "^4.0.0" 1701 | 1702 | make-dir@^1.0.0: 1703 | version "1.3.0" 1704 | resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1705 | integrity sha1-ecEDO4BRW9bSTsmTPoYMp17ifww= 1706 | dependencies: 1707 | pify "^3.0.0" 1708 | 1709 | map-cache@^0.2.2: 1710 | version "0.2.2" 1711 | resolved "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1712 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 1713 | 1714 | map-visit@^1.0.0: 1715 | version "1.0.0" 1716 | resolved "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1717 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 1718 | dependencies: 1719 | object-visit "^1.0.0" 1720 | 1721 | media-typer@0.3.0: 1722 | version "0.3.0" 1723 | resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1724 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1725 | 1726 | methods@^1.0.1: 1727 | version "1.1.2" 1728 | resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1729 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1730 | 1731 | micromatch@^3.1.10, micromatch@^3.1.4: 1732 | version "3.1.10" 1733 | resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1734 | integrity sha1-cIWbyVyYQJUvNZoGij/En57PrCM= 1735 | dependencies: 1736 | arr-diff "^4.0.0" 1737 | array-unique "^0.3.2" 1738 | braces "^2.3.1" 1739 | define-property "^2.0.2" 1740 | extend-shallow "^3.0.2" 1741 | extglob "^2.0.4" 1742 | fragment-cache "^0.2.1" 1743 | kind-of "^6.0.2" 1744 | nanomatch "^1.2.9" 1745 | object.pick "^1.3.0" 1746 | regex-not "^1.0.0" 1747 | snapdragon "^0.8.1" 1748 | to-regex "^3.0.2" 1749 | 1750 | mime-db@1.42.0: 1751 | version "1.42.0" 1752 | resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.42.0.tgz?cache=0&sync_timestamp=1569468742433&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" 1753 | integrity sha1-PiUpB7THrbkGWXtLZWNics+ee6w= 1754 | 1755 | mime-types@^2.1.18, mime-types@~2.1.24: 1756 | version "2.1.25" 1757 | resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" 1758 | integrity sha1-OXctRmIfk+KoCoVsU7hqYhVqZDc= 1759 | dependencies: 1760 | mime-db "1.42.0" 1761 | 1762 | minimatch@^3.0.4: 1763 | version "3.0.4" 1764 | resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1765 | integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= 1766 | dependencies: 1767 | brace-expansion "^1.1.7" 1768 | 1769 | minimist@0.0.8: 1770 | version "0.0.8" 1771 | resolved "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1772 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1773 | 1774 | minimist@^1.2.0: 1775 | version "1.2.0" 1776 | resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1777 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1778 | 1779 | minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: 1780 | version "2.9.0" 1781 | resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" 1782 | integrity sha1-5xN2Ln0+Mv7YAxFc+T4EvKn8yaY= 1783 | dependencies: 1784 | safe-buffer "^5.1.2" 1785 | yallist "^3.0.0" 1786 | 1787 | minizlib@^1.2.1: 1788 | version "1.3.3" 1789 | resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" 1790 | integrity sha1-IpDeloGKNMKVUcio0wEha9Zahh0= 1791 | dependencies: 1792 | minipass "^2.9.0" 1793 | 1794 | mixin-deep@^1.2.0: 1795 | version "1.3.2" 1796 | resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561436244196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" 1797 | integrity sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY= 1798 | dependencies: 1799 | for-in "^1.0.2" 1800 | is-extendable "^1.0.1" 1801 | 1802 | mkdirp@^0.5.0, mkdirp@^0.5.1: 1803 | version "0.5.1" 1804 | resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1805 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1806 | dependencies: 1807 | minimist "0.0.8" 1808 | 1809 | ms@2.0.0: 1810 | version "2.0.0" 1811 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1812 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1813 | 1814 | ms@2.1.2, ms@^2.1.1: 1815 | version "2.1.2" 1816 | resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1817 | integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= 1818 | 1819 | mz@^2.7.0: 1820 | version "2.7.0" 1821 | resolved "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" 1822 | integrity sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI= 1823 | dependencies: 1824 | any-promise "^1.0.0" 1825 | object-assign "^4.0.1" 1826 | thenify-all "^1.0.0" 1827 | 1828 | nan@^2.12.1: 1829 | version "2.14.0" 1830 | resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" 1831 | integrity sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw= 1832 | 1833 | nanomatch@^1.2.9: 1834 | version "1.2.13" 1835 | resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1836 | integrity sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk= 1837 | dependencies: 1838 | arr-diff "^4.0.0" 1839 | array-unique "^0.3.2" 1840 | define-property "^2.0.2" 1841 | extend-shallow "^3.0.2" 1842 | fragment-cache "^0.2.1" 1843 | is-windows "^1.0.2" 1844 | kind-of "^6.0.2" 1845 | object.pick "^1.3.0" 1846 | regex-not "^1.0.0" 1847 | snapdragon "^0.8.1" 1848 | to-regex "^3.0.1" 1849 | 1850 | natural-compare@^1.4.0: 1851 | version "1.4.0" 1852 | resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1853 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1854 | 1855 | needle@^2.2.1: 1856 | version "2.4.0" 1857 | resolved "https://registry.npm.taobao.org/needle/download/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" 1858 | integrity sha1-aDPnSXXERGQlkOFadQKIxfk5tXw= 1859 | dependencies: 1860 | debug "^3.2.6" 1861 | iconv-lite "^0.4.4" 1862 | sax "^1.2.4" 1863 | 1864 | negotiator@0.6.2: 1865 | version "0.6.2" 1866 | resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 1867 | integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= 1868 | 1869 | node-pre-gyp@^0.12.0: 1870 | version "0.12.0" 1871 | resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" 1872 | integrity sha1-ObpLsUOdoDApX4meO1ILd4V2YUk= 1873 | dependencies: 1874 | detect-libc "^1.0.2" 1875 | mkdirp "^0.5.1" 1876 | needle "^2.2.1" 1877 | nopt "^4.0.1" 1878 | npm-packlist "^1.1.6" 1879 | npmlog "^4.0.2" 1880 | rc "^1.2.7" 1881 | rimraf "^2.6.1" 1882 | semver "^5.3.0" 1883 | tar "^4" 1884 | 1885 | nodemon@^1.19.1: 1886 | version "1.19.4" 1887 | resolved "https://registry.npm.taobao.org/nodemon/download/nodemon-1.19.4.tgz?cache=0&sync_timestamp=1574427926667&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnodemon%2Fdownload%2Fnodemon-1.19.4.tgz#56db5c607408e0fdf8920d2b444819af1aae0971" 1888 | integrity sha1-VttcYHQI4P34kg0rREgZrxquCXE= 1889 | dependencies: 1890 | chokidar "^2.1.8" 1891 | debug "^3.2.6" 1892 | ignore-by-default "^1.0.1" 1893 | minimatch "^3.0.4" 1894 | pstree.remy "^1.1.7" 1895 | semver "^5.7.1" 1896 | supports-color "^5.5.0" 1897 | touch "^3.1.0" 1898 | undefsafe "^2.0.2" 1899 | update-notifier "^2.5.0" 1900 | 1901 | nopt@^4.0.1: 1902 | version "4.0.1" 1903 | resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1904 | integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= 1905 | dependencies: 1906 | abbrev "1" 1907 | osenv "^0.1.4" 1908 | 1909 | nopt@~1.0.10: 1910 | version "1.0.10" 1911 | resolved "https://registry.npm.taobao.org/nopt/download/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 1912 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 1913 | dependencies: 1914 | abbrev "1" 1915 | 1916 | normalize-path@^2.1.1: 1917 | version "2.1.1" 1918 | resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1919 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 1920 | dependencies: 1921 | remove-trailing-separator "^1.0.1" 1922 | 1923 | normalize-path@^3.0.0: 1924 | version "3.0.0" 1925 | resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1926 | integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= 1927 | 1928 | npm-bundled@^1.0.1: 1929 | version "1.1.1" 1930 | resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" 1931 | integrity sha1-Ht1XCGWpTNsbyCIHdeKUZsn7I0s= 1932 | dependencies: 1933 | npm-normalize-package-bin "^1.0.1" 1934 | 1935 | npm-normalize-package-bin@^1.0.1: 1936 | version "1.0.1" 1937 | resolved "https://registry.npm.taobao.org/npm-normalize-package-bin/download/npm-normalize-package-bin-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-normalize-package-bin%2Fdownload%2Fnpm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" 1938 | integrity sha1-bnmkHyP9I1wGIyGCKNp9nCO49uI= 1939 | 1940 | npm-packlist@^1.1.6: 1941 | version "1.4.7" 1942 | resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-packlist%2Fdownload%2Fnpm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" 1943 | integrity sha1-npVDZaBrgLGBEeqQCUWvT4jtSEg= 1944 | dependencies: 1945 | ignore-walk "^3.0.1" 1946 | npm-bundled "^1.0.1" 1947 | 1948 | npm-run-path@^2.0.0: 1949 | version "2.0.2" 1950 | resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1951 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1952 | dependencies: 1953 | path-key "^2.0.0" 1954 | 1955 | npmlog@^4.0.2: 1956 | version "4.1.2" 1957 | resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1958 | integrity sha1-CKfyqL9zRgR3mp76StXMcXq7lUs= 1959 | dependencies: 1960 | are-we-there-yet "~1.1.2" 1961 | console-control-strings "~1.1.0" 1962 | gauge "~2.7.3" 1963 | set-blocking "~2.0.0" 1964 | 1965 | number-is-nan@^1.0.0: 1966 | version "1.0.1" 1967 | resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1968 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1969 | 1970 | object-assign@^4.0.1, object-assign@^4.1.0: 1971 | version "4.1.1" 1972 | resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1973 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1974 | 1975 | object-copy@^0.1.0: 1976 | version "0.1.0" 1977 | resolved "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1978 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 1979 | dependencies: 1980 | copy-descriptor "^0.1.0" 1981 | define-property "^0.2.5" 1982 | kind-of "^3.0.3" 1983 | 1984 | object-visit@^1.0.0: 1985 | version "1.0.1" 1986 | resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1987 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 1988 | dependencies: 1989 | isobject "^3.0.0" 1990 | 1991 | object.pick@^1.3.0: 1992 | version "1.3.0" 1993 | resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1994 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 1995 | dependencies: 1996 | isobject "^3.0.1" 1997 | 1998 | on-finished@^2.3.0: 1999 | version "2.3.0" 2000 | resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 2001 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 2002 | dependencies: 2003 | ee-first "1.1.1" 2004 | 2005 | once@^1.3.0: 2006 | version "1.4.0" 2007 | resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2008 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2009 | dependencies: 2010 | wrappy "1" 2011 | 2012 | only@~0.0.2: 2013 | version "0.0.2" 2014 | resolved "https://registry.npm.taobao.org/only/download/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" 2015 | integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q= 2016 | 2017 | optionator@^0.9.1: 2018 | version "0.9.1" 2019 | resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 2020 | integrity sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk= 2021 | dependencies: 2022 | deep-is "^0.1.3" 2023 | fast-levenshtein "^2.0.6" 2024 | levn "^0.4.1" 2025 | prelude-ls "^1.2.1" 2026 | type-check "^0.4.0" 2027 | word-wrap "^1.2.3" 2028 | 2029 | os-homedir@^1.0.0: 2030 | version "1.0.2" 2031 | resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2032 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 2033 | 2034 | os-tmpdir@^1.0.0: 2035 | version "1.0.2" 2036 | resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 2037 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2038 | 2039 | osenv@^0.1.4: 2040 | version "0.1.5" 2041 | resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" 2042 | integrity sha1-hc36+uso6Gd/QW4odZK18/SepBA= 2043 | dependencies: 2044 | os-homedir "^1.0.0" 2045 | os-tmpdir "^1.0.0" 2046 | 2047 | p-finally@^1.0.0: 2048 | version "1.0.0" 2049 | resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 2050 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 2051 | 2052 | package-json@^4.0.0: 2053 | version "4.0.1" 2054 | resolved "https://registry.npm.taobao.org/package-json/download/package-json-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpackage-json%2Fdownload%2Fpackage-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" 2055 | integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= 2056 | dependencies: 2057 | got "^6.7.1" 2058 | registry-auth-token "^3.0.1" 2059 | registry-url "^3.0.3" 2060 | semver "^5.1.0" 2061 | 2062 | parent-module@^1.0.0: 2063 | version "1.0.1" 2064 | resolved "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2065 | integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI= 2066 | dependencies: 2067 | callsites "^3.0.0" 2068 | 2069 | parseurl@^1.3.2: 2070 | version "1.3.3" 2071 | resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 2072 | integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ= 2073 | 2074 | pascalcase@^0.1.1: 2075 | version "0.1.1" 2076 | resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 2077 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 2078 | 2079 | path-dirname@^1.0.0: 2080 | version "1.0.2" 2081 | resolved "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" 2082 | integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= 2083 | 2084 | path-is-absolute@1.0.1, path-is-absolute@^1.0.0: 2085 | version "1.0.1" 2086 | resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2087 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2088 | 2089 | path-is-inside@^1.0.1: 2090 | version "1.0.2" 2091 | resolved "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2092 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 2093 | 2094 | path-key@^2.0.0: 2095 | version "2.0.1" 2096 | resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441431664&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 2097 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 2098 | 2099 | path-key@^3.1.0: 2100 | version "3.1.1" 2101 | resolved "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2102 | integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U= 2103 | 2104 | path-to-regexp@^1.1.1: 2105 | version "1.8.0" 2106 | resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" 2107 | integrity sha1-iHs7qdhDk+h6CgufTLdWGYtTVIo= 2108 | dependencies: 2109 | isarray "0.0.1" 2110 | 2111 | pify@^3.0.0: 2112 | version "3.0.0" 2113 | resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 2114 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 2115 | 2116 | posix-character-classes@^0.1.0: 2117 | version "0.1.1" 2118 | resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 2119 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 2120 | 2121 | prelude-ls@^1.2.1: 2122 | version "1.2.1" 2123 | resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2124 | integrity sha1-3rxkidem5rDnYRiIzsiAM30xY5Y= 2125 | 2126 | prepend-http@^1.0.1: 2127 | version "1.0.4" 2128 | resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 2129 | integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 2130 | 2131 | prettier-linter-helpers@^1.0.0: 2132 | version "1.0.0" 2133 | resolved "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 2134 | integrity sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s= 2135 | dependencies: 2136 | fast-diff "^1.1.2" 2137 | 2138 | prettier@^2.2.1: 2139 | version "2.2.1" 2140 | resolved "https://registry.npm.taobao.org/prettier/download/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" 2141 | integrity sha1-eVoaeN1S8HPaDNQrIfnJE4GSP/U= 2142 | 2143 | process-nextick-args@~2.0.0: 2144 | version "2.0.1" 2145 | resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2146 | integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I= 2147 | 2148 | progress@^2.0.0: 2149 | version "2.0.3" 2150 | resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 2151 | integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= 2152 | 2153 | pseudomap@^1.0.2: 2154 | version "1.0.2" 2155 | resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 2156 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 2157 | 2158 | pstree.remy@^1.1.7: 2159 | version "1.1.7" 2160 | resolved "https://registry.npm.taobao.org/pstree.remy/download/pstree.remy-1.1.7.tgz#c76963a28047ed61542dc361aa26ee55a7fa15f3" 2161 | integrity sha1-x2ljooBH7WFULcNhqibuVaf6FfM= 2162 | 2163 | punycode@^2.1.0: 2164 | version "2.1.1" 2165 | resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2166 | integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= 2167 | 2168 | qs@^6.4.0: 2169 | version "6.9.1" 2170 | resolved "https://registry.npm.taobao.org/qs/download/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" 2171 | integrity sha1-IAgsZct4IjY1qxqerKiHWim/jsk= 2172 | 2173 | raw-body@^2.2.0: 2174 | version "2.4.1" 2175 | resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" 2176 | integrity sha1-MKyC+Yu1rowVLmcUnayNVRU7Fow= 2177 | dependencies: 2178 | bytes "3.1.0" 2179 | http-errors "1.7.3" 2180 | iconv-lite "0.4.24" 2181 | unpipe "1.0.0" 2182 | 2183 | rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: 2184 | version "1.2.8" 2185 | resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2186 | integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= 2187 | dependencies: 2188 | deep-extend "^0.6.0" 2189 | ini "~1.3.0" 2190 | minimist "^1.2.0" 2191 | strip-json-comments "~2.0.1" 2192 | 2193 | readable-stream@^2.0.2, readable-stream@^2.0.6: 2194 | version "2.3.6" 2195 | resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 2196 | integrity sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8= 2197 | dependencies: 2198 | core-util-is "~1.0.0" 2199 | inherits "~2.0.3" 2200 | isarray "~1.0.0" 2201 | process-nextick-args "~2.0.0" 2202 | safe-buffer "~5.1.1" 2203 | string_decoder "~1.1.1" 2204 | util-deprecate "~1.0.1" 2205 | 2206 | readdirp@^2.2.1: 2207 | version "2.2.1" 2208 | resolved "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&sync_timestamp=1575629920252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" 2209 | integrity sha1-DodiKjMlqjPokihcr4tOhGUppSU= 2210 | dependencies: 2211 | graceful-fs "^4.1.11" 2212 | micromatch "^3.1.10" 2213 | readable-stream "^2.0.2" 2214 | 2215 | regex-not@^1.0.0, regex-not@^1.0.2: 2216 | version "1.0.2" 2217 | resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 2218 | integrity sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw= 2219 | dependencies: 2220 | extend-shallow "^3.0.2" 2221 | safe-regex "^1.1.0" 2222 | 2223 | regexpp@^3.1.0: 2224 | version "3.1.0" 2225 | resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-3.1.0.tgz?cache=0&sync_timestamp=1592843197777&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 2226 | integrity sha1-IG0K0KVkjP+9uK5GQ489xRyfeOI= 2227 | 2228 | registry-auth-token@^3.0.1: 2229 | version "3.4.0" 2230 | resolved "https://registry.npm.taobao.org/registry-auth-token/download/registry-auth-token-3.4.0.tgz?cache=0&sync_timestamp=1560785240550&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregistry-auth-token%2Fdownload%2Fregistry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" 2231 | integrity sha1-10RoFUM/XV7WQxzV3KIQSPZrOX4= 2232 | dependencies: 2233 | rc "^1.1.6" 2234 | safe-buffer "^5.0.1" 2235 | 2236 | registry-url@^3.0.3: 2237 | version "3.1.0" 2238 | resolved "https://registry.npm.taobao.org/registry-url/download/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 2239 | integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= 2240 | dependencies: 2241 | rc "^1.0.1" 2242 | 2243 | remove-trailing-separator@^1.0.1: 2244 | version "1.1.0" 2245 | resolved "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 2246 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 2247 | 2248 | repeat-element@^1.1.2: 2249 | version "1.1.3" 2250 | resolved "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 2251 | integrity sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4= 2252 | 2253 | repeat-string@^1.6.1: 2254 | version "1.6.1" 2255 | resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2256 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 2257 | 2258 | require-from-string@^2.0.2: 2259 | version "2.0.2" 2260 | resolved "https://registry.npm.taobao.org/require-from-string/download/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 2261 | integrity sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk= 2262 | 2263 | resolve-from@^4.0.0: 2264 | version "4.0.0" 2265 | resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2266 | integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= 2267 | 2268 | resolve-path@^1.4.0: 2269 | version "1.4.0" 2270 | resolved "https://registry.npm.taobao.org/resolve-path/download/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7" 2271 | integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc= 2272 | dependencies: 2273 | http-errors "~1.6.2" 2274 | path-is-absolute "1.0.1" 2275 | 2276 | resolve-url@^0.2.1: 2277 | version "0.2.1" 2278 | resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 2279 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 2280 | 2281 | ret@~0.1.10: 2282 | version "0.1.15" 2283 | resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 2284 | integrity sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w= 2285 | 2286 | rimraf@^2.6.1: 2287 | version "2.7.1" 2288 | resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 2289 | integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w= 2290 | dependencies: 2291 | glob "^7.1.3" 2292 | 2293 | rimraf@^3.0.2: 2294 | version "3.0.2" 2295 | resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2296 | integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho= 2297 | dependencies: 2298 | glob "^7.1.3" 2299 | 2300 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2301 | version "5.1.2" 2302 | resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2303 | integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= 2304 | 2305 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 2306 | version "5.2.0" 2307 | resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 2308 | integrity sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk= 2309 | 2310 | safe-regex@^1.1.0: 2311 | version "1.1.0" 2312 | resolved "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 2313 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 2314 | dependencies: 2315 | ret "~0.1.10" 2316 | 2317 | "safer-buffer@>= 2.1.2 < 3": 2318 | version "2.1.2" 2319 | resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2320 | integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= 2321 | 2322 | sax@^1.2.4: 2323 | version "1.2.4" 2324 | resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 2325 | integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= 2326 | 2327 | semver-diff@^2.0.0: 2328 | version "2.1.0" 2329 | resolved "https://registry.npm.taobao.org/semver-diff/download/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 2330 | integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= 2331 | dependencies: 2332 | semver "^5.0.3" 2333 | 2334 | semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.7.1: 2335 | version "5.7.1" 2336 | resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1565627367398&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2337 | integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= 2338 | 2339 | semver@^7.2.1: 2340 | version "7.3.5" 2341 | resolved "https://registry.npm.taobao.org/semver/download/semver-7.3.5.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 2342 | integrity sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc= 2343 | dependencies: 2344 | lru-cache "^6.0.0" 2345 | 2346 | set-blocking@~2.0.0: 2347 | version "2.0.0" 2348 | resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2349 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 2350 | 2351 | set-value@^2.0.0, set-value@^2.0.1: 2352 | version "2.0.1" 2353 | resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" 2354 | integrity sha1-oY1AUw5vB95CKMfe/kInr4ytAFs= 2355 | dependencies: 2356 | extend-shallow "^2.0.1" 2357 | is-extendable "^0.1.1" 2358 | is-plain-object "^2.0.3" 2359 | split-string "^3.0.1" 2360 | 2361 | setprototypeof@1.1.0: 2362 | version "1.1.0" 2363 | resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" 2364 | integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY= 2365 | 2366 | setprototypeof@1.1.1: 2367 | version "1.1.1" 2368 | resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 2369 | integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= 2370 | 2371 | shebang-command@^1.2.0: 2372 | version "1.2.0" 2373 | resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2374 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2375 | dependencies: 2376 | shebang-regex "^1.0.0" 2377 | 2378 | shebang-command@^2.0.0: 2379 | version "2.0.0" 2380 | resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2381 | integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo= 2382 | dependencies: 2383 | shebang-regex "^3.0.0" 2384 | 2385 | shebang-regex@^1.0.0: 2386 | version "1.0.0" 2387 | resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2388 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2389 | 2390 | shebang-regex@^3.0.0: 2391 | version "3.0.0" 2392 | resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2393 | integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI= 2394 | 2395 | signal-exit@^3.0.0, signal-exit@^3.0.2: 2396 | version "3.0.2" 2397 | resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2398 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 2399 | 2400 | slice-ansi@^4.0.0: 2401 | version "4.0.0" 2402 | resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 2403 | integrity sha1-UA6N0P1VsFgVCGJVsxla3ypF/ms= 2404 | dependencies: 2405 | ansi-styles "^4.0.0" 2406 | astral-regex "^2.0.0" 2407 | is-fullwidth-code-point "^3.0.0" 2408 | 2409 | snapdragon-node@^2.0.1: 2410 | version "2.1.1" 2411 | resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 2412 | integrity sha1-bBdfhv8UvbByRWPo88GwIaKGhTs= 2413 | dependencies: 2414 | define-property "^1.0.0" 2415 | isobject "^3.0.0" 2416 | snapdragon-util "^3.0.1" 2417 | 2418 | snapdragon-util@^3.0.1: 2419 | version "3.0.1" 2420 | resolved "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 2421 | integrity sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI= 2422 | dependencies: 2423 | kind-of "^3.2.0" 2424 | 2425 | snapdragon@^0.8.1: 2426 | version "0.8.2" 2427 | resolved "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 2428 | integrity sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0= 2429 | dependencies: 2430 | base "^0.11.1" 2431 | debug "^2.2.0" 2432 | define-property "^0.2.5" 2433 | extend-shallow "^2.0.1" 2434 | map-cache "^0.2.2" 2435 | source-map "^0.5.6" 2436 | source-map-resolve "^0.5.0" 2437 | use "^3.1.0" 2438 | 2439 | source-map-resolve@^0.5.0: 2440 | version "0.5.2" 2441 | resolved "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 2442 | integrity sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk= 2443 | dependencies: 2444 | atob "^2.1.1" 2445 | decode-uri-component "^0.2.0" 2446 | resolve-url "^0.2.1" 2447 | source-map-url "^0.4.0" 2448 | urix "^0.1.0" 2449 | 2450 | source-map-url@^0.4.0: 2451 | version "0.4.0" 2452 | resolved "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 2453 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 2454 | 2455 | source-map@^0.5.6: 2456 | version "0.5.7" 2457 | resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2458 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 2459 | 2460 | split-string@^3.0.1, split-string@^3.0.2: 2461 | version "3.1.0" 2462 | resolved "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 2463 | integrity sha1-fLCd2jqGWFcFxks5pkZgOGguj+I= 2464 | dependencies: 2465 | extend-shallow "^3.0.0" 2466 | 2467 | sprintf-js@~1.0.2: 2468 | version "1.0.3" 2469 | resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2470 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2471 | 2472 | static-extend@^0.1.1: 2473 | version "0.1.2" 2474 | resolved "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 2475 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 2476 | dependencies: 2477 | define-property "^0.2.5" 2478 | object-copy "^0.1.0" 2479 | 2480 | "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0: 2481 | version "1.5.0" 2482 | resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 2483 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 2484 | 2485 | string-width@^1.0.1: 2486 | version "1.0.2" 2487 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2488 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 2489 | dependencies: 2490 | code-point-at "^1.0.0" 2491 | is-fullwidth-code-point "^1.0.0" 2492 | strip-ansi "^3.0.0" 2493 | 2494 | "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: 2495 | version "2.1.1" 2496 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2497 | integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= 2498 | dependencies: 2499 | is-fullwidth-code-point "^2.0.0" 2500 | strip-ansi "^4.0.0" 2501 | 2502 | string-width@^4.2.0: 2503 | version "4.2.2" 2504 | resolved "https://registry.npm.taobao.org/string-width/download/string-width-4.2.2.tgz?cache=0&sync_timestamp=1614522217971&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" 2505 | integrity sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU= 2506 | dependencies: 2507 | emoji-regex "^8.0.0" 2508 | is-fullwidth-code-point "^3.0.0" 2509 | strip-ansi "^6.0.0" 2510 | 2511 | string_decoder@~1.1.1: 2512 | version "1.1.1" 2513 | resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2514 | integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g= 2515 | dependencies: 2516 | safe-buffer "~5.1.0" 2517 | 2518 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2519 | version "3.0.1" 2520 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2521 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2522 | dependencies: 2523 | ansi-regex "^2.0.0" 2524 | 2525 | strip-ansi@^4.0.0: 2526 | version "4.0.0" 2527 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2528 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 2529 | dependencies: 2530 | ansi-regex "^3.0.0" 2531 | 2532 | strip-ansi@^6.0.0: 2533 | version "6.0.0" 2534 | resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2535 | integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= 2536 | dependencies: 2537 | ansi-regex "^5.0.0" 2538 | 2539 | strip-eof@^1.0.0: 2540 | version "1.0.0" 2541 | resolved "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2542 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2543 | 2544 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 2545 | version "3.1.1" 2546 | resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594571796132&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2547 | integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= 2548 | 2549 | strip-json-comments@~2.0.1: 2550 | version "2.0.1" 2551 | resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2552 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2553 | 2554 | supports-color@^5.3.0, supports-color@^5.5.0: 2555 | version "5.5.0" 2556 | resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2557 | integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= 2558 | dependencies: 2559 | has-flag "^3.0.0" 2560 | 2561 | supports-color@^7.1.0: 2562 | version "7.2.0" 2563 | resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1611394023277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2564 | integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo= 2565 | dependencies: 2566 | has-flag "^4.0.0" 2567 | 2568 | table@^6.0.4: 2569 | version "6.1.0" 2570 | resolved "https://registry.npm.taobao.org/table/download/table-6.1.0.tgz#676a0cfb206008b59e783fcd94ef8ba7d67d966c" 2571 | integrity sha1-Z2oM+yBgCLWeeD/NlO+Lp9Z9lmw= 2572 | dependencies: 2573 | ajv "^8.0.1" 2574 | is-boolean-object "^1.1.0" 2575 | is-number-object "^1.0.4" 2576 | is-string "^1.0.5" 2577 | lodash.clonedeep "^4.5.0" 2578 | lodash.flatten "^4.4.0" 2579 | lodash.truncate "^4.4.2" 2580 | slice-ansi "^4.0.0" 2581 | string-width "^4.2.0" 2582 | 2583 | tar@^4: 2584 | version "4.4.13" 2585 | resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" 2586 | integrity sha1-Q7NkvFKIjVVSmGN7ENYHkCVKtSU= 2587 | dependencies: 2588 | chownr "^1.1.1" 2589 | fs-minipass "^1.2.5" 2590 | minipass "^2.8.6" 2591 | minizlib "^1.2.1" 2592 | mkdirp "^0.5.0" 2593 | safe-buffer "^5.1.2" 2594 | yallist "^3.0.3" 2595 | 2596 | term-size@^1.2.0: 2597 | version "1.2.0" 2598 | resolved "https://registry.npm.taobao.org/term-size/download/term-size-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterm-size%2Fdownload%2Fterm-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" 2599 | integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= 2600 | dependencies: 2601 | execa "^0.7.0" 2602 | 2603 | text-table@^0.2.0: 2604 | version "0.2.0" 2605 | resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2606 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 2607 | 2608 | thenify-all@^1.0.0: 2609 | version "1.6.0" 2610 | resolved "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" 2611 | integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= 2612 | dependencies: 2613 | thenify ">= 3.1.0 < 4" 2614 | 2615 | "thenify@>= 3.1.0 < 4": 2616 | version "3.3.0" 2617 | resolved "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" 2618 | integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= 2619 | dependencies: 2620 | any-promise "^1.0.0" 2621 | 2622 | timed-out@^4.0.0: 2623 | version "4.0.1" 2624 | resolved "https://registry.npm.taobao.org/timed-out/download/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 2625 | integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 2626 | 2627 | to-object-path@^0.3.0: 2628 | version "0.3.0" 2629 | resolved "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 2630 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 2631 | dependencies: 2632 | kind-of "^3.0.2" 2633 | 2634 | to-regex-range@^2.1.0: 2635 | version "2.1.1" 2636 | resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 2637 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 2638 | dependencies: 2639 | is-number "^3.0.0" 2640 | repeat-string "^1.6.1" 2641 | 2642 | to-regex@^3.0.1, to-regex@^3.0.2: 2643 | version "3.0.2" 2644 | resolved "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 2645 | integrity sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4= 2646 | dependencies: 2647 | define-property "^2.0.2" 2648 | extend-shallow "^3.0.2" 2649 | regex-not "^1.0.2" 2650 | safe-regex "^1.1.0" 2651 | 2652 | toidentifier@1.0.0: 2653 | version "1.0.0" 2654 | resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2655 | integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM= 2656 | 2657 | touch@^3.1.0: 2658 | version "3.1.0" 2659 | resolved "https://registry.npm.taobao.org/touch/download/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 2660 | integrity sha1-/jZfX3XsntTlaCXgu3bSSrdK+Ds= 2661 | dependencies: 2662 | nopt "~1.0.10" 2663 | 2664 | tsscmp@1.0.6: 2665 | version "1.0.6" 2666 | resolved "https://registry.npm.taobao.org/tsscmp/download/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" 2667 | integrity sha1-hbmVg6w1iexL/vgltQAKqRHWBes= 2668 | 2669 | type-check@^0.4.0, type-check@~0.4.0: 2670 | version "0.4.0" 2671 | resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2672 | integrity sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE= 2673 | dependencies: 2674 | prelude-ls "^1.2.1" 2675 | 2676 | type-fest@^0.20.2: 2677 | version "0.20.2" 2678 | resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.20.2.tgz?cache=0&sync_timestamp=1618335310789&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 2679 | integrity sha1-G/IH9LKPkVg2ZstfvTJ4hzAc1fQ= 2680 | 2681 | type-fest@^0.8.1: 2682 | version "0.8.1" 2683 | resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz?cache=0&sync_timestamp=1569404138136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 2684 | integrity sha1-CeJJ696FHTseSNJ8EFREZn8XuD0= 2685 | 2686 | type-is@^1.6.14, type-is@^1.6.16: 2687 | version "1.6.18" 2688 | resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 2689 | integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE= 2690 | dependencies: 2691 | media-typer "0.3.0" 2692 | mime-types "~2.1.24" 2693 | 2694 | undefsafe@^2.0.2: 2695 | version "2.0.2" 2696 | resolved "https://registry.npm.taobao.org/undefsafe/download/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" 2697 | integrity sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY= 2698 | dependencies: 2699 | debug "^2.2.0" 2700 | 2701 | union-value@^1.0.0: 2702 | version "1.0.1" 2703 | resolved "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" 2704 | integrity sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc= 2705 | dependencies: 2706 | arr-union "^3.1.0" 2707 | get-value "^2.0.6" 2708 | is-extendable "^0.1.1" 2709 | set-value "^2.0.1" 2710 | 2711 | unique-string@^1.0.0: 2712 | version "1.0.0" 2713 | resolved "https://registry.npm.taobao.org/unique-string/download/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" 2714 | integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= 2715 | dependencies: 2716 | crypto-random-string "^1.0.0" 2717 | 2718 | unpipe@1.0.0: 2719 | version "1.0.0" 2720 | resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2721 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2722 | 2723 | unset-value@^1.0.0: 2724 | version "1.0.0" 2725 | resolved "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 2726 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 2727 | dependencies: 2728 | has-value "^0.3.1" 2729 | isobject "^3.0.0" 2730 | 2731 | unzip-response@^2.0.1: 2732 | version "2.0.1" 2733 | resolved "https://registry.npm.taobao.org/unzip-response/download/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 2734 | integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= 2735 | 2736 | upath@^1.1.1: 2737 | version "1.2.0" 2738 | resolved "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" 2739 | integrity sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ= 2740 | 2741 | update-notifier@^2.5.0: 2742 | version "2.5.0" 2743 | resolved "https://registry.npm.taobao.org/update-notifier/download/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" 2744 | integrity sha1-0HRFk+E/Fh5AassdlAi3LK0Ir/Y= 2745 | dependencies: 2746 | boxen "^1.2.1" 2747 | chalk "^2.0.1" 2748 | configstore "^3.0.0" 2749 | import-lazy "^2.1.0" 2750 | is-ci "^1.0.10" 2751 | is-installed-globally "^0.1.0" 2752 | is-npm "^1.0.0" 2753 | latest-version "^3.0.0" 2754 | semver-diff "^2.0.0" 2755 | xdg-basedir "^3.0.0" 2756 | 2757 | uri-js@^4.2.2: 2758 | version "4.2.2" 2759 | resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 2760 | integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= 2761 | dependencies: 2762 | punycode "^2.1.0" 2763 | 2764 | urijs@^1.19.0: 2765 | version "1.19.2" 2766 | resolved "https://registry.npm.taobao.org/urijs/download/urijs-1.19.2.tgz#f9be09f00c4c5134b7cb3cf475c1dd394526265a" 2767 | integrity sha1-+b4J8AxMUTS3yzz0dcHdOUUmJlo= 2768 | 2769 | urix@^0.1.0: 2770 | version "0.1.0" 2771 | resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 2772 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 2773 | 2774 | url-parse-lax@^1.0.0: 2775 | version "1.0.0" 2776 | resolved "https://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse-lax%2Fdownload%2Furl-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 2777 | integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 2778 | dependencies: 2779 | prepend-http "^1.0.1" 2780 | 2781 | use@^3.1.0: 2782 | version "3.1.1" 2783 | resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 2784 | integrity sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8= 2785 | 2786 | util-deprecate@~1.0.1: 2787 | version "1.0.2" 2788 | resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2789 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2790 | 2791 | v8-compile-cache@^2.0.3: 2792 | version "2.1.0" 2793 | resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 2794 | integrity sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4= 2795 | 2796 | vary@^1.1.2: 2797 | version "1.1.2" 2798 | resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2799 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 2800 | 2801 | which@^1.2.9: 2802 | version "1.3.1" 2803 | resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1574116262707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2804 | integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= 2805 | dependencies: 2806 | isexe "^2.0.0" 2807 | 2808 | which@^2.0.1: 2809 | version "2.0.2" 2810 | resolved "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2811 | integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE= 2812 | dependencies: 2813 | isexe "^2.0.0" 2814 | 2815 | wide-align@^1.1.0: 2816 | version "1.1.3" 2817 | resolved "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 2818 | integrity sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= 2819 | dependencies: 2820 | string-width "^1.0.2 || 2" 2821 | 2822 | widest-line@^2.0.0: 2823 | version "2.0.1" 2824 | resolved "https://registry.npm.taobao.org/widest-line/download/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" 2825 | integrity sha1-dDh2RzDsfvQ4HOTfgvuYpTFCo/w= 2826 | dependencies: 2827 | string-width "^2.1.1" 2828 | 2829 | word-wrap@^1.2.3: 2830 | version "1.2.3" 2831 | resolved "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 2832 | integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= 2833 | 2834 | wrappy@1: 2835 | version "1.0.2" 2836 | resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2837 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2838 | 2839 | write-file-atomic@^2.0.0: 2840 | version "2.4.3" 2841 | resolved "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.4.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrite-file-atomic%2Fdownload%2Fwrite-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" 2842 | integrity sha1-H9Lprh3z51uNjDZ0Q8aS1MqB9IE= 2843 | dependencies: 2844 | graceful-fs "^4.1.11" 2845 | imurmurhash "^0.1.4" 2846 | signal-exit "^3.0.2" 2847 | 2848 | xdg-basedir@^3.0.0: 2849 | version "3.0.0" 2850 | resolved "https://registry.npm.taobao.org/xdg-basedir/download/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" 2851 | integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= 2852 | 2853 | yallist@^2.1.2: 2854 | version "2.1.2" 2855 | resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2856 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2857 | 2858 | yallist@^3.0.0, yallist@^3.0.3: 2859 | version "3.1.1" 2860 | resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2861 | integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= 2862 | 2863 | yallist@^4.0.0: 2864 | version "4.0.0" 2865 | resolved "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2866 | integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI= 2867 | 2868 | ylru@^1.2.0: 2869 | version "1.2.1" 2870 | resolved "https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f" 2871 | integrity sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8= 2872 | --------------------------------------------------------------------------------