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